diff --git a/README.md b/README.md index a576928f..99a9e3ef 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,9 @@ FAQ #### Why don't my photo changes show up immediately? > This template statically optimizes core views such as `/` and `/grid` to minimize visitor load times. Consequently, when photos are added, edited, or removed, it might take several minutes for those changes to propagate. If it seems like a change is not taking effect, try navigating to `/admin/configuration` and clicking "Clear Cache." +#### Why don't my older photos look right? +> As the template has evolved, EXIF fields (such as lenses) have been added, blur data is generated through a different method, and AI/privacy features have been added. In order to bring older photos up to date, either click the 'sync' button next to a photo or use the outdated photo page (`/admin/outdated`) to make batch updates. + #### Why don’t my OG images load when I share a link? > Many services such as iMessage, Slack, and X, require near-instant responses when unfurling link-based content. In order to guarantee sufficient responsiveness, consider rendering pages and image assets ahead of time by enabling static optimization by setting `NEXT_PUBLIC_STATICALLY_OPTIMIZE_PAGES = 1` and `NEXT_PUBLIC_STATICALLY_OPTIMIZE_OG_IMAGES = 1`. Keep in mind that this will increase platform usage. diff --git a/package.json b/package.json index e7590552..0017359c 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "analyze": "ANALYZE=true next build" }, "dependencies": { - "@ai-sdk/openai": "^0.0.28", - "@aws-sdk/client-s3": "3.596.0", - "@aws-sdk/s3-request-presigner": "3.596.0", + "@ai-sdk/openai": "^0.0.29", + "@aws-sdk/client-s3": "3.598.0", + "@aws-sdk/s3-request-presigner": "3.598.0", "@next/bundle-analyzer": "14.2.4", "@radix-ui/react-dropdown-menu": "^2.0.6", "@tailwindcss/container-queries": "^0.1.1", @@ -30,7 +30,7 @@ "@vercel/blob": "^0.23.3", "@vercel/kv": "^2.0.0", "@vercel/speed-insights": "^1.0.12", - "ai": "^3.1.35", + "ai": "^3.1.36", "autoprefixer": "10.4.19", "camelcase-keys": "^9.1.3", "clsx": "^2.1.1", @@ -57,7 +57,7 @@ "tailwindcss": "3.4.4", "ts-exif-parser": "^0.2.2", "typescript": "5.4.5", - "undici": "^6.18.2", + "undici": "^6.19.0", "use-debounce": "^10.0.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4edb593..6a809a7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,14 @@ importers: .: dependencies: '@ai-sdk/openai': - specifier: ^0.0.28 - version: 0.0.28(zod@3.23.8) + specifier: ^0.0.29 + version: 0.0.29(zod@3.23.8) '@aws-sdk/client-s3': - specifier: 3.596.0 - version: 3.596.0 + specifier: 3.598.0 + version: 3.598.0 '@aws-sdk/s3-request-presigner': - specifier: 3.596.0 - version: 3.596.0 + specifier: 3.598.0 + version: 3.598.0 '@next/bundle-analyzer': specifier: 14.2.4 version: 14.2.4 @@ -72,8 +72,8 @@ importers: specifier: ^1.0.12 version: 1.0.12(next@14.2.4(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5)) ai: - specifier: ^3.1.35 - version: 3.1.35(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) + specifier: ^3.1.36 + version: 3.1.36(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) autoprefixer: specifier: 10.4.19 version: 10.4.19(postcss@8.4.38) @@ -153,8 +153,8 @@ importers: specifier: 5.4.5 version: 5.4.5 undici: - specifier: ^6.18.2 - version: 6.18.2 + specifier: ^6.19.0 + version: 6.19.0 use-debounce: specifier: ^10.0.1 version: 10.0.1(react@18.3.1) @@ -164,14 +164,14 @@ packages: '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - '@ai-sdk/openai@0.0.28': - resolution: {integrity: sha512-1rVwdaIIy6TDB29IAp8qcu7JmkfQ9Y5LqtFDyCu8fQgaVcAllKffmCuVBoKhti8LwcnDlafVZDCdzXajWnTJYA==} + '@ai-sdk/openai@0.0.29': + resolution: {integrity: sha512-LctoOAlOX7bI3dQ5IA9DXBmHhhb2l59pg+aFclIp0qR86bqrB7eEH/odu8wn+yWjPy90D40aU0E1sNDYz985vA==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@0.0.13': - resolution: {integrity: sha512-cB2dPm9flj+yin5sjBLFcXdW8sZtAXLE/OLKgz9uHpHM55s7mnwZrDGfO6ot/ukHTxDDJunZLW7qSjgK/u0F1g==} + '@ai-sdk/provider-utils@0.0.14': + resolution: {integrity: sha512-PCQFN3MlC6DShS/81IFU9NVvt9OekQGiZTEowRc2AwAwWrDsv7er3UkcMswFAL/Z7xZKjgu0dZTNH1z9oUlo7A==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -183,8 +183,8 @@ packages: resolution: {integrity: sha512-NzkrtREQpHID1cTqY/C4CI30PVOaXWKYytDR2EcytmFgnP7Z6+CrGIA/YCnNhYAuUm6Nx+nGpRL/Hmyrv7NYzg==} engines: {node: '>=18'} - '@ai-sdk/react@0.0.1': - resolution: {integrity: sha512-y6KXzxRR7vmAgDVnS/hnLPt3RztvWOisANBw47O1o1D2nDeUqTo8E/SNw2J8mzzlRInGaw40EREY8jEf9AcwWQ==} + '@ai-sdk/react@0.0.2': + resolution: {integrity: sha512-segG03b5Gdt5h2Q41Ylfn88Rv5OiyXBZOi1ycQ/4MSkQX0D6WLJ8QhNIPkI5ie2qLeQA7sVqFLVuDTnpZQtDSg==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 @@ -192,8 +192,8 @@ packages: react: optional: true - '@ai-sdk/solid@0.0.1': - resolution: {integrity: sha512-5WWdoqpemYW66rMZUYF4sbDtZfF96Vt8RtrzpLv+95ZUM1nY1elxAWpHCeOyYEjWJE5+eiKpUs6Jr5mP2/gz8Q==} + '@ai-sdk/solid@0.0.2': + resolution: {integrity: sha512-zGj01mXzar10XwRwWGb0tQ4dLf4M3lGGdcZ2eDm79BN2U4KhNtEwyELKg+EaKdqHgfYJDyiotuqKjT4bcEFttQ==} engines: {node: '>=18'} peerDependencies: solid-js: ^1.7.7 @@ -201,8 +201,8 @@ packages: solid-js: optional: true - '@ai-sdk/svelte@0.0.1': - resolution: {integrity: sha512-bpjTLKOwdcXjJzboq15etT1hdnRI1ErPZweWSsu1/LJlEFzD1M0qpZQwWHwPquYkzeppXOgsLrUZ+9D2RoC47Q==} + '@ai-sdk/svelte@0.0.2': + resolution: {integrity: sha512-q5heL7XxDzm2z3mxEESZuTx4rgOKMiKA5UkobFrUQgdJeE2jk/Efyl+1urvU8JWOZ5gokDS8beW1WA10LuuIvw==} engines: {node: '>=18'} peerDependencies: svelte: ^3.0.0 || ^4.0.0 @@ -210,12 +210,12 @@ packages: svelte: optional: true - '@ai-sdk/ui-utils@0.0.1': - resolution: {integrity: sha512-zOr1zIw/EH4fEQvDKsqYG3wY7GW32h8Wrx0lQpSAP59UCA4zgHBH6ogF5oj7+LUuWjT6be9S0G3l/tEPyRyxEw==} + '@ai-sdk/ui-utils@0.0.2': + resolution: {integrity: sha512-CpWKvYO99UC72oHUts5MrJGPHEoOWrxhN4R8KjeHanZn7cosJ3bal++seSGJrwDz2ImqrpfAdRHmQtdbsCCOyQ==} engines: {node: '>=18'} - '@ai-sdk/vue@0.0.1': - resolution: {integrity: sha512-B3qAW22FYGy1ltobnF7LiPAmARTrCkH15qjw4WAXCnvRohsYOFTDACOBEsXRfa1OHmqWsUOYeNtE/oPhK3ybqw==} + '@ai-sdk/vue@0.0.2': + resolution: {integrity: sha512-AfhB1YbdvqeZKheBsjeRsYZOJK2N/InC0VtWook08jiLgI47cau444Bj5dmx6401a1de/3tjw218G4rpJM/icA==} engines: {node: '>=18'} peerDependencies: vue: ^3.3.4 @@ -245,169 +245,168 @@ packages: nodemailer: optional: true - '@aws-crypto/crc32@3.0.0': - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - - '@aws-crypto/crc32c@3.0.0': - resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - - '@aws-crypto/sha1-browser@3.0.0': - resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - - '@aws-sdk/client-s3@3.596.0': - resolution: {integrity: sha512-W5C85cEUTYbmCpvvhLye+KirtLcBMX4t0l4Zj3EsGc5tTwkp7lxZDmJEoDfRy0+FE2H/O6OZQJdWMXCwt/Inqw==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.596.0': - resolution: {integrity: sha512-KnTWtKzO0N+rMdIrVwbewFp4FAvVWBV/ekCAh5w7EN+uAvBHxMoFElE2RwlcRF/gH1/F715OspPMvOxPom6bMA==} + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso@3.592.0': - resolution: {integrity: sha512-w+SuW47jQqvOC7fonyjFjsOh3yjqJ+VpWdVrmrl0E/KryBE7ho/Wn991Buf/EiHHeJikoWgHsAIPkBH29+ntdA==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.598.0': + resolution: {integrity: sha512-UMxftsgF6j1vzm4Qd9vQJHs2he1NQCWWV8esZfmNFq23OpUC2BPMxkqi13ZQ9tnTAZUNs7yFT/x4Zsi/wpRZEw==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.596.0': - resolution: {integrity: sha512-37+WQDjgmqS/YXj3vPzIVIrbXaFcZ1WXk715AMGIPBZn9Y2/wr2bmSTpX7bsMyn0G8+LxmoIxFcG7n1Gu0nvLg==} + '@aws-sdk/client-sso-oidc@3.598.0': + resolution: {integrity: sha512-jfdH1pAO9Tt8Nkta/JJLoUnwl7jaRdxToQTJfUtE+o3+0JP5sA4LfC2rBkJSWcU5BdAA+kyOs5Lv776DlN04Vg==} engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.592.0': - resolution: {integrity: sha512-gLPMXR/HXDP+9gXAt58t7gaMTvRts9i6Q7NMISpkGF54wehskl5WGrbdtHJFylrlJ5BQo3XVY6i661o+EuR1wg==} + '@aws-sdk/client-sso@3.598.0': + resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.587.0': - resolution: {integrity: sha512-Hyg/5KFECIk2k5o8wnVEiniV86yVkhn5kzITUydmNGCkXdBFHMHRx6hleQ1bqwJHbBskyu8nbYamzcwymmGwmw==} + '@aws-sdk/client-sts@3.598.0': + resolution: {integrity: sha512-bXhz/cHL0iB9UH9IFtMaJJf4F8mV+HzncETCRFzZ9SyUMt5rP9j8A7VZknqGYSx/6mI8SsB1XJQkWSbhn6FiSQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-http@3.596.0': - resolution: {integrity: sha512-nnmvEsz1KJgRmfSZJPWuzbxPRXu8Y+/78Ifa1jY3fQKSKdEJfXMDsjPljJvMDBl4dZ8pf5Hwx+S/ONnMEDwYEA==} + '@aws-sdk/core@3.598.0': + resolution: {integrity: sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.596.0': - resolution: {integrity: sha512-c7PLtd7GbnOVAc5sk3sVlHxLvEsM8RF96rsBGlRo4AVpil/lXLKyNv9VarS4w/ZZZoRbJRyZ+m92PjNcLvpTDQ==} + '@aws-sdk/credential-provider-env@3.598.0': + resolution: {integrity: sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-http@3.598.0': + resolution: {integrity: sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/credential-provider-ini@3.598.0': + resolution: {integrity: sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.596.0 + '@aws-sdk/client-sts': ^3.598.0 - '@aws-sdk/credential-provider-node@3.596.0': - resolution: {integrity: sha512-F4MLyXpQyie1AnJS9n7TIRL0aF7YH8tKMIJXDsM5OXpSZi2en+yR6SzsxvHf5dwS2Ga8LUdEJyiyS2NoebaJGA==} + '@aws-sdk/credential-provider-node@3.598.0': + resolution: {integrity: sha512-sXTlqL5I/awlF9Dg2MQ17SfrEaABVnsj2mf4jF5qQrIRhfbvQOIYdEqdy8Rn1AWlJMz/N450SGzc0XJ5owxxqw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.587.0': - resolution: {integrity: sha512-V4xT3iCqkF8uL6QC4gqBJg/2asd/damswP1h9HCfqTllmPWzImS+8WD3VjgTLw5b0KbTy+ZdUhKc0wDnyzkzxg==} + '@aws-sdk/credential-provider-process@3.598.0': + resolution: {integrity: sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.592.0': - resolution: {integrity: sha512-fYFzAdDHKHvhtufPPtrLdSv8lO6GuW3em6n3erM5uFdpGytNpjXvr3XGokIsuXcNkETAY/Xihg+G9ksNE8WJxQ==} + '@aws-sdk/credential-provider-sso@3.598.0': + resolution: {integrity: sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.587.0': - resolution: {integrity: sha512-XqIx/I2PG7kyuw3WjAP9wKlxy8IvFJwB8asOFT1xPFoVfZYKIogjG9oLP5YiRtfvDkWIztHmg5MlVv3HdJDGRw==} + '@aws-sdk/credential-provider-web-identity@3.598.0': + resolution: {integrity: sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.587.0 + '@aws-sdk/client-sts': ^3.598.0 - '@aws-sdk/middleware-bucket-endpoint@3.587.0': - resolution: {integrity: sha512-HkFXLPl8pr6BH/Q0JpOESqEKL0ZK3sk7aSZ1S6GE4RXET7H5R94THULXqQFZzD48gZcyFooO/yNKZTqrZFaWKg==} + '@aws-sdk/middleware-bucket-endpoint@3.598.0': + resolution: {integrity: sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-expect-continue@3.577.0': - resolution: {integrity: sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA==} + '@aws-sdk/middleware-expect-continue@3.598.0': + resolution: {integrity: sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.587.0': - resolution: {integrity: sha512-URMwp/budDvKhIvZ4a6zIBfFTun/iDlPWXqsGKYjEtHt8jz27OSjCZtDtIeqW4WTBdKL8KZgQcl+DdaE5M1qiQ==} + '@aws-sdk/middleware-flexible-checksums@3.598.0': + resolution: {integrity: sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.577.0': - resolution: {integrity: sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==} + '@aws-sdk/middleware-host-header@3.598.0': + resolution: {integrity: sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-location-constraint@3.577.0': - resolution: {integrity: sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA==} + '@aws-sdk/middleware-location-constraint@3.598.0': + resolution: {integrity: sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-logger@3.577.0': - resolution: {integrity: sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==} + '@aws-sdk/middleware-logger@3.598.0': + resolution: {integrity: sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.577.0': - resolution: {integrity: sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==} + '@aws-sdk/middleware-recursion-detection@3.598.0': + resolution: {integrity: sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-sdk-s3@3.587.0': - resolution: {integrity: sha512-vtXTGEiw1E9Fax4LmcU2Z208gbrC8ShrdsSLmGcRPpu5NPOGBFBSDG5sy5EDNClrFxIl/Le8coQnD0EDBtx+uQ==} + '@aws-sdk/middleware-sdk-s3@3.598.0': + resolution: {integrity: sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-signing@3.587.0': - resolution: {integrity: sha512-tiZaTDj4RvhXGRAlncFn7CSEfL3iNPO67WSaxAq+Ls5j1VgczPhu5262cWONNoMgth3nXR1hhLC4ITSl/a6AzA==} + '@aws-sdk/middleware-signing@3.598.0': + resolution: {integrity: sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-ssec@3.577.0': - resolution: {integrity: sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg==} + '@aws-sdk/middleware-ssec@3.598.0': + resolution: {integrity: sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-user-agent@3.587.0': - resolution: {integrity: sha512-SyDomN+IOrygLucziG7/nOHkjUXES5oH5T7p8AboO8oakMQJdnudNXiYWTicQWO52R51U6CR27rcMPTGeMedYA==} + '@aws-sdk/middleware-user-agent@3.598.0': + resolution: {integrity: sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==} engines: {node: '>=16.0.0'} - '@aws-sdk/region-config-resolver@3.587.0': - resolution: {integrity: sha512-93I7IPZtulZQoRK+O20IJ4a1syWwYPzoO2gc3v+/GNZflZPV3QJXuVbIm0pxBsu0n/mzKGUKqSOLPIaN098HcQ==} + '@aws-sdk/region-config-resolver@3.598.0': + resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} engines: {node: '>=16.0.0'} - '@aws-sdk/s3-request-presigner@3.596.0': - resolution: {integrity: sha512-+2BXIc8JGH3MtLrR1Rx5gdD/AOEnuNsm5vmfbCW3tT3UinPkqCQTe2dB5KFCu76YTRE+D2yY8OF2ZW46sbh9bA==} + '@aws-sdk/s3-request-presigner@3.598.0': + resolution: {integrity: sha512-IC06/HrZNlYxdyKH5+4A9B98NwcxJjgXOSUV581X7GpqHHspZ0T6tih8shBus3zzW8WfVqRAhJVwZtfMY55hdw==} engines: {node: '>=16.0.0'} - '@aws-sdk/signature-v4-multi-region@3.587.0': - resolution: {integrity: sha512-TR9+ZSjdXvXUz54ayHcCihhcvxI9W7102J1OK6MrLgBlPE7uRhAx42BR9L5lLJ86Xj3LuqPWf//o9d/zR9WVIg==} + '@aws-sdk/signature-v4-multi-region@3.598.0': + resolution: {integrity: sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==} engines: {node: '>=16.0.0'} - '@aws-sdk/token-providers@3.587.0': - resolution: {integrity: sha512-ULqhbnLy1hmJNRcukANBWJmum3BbjXnurLPSFXoGdV0llXYlG55SzIla2VYqdveQEEjmsBuTZdFvXAtNpmS5Zg==} + '@aws-sdk/token-providers@3.598.0': + resolution: {integrity: sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.587.0 + '@aws-sdk/client-sso-oidc': ^3.598.0 - '@aws-sdk/types@3.577.0': - resolution: {integrity: sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==} + '@aws-sdk/types@3.598.0': + resolution: {integrity: sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==} engines: {node: '>=16.0.0'} '@aws-sdk/util-arn-parser@3.568.0': resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.587.0': - resolution: {integrity: sha512-8I1HG6Em8wQWqKcRW6m358mqebRVNpL8XrrEoT4In7xqkKkmYtHRNVYP6lcmiQh5pZ/c/FXu8dSchuFIWyEtqQ==} + '@aws-sdk/util-endpoints@3.598.0': + resolution: {integrity: sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-format-url@3.577.0': - resolution: {integrity: sha512-SyEGC2J+y/krFRuPgiF02FmMYhqbiIkOjDE6k4nYLJQRyS6XEAGxZoG+OHeOVEM+bsDgbxokXZiM3XKGu6qFIg==} + '@aws-sdk/util-format-url@3.598.0': + resolution: {integrity: sha512-1X0PlREk5K6tQg8rFZOjoKVtDyI1WgbKJNCymHhMye6STryY6fhuuayKstiDThkqDYxqahjUJz/Tl2p5W3rbcw==} engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.568.0': resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-user-agent-browser@3.577.0': - resolution: {integrity: sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==} + '@aws-sdk/util-user-agent-browser@3.598.0': + resolution: {integrity: sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==} - '@aws-sdk/util-user-agent-node@3.587.0': - resolution: {integrity: sha512-Pnl+DUe/bvnbEEDHP3iVJrOtE3HbFJBPgsD6vJ+ml/+IYk1Eq49jEG+EHZdNTPz3SDG0kbp2+7u41MKYJHR/iQ==} + '@aws-sdk/util-user-agent-node@3.598.0': + resolution: {integrity: sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -415,11 +414,8 @@ packages: aws-crt: optional: true - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - - '@aws-sdk/xml-builder@3.575.0': - resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==} + '@aws-sdk/xml-builder@3.598.0': + resolution: {integrity: sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==} engines: {node: '>=16.0.0'} '@babel/code-frame@7.24.2': @@ -1224,8 +1220,8 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@smithy/abort-controller@3.0.0': - resolution: {integrity: sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==} + '@smithy/abort-controller@3.0.1': + resolution: {integrity: sha512-Jb7jg4E+C+uvrUQi+h9kbILY6ts6fglKZzseMCHlH9ayq+1f5QdpYf8MV/xppuiN6DAMJAmwGz53GwP3213dmA==} engines: {node: '>=16.0.0'} '@smithy/chunked-blob-reader-native@3.0.0': @@ -1234,127 +1230,131 @@ packages: '@smithy/chunked-blob-reader@3.0.0': resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - '@smithy/config-resolver@3.0.1': - resolution: {integrity: sha512-hbkYJc20SBDz2qqLzttjI/EqXemtmWk0ooRznLsiXp3066KQRTvuKHa7U4jCZCJq6Dozqvy0R1/vNESC9inPJg==} + '@smithy/config-resolver@3.0.2': + resolution: {integrity: sha512-wUyG6ezpp2sWAvfqmSYTROwFUmJqKV78GLf55WODrosBcT0BAMd9bOLO4HRhynWBgAobPml2cF9ZOdgCe00r+g==} engines: {node: '>=16.0.0'} - '@smithy/core@2.2.0': - resolution: {integrity: sha512-ygLZSSKgt9bR8HAxR9mK+U5obvAJBr6zlQuhN5soYWx/amjDoQN4dTkydTypgKe6rIbUjTILyLU+W5XFwXr4kg==} + '@smithy/core@2.2.1': + resolution: {integrity: sha512-R8Pzrr2v2oGUoj4CTZtKPr87lVtBsz7IUBGhSwS1kc6Cj0yPwNdYbkzhFsxhoDE9+BPl09VN/6rFsW9GJzWnBA==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@3.1.0': - resolution: {integrity: sha512-q4A4d38v8pYYmseu/jTS3Z5I3zXlEOe5Obi+EJreVKgSVyWUHOd7/yaVCinC60QG4MRyCs98tcxBH1IMC0bu7Q==} + '@smithy/credential-provider-imds@3.1.1': + resolution: {integrity: sha512-htndP0LwHdE3R3Nam9ZyVWhwPYOmD4xCL79kqvNxy8u/bv0huuy574CSiRY4cvEICgimv8jlVfLeZ7zZqbnB2g==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-codec@3.0.0': - resolution: {integrity: sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ==} + '@smithy/eventstream-codec@3.1.0': + resolution: {integrity: sha512-XFDl70ZY+FabSnTX3oQGGYvdbEaC8vPEFkCEOoBkumqaZIwR1WjjJCDu2VMXlHbKWKshefWXdT0NYteL5v6uFw==} - '@smithy/eventstream-serde-browser@3.0.0': - resolution: {integrity: sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw==} + '@smithy/eventstream-serde-browser@3.0.2': + resolution: {integrity: sha512-6147vdedQGaWn3Nt4P1KV0LuV8IH4len1SAeycyko0p8oRLWFyYyx0L8JHGclePDSphkjxZqBHtyIfyupCaTGg==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-config-resolver@3.0.0': - resolution: {integrity: sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw==} + '@smithy/eventstream-serde-config-resolver@3.0.1': + resolution: {integrity: sha512-6+B8P+5Q1mll4u7IoI7mpmYOSW3/c2r3WQoYLdqOjbIKMixJFGmN79ZjJiNMy4X2GZ4We9kQ6LfnFuczSlhcyw==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-node@3.0.0': - resolution: {integrity: sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ==} + '@smithy/eventstream-serde-node@3.0.2': + resolution: {integrity: sha512-DLtmGAfqxZAql8rB+HqyPlUne22u3EEVj+hxlUjgXk0hXt+SfLGK0ljzRFmiWQ3qGpHu1NdJpJA9e5JE/dJxFw==} engines: {node: '>=16.0.0'} - '@smithy/eventstream-serde-universal@3.0.0': - resolution: {integrity: sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw==} + '@smithy/eventstream-serde-universal@3.0.2': + resolution: {integrity: sha512-d3SgAIQ/s4EbU8HAHJ8m2MMJPAL30nqJktyVgvqZWNznA8PJl61gJw5gj/yjIt/Fvs3d4fU8FmPPAhdp2yr/7A==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@3.0.1': - resolution: {integrity: sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==} + '@smithy/fetch-http-handler@3.0.2': + resolution: {integrity: sha512-0nW6tLK0b7EqSsfKvnOmZCgJqnodBAnvqcrlC5dotKfklLedPTRGsQamSVbVDWyuU/QGg+YbZDJUQ0CUufJXZQ==} - '@smithy/hash-blob-browser@3.0.0': - resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} + '@smithy/hash-blob-browser@3.1.0': + resolution: {integrity: sha512-lKEHDN6bLzYdx5cFmdMHfYVmmTZTmjphwPBSumgkaniEYwRAXnbDEGETeuzfquS9Py1aH6cmqzXWxxkD7mV3sA==} - '@smithy/hash-node@3.0.0': - resolution: {integrity: sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==} + '@smithy/hash-node@3.0.1': + resolution: {integrity: sha512-w2ncjgk2EYO2+WhAsSQA8owzoOSY7IL1qVytlwpnL1pFGWTjIoIh5nROkEKXY51unB63bMGZqDiVoXaFbyKDlg==} engines: {node: '>=16.0.0'} - '@smithy/hash-stream-node@3.0.0': - resolution: {integrity: sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA==} + '@smithy/hash-stream-node@3.1.0': + resolution: {integrity: sha512-OkU9vjN17yYsXTSrouctZn2iYwG4z8WSc7F50+9ogG2crOtMopkop+22j35tX2ry2i/vLRCYgnqEmBWfvnYT2g==} engines: {node: '>=16.0.0'} - '@smithy/invalid-dependency@3.0.0': - resolution: {integrity: sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==} + '@smithy/invalid-dependency@3.0.1': + resolution: {integrity: sha512-RSNF/32BKygXKKMyS7koyuAq1rcdW5p5c4EFa77QenBFze9As+JiRnV9OWBh2cB/ejGZalEZjvIrMLHwJl7aGA==} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} '@smithy/is-array-buffer@3.0.0': resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} - '@smithy/md5-js@3.0.0': - resolution: {integrity: sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA==} + '@smithy/md5-js@3.0.1': + resolution: {integrity: sha512-wQa0YGsR4Zb1GQLGwOOgRAbkj22P6CFGaFzu5bKk8K4HVNIC2dBlIxqZ/baF0pLiSZySAPdDZT7CdZ7GkGXt5A==} - '@smithy/middleware-content-length@3.0.0': - resolution: {integrity: sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==} + '@smithy/middleware-content-length@3.0.1': + resolution: {integrity: sha512-6QdK/VbrCfXD5/QolE2W/ok6VqxD+SM28Ds8iSlEHXZwv4buLsvWyvoEEy0322K/g5uFgPzBmZjGqesTmPL+yQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@3.0.1': - resolution: {integrity: sha512-lQ/UOdGD4KM5kLZiAl0q8Qy3dPbynvAXKAdXnYlrA1OpaUwr+neSsVokDZpY6ZVb5Yx8jnus29uv6XWpM9P4SQ==} + '@smithy/middleware-endpoint@3.0.2': + resolution: {integrity: sha512-gWEaGYB3Bei17Oiy/F2IlUPpBazNXImytoOdJ1xbrUOaJKAOiUhx8/4FOnYLLJHdAwa9PlvJ2ULda2f/Dnwi9w==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@3.0.3': - resolution: {integrity: sha512-Wve1qzJb83VEU/6q+/I0cQdAkDnuzELC6IvIBwDzUEiGpKqXgX1v10FUuZGbRS6Ov/P+HHthcAoHOJZQvZNAkA==} + '@smithy/middleware-retry@3.0.4': + resolution: {integrity: sha512-Tu+FggbLNF5G9L6Wi8o32Mg4bhlBInWlhhaFKyytGRnkfxGopxFVXJQn7sjZdFYJyTz6RZZa06tnlvavUgtoVg==} engines: {node: '>=16.0.0'} - '@smithy/middleware-serde@3.0.0': - resolution: {integrity: sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==} + '@smithy/middleware-serde@3.0.1': + resolution: {integrity: sha512-ak6H/ZRN05r5+SR0/IUc5zOSyh2qp3HReg1KkrnaSLXmncy9lwOjNqybX4L4x55/e5mtVDn1uf/gQ6bw5neJPw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-stack@3.0.0': - resolution: {integrity: sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==} + '@smithy/middleware-stack@3.0.1': + resolution: {integrity: sha512-fS5uT//y1SlBdkzIvgmWQ9FufwMXrHSSbuR25ygMy1CRDIZkcBMoF4oTMYNfR9kBlVBcVzlv7joFdNrFuQirPA==} engines: {node: '>=16.0.0'} - '@smithy/node-config-provider@3.1.0': - resolution: {integrity: sha512-ngfB8QItUfTFTfHMvKuc2g1W60V1urIgZHqD1JNFZC2tTWXahqf2XvKXqcBS7yZqR7GqkQQZy11y/lNOUWzq7Q==} + '@smithy/node-config-provider@3.1.1': + resolution: {integrity: sha512-z5G7+ysL4yUtMghUd2zrLkecu0mTfnYlt5dR76g/HsFqf7evFazwiZP1ag2EJenGxNBDwDM5g8nm11NPogiUVA==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.0.0': - resolution: {integrity: sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==} + '@smithy/node-http-handler@3.0.1': + resolution: {integrity: sha512-hlBI6MuREA4o1wBMEt+QNhUzoDtFFvwR6ecufimlx9D79jPybE/r8kNorphXOi91PgSO9S2fxRjcKCLk7Jw8zA==} engines: {node: '>=16.0.0'} - '@smithy/property-provider@3.1.0': - resolution: {integrity: sha512-Tj3+oVhqdZgemjCiWjFlADfhvLF4C/uKDuKo7/tlEsRQ9+3emCreR2xndj970QSRSsiCEU8hZW3/8JQu+n5w4Q==} + '@smithy/property-provider@3.1.1': + resolution: {integrity: sha512-YknOMZcQkB5on+MU0DvbToCmT2YPtTETMXW0D3+/Iln7ezT+Zm1GMHhCW1dOH/X/+LkkQD9aXEoCX/B10s4Xdw==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@4.0.0': - resolution: {integrity: sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==} + '@smithy/protocol-http@4.0.1': + resolution: {integrity: sha512-eBhm9zwcFPEazc654c0BEWtxYAzrw+OhoSf5pkwKzfftWKXRoqEhwOE2Pvn30v0iAdo7Mfsfb6pi1NnZlGCMpg==} engines: {node: '>=16.0.0'} - '@smithy/querystring-builder@3.0.0': - resolution: {integrity: sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==} + '@smithy/querystring-builder@3.0.1': + resolution: {integrity: sha512-vKitpnG/2KOMVlx3x1S3FkBH075EROG3wcrcDaNerQNh8yuqnSL23btCD2UyX4i4lpPzNW6VFdxbn2Z25b/g5Q==} engines: {node: '>=16.0.0'} - '@smithy/querystring-parser@3.0.0': - resolution: {integrity: sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==} + '@smithy/querystring-parser@3.0.1': + resolution: {integrity: sha512-Qt8DMC05lVS8NcQx94lfVbZSX+2Ym7032b/JR8AlboAa/D669kPzqb35dkjkvAG6+NWmUchef3ENtrD6F+5n8Q==} engines: {node: '>=16.0.0'} - '@smithy/service-error-classification@3.0.0': - resolution: {integrity: sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==} + '@smithy/service-error-classification@3.0.1': + resolution: {integrity: sha512-ubFUvIePjDCyIzZ+pLETqNC6KXJ/fc6g+/baqel7Zf6kJI/kZKgjwkCI7zbUhoUuOZ/4eA/87YasVu40b/B4bA==} engines: {node: '>=16.0.0'} - '@smithy/shared-ini-file-loader@3.1.0': - resolution: {integrity: sha512-dAM7wSX0NR3qTNyGVN/nwwpEDzfV9T/3AN2eABExWmda5VqZKSsjlINqomO5hjQWGv+IIkoXfs3u2vGSNz8+Rg==} + '@smithy/shared-ini-file-loader@3.1.1': + resolution: {integrity: sha512-nD6tXIX2126/P9e3wqRY1bm9dTtPZwRDyjVOd18G28o+1UOG+kOVgUwujE795HslSuPlEgqzsH5sgNP1hDjj9g==} engines: {node: '>=16.0.0'} - '@smithy/signature-v4@3.0.0': - resolution: {integrity: sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==} + '@smithy/signature-v4@3.1.0': + resolution: {integrity: sha512-m0/6LW3IQ3/JBcdhqjpkpABPTPhcejqeAn0U877zxBdNLiWAnG2WmCe5MfkUyVuvpFTPQnQwCo/0ZBR4uF5kxg==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.1.1': - resolution: {integrity: sha512-tj4Ku7MpzZR8cmVuPcSbrLFVxmptWktmJMwST/uIEq4sarabEdF8CbmQdYB7uJ/X51Qq2EYwnRsoS7hdR4B7rA==} + '@smithy/smithy-client@3.1.2': + resolution: {integrity: sha512-f3eQpczBOFUtdT/ptw2WpUKu1qH1K7xrssrSiHYtd9TuLXkvFqb88l9mz9FHeUVNSUxSnkW1anJnw6rLwUKzQQ==} engines: {node: '>=16.0.0'} - '@smithy/types@3.0.0': - resolution: {integrity: sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==} + '@smithy/types@3.1.0': + resolution: {integrity: sha512-qi4SeCVOUPjhSSZrxxB/mB8DrmuSFUcJnD9KXjuP+7C3LV/KFV4kpuUSH3OHDZgQB9TEH/1sO/Fq/5HyaK9MPw==} engines: {node: '>=16.0.0'} - '@smithy/url-parser@3.0.0': - resolution: {integrity: sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==} + '@smithy/url-parser@3.0.1': + resolution: {integrity: sha512-G140IlNFlzYWVCedC4E2d6NycM1dCUbe5CnsGW1hmGt4hYKiGOw0v7lVru9WAn5T2w09QEjl4fOESWjGmCvVmg==} '@smithy/util-base64@3.0.0': resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} @@ -1367,6 +1367,10 @@ packages: resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@3.0.0': resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} engines: {node: '>=16.0.0'} @@ -1375,44 +1379,48 @@ packages: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@3.0.3': - resolution: {integrity: sha512-3DFON2bvXJAukJe+qFgPV/rorG7ZD3m4gjCXHD1V5z/tgKQp5MCTCLntrd686tX6tj8Uli3lefWXJudNg5WmCA==} + '@smithy/util-defaults-mode-browser@3.0.4': + resolution: {integrity: sha512-sXtin3Mue3A3xo4+XkozpgPptgmRwvNPOqTvb3ANGTCzzoQgAPBNjpE+aXCINaeSMXwHmv7E2oEn2vWdID+SAQ==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@3.0.3': - resolution: {integrity: sha512-D0b8GJXecT00baoSQ3Iieu3k3mZ7GY8w1zmg8pdogYrGvWJeLcIclqk2gbkG4K0DaBGWrO6v6r20iwIFfDYrmA==} + '@smithy/util-defaults-mode-node@3.0.4': + resolution: {integrity: sha512-CUF6TyxLh3CgBRVYgZNOPDfzHQjeQr0vyALR6/DkQkOm7rNfGEzW1BRFi88C73pndmfvoiIT7ochuT76OPz9Dw==} engines: {node: '>= 10.0.0'} - '@smithy/util-endpoints@2.0.1': - resolution: {integrity: sha512-ZRT0VCOnKlVohfoABMc8lWeQo/JEFuPWctfNRXgTHbyOVssMOLYFUNWukxxiHRGVAhV+n3c0kPW+zUqckjVPEA==} + '@smithy/util-endpoints@2.0.2': + resolution: {integrity: sha512-4zFOcBFQvifd2LSD4a1dKvfIWWwh4sWNtS3oZ7mpob/qPPmJseqKB148iT+hWCDsG//TmI+8vjYPgZdvnkYlTg==} engines: {node: '>=16.0.0'} '@smithy/util-hex-encoding@3.0.0': resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} engines: {node: '>=16.0.0'} - '@smithy/util-middleware@3.0.0': - resolution: {integrity: sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==} + '@smithy/util-middleware@3.0.1': + resolution: {integrity: sha512-WRODCQtUsO7vIvfrdxS8RFPeLKcewYtaCglZsBsedIKSUGIIvMlZT5oh+pCe72I+1L+OjnZuqRNpN2LKhWA4KQ==} engines: {node: '>=16.0.0'} - '@smithy/util-retry@3.0.0': - resolution: {integrity: sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==} + '@smithy/util-retry@3.0.1': + resolution: {integrity: sha512-5lRtYm+8fNFEUTdqZXg5M4ppVp40rMIJfR1TpbHAhKQgPIDpWT+iYMaqgnwEbtpi9U1smyUOPv5Sg+M1neOBgw==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.0.1': - resolution: {integrity: sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==} + '@smithy/util-stream@3.0.2': + resolution: {integrity: sha512-n5Obp5AnlI6qHo8sbupwrcpBe6vFp4qkl0SRNuExKPNrH3ABAMG2ZszRTIUIv2b4AsFrCO+qiy4uH1Q3z1dxTA==} engines: {node: '>=16.0.0'} '@smithy/util-uri-escape@3.0.0': resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} engines: {node: '>=16.0.0'} + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + '@smithy/util-utf8@3.0.0': resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} engines: {node: '>=16.0.0'} - '@smithy/util-waiter@3.0.0': - resolution: {integrity: sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==} + '@smithy/util-waiter@3.0.1': + resolution: {integrity: sha512-wwnrVQdjQxvWGOAiLmqlEhENGCcDIN+XJ/+usPOgSZObAslrCXgKlkX7rNVwIWW2RhPguTKthvF+4AoO0Z6KpA==} engines: {node: '>=16.0.0'} '@swc/counter@0.1.3': @@ -1745,8 +1753,8 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - ai@3.1.35: - resolution: {integrity: sha512-kr0GAKe3HrUqk0SSII8MrOyBC/Lsglh37ayYrGzzEo3QQ0igriBdVTQed+8UYljbnYikEglbLfwXAzg3qH6u4g==} + ai@3.1.36: + resolution: {integrity: sha512-mYAMofD43mrdMa4m0Bd3W/xsrjJeAMBg+jBDZtWdQWb+mipE7gY0CVbcG4AgEYXkJdPFV7/I8d7fC6QKfAw5+w==} engines: {node: '>=18'} peerDependencies: openai: ^4.42.0 @@ -4069,9 +4077,6 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -4126,8 +4131,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.18.2: - resolution: {integrity: sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==} + undici@6.19.0: + resolution: {integrity: sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==} engines: {node: '>=18.17'} universalify@0.2.0: @@ -4334,13 +4339,13 @@ snapshots: '@adobe/css-tools@4.4.0': {} - '@ai-sdk/openai@0.0.28(zod@3.23.8)': + '@ai-sdk/openai@0.0.29(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.10 - '@ai-sdk/provider-utils': 0.0.13(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/provider-utils@0.0.13(zod@3.23.8)': + '@ai-sdk/provider-utils@0.0.14(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.10 eventsource-parser: 1.1.2 @@ -4353,19 +4358,19 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@0.0.1(react@18.3.1)(zod@3.23.8)': + '@ai-sdk/react@0.0.2(react@18.3.1)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.13(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.1(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) swr: 2.2.0(react@18.3.1) optionalDependencies: react: 18.3.1 transitivePeerDependencies: - zod - '@ai-sdk/solid@0.0.1(solid-js@1.8.17)(zod@3.23.8)': + '@ai-sdk/solid@0.0.2(solid-js@1.8.17)(zod@3.23.8)': dependencies: - '@ai-sdk/ui-utils': 0.0.1(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) solid-swr-store: 0.10.7(solid-js@1.8.17)(swr-store@0.10.6) swr-store: 0.10.6 optionalDependencies: @@ -4373,25 +4378,25 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.1(svelte@4.2.17)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.2(svelte@4.2.17)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.13(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.1(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) sswr: 2.1.0(svelte@4.2.17) optionalDependencies: svelte: 4.2.17 transitivePeerDependencies: - zod - '@ai-sdk/ui-utils@0.0.1(zod@3.23.8)': + '@ai-sdk/ui-utils@0.0.2(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.13(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) transitivePeerDependencies: - zod - '@ai-sdk/vue@0.0.1(vue@3.4.27(typescript@5.4.5))(zod@3.23.8)': + '@ai-sdk/vue@0.0.2(vue@3.4.27(typescript@5.4.5))(zod@3.23.8)': dependencies: - '@ai-sdk/ui-utils': 0.0.1(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) swrv: 1.0.4(vue@3.4.27(typescript@5.4.5)) optionalDependencies: vue: 3.4.27(typescript@5.4.5) @@ -4415,527 +4420,517 @@ snapshots: preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) - '@aws-crypto/crc32@3.0.0': + '@aws-crypto/crc32@5.2.0': dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 - '@aws-crypto/crc32c@3.0.0': + '@aws-crypto/crc32c@5.2.0': dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 - '@aws-crypto/ie11-detection@3.0.0': + '@aws-crypto/sha1-browser@5.2.0': dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha1-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 - '@aws-crypto/sha256-browser@3.0.0': + '@aws-crypto/sha256-browser@5.2.0': dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 - '@aws-crypto/sha256-js@3.0.0': + '@aws-crypto/sha256-js@5.2.0': dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.598.0 + tslib: 2.6.2 - '@aws-crypto/supports-web-crypto@3.0.0': + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: - tslib: 1.14.1 + tslib: 2.6.2 - '@aws-crypto/util@3.0.0': + '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + '@aws-sdk/types': 3.598.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 - '@aws-sdk/client-s3@3.596.0': + '@aws-sdk/client-s3@3.598.0': dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/core': 3.592.0 - '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/middleware-bucket-endpoint': 3.587.0 - '@aws-sdk/middleware-expect-continue': 3.577.0 - '@aws-sdk/middleware-flexible-checksums': 3.587.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-location-constraint': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-sdk-s3': 3.587.0 - '@aws-sdk/middleware-signing': 3.587.0 - '@aws-sdk/middleware-ssec': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.587.0 - '@aws-sdk/region-config-resolver': 3.587.0 - '@aws-sdk/signature-v4-multi-region': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.587.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.587.0 - '@aws-sdk/xml-builder': 3.575.0 - '@smithy/config-resolver': 3.0.1 - '@smithy/core': 2.2.0 - '@smithy/eventstream-serde-browser': 3.0.0 - '@smithy/eventstream-serde-config-resolver': 3.0.0 - '@smithy/eventstream-serde-node': 3.0.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-blob-browser': 3.0.0 - '@smithy/hash-node': 3.0.0 - '@smithy/hash-stream-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/md5-js': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-retry': 3.0.3 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.598.0 + '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/middleware-bucket-endpoint': 3.598.0 + '@aws-sdk/middleware-expect-continue': 3.598.0 + '@aws-sdk/middleware-flexible-checksums': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-location-constraint': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/middleware-signing': 3.598.0 + '@aws-sdk/middleware-ssec': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/signature-v4-multi-region': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@aws-sdk/xml-builder': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/eventstream-serde-browser': 3.0.2 + '@smithy/eventstream-serde-config-resolver': 3.0.1 + '@smithy/eventstream-serde-node': 3.0.2 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-blob-browser': 3.1.0 + '@smithy/hash-node': 3.0.1 + '@smithy/hash-stream-node': 3.1.0 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/md5-js': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.3 - '@smithy/util-defaults-mode-node': 3.0.3 - '@smithy/util-endpoints': 2.0.1 - '@smithy/util-retry': 3.0.0 - '@smithy/util-stream': 3.0.1 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-retry': 3.0.1 + '@smithy/util-stream': 3.0.2 '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.0.0 + '@smithy/util-waiter': 3.0.1 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.596.0': + '@aws-sdk/client-sso-oidc@3.598.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/core': 3.592.0 - '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.587.0 - '@aws-sdk/region-config-resolver': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.587.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.587.0 - '@smithy/config-resolver': 3.0.1 - '@smithy/core': 2.2.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-retry': 3.0.3 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.3 - '@smithy/util-defaults-mode-node': 3.0.3 - '@smithy/util-endpoints': 2.0.1 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.592.0': + '@aws-sdk/client-sso@3.598.0': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.592.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.587.0 - '@aws-sdk/region-config-resolver': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.587.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.587.0 - '@smithy/config-resolver': 3.0.1 - '@smithy/core': 2.2.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-retry': 3.0.3 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.3 - '@smithy/util-defaults-mode-node': 3.0.3 - '@smithy/util-endpoints': 2.0.1 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)': + '@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 - '@aws-sdk/core': 3.592.0 - '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.587.0 - '@aws-sdk/region-config-resolver': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.587.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.587.0 - '@smithy/config-resolver': 3.0.1 - '@smithy/core': 2.2.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-retry': 3.0.3 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.598.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/core': 2.2.1 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/hash-node': 3.0.1 + '@smithy/invalid-dependency': 3.0.1 + '@smithy/middleware-content-length': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/middleware-stack': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/node-http-handler': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.3 - '@smithy/util-defaults-mode-node': 3.0.3 - '@smithy/util-endpoints': 2.0.1 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.4 + '@smithy/util-defaults-mode-node': 3.0.4 + '@smithy/util-endpoints': 2.0.2 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/core@3.592.0': + '@aws-sdk/core@3.598.0': dependencies: - '@smithy/core': 2.2.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 + '@smithy/core': 2.2.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 - '@aws-sdk/credential-provider-env@3.587.0': + '@aws-sdk/credential-provider-env@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/credential-provider-http@3.596.0': + '@aws-sdk/credential-provider-http@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/property-provider': 3.1.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 + '@aws-sdk/types': 3.598.0 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/node-http-handler': 3.0.1 + '@smithy/property-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-stream': 3.0.2 tslib: 2.6.2 - '@aws-sdk/credential-provider-ini@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0))': + '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/credential-provider-env': 3.587.0 - '@aws-sdk/credential-provider-http': 3.596.0 - '@aws-sdk/credential-provider-process': 3.587.0 - '@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.1.0 - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0))': + '@aws-sdk/credential-provider-node@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': dependencies: - '@aws-sdk/credential-provider-env': 3.587.0 - '@aws-sdk/credential-provider-http': 3.596.0 - '@aws-sdk/credential-provider-ini': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/credential-provider-process': 3.587.0 - '@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.1.0 - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/credential-provider-env': 3.598.0 + '@aws-sdk/credential-provider-http': 3.598.0 + '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-process': 3.598.0 + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/types': 3.598.0 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.587.0': + '@aws-sdk/credential-provider-process@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/credential-provider-sso@3.592.0(@aws-sdk/client-sso-oidc@3.596.0)': + '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': dependencies: - '@aws-sdk/client-sso': 3.592.0 - '@aws-sdk/token-providers': 3.587.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/client-sso': 3.598.0 + '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.587.0(@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0))': + '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-bucket-endpoint@3.587.0': + '@aws-sdk/middleware-bucket-endpoint@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 + '@aws-sdk/types': 3.598.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-expect-continue@3.577.0': + '@aws-sdk/middleware-expect-continue@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-flexible-checksums@3.587.0': + '@aws-sdk/middleware-flexible-checksums@3.598.0': dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.577.0 + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.598.0 '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-host-header@3.577.0': + '@aws-sdk/middleware-host-header@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-location-constraint@3.577.0': + '@aws-sdk/middleware-location-constraint@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-logger@3.577.0': + '@aws-sdk/middleware-logger@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-recursion-detection@3.577.0': + '@aws-sdk/middleware-recursion-detection@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-sdk-s3@3.587.0': + '@aws-sdk/middleware-sdk-s3@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 + '@aws-sdk/types': 3.598.0 '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 '@smithy/util-config-provider': 3.0.0 tslib: 2.6.2 - '@aws-sdk/middleware-signing@3.587.0': + '@aws-sdk/middleware-signing@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@aws-sdk/middleware-ssec@3.577.0': + '@aws-sdk/middleware-ssec@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/middleware-user-agent@3.587.0': + '@aws-sdk/middleware-user-agent@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.587.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/region-config-resolver@3.587.0': + '@aws-sdk/region-config-resolver@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@aws-sdk/s3-request-presigner@3.596.0': + '@aws-sdk/s3-request-presigner@3.598.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-format-url': 3.577.0 - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 + '@aws-sdk/signature-v4-multi-region': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-format-url': 3.598.0 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/signature-v4-multi-region@3.587.0': + '@aws-sdk/signature-v4-multi-region@3.598.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.587.0 - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/middleware-sdk-s3': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/signature-v4': 3.1.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.596.0)': + '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.596.0 - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/types@3.577.0': + '@aws-sdk/types@3.598.0': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@aws-sdk/util-arn-parser@3.568.0': dependencies: tslib: 2.6.2 - '@aws-sdk/util-endpoints@3.587.0': + '@aws-sdk/util-endpoints@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - '@smithy/util-endpoints': 2.0.1 + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 + '@smithy/util-endpoints': 2.0.2 tslib: 2.6.2 - '@aws-sdk/util-format-url@3.577.0': + '@aws-sdk/util-format-url@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/querystring-builder': 3.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@aws-sdk/util-locate-window@3.568.0': dependencies: tslib: 2.6.2 - '@aws-sdk/util-user-agent-browser@3.577.0': + '@aws-sdk/util-user-agent-browser@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/types': 3.1.0 bowser: 2.11.0 tslib: 2.6.2 - '@aws-sdk/util-user-agent-node@3.587.0': + '@aws-sdk/util-user-agent-node@3.598.0': dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@aws-sdk/types': 3.598.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/util-utf8-browser@3.259.0': + '@aws-sdk/xml-builder@3.598.0': dependencies: - tslib: 2.6.2 - - '@aws-sdk/xml-builder@3.575.0': - dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@babel/code-frame@7.24.2': @@ -5828,9 +5823,9 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@smithy/abort-controller@3.0.0': + '@smithy/abort-controller@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@smithy/chunked-blob-reader-native@3.0.0': @@ -5842,216 +5837,220 @@ snapshots: dependencies: tslib: 2.6.2 - '@smithy/config-resolver@3.0.1': + '@smithy/config-resolver@3.0.2': dependencies: - '@smithy/node-config-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@smithy/core@2.2.0': + '@smithy/core@2.2.1': dependencies: - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-retry': 3.0.3 - '@smithy/middleware-serde': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-retry': 3.0.4 + '@smithy/middleware-serde': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@smithy/credential-provider-imds@3.1.0': + '@smithy/credential-provider-imds@3.1.1': dependencies: - '@smithy/node-config-provider': 3.1.0 - '@smithy/property-provider': 3.1.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 tslib: 2.6.2 - '@smithy/eventstream-codec@3.0.0': + '@smithy/eventstream-codec@3.1.0': dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 3.0.0 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.1.0 '@smithy/util-hex-encoding': 3.0.0 tslib: 2.6.2 - '@smithy/eventstream-serde-browser@3.0.0': + '@smithy/eventstream-serde-browser@3.0.2': dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/eventstream-serde-universal': 3.0.2 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/eventstream-serde-config-resolver@3.0.0': + '@smithy/eventstream-serde-config-resolver@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/eventstream-serde-node@3.0.0': + '@smithy/eventstream-serde-node@3.0.2': dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/eventstream-serde-universal': 3.0.2 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/eventstream-serde-universal@3.0.0': + '@smithy/eventstream-serde-universal@3.0.2': dependencies: - '@smithy/eventstream-codec': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/eventstream-codec': 3.1.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/fetch-http-handler@3.0.1': + '@smithy/fetch-http-handler@3.0.2': dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/querystring-builder': 3.0.1 + '@smithy/types': 3.1.0 '@smithy/util-base64': 3.0.0 tslib: 2.6.2 - '@smithy/hash-blob-browser@3.0.0': + '@smithy/hash-blob-browser@3.1.0': dependencies: '@smithy/chunked-blob-reader': 3.0.0 '@smithy/chunked-blob-reader-native': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/hash-node@3.0.0': + '@smithy/hash-node@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/hash-stream-node@3.0.0': + '@smithy/hash-stream-node@3.1.0': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/invalid-dependency@3.0.0': + '@smithy/invalid-dependency@3.0.1': + dependencies: + '@smithy/types': 3.1.0 + tslib: 2.6.2 + + '@smithy/is-array-buffer@2.2.0': dependencies: - '@smithy/types': 3.0.0 tslib: 2.6.2 '@smithy/is-array-buffer@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/md5-js@3.0.0': + '@smithy/md5-js@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/middleware-content-length@3.0.0': + '@smithy/middleware-content-length@3.0.1': dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/middleware-endpoint@3.0.1': + '@smithy/middleware-endpoint@3.0.2': dependencies: - '@smithy/middleware-serde': 3.0.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/middleware-serde': 3.0.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 + '@smithy/url-parser': 3.0.1 + '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@smithy/middleware-retry@3.0.3': + '@smithy/middleware-retry@3.0.4': dependencies: - '@smithy/node-config-provider': 3.1.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/service-error-classification': 3.0.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/service-error-classification': 3.0.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 + '@smithy/util-middleware': 3.0.1 + '@smithy/util-retry': 3.0.1 tslib: 2.6.2 uuid: 9.0.1 - '@smithy/middleware-serde@3.0.0': + '@smithy/middleware-serde@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/middleware-stack@3.0.0': + '@smithy/middleware-stack@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/node-config-provider@3.1.0': + '@smithy/node-config-provider@3.1.1': dependencies: - '@smithy/property-provider': 3.1.0 - '@smithy/shared-ini-file-loader': 3.1.0 - '@smithy/types': 3.0.0 + '@smithy/property-provider': 3.1.1 + '@smithy/shared-ini-file-loader': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/node-http-handler@3.0.0': + '@smithy/node-http-handler@3.0.1': dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/abort-controller': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/querystring-builder': 3.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/property-provider@3.1.0': + '@smithy/property-provider@3.1.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/protocol-http@4.0.0': + '@smithy/protocol-http@4.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/querystring-builder@3.0.0': + '@smithy/querystring-builder@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.2 - '@smithy/querystring-parser@3.0.0': + '@smithy/querystring-parser@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/service-error-classification@3.0.0': + '@smithy/service-error-classification@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 - '@smithy/shared-ini-file-loader@3.1.0': + '@smithy/shared-ini-file-loader@3.1.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/signature-v4@3.0.0': + '@smithy/signature-v4@3.1.0': dependencies: '@smithy/is-array-buffer': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.0 + '@smithy/util-middleware': 3.0.1 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 - '@smithy/smithy-client@3.1.1': + '@smithy/smithy-client@3.1.2': dependencies: - '@smithy/middleware-endpoint': 3.0.1 - '@smithy/middleware-stack': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 + '@smithy/middleware-endpoint': 3.0.2 + '@smithy/middleware-stack': 3.0.1 + '@smithy/protocol-http': 4.0.1 + '@smithy/types': 3.1.0 + '@smithy/util-stream': 3.0.2 tslib: 2.6.2 - '@smithy/types@3.0.0': + '@smithy/types@3.1.0': dependencies: tslib: 2.6.2 - '@smithy/url-parser@3.0.0': + '@smithy/url-parser@3.0.1': dependencies: - '@smithy/querystring-parser': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/querystring-parser': 3.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@smithy/util-base64@3.0.0': @@ -6068,6 +6067,11 @@ snapshots: dependencies: tslib: 2.6.2 + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.2 + '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 @@ -6077,50 +6081,50 @@ snapshots: dependencies: tslib: 2.6.2 - '@smithy/util-defaults-mode-browser@3.0.3': + '@smithy/util-defaults-mode-browser@3.0.4': dependencies: - '@smithy/property-provider': 3.1.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 + '@smithy/property-provider': 3.1.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 bowser: 2.11.0 tslib: 2.6.2 - '@smithy/util-defaults-mode-node@3.0.3': + '@smithy/util-defaults-mode-node@3.0.4': dependencies: - '@smithy/config-resolver': 3.0.1 - '@smithy/credential-provider-imds': 3.1.0 - '@smithy/node-config-provider': 3.1.0 - '@smithy/property-provider': 3.1.0 - '@smithy/smithy-client': 3.1.1 - '@smithy/types': 3.0.0 + '@smithy/config-resolver': 3.0.2 + '@smithy/credential-provider-imds': 3.1.1 + '@smithy/node-config-provider': 3.1.1 + '@smithy/property-provider': 3.1.1 + '@smithy/smithy-client': 3.1.2 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/util-endpoints@2.0.1': + '@smithy/util-endpoints@2.0.2': dependencies: - '@smithy/node-config-provider': 3.1.0 - '@smithy/types': 3.0.0 + '@smithy/node-config-provider': 3.1.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@smithy/util-hex-encoding@3.0.0': dependencies: tslib: 2.6.2 - '@smithy/util-middleware@3.0.0': + '@smithy/util-middleware@3.0.1': dependencies: - '@smithy/types': 3.0.0 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/util-retry@3.0.0': + '@smithy/util-retry@3.0.1': dependencies: - '@smithy/service-error-classification': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/service-error-classification': 3.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 - '@smithy/util-stream@3.0.1': + '@smithy/util-stream@3.0.2': dependencies: - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/fetch-http-handler': 3.0.2 + '@smithy/node-http-handler': 3.0.1 + '@smithy/types': 3.1.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 @@ -6131,15 +6135,20 @@ snapshots: dependencies: tslib: 2.6.2 + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.2 + '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 tslib: 2.6.2 - '@smithy/util-waiter@3.0.0': + '@smithy/util-waiter@3.0.1': dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/types': 3.0.0 + '@smithy/abort-controller': 3.0.1 + '@smithy/types': 3.1.0 tslib: 2.6.2 '@swc/counter@0.1.3': {} @@ -6517,15 +6526,15 @@ snapshots: transitivePeerDependencies: - supports-color - ai@3.1.35(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8): + ai@3.1.36(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.10 - '@ai-sdk/provider-utils': 0.0.13(zod@3.23.8) - '@ai-sdk/react': 0.0.1(react@18.3.1)(zod@3.23.8) - '@ai-sdk/solid': 0.0.1(solid-js@1.8.17)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.1(svelte@4.2.17)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.1(zod@3.23.8) - '@ai-sdk/vue': 0.0.1(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) + '@ai-sdk/react': 0.0.2(react@18.3.1)(zod@3.23.8) + '@ai-sdk/solid': 0.0.2(solid-js@1.8.17)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.2(svelte@4.2.17)(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) + '@ai-sdk/vue': 0.0.2(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 @@ -9238,8 +9247,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} - tslib@2.6.2: {} type-check@0.4.0: @@ -9301,7 +9308,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@6.18.2: {} + undici@6.19.0: {} universalify@0.2.0: {} diff --git a/src/admin/AdminCTA.tsx b/src/admin/AdminCTA.tsx index 79a448f8..92fae7b4 100644 --- a/src/admin/AdminCTA.tsx +++ b/src/admin/AdminCTA.tsx @@ -4,15 +4,22 @@ import PhotoUpload from '@/photo/PhotoUpload'; import { PATH_ADMIN_PHOTOS } from '@/site/paths'; import { useAppState } from '@/state/AppState'; import Link from 'next/link'; +import { useState } from 'react'; import { FaArrowRight } from 'react-icons/fa'; export default function AdminCTA() { const { isUserSignedIn } = useAppState(); + const [isUploading, setIsUploading] = useState(false); + return (
{isUserSignedIn - ? + ? : undefined), ]); - const navItemPhotos = { + // Photos + const items = [{ label: 'Photos', href: PATH_ADMIN_PHOTOS, count: countPhotos, - }; + }]; - const navItemUploads = { + // Uploads + if (countUploads > 0) { items.push({ label: 'Uploads', href: PATH_ADMIN_UPLOADS, count: countUploads, - }; + }); } - const navItemTags = { + // Tags + if (countTags > 0) { items.push({ label: 'Tags', href: PATH_ADMIN_TAGS, count: countTags, - }; - - const items = [navItemPhotos]; - - if (countUploads > 0) { items.push(navItemUploads); } - if (countTags > 0) { items.push(navItemTags); } + }); } return ( diff --git a/src/admin/AdminOutdatedClient.tsx b/src/admin/AdminOutdatedClient.tsx new file mode 100644 index 00000000..1c2ea4e0 --- /dev/null +++ b/src/admin/AdminOutdatedClient.tsx @@ -0,0 +1,104 @@ +'use client'; + +import { OUTDATED_THRESHOLD, Photo } from '@/photo'; +import AdminPhotosTable from '@/admin/AdminPhotosTable'; +import LoaderButton from '@/components/primitives/LoaderButton'; +import IconGrSync from '@/site/IconGrSync'; +import Banner from '@/components/Banner'; +import AdminChildPage from '@/components/AdminChildPage'; +import { PATH_ADMIN_PHOTOS } from '@/site/paths'; +import { useState } from 'react'; +import { syncPhotosAction } from '@/photo/actions'; +import { useRouter } from 'next/navigation'; + +const UPDATE_BATCH_SIZE = 4; + +export default function AdminOutdatedClient({ + photos, + hasAiTextGeneration, +}: { + photos: Photo[] + hasAiTextGeneration: boolean +}) { + const [photoIdsSyncing, setPhotoIdsSyncing] = useState([]); + + const arePhotoIdsSyncing = photoIdsSyncing.length > 0; + + const router = useRouter(); + + return ( + + + Outdated ({photos.length}) + + + Outdated + + } + accessory={} + hideTextOnMobile={false} + className="primary" + onClick={async () => { + if (window.confirm( + // eslint-disable-next-line max-len + `Are you sure you want to sync the oldest ${UPDATE_BATCH_SIZE} photos? This action cannot be undone.` + )) { + const photosToSync = photos + .slice(0, UPDATE_BATCH_SIZE) + .map(photo => photo.id); + setPhotoIdsSyncing(photosToSync); + syncPhotosAction(photosToSync) + .finally(() => { + setPhotoIdsSyncing([]); + router.refresh(); + }); + } + }} + isLoading={arePhotoIdsSyncing} + > + {arePhotoIdsSyncing + ? 'Syncing' + : <> + + Sync {UPDATE_BATCH_SIZE} Oldest Photos + + + Sync {UPDATE_BATCH_SIZE} Oldest + + } + } + > +
+ +
+ {photos.length} + {' '} + {photos.length === 1 ? 'photo' : 'photos'} + {' ('}uploaded before + {' '} + {new Date(OUTDATED_THRESHOLD).toLocaleDateString()}{')'} + {' '} + may have: missing EXIF fields, inaccurate blur data, + {' '} + undesired privacy settings + {hasAiTextGeneration && ', missing AI-generated text'} +
+
+
+ +
+
+
+ ); +} \ No newline at end of file diff --git a/src/admin/AdminPhotosClient.tsx b/src/admin/AdminPhotosClient.tsx new file mode 100644 index 00000000..23248d8a --- /dev/null +++ b/src/admin/AdminPhotosClient.tsx @@ -0,0 +1,86 @@ +'use client'; + +import PhotoUpload from '@/photo/PhotoUpload'; +import { clsx } from 'clsx/lite'; +import SiteGrid from '@/components/SiteGrid'; +import AdminUploadsTable from '@/admin/AdminUploadsTable'; +import { AI_TEXT_GENERATION_ENABLED, PRO_MODE_ENABLED } from '@/site/config'; +import AdminPhotosTable from '@/admin/AdminPhotosTable'; +import AdminPhotosTableInfinite from '@/admin/AdminPhotosTableInfinite'; +import PathLoaderButton from '@/components/primitives/PathLoaderButton'; +import { PATH_ADMIN_OUTDATED } from '@/site/paths'; +import { Photo } from '@/photo'; +import { StorageListResponse } from '@/services/storage'; +import { useState } from 'react'; +import { LiaBroomSolid } from 'react-icons/lia'; + +export default function AdminPhotosClient({ + photos, + photosCount, + photosCountOutdated, + onLastPhotoUpload, + blobPhotoUrls, + infiniteScrollInitial, + infiniteScrollMultiple, +}: { + photos: Photo[] + photosCount: number + photosCountOutdated: number + onLastPhotoUpload: () => Promise + blobPhotoUrls: StorageListResponse + infiniteScrollInitial: number + infiniteScrollMultiple: number +}) { + const [isUploading, setIsUploading] = useState(false); + + return ( + +
+
+ +
+ {photosCountOutdated > 0 && } + title={`${photosCountOutdated} Outdated Photos`} + className={clsx( + isUploading && 'hidden md:inline-flex', + )} + hideTextOnMobile={false} + > + {photosCountOutdated} + } +
+ {!isUploading && blobPhotoUrls.length > 0 && +
+ +
} +
+ + {photosCount > photos.length && + } +
+
} + /> + ); +} diff --git a/src/admin/AdminPhotosTable.tsx b/src/admin/AdminPhotosTable.tsx index 36a969a5..bd580183 100644 --- a/src/admin/AdminPhotosTable.tsx +++ b/src/admin/AdminPhotosTable.tsx @@ -12,10 +12,7 @@ import PhotoDate from '@/photo/PhotoDate'; import FormWithConfirm from '@/components/FormWithConfirm'; import EditButton from './EditButton'; import DeleteButton from './DeleteButton'; -import { - deletePhotoFormAction, - syncPhotoAction, -} from '@/photo/actions'; +import { deletePhotoFormAction } from '@/photo/actions'; import { useAppState } from '@/state/AppState'; import { RevalidatePhoto } from '@/photo/InfinitePhotoScroll'; import PhotoSyncButton from './PhotoSyncButton'; @@ -24,15 +21,28 @@ export default function AdminPhotosTable({ photos, onLastPhotoVisible, revalidatePhoto, + photoIdsSyncing = [], hasAiTextGeneration, + showUpdatedAt, + canEdit = true, + canDelete = true, }: { photos: Photo[], onLastPhotoVisible?: () => void revalidatePhoto?: RevalidatePhoto - hasAiTextGeneration?: boolean + photoIdsSyncing?: string[] + hasAiTextGeneration: boolean + showUpdatedAt?: boolean + canEdit?: boolean + canDelete?: boolean }) { const { invalidateSwr } = useAppState(); + const opacityForPhotoId = (photoId: string) => + photoIdsSyncing.length > 0 && !photoIdsSyncing.includes(photoId) + ? 'opacity-40' + : undefined; + return ( {photos.map((photo, index) => @@ -42,8 +52,12 @@ export default function AdminPhotosTable({ onVisible={index === photos.length - 1 ? onLastPhotoVisible : undefined} + className={opacityForPhotoId(photo.id)} /> -
+
- +
- + {canEdit && + } 0} + className={opacityForPhotoId(photo.id)} shouldConfirm shouldToast /> - revalidatePhoto?.(photo.id, true)} - > - - - - + {canDelete && + revalidatePhoto?.(photo.id, true)} + > + + + + }
)}
diff --git a/src/admin/AdminPhotosTableInfinite.tsx b/src/admin/AdminPhotosTableInfinite.tsx index 33b8b793..285d8091 100644 --- a/src/admin/AdminPhotosTableInfinite.tsx +++ b/src/admin/AdminPhotosTableInfinite.tsx @@ -3,16 +3,18 @@ import { PATH_ADMIN_PHOTOS } from '@/site/paths'; import InfinitePhotoScroll from '../photo/InfinitePhotoScroll'; import AdminPhotosTable from './AdminPhotosTable'; +import { ComponentProps } from 'react'; export default function AdminPhotosTableInfinite({ initialOffset, itemsPerPage, hasAiTextGeneration, + canEdit, + canDelete, }: { initialOffset: number itemsPerPage: number - hasAiTextGeneration?: boolean -}) { +} & Omit, 'photos'>) { return ( } ); diff --git a/src/admin/ExifSyncButton.tsx b/src/admin/ExifSyncButton.tsx new file mode 100644 index 00000000..b91367a9 --- /dev/null +++ b/src/admin/ExifSyncButton.tsx @@ -0,0 +1,37 @@ +import FormWithConfirm from '@/components/FormWithConfirm'; +import SubmitButtonWithStatus from '@/components/SubmitButtonWithStatus'; +import IconGrSync from '@/site/IconGrSync'; +import { clsx } from 'clsx/lite'; +import { ComponentProps } from 'react'; + +export default function ExifSyncButton({ + action, + label, + onFormSubmit, + photoUrl, + className, +}: { + action: (formData: FormData) => void + label?: string + photoUrl?: string +} & ComponentProps) { + return ( + + + } + onFormSubmit={onFormSubmit} + > + {label} + + + ); +} diff --git a/src/admin/PhotoSyncButton.tsx b/src/admin/PhotoSyncButton.tsx index 2eda5877..ea410d82 100644 --- a/src/admin/PhotoSyncButton.tsx +++ b/src/admin/PhotoSyncButton.tsx @@ -1,61 +1,61 @@ -import FormWithConfirm from '@/components/FormWithConfirm'; -import SubmitButtonWithStatus from '@/components/SubmitButtonWithStatus'; +import LoaderButton from '@/components/primitives/LoaderButton'; +import { syncPhotoAction } from '@/photo/actions'; import IconGrSync from '@/site/IconGrSync'; -import { clsx } from 'clsx/lite'; -import { ComponentProps } from 'react'; +import { toastSuccess } from '@/toast'; +import { ComponentProps, useState } from 'react'; export default function PhotoSyncButton({ - action, - label, - onFormSubmit, - formData: { photoId, photoUrl } = {}, + photoId, photoTitle, + onSyncComplete, + className, + isSyncingExternal, hasAiTextGeneration, + disabled, shouldConfirm, shouldToast, }: { - action: (formData: FormData) => void - label?: string - formData?: { - photoId?: string - photoUrl?: string - } + photoId: string photoTitle?: string + onSyncComplete?: () => void + isSyncingExternal?: boolean hasAiTextGeneration?: boolean shouldConfirm?: boolean shouldToast?: boolean -} & ComponentProps) { +} & ComponentProps) { + const [isSyncing, setIsSyncing] = useState(false); + const confirmText = ['Overwrite']; if (photoTitle) { confirmText.push(`"${photoTitle}"`); } confirmText.push('data from original file?'); if (hasAiTextGeneration) { confirmText.push( 'AI text will be generated for undefined fields.'); } confirmText.push('This action cannot be undone.'); + return ( - - {photoId && - } - {photoUrl && - } - } - onFormSubmitToastMessage={shouldToast - ? photoTitle - ? `"${photoTitle}" data synced` - : 'Data synced' - : undefined} - onFormSubmit={onFormSubmit} - > - {label} - - + } + onClick={() => { + if (!shouldConfirm || window.confirm(confirmText.join(' '))) { + setIsSyncing(true); + syncPhotoAction(photoId) + .then(() => { + onSyncComplete?.(); + if (shouldToast) { + toastSuccess(photoTitle + ? `"${photoTitle}" data synced` + : 'Data synced'); + } + }) + .finally(() => setIsSyncing(false)); + } + }} + isLoading={isSyncing || isSyncingExternal} + disabled={disabled} + /> ); } diff --git a/src/app/admin/layout.tsx b/src/app/admin/layout.tsx index 6baa955d..9951ac69 100644 --- a/src/app/admin/layout.tsx +++ b/src/app/admin/layout.tsx @@ -6,7 +6,7 @@ export default async function AdminLayout({ children: React.ReactNode }) { return ( -
+
{children}
diff --git a/src/app/admin/outdated/page.tsx b/src/app/admin/outdated/page.tsx new file mode 100644 index 00000000..a6d707b1 --- /dev/null +++ b/src/app/admin/outdated/page.tsx @@ -0,0 +1,20 @@ +import { getPhotos } from '@/photo/db/query'; +import { OUTDATED_THRESHOLD } from '@/photo'; +import AdminOutdatedClient from '@/admin/AdminOutdatedClient'; +import { AI_TEXT_GENERATION_ENABLED } from '@/site/config'; + +export default async function AdminOutdatedPage() { + const photos = await getPhotos({ + hidden: 'include', + sortBy: 'createdAtAsc', + updatedBefore: OUTDATED_THRESHOLD, + limit: 1_000, + }).catch(() => []); + + return ( + + ); +} diff --git a/src/app/admin/photos/page.tsx b/src/app/admin/photos/page.tsx index 542c0d65..41c59dad 100644 --- a/src/app/admin/photos/page.tsx +++ b/src/app/admin/photos/page.tsx @@ -1,15 +1,9 @@ -import PhotoUpload from '@/photo/PhotoUpload'; -import { clsx } from 'clsx/lite'; -import SiteGrid from '@/components/SiteGrid'; -import AdminUploadsTable from '@/admin/AdminUploadsTable'; -import { AI_TEXT_GENERATION_ENABLED, PRO_MODE_ENABLED } from '@/site/config'; import { getStoragePhotoUrlsNoStore } from '@/services/storage/cache'; import { getPhotos } from '@/photo/db/query'; -import { revalidatePath } from 'next/cache'; -import AdminPhotosTable from '@/admin/AdminPhotosTable'; -import AdminPhotosTableInfinite from - '@/admin/AdminPhotosTableInfinite'; import { getPhotosMetaCached } from '@/photo/cache'; +import { OUTDATED_THRESHOLD } from '@/photo'; +import AdminPhotosClient from '@/admin/AdminPhotosClient'; +import { revalidatePath } from 'next/cache'; const DEBUG_PHOTO_BLOBS = false; @@ -20,6 +14,7 @@ export default async function AdminPhotosPage() { const [ photos, photosCount, + photosCountOutdated, blobPhotoUrls, ] = await Promise.all([ getPhotos({ @@ -30,46 +25,30 @@ export default async function AdminPhotosPage() { getPhotosMetaCached({ hidden: 'include'}) .then(({ count }) => count) .catch(() => 0), + getPhotosMetaCached({ + hidden: 'include', + updatedBefore: OUTDATED_THRESHOLD, + }) + .then(({ count }) => count) + .catch(() => 0), DEBUG_PHOTO_BLOBS ? getStoragePhotoUrlsNoStore() : [], ]); return ( - - { - 'use server'; - // Update upload count in admin nav - revalidatePath('/admin', 'layout'); - }} - /> - {blobPhotoUrls.length > 0 && -
- -
} -
- - {photosCount > photos.length && - } -
-
} - /> + { + 'use server'; + // Update upload count in admin nav + revalidatePath('/admin', 'layout'); + }, + blobPhotoUrls, + infiniteScrollInitial: INFINITE_SCROLL_INITIAL_ADMIN_PHOTOS, + infiniteScrollMultiple: INFINITE_SCROLL_MULTIPLE_ADMIN_PHOTOS, + }} /> ); } diff --git a/src/components/Banner.tsx b/src/components/Banner.tsx index db738a84..62e140c7 100644 --- a/src/components/Banner.tsx +++ b/src/components/Banner.tsx @@ -27,8 +27,8 @@ export default function Banner({ >
{icon ?? } {children}
diff --git a/src/components/FormWithConfirm.tsx b/src/components/FormWithConfirm.tsx index d0d68a17..1b97ea84 100644 --- a/src/components/FormWithConfirm.tsx +++ b/src/components/FormWithConfirm.tsx @@ -6,11 +6,13 @@ export default function FormWithConfirm({ action, confirmText, onSubmit, + className, children, }: { action: (formData: FormData) => void confirmText?: string onSubmit?: () => void + className?: string children: ReactNode }) { return ( @@ -24,6 +26,7 @@ export default function FormWithConfirm({ e.preventDefault(); } }} + className={className} > {children} diff --git a/src/components/ImageInput.tsx b/src/components/ImageInput.tsx index 057db1d6..a45ed101 100644 --- a/src/components/ImageInput.tsx +++ b/src/components/ImageInput.tsx @@ -5,10 +5,10 @@ import { useRef, useState } from 'react'; import { CopyExif } from '@/lib/CopyExif'; import exifr from 'exifr'; import { clsx } from 'clsx/lite'; -import Spinner from './Spinner'; import { ACCEPTED_PHOTO_FILE_TYPES } from '@/photo'; import { FiUploadCloud } from 'react-icons/fi'; import { MAX_IMAGE_SIZE } from '@/services/next-image'; +import LoaderButton from './primitives/LoaderButton'; const INPUT_ID = 'file'; @@ -36,7 +36,8 @@ export default function ImageInput({ showUploadStatus?: boolean debug?: boolean }) { - const ref = useRef(null); + const inputRef = useRef(null); + const canvasRef = useRef(null); const [image, setImage] = useState(); const [filesLength, setFilesLength] = useState(0); @@ -57,26 +58,24 @@ export default function ImageInput({ loading && 'pointer-events-none cursor-not-allowed', )} > - } aria-disabled={loading} + onClick={() => inputRef.current?.click()} + hideTextOnMobile={false} > - - {loading - ? - : } - {loading ? 'Uploading' : 'Upload Photos'} - +
} {/* Small */} diff --git a/src/components/SubmitButtonWithStatus.tsx b/src/components/SubmitButtonWithStatus.tsx index 9ab870a8..3b6ab685 100644 --- a/src/components/SubmitButtonWithStatus.tsx +++ b/src/components/SubmitButtonWithStatus.tsx @@ -6,13 +6,6 @@ import { clsx } from 'clsx/lite'; import { toastSuccess } from '@/toast'; import LoaderButton from '@/components/primitives/LoaderButton'; -interface Props extends ComponentProps { - onFormStatusChange?: (pending: boolean) => void - onFormSubmitToastMessage?: string - onFormSubmit?: () => void - primary?: boolean -} - export default function SubmitButtonWithStatus({ icon, styleAs, @@ -26,7 +19,12 @@ export default function SubmitButtonWithStatus({ primary, type: _type, ...buttonProps -}: Props) { +}: { + onFormStatusChange?: (pending: boolean) => void + onFormSubmitToastMessage?: string + onFormSubmit?: () => void + primary?: boolean +} & ComponentProps) { const { pending } = useFormStatus(); const pendingPrevious = useRef(pending); diff --git a/src/components/primitives/LoaderButton.tsx b/src/components/primitives/LoaderButton.tsx index 91ede1b6..46aee2fe 100644 --- a/src/components/primitives/LoaderButton.tsx +++ b/src/components/primitives/LoaderButton.tsx @@ -1,3 +1,5 @@ +'use client'; + import Spinner, { SpinnerColor } from '@/components/Spinner'; import { clsx } from 'clsx/lite'; import { ButtonHTMLAttributes, ReactNode } from 'react'; @@ -42,7 +44,7 @@ export default function LoaderButton(props: { : ['h-9']), styleAs === 'link' && 'hover:text-dim', styleAs === 'link-without-hover' && 'hover:text-main', - 'inline-flex items-center gap-2 self-start', + 'inline-flex items-center gap-2 self-start whitespace-nowrap', className, )} disabled={isLoading || disabled} @@ -51,7 +53,7 @@ export default function LoaderButton(props: { {isLoading ? { startTransition(() => { diff --git a/src/photo/PhotoDate.tsx b/src/photo/PhotoDate.tsx index 3a96a2a4..93e5eba1 100644 --- a/src/photo/PhotoDate.tsx +++ b/src/photo/PhotoDate.tsx @@ -3,17 +3,44 @@ import { Photo } from '.'; import { useMemo } from 'react'; export default function PhotoDate({ - photo: { takenAtNaive }, + photo, className, + dateType = 'takenAt', }: { photo: Photo className?: string + dateType?: 'takenAt' | 'createdAt' | 'updatedAt' }) { const date = useMemo(() => { - const date = new Date(takenAtNaive); + const date = new Date(dateType === 'takenAt' + ? photo.takenAt + : dateType === 'createdAt' + ? photo.createdAt + : photo.updatedAt); return isNaN(date.getTime()) ? new Date() : date; - }, [takenAtNaive]); + }, [ + dateType, + photo.takenAt, + photo.createdAt, + photo.updatedAt, + ]); + + const getTitleLabel = () => { + switch (dateType) { + case 'takenAt': + return 'TAKEN'; + case 'createdAt': + return 'CREATED'; + case 'updatedAt': + return 'UPDATED'; + } + }; + return ( - + ); } diff --git a/src/photo/PhotoEditPageClient.tsx b/src/photo/PhotoEditPageClient.tsx index 8b7fc05f..4214f088 100644 --- a/src/photo/PhotoEditPageClient.tsx +++ b/src/photo/PhotoEditPageClient.tsx @@ -14,7 +14,7 @@ import { getExifDataAction } from './actions'; import { TagsWithMeta } from '@/tag'; import AiButton from './ai/AiButton'; import usePhotoFormParent from './form/usePhotoFormParent'; -import PhotoSyncButton from '@/admin/PhotoSyncButton'; +import ExifSyncButton from '@/admin/ExifSyncButton'; export default function PhotoEditPageClient({ photo, @@ -68,10 +68,10 @@ export default function PhotoEditPageClient({
{hasAiTextGeneration && } -
} isLoading={pending} diff --git a/src/photo/PhotoSmall.tsx b/src/photo/PhotoSmall.tsx index 66a9819a..282685f5 100644 --- a/src/photo/PhotoSmall.tsx +++ b/src/photo/PhotoSmall.tsx @@ -43,7 +43,7 @@ export default function PhotoSmall({ 'active:brightness-75', selected && 'brightness-50', 'min-w-[50px]', - 'rounded-[0.15rem] overflow-hidden', + 'rounded-[3px] overflow-hidden', 'border border-gray-200 dark:border-gray-800', )} prefetch={prefetch} diff --git a/src/photo/PhotoUpload.tsx b/src/photo/PhotoUpload.tsx index 62df397b..836d5d13 100644 --- a/src/photo/PhotoUpload.tsx +++ b/src/photo/PhotoUpload.tsx @@ -10,15 +10,18 @@ import { clsx } from 'clsx/lite'; export default function PhotoUpload({ shouldResize, onLastUpload, + isUploading, + setIsUploading, showUploadStatus, debug, }: { shouldResize?: boolean onLastUpload?: () => Promise + isUploading: boolean + setIsUploading: (isUploading: boolean) => void showUploadStatus?: boolean debug?: boolean }) { - const [isUploading, setIsUploading] = useState(false); const [uploadError, setUploadError] = useState(); const [debugDownload, setDebugDownload] = useState<{ href: string diff --git a/src/photo/actions.ts b/src/photo/actions.ts index 83460245..80f69397 100644 --- a/src/photo/actions.ts +++ b/src/photo/actions.ts @@ -291,9 +291,8 @@ export const getExifDataAction = async ( // - strip GPS data if necessary // - update blur data (or destroy if blur is disabled) // - generate AI text data, if enabled, and auto-generated fields are empty -export const syncPhotoAction = async (formData: FormData) => +export const syncPhotoAction = async (photoId: string) => runAuthenticatedAdminServerAction(async () => { - const photoId = formData.get('photoId') as string | undefined; const photo = await getPhoto(photoId ?? '', true); if (photo) { @@ -347,6 +346,14 @@ export const syncPhotoAction = async (formData: FormData) => } }); +export const syncPhotosAction = async (photoIds: string[]) => + runAuthenticatedAdminServerAction(async () => { + for (const photoId of photoIds) { + await syncPhotoAction(photoId); + } + revalidateAllKeysAndPaths(); + }); + export const clearCacheAction = async () => runAuthenticatedAdminServerAction(revalidateAllKeysAndPaths); diff --git a/src/photo/cache.ts b/src/photo/cache.ts index 07e3ce7c..fc21653f 100644 --- a/src/photo/cache.ts +++ b/src/photo/cache.ts @@ -62,7 +62,8 @@ const getPhotosCacheKeyForOption = ( return value ? `${option}-${createLensKey(value)}` : null; } case 'takenBefore': - case 'takenAfterInclusive': { + case 'takenAfterInclusive': + case 'updatedBefore': { const value = options[option]; return value ? `${option}-${value.toISOString()}` : null; } diff --git a/src/photo/db/index.ts b/src/photo/db/index.ts index 0ab0a847..8ee6db19 100644 --- a/src/photo/db/index.ts +++ b/src/photo/db/index.ts @@ -8,7 +8,7 @@ export const GENERATE_STATIC_PARAMS_LIMIT = 1000; export const PHOTO_DEFAULT_LIMIT = 100; export type GetPhotosOptions = { - sortBy?: 'createdAt' | 'takenAt' | 'priority' + sortBy?: 'createdAt' | 'createdAtAsc' | 'takenAt' | 'priority' limit?: number offset?: number query?: string @@ -19,6 +19,7 @@ export type GetPhotosOptions = { focal?: number takenBefore?: Date takenAfterInclusive?: Date + updatedBefore?: Date hidden?: 'exclude' | 'include' | 'only' }; @@ -30,6 +31,7 @@ export const getWheresFromOptions = ( hidden = 'exclude', takenBefore, takenAfterInclusive, + updatedBefore, query, tag, camera, @@ -52,13 +54,17 @@ export const getWheresFromOptions = ( } if (takenBefore) { - wheres.push(`taken_at > $${valuesIndex++}`); + wheres.push(`taken_at < $${valuesIndex++}`); wheresValues.push(takenBefore.toISOString()); } if (takenAfterInclusive) { - wheres.push(`taken_at <= $${valuesIndex++}`); + wheres.push(`taken_at >= $${valuesIndex++}`); wheresValues.push(takenAfterInclusive.toISOString()); } + if (updatedBefore) { + wheres.push(`updated_at < $${valuesIndex++}`); + wheresValues.push(updatedBefore.toISOString()); + } if (query) { // eslint-disable-next-line max-len wheres.push(`CONCAT(title, ' ', caption, ' ', semantic_description) ILIKE $${valuesIndex++}`); @@ -106,6 +112,8 @@ export const getOrderByFromOptions = (options: GetPhotosOptions) => { switch (sortBy) { case 'createdAt': return 'ORDER BY created_at DESC'; + case 'createdAtAsc': + return 'ORDER BY created_at ASC'; case 'takenAt': return 'ORDER BY taken_at DESC'; case 'priority': diff --git a/src/photo/index.ts b/src/photo/index.ts index 59994e22..5c0ef7fe 100644 --- a/src/photo/index.ts +++ b/src/photo/index.ts @@ -14,6 +14,8 @@ import camelcaseKeys from 'camelcase-keys'; import { isBefore } from 'date-fns'; import type { Metadata } from 'next'; +export const OUTDATED_THRESHOLD = new Date('2024-06-16'); + // INFINITE SCROLL: LARGE PHOTOS export const INFINITE_SCROLL_LARGE_PHOTO_INITIAL = process.env.NODE_ENV === 'development' ? 2 : 12; diff --git a/src/site/globals.css b/src/site/globals.css index 992b8dd7..50eaa560 100644 --- a/src/site/globals.css +++ b/src/site/globals.css @@ -67,6 +67,7 @@ input[type=checkbox] { @apply rounded-md + dark:bg-transparent } .error { @apply @@ -98,6 +99,7 @@ text-invert bg-gray-900 dark:bg-gray-100 disabled:text-dim + font-medium disabled:bg-gray-100 dark:disabled:bg-gray-900 disabled:border-gray-200 disabled:dark:border-gray-700 border-gray-900 dark:border-gray-100 diff --git a/src/site/paths.ts b/src/site/paths.ts index c67b0ff3..47d82f27 100644 --- a/src/site/paths.ts +++ b/src/site/paths.ts @@ -30,6 +30,7 @@ const PATH_FOCAL_LENGTH_DYNAMIC = `${PREFIX_FOCAL_LENGTH}/[focal]`; // Admin paths export const PATH_ADMIN_PHOTOS = `${PATH_ADMIN}/photos`; +export const PATH_ADMIN_OUTDATED = `${PATH_ADMIN}/outdated`; export const PATH_ADMIN_UPLOADS = `${PATH_ADMIN}/uploads`; export const PATH_ADMIN_TAGS = `${PATH_ADMIN}/tags`; export const PATH_ADMIN_CONFIGURATION = `${PATH_ADMIN}/configuration`;