diff --git a/package.json b/package.json index ab3fa7e2..8f044597 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "analyze": "ANALYZE=true next build" }, "dependencies": { - "@aws-sdk/client-s3": "3.540.0", - "@aws-sdk/s3-request-presigner": "3.540.0", + "@aws-sdk/client-s3": "3.550.0", + "@aws-sdk/s3-request-presigner": "3.550.0", "@next/bundle-analyzer": "14.1.4", "@radix-ui/react-dropdown-menu": "^2.0.6", "@tailwindcss/container-queries": "^0.1.1", @@ -18,18 +18,18 @@ "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.2.2", "@types/jest": "^29.5.12", - "@types/node": "^20.12.3", + "@types/node": "^20.12.5", "@types/react": "18.2.74", - "@types/react-dom": "18.2.23", + "@types/react-dom": "18.2.24", "@typescript-eslint/eslint-plugin": "^7.5.0", "@typescript-eslint/parser": "^7.5.0", "@upstash/ratelimit": "^1.0.3", "@vercel/analytics": "^1.2.2", - "@vercel/blob": "^0.22.1", + "@vercel/blob": "^0.22.2", "@vercel/kv": "^1.0.1", "@vercel/postgres": "0.8.0", "@vercel/speed-insights": "^1.0.10", - "ai": "^3.0.17", + "ai": "^3.0.19", "autoprefixer": "10.4.19", "camelcase-keys": "^9.1.3", "clsx": "^2.1.0", @@ -38,14 +38,14 @@ "eslint": "8.57.0", "eslint-config-next": "14.1.4", "exifr": "^7.1.3", - "framer-motion": "^11.0.24", + "framer-motion": "^11.0.25", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nanoid": "^5.0.6", - "next": "14.2.0-canary.54", + "next": "14.2.0-canary.63", "next-auth": "5.0.0-beta.15", "next-themes": "^0.3.0", - "openai": "^4.32.1", + "openai": "^4.33.0", "postcss": "8.4.38", "react": "18.2.0", "react-dom": "18.2.0", @@ -53,7 +53,7 @@ "sonner": "^1.4.41", "tailwindcss": "3.4.3", "ts-exif-parser": "^0.2.2", - "typescript": "5.4.3", + "typescript": "5.4.4", "use-debounce": "^10.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 335e7a7d..14f461de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,17 +6,17 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: 3.540.0 - version: 3.540.0 + specifier: 3.550.0 + version: 3.550.0 '@aws-sdk/s3-request-presigner': - specifier: 3.540.0 - version: 3.540.0 + specifier: 3.550.0 + version: 3.550.0 '@next/bundle-analyzer': specifier: 14.1.4 version: 14.1.4 '@radix-ui/react-dropdown-menu': specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@tailwindcss/container-queries': specifier: ^0.1.1 version: 0.1.1(tailwindcss@3.4.3) @@ -33,29 +33,29 @@ dependencies: specifier: ^29.5.12 version: 29.5.12 '@types/node': - specifier: ^20.12.3 - version: 20.12.3 + specifier: ^20.12.5 + version: 20.12.5 '@types/react': specifier: 18.2.74 version: 18.2.74 '@types/react-dom': - specifier: 18.2.23 - version: 18.2.23 + specifier: 18.2.24 + version: 18.2.24 '@typescript-eslint/eslint-plugin': specifier: ^7.5.0 - version: 7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3) + version: 7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/parser': specifier: ^7.5.0 - version: 7.5.0(eslint@8.57.0)(typescript@5.4.3) + version: 7.5.0(eslint@8.57.0)(typescript@5.4.4) '@upstash/ratelimit': specifier: ^1.0.3 version: 1.0.3 '@vercel/analytics': specifier: ^1.2.2 - version: 1.2.2(next@14.2.0-canary.54)(react@18.2.0) + version: 1.2.2(next@14.2.0-canary.63)(react@18.2.0) '@vercel/blob': - specifier: ^0.22.1 - version: 0.22.1 + specifier: ^0.22.2 + version: 0.22.2 '@vercel/kv': specifier: ^1.0.1 version: 1.0.1 @@ -64,10 +64,10 @@ dependencies: version: 0.8.0 '@vercel/speed-insights': specifier: ^1.0.10 - version: 1.0.10(next@14.2.0-canary.54)(react@18.2.0)(svelte@4.2.12)(vue@3.4.21) + version: 1.0.10(next@14.2.0-canary.63)(react@18.2.0)(svelte@4.2.12)(vue@3.4.21) ai: - specifier: ^3.0.17 - version: 3.0.17(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) + specifier: ^3.0.19 + version: 3.0.19(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) autoprefixer: specifier: 10.4.19 version: 10.4.19(postcss@8.4.38) @@ -79,7 +79,7 @@ dependencies: version: 2.1.0 cmdk: specifier: ^1.0.0 - version: 1.0.0(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.0(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) date-fns: specifier: ^3.6.0 version: 3.6.0 @@ -88,16 +88,16 @@ dependencies: version: 8.57.0 eslint-config-next: specifier: 14.1.4 - version: 14.1.4(eslint@8.57.0)(typescript@5.4.3) + version: 14.1.4(eslint@8.57.0)(typescript@5.4.4) exifr: specifier: ^7.1.3 version: 7.1.3 framer-motion: - specifier: ^11.0.24 - version: 11.0.24(react-dom@18.2.0)(react@18.2.0) + specifier: ^11.0.25 + version: 11.0.25(react-dom@18.2.0)(react@18.2.0) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.12.3) + version: 29.7.0(@types/node@20.12.5) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -105,17 +105,17 @@ dependencies: specifier: ^5.0.6 version: 5.0.6 next: - specifier: 14.2.0-canary.54 - version: 14.2.0-canary.54(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.0-canary.63 + version: 14.2.0-canary.63(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: 5.0.0-beta.15 - version: 5.0.0-beta.15(next@14.2.0-canary.54)(react@18.2.0) + version: 5.0.0-beta.15(next@14.2.0-canary.63)(react@18.2.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0)(react@18.2.0) openai: - specifier: ^4.32.1 - version: 4.32.1 + specifier: ^4.33.0 + version: 4.33.0 postcss: specifier: 8.4.38 version: 8.4.38 @@ -138,8 +138,8 @@ dependencies: specifier: ^0.2.2 version: 0.2.2 typescript: - specifier: 5.4.3 - version: 5.4.3 + specifier: 5.4.4 + version: 5.4.4 use-debounce: specifier: ^10.0.0 version: 10.0.0(react@18.2.0) @@ -260,16 +260,16 @@ packages: tslib: 1.14.1 dev: false - /@aws-sdk/client-s3@3.540.0: - resolution: {integrity: sha512-rYBuNB7uqCO9xZc0OAwM2K6QJAo2Syt1L5OhEaf7zG7FulNMyrK6kJPg1WrvNE90tW6gUdDaTy3XsQ7lq6O7uA==} + /@aws-sdk/client-s3@3.550.0: + resolution: {integrity: sha512-45jjDQI0Q37PIteWhywhlExxYaiUeOsTsbE62b+U/FOjYV8tirC8uBY9eHeHaP4IPVGHeQWvEYrFJHNU+qsQLQ==} engines: {node: '>=14.0.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-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/client-sts': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) + '@aws-sdk/core': 3.549.0 + '@aws-sdk/credential-provider-node': 3.549.0 '@aws-sdk/middleware-bucket-endpoint': 3.535.0 '@aws-sdk/middleware-expect-continue': 3.535.0 '@aws-sdk/middleware-flexible-checksums': 3.535.0 @@ -289,7 +289,7 @@ packages: '@aws-sdk/util-user-agent-node': 3.535.0 '@aws-sdk/xml-builder': 3.535.0 '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 + '@smithy/core': 1.4.2 '@smithy/eventstream-serde-browser': 2.2.0 '@smithy/eventstream-serde-config-resolver': 2.2.0 '@smithy/eventstream-serde-node': 2.2.0 @@ -301,7 +301,7 @@ packages: '@smithy/md5-js': 2.2.0 '@smithy/middleware-content-length': 2.2.0 '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-retry': 2.3.1 '@smithy/middleware-serde': 2.3.0 '@smithy/middleware-stack': 2.2.0 '@smithy/node-config-provider': 2.3.0 @@ -325,17 +325,17 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso-oidc@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-LZYK0lBRQK8D8M3Sqc96XiXkAV2v70zhTtF6weyzEpgwxZMfSuFJjs0jFyhaeZBZbZv7BBghIdhJ5TPavNxGMQ==} + /@aws-sdk/client-sso-oidc@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-FbB4A78ILAb8sM4TfBd+3CrQcfZIhe0gtVZNbaxpq5cJZh1K7oZ8vPfKw4do9JWkDUXPLsD9Bwz12f8/JpAb6Q==} engines: {node: '>=14.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.540.0 + '@aws-sdk/credential-provider-node': ^3.549.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/client-sts': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) + '@aws-sdk/core': 3.549.0 + '@aws-sdk/credential-provider-node': 3.549.0 '@aws-sdk/middleware-host-header': 3.535.0 '@aws-sdk/middleware-logger': 3.535.0 '@aws-sdk/middleware-recursion-detection': 3.535.0 @@ -346,13 +346,13 @@ packages: '@aws-sdk/util-user-agent-browser': 3.535.0 '@aws-sdk/util-user-agent-node': 3.535.0 '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 + '@smithy/core': 1.4.2 '@smithy/fetch-http-handler': 2.5.0 '@smithy/hash-node': 2.2.0 '@smithy/invalid-dependency': 2.2.0 '@smithy/middleware-content-length': 2.2.0 '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-retry': 2.3.1 '@smithy/middleware-serde': 2.3.0 '@smithy/middleware-stack': 2.2.0 '@smithy/node-config-provider': 2.3.0 @@ -375,13 +375,13 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso@3.540.0: - resolution: {integrity: sha512-rrQZMuw4sxIo3eyAUUzPQRA336mPRnrAeSlSdVHBKZD8Fjvoy0lYry2vNhkPLpFZLso1J66KRyuIv4LzRR3v1Q==} + /@aws-sdk/client-sso@3.549.0: + resolution: {integrity: sha512-lz+yflOAj5Q263FlCsKpNqttaCb2NPh8jC76gVCqCt7TPxRDBYVaqg0OZYluDaETIDNJi4DwN2Azcck7ilwuPw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 + '@aws-sdk/core': 3.549.0 '@aws-sdk/middleware-host-header': 3.535.0 '@aws-sdk/middleware-logger': 3.535.0 '@aws-sdk/middleware-recursion-detection': 3.535.0 @@ -392,13 +392,13 @@ packages: '@aws-sdk/util-user-agent-browser': 3.535.0 '@aws-sdk/util-user-agent-node': 3.535.0 '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 + '@smithy/core': 1.4.2 '@smithy/fetch-http-handler': 2.5.0 '@smithy/hash-node': 2.2.0 '@smithy/invalid-dependency': 2.2.0 '@smithy/middleware-content-length': 2.2.0 '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-retry': 2.3.1 '@smithy/middleware-serde': 2.3.0 '@smithy/middleware-stack': 2.2.0 '@smithy/node-config-provider': 2.3.0 @@ -421,16 +421,16 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sts@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-ITHUQxvpqfQX6obfpIi3KYGzZYfe/I5Ixjfxoi5lB7ISCtmxqObKB1fzD93wonkMJytJ7LUO8panZl/ojiJ1uw==} + /@aws-sdk/client-sts@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-63IreJ598Dzvpb+6sy81KfIX5iQxnrWSEtlyeCdC2GO6gmSQVwJzc9kr5pAC83lHmlZcm/Q3KZr3XBhRQqP0og==} engines: {node: '>=14.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.540.0 + '@aws-sdk/credential-provider-node': ^3.549.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.535.0 - '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/core': 3.549.0 + '@aws-sdk/credential-provider-node': 3.549.0 '@aws-sdk/middleware-host-header': 3.535.0 '@aws-sdk/middleware-logger': 3.535.0 '@aws-sdk/middleware-recursion-detection': 3.535.0 @@ -441,13 +441,13 @@ packages: '@aws-sdk/util-user-agent-browser': 3.535.0 '@aws-sdk/util-user-agent-node': 3.535.0 '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.0 + '@smithy/core': 1.4.2 '@smithy/fetch-http-handler': 2.5.0 '@smithy/hash-node': 2.2.0 '@smithy/invalid-dependency': 2.2.0 '@smithy/middleware-content-length': 2.2.0 '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-retry': 2.3.1 '@smithy/middleware-serde': 2.3.0 '@smithy/middleware-stack': 2.2.0 '@smithy/node-config-provider': 2.3.0 @@ -470,11 +470,11 @@ packages: - aws-crt dev: false - /@aws-sdk/core@3.535.0: - resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} + /@aws-sdk/core@3.549.0: + resolution: {integrity: sha512-jC61OxJn72r/BbuDRCcluiw05Xw9eVLG0CwxQpF3RocxfxyZqlrGYaGecZ8Wy+7g/3sqGRC/Ar5eUhU1YcLx7w==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/core': 1.4.0 + '@smithy/core': 1.4.2 '@smithy/protocol-http': 3.3.0 '@smithy/signature-v4': 2.2.0 '@smithy/smithy-client': 2.5.0 @@ -508,15 +508,15 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-ini@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-igN/RbsnulIBwqXbwsWmR3srqmtbPF1dm+JteGvUY31FW65fTVvWvSr945Y/cf1UbhPmIQXntlsqESqpkhTHwg==} + /@aws-sdk/credential-provider-ini@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-k6IIrluZjQpzui5Din8fW3bFFhHaJ64XrsfYx0Ks1mb7xan84dJxmYP3tdDDmLzUeJv5h95ag88taHfjY9rakA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/client-sts': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/credential-provider-env': 3.535.0 '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) - '@aws-sdk/credential-provider-web-identity': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-sso': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) + '@aws-sdk/credential-provider-web-identity': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/types': 3.535.0 '@smithy/credential-provider-imds': 2.3.0 '@smithy/property-provider': 2.2.0 @@ -528,16 +528,16 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.540.0: - resolution: {integrity: sha512-HKQZJbLHlrHX9A0B1poiYNXIIQfy8whTjuosTCYKPDBhhUyVAQfxy/KG726j0v43IhaNPLgTGZCJve4hAsazSw==} + /@aws-sdk/credential-provider-node@3.549.0: + resolution: {integrity: sha512-f3YgalsMuywEAVX4AUm9tojqrBdfpAac0+D320ePzas0Ntbp7ItYu9ceKIhgfzXO3No7P3QK0rCrOxL+ABTn8Q==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/credential-provider-env': 3.535.0 '@aws-sdk/credential-provider-http': 3.535.0 - '@aws-sdk/credential-provider-ini': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-ini': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) - '@aws-sdk/credential-provider-web-identity': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-sso': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) + '@aws-sdk/credential-provider-web-identity': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/types': 3.535.0 '@smithy/credential-provider-imds': 2.3.0 '@smithy/property-provider': 2.2.0 @@ -559,12 +559,12 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-sso@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-tKkFqK227LF5ajc5EL6asXS32p3nkofpP8G7NRpU7zOEOQCg01KUc4JRX+ItI0T007CiN1J19yNoFqHLT/SqHg==} + /@aws-sdk/credential-provider-sso@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-BGopRKHs7W8zkoH8qmSHrjudj263kXbhVkAUPxVUz0I28+CZNBgJC/RfVCbOpzmysIQEpwSqvOv1y0k+DQzIJQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.540.0 - '@aws-sdk/token-providers': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/client-sso': 3.549.0 + '@aws-sdk/token-providers': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/types': 3.535.0 '@smithy/property-provider': 2.2.0 '@smithy/shared-ini-file-loader': 2.4.0 @@ -575,11 +575,11 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-OpDm9w3A168B44hSjpnvECP4rvnFzD86rN4VYdGADuCvEa5uEcdA/JuT5WclFPDqdWEmFBqS1pxBIJBf0g2Q9Q==} + /@aws-sdk/credential-provider-web-identity@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-QzclVXPxuwSI7515l34sdvliVq5leroO8P7RQFKRgfyQKO45o1psghierwG3PgV6jlMiv78FIAGJBr/n4qZ7YA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/client-sts': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/types': 3.535.0 '@smithy/property-provider': 2.2.0 '@smithy/types': 2.12.0 @@ -724,8 +724,8 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/s3-request-presigner@3.540.0: - resolution: {integrity: sha512-alm+PiQOzAIfNrabxOG/Fk9uimQq8VCdqmhRvZRG7iDwtl4yrW+ZinoDssWFUgeZgPZQTymLcslC2hvMKHgY9g==} + /@aws-sdk/s3-request-presigner@3.550.0: + resolution: {integrity: sha512-aH+5bwOQrUphcyIFDmePU/pB9pfK5leG5hus1awVJE09+zrmKnQQWyt1nkcJOWFFh/89Ukb6/xop+YWK5xZpSw==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/signature-v4-multi-region': 3.535.0 @@ -750,11 +750,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/token-providers@3.540.0(@aws-sdk/credential-provider-node@3.540.0): - resolution: {integrity: sha512-9BvtiVEZe5Ev88Wa4ZIUbtT6BVcPwhxmVInQ6c12MYNb0WNL54BN6wLy/eknAfF05gpX2/NDU2pUDOyMPdm/+g==} + /@aws-sdk/token-providers@3.549.0(@aws-sdk/credential-provider-node@3.549.0): + resolution: {integrity: sha512-rJyeXkXknLukRFGuMQOgKnPBa+kLODJtOqEBf929SpQ96f1I6ytdndmWbB5B/OQN5Fu5DOOQUQqJypDQVl5ibQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/client-sso-oidc': 3.549.0(@aws-sdk/credential-provider-node@3.549.0) '@aws-sdk/types': 3.535.0 '@smithy/property-provider': 2.2.0 '@smithy/shared-ini-file-loader': 2.4.0 @@ -1260,7 +1260,7 @@ packages: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1272,8 +1272,8 @@ packages: engines: {node: '>=12.22'} dev: false - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: false /@isaacs/cliui@8.0.2: @@ -1309,7 +1309,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -1330,14 +1330,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.3) + jest-config: 29.7.0(@types/node@20.12.5) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1365,7 +1365,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-mock: 29.7.0 dev: false @@ -1392,7 +1392,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1425,7 +1425,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -1513,7 +1513,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.3 + '@types/node': 20.12.5 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -1563,8 +1563,8 @@ packages: - utf-8-validate dev: false - /@next/env@14.2.0-canary.54: - resolution: {integrity: sha512-lOR6Ybyg8R/Ln/RZ6L7RqN1Ii5wC7shDGUwlAQFvGIQ1zTN4izeMpC7UnKMf9aJ7TzpcYpWCAUxZEBH3ill1kA==} + /@next/env@14.2.0-canary.63: + resolution: {integrity: sha512-KX00uB5R/8LQbumtMbjobEVGcnCyrtjQ9Pr5LiTCuEPqQAvvk+g+fmueQtDhMwczrTXrXVedVinU0VPblKr25g==} dev: false /@next/eslint-plugin-next@14.1.4: @@ -1573,8 +1573,8 @@ packages: glob: 10.3.10 dev: false - /@next/swc-darwin-arm64@14.2.0-canary.54: - resolution: {integrity: sha512-iCph6Nj8EBVfGArPAJG00YcoVcFQnBjHKX52ilNqK5+xzzzo4zuzqQin8cDUqgE9l3kHvyS6AhcxcHHZ6ej31Q==} + /@next/swc-darwin-arm64@14.2.0-canary.63: + resolution: {integrity: sha512-FprjAiGLhquFgpmEXXLVBqpkHZLfRSBX3CF1o445Qkk0OWeS0gcTFNUCjhIE7osK3FL+UtRAdy4/+nXYaeUaPQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1582,8 +1582,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.2.0-canary.54: - resolution: {integrity: sha512-u+58RLOku1E1bu7h0aZrn5t+ku2a26s5xpBHBu4fI69EyFognCbpQ30t2oqfkXyP2n+LQIgppnUY7dlc/wurZQ==} + /@next/swc-darwin-x64@14.2.0-canary.63: + resolution: {integrity: sha512-kImBFkf/06HdPaFCDEbsvDP1oeFJtGl2rnQgAxeSRK8EJPTC0Uv7RqBocaM33Jc6e3vDN9GStwZpysHXbEfmpA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1591,8 +1591,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.2.0-canary.54: - resolution: {integrity: sha512-woLXA5YxduDks8TPAVaHZMta4fNyign4w2HjewcQ+n0xdsz5vwxUHR/LVxdUn9sQEv3947m1g1vPNmHY/nYo0w==} + /@next/swc-linux-arm64-gnu@14.2.0-canary.63: + resolution: {integrity: sha512-7SY10EhbS5rLJGHvfKM534xQkx8ZYCw+BR6hPkxwHp44mtuOfmUSzEDXpx8gBuL1inGUwlNWh0jVwJ9vZTbP9Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1600,8 +1600,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.2.0-canary.54: - resolution: {integrity: sha512-FxBKVCkAnylBDwj66soA/jcozpeIrOyZmRqnzhEr5G3tzp7r/2w0FI0lz+FPCPLTZlRPYUaj0TGk1YwDw6pcjw==} + /@next/swc-linux-arm64-musl@14.2.0-canary.63: + resolution: {integrity: sha512-cEZiByH6wsu5eRPpC7sXDO+und2075AcTh3C4ERWbh3HJNzqVqN4o8fsDS89e+kvtGwyjkjd/ySoUaE/EqSjwg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1609,8 +1609,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.2.0-canary.54: - resolution: {integrity: sha512-tLUDLcIqPyaeeBP/0ssTcu3eknZ7KmC0Np+nQ1EbD/Ul4n9rcZWTLeIDGZp9xKrLait+IjXFd+06ApTqkx2paQ==} + /@next/swc-linux-x64-gnu@14.2.0-canary.63: + resolution: {integrity: sha512-yxU5WN7nVzQr/kdnj2DLYy1mCo0/auFL3xL5IjHerayn7Cs06u05ucTB1kPwbLFeskq9gX14HNamPX2VasyyIA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1618,8 +1618,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.2.0-canary.54: - resolution: {integrity: sha512-cXOrwpIw6brwGWLKczmR7sXC0XCUNTKlKIyXqv1Bqua57e3dbAvLsH5txsqTiKBLDkNdYu3l2LmgCsV+5ibjYQ==} + /@next/swc-linux-x64-musl@14.2.0-canary.63: + resolution: {integrity: sha512-BtroloiP+WrF0Hbb8OhBN2sBFausG4dqiGIJ9QqEt9OI5eMiCUkj5901IlTjQ2Ub/48tIg5S9UEOTUfyWbYN0g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1627,8 +1627,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.2.0-canary.54: - resolution: {integrity: sha512-7oT3UXWu1sRYo8y/R8UXaIFm/U/K9OM12f5ByE7VtdBYc3XXfVK606G/hfmIXRu9PHSyjppChvMTPDYw2PDHmw==} + /@next/swc-win32-arm64-msvc@14.2.0-canary.63: + resolution: {integrity: sha512-TKMgTh/Ovw04z7dhcZ4bw+AJE84LV6gyMUvCk6SdTc7X/GXk1giEn4e9lccnlyJNkiGm58iUuRVtRwrf+KjzuA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1636,8 +1636,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.2.0-canary.54: - resolution: {integrity: sha512-SetHrRZIyJG9gc0znsK6Fr7fTVYOo66ykVtnk3OPIceYGKHy2elufY/b8GPVA84B0JJCIrkCHEJfTcoVcl7kmg==} + /@next/swc-win32-ia32-msvc@14.2.0-canary.63: + resolution: {integrity: sha512-4ExLZUApD99rDD1Wmahy4rMCHVaeBtKPW9QjkxkjJT3dJaOVA776C7bm8XDRITFJfyvOakfVLjqj4X1YbW+SZg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1645,8 +1645,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.2.0-canary.54: - resolution: {integrity: sha512-ggXeT12WoLcr839DxEDpnPdp/KavxUTs33tYHV285qJtSr5ZUsWP/1azKZFxRbiWeqPDSNj0JQdtoo91WjAx8A==} + /@next/swc-win32-x64-msvc@14.2.0-canary.63: + resolution: {integrity: sha512-ZB34jzQU93WDTPyKAa1yKDDpzie02EAxywq4rgEQyD/mBHLFto6tIX4r6wg/YkEk1lsDUOCd8/RKb6Z9GpKm7A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1696,7 +1696,7 @@ packages: '@babel/runtime': 7.23.9 dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -1710,14 +1710,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -1733,10 +1733,10 @@ packages: '@babel/runtime': 7.23.9 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1769,7 +1769,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -1786,17 +1786,17 @@ packages: '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1817,7 +1817,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -1833,16 +1833,16 @@ packages: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -1860,11 +1860,11 @@ packages: '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1883,7 +1883,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -1898,10 +1898,10 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1921,7 +1921,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -1936,30 +1936,30 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(@types/react@18.2.74)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -1974,22 +1974,22 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/rect': 1.0.1 '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -2003,14 +2003,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -2027,12 +2027,12 @@ packages: '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -2048,12 +2048,12 @@ packages: '@babel/runtime': 7.23.9 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -2068,16 +2068,16 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.74)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.74)(react@18.2.0) '@types/react': 18.2.74 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -2243,15 +2243,15 @@ packages: tslib: 2.6.2 dev: false - /@smithy/core@1.4.0: - resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} + /@smithy/core@1.4.2: + resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/middleware-endpoint': 2.5.0 - '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 '@smithy/middleware-serde': 2.3.0 '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.0 + '@smithy/smithy-client': 2.5.1 '@smithy/types': 2.12.0 '@smithy/util-middleware': 2.2.0 tslib: 2.6.2 @@ -2394,19 +2394,32 @@ packages: tslib: 2.6.2 dev: false - /@smithy/middleware-retry@2.2.0: - resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} + /@smithy/middleware-endpoint@2.5.1: + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: false + + /@smithy/middleware-retry@2.3.1: + resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} engines: {node: '>=14.0.0'} dependencies: '@smithy/node-config-provider': 2.3.0 '@smithy/protocol-http': 3.3.0 '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.0 + '@smithy/smithy-client': 2.5.1 '@smithy/types': 2.12.0 '@smithy/util-middleware': 2.2.0 '@smithy/util-retry': 2.2.0 tslib: 2.6.2 - uuid: 8.3.2 + uuid: 9.0.1 dev: false /@smithy/middleware-serde@2.3.0: @@ -2520,6 +2533,18 @@ packages: tslib: 2.6.2 dev: false + /@smithy/smithy-client@2.5.1: + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.6.2 + dev: false + /@smithy/types@2.12.0: resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} @@ -2737,7 +2762,7 @@ packages: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@20.12.3) + jest: 29.7.0(@types/node@20.12.5) lodash: 4.17.21 redent: 3.0.0 dev: false @@ -2751,7 +2776,7 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.23 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -2809,7 +2834,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.12.3 + '@types/node': 20.12.5 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -2838,7 +2863,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.12.3 + '@types/node': 20.12.5 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: false @@ -2854,7 +2879,7 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 20.12.3 + '@types/node': 20.12.5 form-data: 4.0.0 dev: false @@ -2864,8 +2889,8 @@ packages: undici-types: 5.26.5 dev: false - /@types/node@20.12.3: - resolution: {integrity: sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==} + /@types/node@20.12.5: + resolution: {integrity: sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==} dependencies: undici-types: 5.26.5 dev: false @@ -2873,7 +2898,7 @@ packages: /@types/pg@8.6.6: resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} dependencies: - '@types/node': 20.12.3 + '@types/node': 20.12.5 pg-protocol: 1.6.0 pg-types: 2.2.0 dev: false @@ -2882,8 +2907,8 @@ packages: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} dev: false - /@types/react-dom@18.2.23: - resolution: {integrity: sha512-ZQ71wgGOTmDYpnav2knkjr3qXdAFu0vsk8Ci5w3pGAIdj7/kKAyn+VsQDhXsmzzzepAiI9leWMmubXz690AI/A==} + /@types/react-dom@18.2.24: + resolution: {integrity: sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==} dependencies: '@types/react': 18.2.74 dev: false @@ -2917,7 +2942,7 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2929,10 +2954,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/scope-manager': 7.5.0 - '@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/visitor-keys': 7.5.0 debug: 4.3.4 eslint: 8.57.0 @@ -2940,13 +2965,13 @@ packages: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.2.1(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2958,16 +2983,16 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.3 + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2979,11 +3004,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 7.5.0 '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) '@typescript-eslint/visitor-keys': 7.5.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.3 + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false @@ -3004,7 +3029,7 @@ packages: '@typescript-eslint/visitor-keys': 7.5.0 dev: false - /@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -3014,12 +3039,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) + '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.4) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.2.1(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false @@ -3034,7 +3059,7 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: false - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.4): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3050,13 +3075,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.2.1(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.4): resolution: {integrity: sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -3072,13 +3097,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.2.1(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -3089,7 +3114,7 @@ packages: '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 7.5.0 '@typescript-eslint/types': 7.5.0 - '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.4) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -3142,7 +3167,7 @@ packages: crypto-js: 4.2.0 dev: false - /@vercel/analytics@1.2.2(next@14.2.0-canary.54)(react@18.2.0): + /@vercel/analytics@1.2.2(next@14.2.0-canary.63)(react@18.2.0): resolution: {integrity: sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==} peerDependencies: next: '>= 13' @@ -3153,13 +3178,13 @@ packages: react: optional: true dependencies: - next: 14.2.0-canary.54(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.0-canary.63(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 server-only: 0.0.1 dev: false - /@vercel/blob@0.22.1: - resolution: {integrity: sha512-LtHmiYAdJhiSAfBP+5hHXtVyqZUND2G+ild/XVY0SOiB46ab7VUrQctwUMGcVx+yZyXZ2lXPT1HvRJtXFnKvHA==} + /@vercel/blob@0.22.2: + resolution: {integrity: sha512-CzjmolbHf7Swp6or6grGLggya3STSbj/jgC9mp08M7cEwJbTMY4GbWRJyzirc2jX1x/OljJ9VqYVQgg6Y3xyAQ==} engines: {node: '>=16.14'} dependencies: async-retry: 1.3.3 @@ -3185,7 +3210,7 @@ packages: ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) dev: false - /@vercel/speed-insights@1.0.10(next@14.2.0-canary.54)(react@18.2.0)(svelte@4.2.12)(vue@3.4.21): + /@vercel/speed-insights@1.0.10(next@14.2.0-canary.63)(react@18.2.0)(svelte@4.2.12)(vue@3.4.21): resolution: {integrity: sha512-4uzdKB0RW6Ff2FkzshzjZ+RlJfLPxgm/00i0XXgxfMPhwnnsk92YgtqsxT9OcPLdJUyVU1DqFlSWWjIQMPkh0g==} requiresBuild: true peerDependencies: @@ -3209,10 +3234,10 @@ packages: vue-router: optional: true dependencies: - next: 14.2.0-canary.54(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.0-canary.63(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 svelte: 4.2.12 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /@vue/compiler-core@3.4.21: @@ -3281,7 +3306,7 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /@vue/shared@3.4.21: @@ -3342,8 +3367,8 @@ packages: humanize-ms: 1.2.1 dev: false - /ai@3.0.17(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4): - resolution: {integrity: sha512-GWVJ+Rb7Xt6oEk44aO2fpDYGMIoH3VL8toGKKQNq8sHKzxfBRYwOF9n8ir9YyU53STt7mAc1Kp3r9AEeWPePAA==} + /ai@3.0.19(react@18.2.0)(solid-js@1.8.15)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4): + resolution: {integrity: sha512-HV0MixfqMrxq2N/gVsEXoNfO9e0mWkgv7zdUH6UvdtI53Qd0UjoxjH0bwe/TsxoCqnK4gnWaGYiGKZrpy/Ldtw==} engines: {node: '>=14.6'} peerDependencies: react: ^18.2.0 @@ -3363,7 +3388,9 @@ packages: zod: optional: true dependencies: + '@types/json-schema': 7.0.15 eventsource-parser: 1.1.2 + json-schema: 0.4.0 jsondiffpatch: 0.6.0 nanoid: 3.3.6 react: 18.2.0 @@ -3375,9 +3402,9 @@ packages: swr: 2.2.0(react@18.2.0) swr-store: 0.10.6 swrv: 1.0.4(vue@3.4.21) - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) zod: 3.22.4 - zod-to-json-schema: 3.22.4(zod@3.22.4) + zod-to-json-schema: 3.22.5(zod@3.22.4) dev: false /ajv@6.12.6: @@ -3895,14 +3922,14 @@ packages: engines: {node: '>=6'} dev: false - /cmdk@1.0.0(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): + /cmdk@1.0.0(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.23)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -3980,7 +4007,7 @@ packages: engines: {node: '>= 0.6'} dev: false - /create-jest@29.7.0(@types/node@20.12.3): + /create-jest@29.7.0(@types/node@20.12.5): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3989,7 +4016,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.3) + jest-config: 29.7.0(@types/node@20.12.5) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4418,7 +4445,7 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-next@14.1.4(eslint@8.57.0)(typescript@5.4.3): + /eslint-config-next@14.1.4(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -4429,7 +4456,7 @@ packages: dependencies: '@next/eslint-plugin-next': 14.1.4 '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -4437,7 +4464,7 @@ packages: eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.33.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - typescript: 5.4.3 + typescript: 5.4.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -4497,7 +4524,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.4) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -4527,7 +4554,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -4545,7 +4572,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.4) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.4 array.prototype.flat: 1.3.2 @@ -4907,8 +4934,8 @@ packages: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false - /framer-motion@11.0.24(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-l2iM8NR53qtcujgAqYvGPJJGModPNWEVUaATRDLfnaLvUoFpImovBm0AHalSSsY8tW6knP8mfJTW4WYGbnAe4w==} + /framer-motion@11.0.25(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mRt7vQGzA7++wTgb+PW1TrlXXgndqR6hCiJ48fXr2X9alte2hPQiAq556HRwDCt0Q5X98MNvcSe4KUa27Gm5Lg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -5559,7 +5586,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -5580,7 +5607,7 @@ packages: - supports-color dev: false - /jest-cli@29.7.0(@types/node@20.12.3): + /jest-cli@29.7.0(@types/node@20.12.5): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5594,10 +5621,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.3) + create-jest: 29.7.0(@types/node@20.12.5) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.3) + jest-config: 29.7.0(@types/node@20.12.5) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5608,7 +5635,7 @@ packages: - ts-node dev: false - /jest-config@29.7.0(@types/node@20.12.3): + /jest-config@29.7.0(@types/node@20.12.5): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5623,7 +5650,7 @@ packages: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 @@ -5689,7 +5716,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -5706,7 +5733,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-mock: 29.7.0 jest-util: 29.7.0 dev: false @@ -5722,7 +5749,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.12.3 + '@types/node': 20.12.5 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5773,7 +5800,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-util: 29.7.0 dev: false @@ -5828,7 +5855,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5859,7 +5886,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -5911,7 +5938,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5936,7 +5963,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.3 + '@types/node': 20.12.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5948,13 +5975,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.12.3 + '@types/node': 20.12.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.7.0(@types/node@20.12.3): + /jest@29.7.0(@types/node@20.12.5): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5967,7 +5994,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.3) + jest-cli: 29.7.0(@types/node@20.12.5) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -6062,6 +6089,10 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: false + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: false + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: false @@ -6342,7 +6373,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false - /next-auth@5.0.0-beta.15(next@14.2.0-canary.54)(react@18.2.0): + /next-auth@5.0.0-beta.15(next@14.2.0-canary.63)(react@18.2.0): resolution: {integrity: sha512-UQggNq8CDu3/w8CYkihKLLnRPNXel98K0j7mtjj9a6XTNYo4Hni8xg/2h1YhElW6vXE8mgtvmH11rU8NKw86jQ==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 @@ -6359,7 +6390,7 @@ packages: optional: true dependencies: '@auth/core': 0.28.0 - next: 14.2.0-canary.54(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.0-canary.63(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -6373,8 +6404,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.2.0-canary.54(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5UBokPj6JigiZeOOsxYTvnSrtGnly5EDFn7+xXb8GxfVdL35GqoaYNwTNsPHVpEftjhKo1TVXgl2x2k8+9uaDA==} + /next@14.2.0-canary.63(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-F7sex5PlnUCrvd00NOW2DMtZU+lzBVwHmKrHd1vjBb4hQ9eq+WVL48dDzPnDvOB8xQjQQPSM35SnK+iZ718yLg==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -6391,7 +6422,7 @@ packages: sass: optional: true dependencies: - '@next/env': 14.2.0-canary.54 + '@next/env': 14.2.0-canary.63 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001600 @@ -6401,15 +6432,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.0-canary.54 - '@next/swc-darwin-x64': 14.2.0-canary.54 - '@next/swc-linux-arm64-gnu': 14.2.0-canary.54 - '@next/swc-linux-arm64-musl': 14.2.0-canary.54 - '@next/swc-linux-x64-gnu': 14.2.0-canary.54 - '@next/swc-linux-x64-musl': 14.2.0-canary.54 - '@next/swc-win32-arm64-msvc': 14.2.0-canary.54 - '@next/swc-win32-ia32-msvc': 14.2.0-canary.54 - '@next/swc-win32-x64-msvc': 14.2.0-canary.54 + '@next/swc-darwin-arm64': 14.2.0-canary.63 + '@next/swc-darwin-x64': 14.2.0-canary.63 + '@next/swc-linux-arm64-gnu': 14.2.0-canary.63 + '@next/swc-linux-arm64-musl': 14.2.0-canary.63 + '@next/swc-linux-x64-gnu': 14.2.0-canary.63 + '@next/swc-linux-x64-musl': 14.2.0-canary.63 + '@next/swc-win32-arm64-msvc': 14.2.0-canary.63 + '@next/swc-win32-ia32-msvc': 14.2.0-canary.63 + '@next/swc-win32-x64-msvc': 14.2.0-canary.63 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -6564,8 +6595,8 @@ packages: mimic-fn: 2.1.0 dev: false - /openai@4.32.1: - resolution: {integrity: sha512-3e9QyCY47tgOkxBe2CSVKlXOE2lLkMa24Y0s3LYZR40yYjiBU9dtVze+C3mu1TwWDGiRX52STpQAEJZvRNuIrA==} + /openai@4.33.0: + resolution: {integrity: sha512-Sh4KvplkvkAREuhb8yZpohqsOo08cBBu6LNWLD8YyMxe8yCxbE+ouJYUs1X2oDPrzQGANj0rFNQYiwW9gWLBOg==} hasBin: true dependencies: '@types/node': 18.19.24 @@ -7570,7 +7601,7 @@ packages: peerDependencies: vue: '>=3.2.26 < 4' dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /symbol-tree@3.2.4: @@ -7681,13 +7712,13 @@ packages: punycode: 2.3.1 dev: false - /ts-api-utils@1.2.1(typescript@5.4.3): + /ts-api-utils@1.2.1(typescript@5.4.4): resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.3 + typescript: 5.4.4 dev: false /ts-exif-parser@0.2.2: @@ -7782,8 +7813,8 @@ packages: is-typed-array: 1.1.13 dev: false - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} + /typescript@5.4.4: + resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} engines: {node: '>=14.17'} hasBin: true dev: false @@ -7897,8 +7928,8 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true dev: false @@ -7911,7 +7942,7 @@ packages: convert-source-map: 2.0.0 dev: false - /vue@3.4.21(typescript@5.4.3): + /vue@3.4.21(typescript@5.4.4): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: typescript: '*' @@ -7924,7 +7955,7 @@ packages: '@vue/runtime-dom': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.21) '@vue/shared': 3.4.21 - typescript: 5.4.3 + typescript: 5.4.4 dev: false /w3c-xmlserializer@4.0.0: @@ -8192,8 +8223,8 @@ packages: engines: {node: '>=10'} dev: false - /zod-to-json-schema@3.22.4(zod@3.22.4): - resolution: {integrity: sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ==} + /zod-to-json-schema@3.22.5(zod@3.22.4): + resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} peerDependencies: zod: ^3.22.4 dependencies: diff --git a/src/app/admin/uploads/[uploadPath]/page.tsx b/src/app/admin/uploads/[uploadPath]/page.tsx index a2faee67..1092ed7d 100644 --- a/src/app/admin/uploads/[uploadPath]/page.tsx +++ b/src/app/admin/uploads/[uploadPath]/page.tsx @@ -16,7 +16,7 @@ export default async function UploadPage({ params: { uploadPath } }: Params) { const { blobId, photoFormExif, - } = await extractExifDataFromBlobPath(uploadPath); + } = await extractExifDataFromBlobPath(uploadPath, true); if (!photoFormExif) { redirect(PATH_ADMIN); } diff --git a/src/components/FieldSetWithStatus.tsx b/src/components/FieldSetWithStatus.tsx index 3c7bdd7f..6e123e97 100644 --- a/src/components/FieldSetWithStatus.tsx +++ b/src/components/FieldSetWithStatus.tsx @@ -13,6 +13,7 @@ export default function FieldSetWithStatus({ note, error, value, + isModified, onChange, selectOptions, selectOptionsDefaultLabel, @@ -31,6 +32,7 @@ export default function FieldSetWithStatus({ note?: string error?: string value: string + isModified?: boolean onChange?: (value: string) => void selectOptions?: { value: string, label: string }[] selectOptionsDefaultLabel?: string @@ -57,6 +59,12 @@ export default function FieldSetWithStatus({ ({note}) } + {isModified && + + * + } {error && {error} diff --git a/src/components/SubmitButtonWithStatus.tsx b/src/components/SubmitButtonWithStatus.tsx index 7bd2e551..d3f1dfb2 100644 --- a/src/components/SubmitButtonWithStatus.tsx +++ b/src/components/SubmitButtonWithStatus.tsx @@ -12,6 +12,7 @@ interface Props extends HTMLProps { spinnerColor?: SpinnerColor onFormStatusChange?: (pending: boolean) => void onFormSubmitToastMessage?: string + primary?: boolean } export default function SubmitButtonWithStatus({ @@ -23,6 +24,7 @@ export default function SubmitButtonWithStatus({ children, disabled, className, + primary, type: _type, ...buttonProps }: Props) { @@ -52,6 +54,7 @@ export default function SubmitButtonWithStatus({ className={clsx( className, 'inline-flex items-center gap-2', + primary && 'primary', styleAsLink && 'link', )} {...buttonProps} diff --git a/src/photo/PhotoLarge.tsx b/src/photo/PhotoLarge.tsx index c73984bb..32863009 100644 --- a/src/photo/PhotoLarge.tsx +++ b/src/photo/PhotoLarge.tsx @@ -79,7 +79,7 @@ export default function PhotoLarge({ 'pb-6', )}> {/* Meta */} -
+
({ + ...photoFormExif, + // Generate missing dates on client to avoid timezone issues + ...generateTakenAtFields(photoFormExif), + }), [photoFormExif]); + return ( (); const [hasBlurData, setHasBlurData] = useState(false); + + const changedFormKeys = useMemo(() => + getChangedFormFields(initialPhotoForm, formData), + [initialPhotoForm, formData]); + const formHasChanged = changedFormKeys.length > 0; + const onlyChangedFieldIsBlurData = + changedFormKeys.length === 1 && + changedFormKeys[0] === 'blurData'; + + usePreventNavigation(formHasChanged && !onlyChangedFieldIsBlurData); + + const canFormBeSubmitted = + (type === 'create' || formHasChanged) && + isFormValid(formData) && + !aiContent?.isLoading; const didLoad1000msAgo = useDelay(1000); @@ -112,22 +125,6 @@ export default function PhotoForm({ height, } = getDimensionsFromSize(THUMBNAIL_SIZE, formData.aspectRatio); - // Generate local date strings when - // none can be extracted from EXIF - useEffect(() => { - if (!formData.takenAt || !formData.takenAtNaive) { - setFormData(data => ({ - ...data, - ...!formData.takenAt && { - takenAt: generateLocalPostgresString(), - }, - ...!formData.takenAtNaive && { - takenAtNaive: generateLocalNaivePostgresString(), - }, - })); - } - }, [formData.takenAt, formData.takenAtNaive]); - const url = formData.url ?? ''; const updateBlurData = useCallback((blurData: string) => { @@ -218,7 +215,7 @@ export default function PhotoForm({ }; return ( -
+
{debugBlur && blurError &&
{blurError} @@ -282,77 +279,84 @@ export default function PhotoForm({
blur()} - className="space-y-6" > - {FORM_METADATA_ENTRIES( - sortTagsObjectWithoutFavs(uniqueTags ?? []) - .map(({ tag, count }) => ({ - value: tag, - annotation: formatCount(count), - annotationAria: formatCountDescriptive(count, 'tagged'), - })), - aiContent !== undefined, - ) - .map(([key, { - label, - note, - required, - selectOptions, - selectOptionsDefaultLabel, - tagOptions, - readOnly, - validate, - validateStringMaxLength, - capitalize, - hideIfEmpty, - shouldHide, - loadingMessage, - type, - }]) => - ( - (!hideIfEmpty || formData[key]) && - !shouldHide?.(formData) - ) && - { - const formUpdated = { ...formData, [key]: value }; - setFormData(formUpdated); - if (validate) { - setFormErrors({ ...formErrors, [key]: validate(value) }); - } else if (validateStringMaxLength !== undefined) { - setFormErrors({ - ...formErrors, - [key]: value.length > validateStringMaxLength - ? `${validateStringMaxLength} characters or less` - : undefined, - }); - } - if (key === 'title') { - onTitleChange?.(value.trim()); - } - }} - selectOptions={selectOptions} - selectOptionsDefaultLabel={selectOptionsDefaultLabel} - tagOptions={tagOptions} - required={required} - readOnly={readOnly} - capitalize={capitalize} - placeholder={loadingMessage && !formData[key] - ? loadingMessage - : undefined} - loading={ - (loadingMessage && !formData[key] ? true : false) || - isFieldGeneratingAi(key)} - type={type} - accessory={aiButtonForField(key)} - />)} -
+ {/* Fields */} +
+ {FORM_METADATA_ENTRIES( + sortTagsObjectWithoutFavs(uniqueTags ?? []) + .map(({ tag, count }) => ({ + value: tag, + annotation: formatCount(count), + annotationAria: formatCountDescriptive(count, 'tagged'), + })), + aiContent !== undefined, + ) + .map(([key, { + label, + note, + required, + selectOptions, + selectOptionsDefaultLabel, + tagOptions, + readOnly, + validate, + validateStringMaxLength, + capitalize, + hideIfEmpty, + shouldHide, + loadingMessage, + type, + }]) => + ( + (!hideIfEmpty || formData[key]) && + !shouldHide?.(formData) + ) && + { + const formUpdated = { ...formData, [key]: value }; + setFormData(formUpdated); + if (validate) { + setFormErrors({ ...formErrors, [key]: validate(value) }); + } else if (validateStringMaxLength !== undefined) { + setFormErrors({ + ...formErrors, + [key]: value.length > validateStringMaxLength + ? `${validateStringMaxLength} characters or less` + : undefined, + }); + } + if (key === 'title') { + onTitleChange?.(value.trim()); + } + }} + selectOptions={selectOptions} + selectOptionsDefaultLabel={selectOptionsDefaultLabel} + tagOptions={tagOptions} + required={required} + readOnly={readOnly} + capitalize={capitalize} + placeholder={loadingMessage && !formData[key] + ? loadingMessage + : undefined} + loading={ + (loadingMessage && !formData[key] ? true : false) || + isFieldGeneratingAi(key)} + type={type} + accessory={aiButtonForField(key)} + />)} +
+ {/* Actions */} +
{type === 'create' ? 'Create' : 'Update'} +
diff --git a/src/photo/form/index.ts b/src/photo/form/index.ts index 63ab8698..5c772333 100644 --- a/src/photo/form/index.ts +++ b/src/photo/form/index.ts @@ -3,6 +3,8 @@ import { Photo, PhotoDbInsert, PhotoExif } from '..'; import { convertTimestampToNaivePostgresString, convertTimestampWithOffsetToPostgresString, + generateLocalNaivePostgresString, + generateLocalPostgresString, } from '@/utility/date'; import { getAspectRatioFromExif, getOffsetFromExif } from '@/utility/exif'; import { toFixedNumber } from '@/utility/number'; @@ -284,5 +286,25 @@ export const convertFormDataToPhotoDbInsert = ( ? parseFloat(photoForm.priorityOrder) : undefined, hidden: photoForm.hidden === 'true', + ...generateTakenAtFields(photoForm), }; }; + +export const getChangedFormFields = ( + original: Partial, + current: Partial, +) => { + return Object + .keys(current) + .filter(key => + (original[key as keyof PhotoFormData] ?? '') !== + (current[key as keyof PhotoFormData] ?? '') + ) as (keyof PhotoFormData)[]; +}; + +export const generateTakenAtFields = ( + form?: Partial +): { takenAt: string, takenAtNaive: string } => ({ + takenAt: form?.takenAt || generateLocalPostgresString(), + takenAtNaive: form?.takenAtNaive || generateLocalNaivePostgresString(), +}); diff --git a/src/photo/server.ts b/src/photo/server.ts index ce40fe79..96fae675 100644 --- a/src/photo/server.ts +++ b/src/photo/server.ts @@ -12,7 +12,8 @@ import { PhotoFormData } from './form'; import { FilmSimulation } from '@/simulation'; export const extractExifDataFromBlobPath = async ( - blobPath: string + blobPath: string, + includeInitialPhotoFields?: boolean, ): Promise<{ blobId?: string photoFormExif?: Partial @@ -55,9 +56,13 @@ export const extractExifDataFromBlobPath = async ( blobId, ...exifData && { photoFormExif: { + ...includeInitialPhotoFields && { + hidden: 'false', + favorite: 'false', + extension, + url, + }, ...convertExifToFormData(exifData, filmSimulation), - extension, - url, }, }, }; diff --git a/src/site/globals.css b/src/site/globals.css index f6724c22..5052b267 100644 --- a/src/site/globals.css +++ b/src/site/globals.css @@ -96,7 +96,9 @@ @apply text-invert bg-gray-900 dark:bg-gray-100 - disabled:bg-gray-900 disabled:dark:bg-gray-100 + disabled:text-gray-300 disabled:dark:text-gray-700 + disabled:bg-white disabled:dark:bg-black + disabled:border-gray-200 disabled:dark:border-gray-700 border-gray-900 dark:border-gray-100 active:bg-gray-700 active:border-gray-700 active:dark:bg-gray-300 active:dark:border-gray-300 @@ -123,7 +125,7 @@ } .text-invert { @apply - text-gray-100 dark:text-gray-900 + text-white dark:text-black } .text-medium { @apply diff --git a/src/utility/usePreventNavigation.ts b/src/utility/usePreventNavigation.ts new file mode 100644 index 00000000..bbf44e97 --- /dev/null +++ b/src/utility/usePreventNavigation.ts @@ -0,0 +1,30 @@ +import { useEffect } from 'react'; + +export default function usePreventNavigation( + enabled?: boolean, + // eslint-disable-next-line max-len + confirmation = 'Are you sure you want to leave this page? Any unsaved changes will be lost.', + includeButtons?: boolean, +) { + useEffect(() => { + const callback = (e: MouseEvent) => { + const target = e.target as HTMLElement | undefined; + const parent = target?.parentElement as HTMLElement | undefined; + const grandParent = parent?.parentElement as HTMLElement | undefined; + const targets = [target, parent, grandParent]; + if ( + targets.some(target => target?.tagName === 'A') && ( + !includeButtons || + targets.some(target => target?.tagName === 'BUTTON') + ) + ) { + if (enabled && !confirm(confirmation)) { + e.stopPropagation(); + e.preventDefault(); + } + } + }; + document.addEventListener('click', callback, true); + return () => document.removeEventListener('click', callback, true); + }, [enabled, confirmation, includeButtons]); +}