diff --git a/.env.example b/.env.example index 9a65add25..dcf6b2b47 100644 --- a/.env.example +++ b/.env.example @@ -22,7 +22,7 @@ DATABASE_URL="mysql://YOUR_MYSQL_URL_HERE?ssl={"rejectUnauthorized":true}" NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_test_" CLERK_SECRET_KEY="sk_test_" -# React email (resend) +# React email (resend) # Resend API Key found at https://resend.com/api-keys RESEND_API_KEY="re_" # We need to register a domain with Resend to send emails from @@ -41,11 +41,14 @@ STRIPE_API_KEY="sk_test_" # Stripe Webhook Secret found at https://dashboard.stripe.com/test/webhooks/create?endpoint_location=local # This need to replaced with the webhook secret for your webhook endpoint in production STRIPE_WEBHOOK_SECRET="whsec_" -# Stripe Product and Price IDs for your created products +# Stripe Product and Price IDs for your created products # found at https://dashboard.stripe.com/test/products STRIPE_STD_MONTHLY_PRICE_ID="price_" STRIPE_PRO_MONTHLY_PRICE_ID="price_" +# EasyPost +EASYPOST_API_KEY="••••••••• + # Optional # OpenAI API Key OPENAI_API_KEY="sk-" diff --git a/next.config.js b/next.config.js index a873c35e7..06b6fe64c 100644 --- a/next.config.js +++ b/next.config.js @@ -7,6 +7,29 @@ const { withContentlayer } = require("next-contentlayer") */ import("./src/env.mjs") +// Work around because EasyPost introduces hexoid error related to FormidableJs +// Discussed here: https://github.com/auth0/node-auth0/issues/657#issuecomment-928083729 +/** + * @param {import("webpack").Configuration} config + */ +function applyCustomWebpackConfig(config) { + config.resolve = config.resolve || {} + config.resolve.alias = config.resolve.alias || {} + + const aliases = { + 'formidable': false, + 'coffee-script': false, + 'vm2': false, + 'yargs': false, + 'colors': false, + 'keyv': false + } + + Object.assign(config.resolve.alias, aliases) + + return config +} + /** @type {import("next").NextConfig} */ const nextConfig = { pageExtensions: ["tsx", "mdx", "ts", "js"], @@ -34,6 +57,16 @@ const nextConfig = { // Already doing linting and typechecking as separate tasks in CI eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, + + // Work around because EasyPost introduces hexoid error related to FormidableJs + /** + * @param {import("webpack").Configuration} config + */ + webpack: (config) => { + // Apply custom Webpack configurations + return applyCustomWebpackConfig(config) + } } module.exports = withContentlayer(nextConfig) + diff --git a/package.json b/package.json index c9b25bafb..1605e26f1 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "dependencies": { "@clerk/nextjs": "^4.29.4", "@clerk/themes": "^1.7.9", + "@easypost/api": "^6.8.2", "@hookform/resolvers": "^3.3.4", "@loglib/tracker": "^0.8.0", "@planetscale/database": "^1.14.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25be849fe..3892cb53d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,10 +7,13 @@ settings: dependencies: '@clerk/nextjs': specifier: ^4.29.4 - version: 4.29.4(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) + version: 4.29.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) '@clerk/themes': specifier: ^1.7.9 version: 1.7.9(react@18.2.0) + '@easypost/api': + specifier: ^6.8.2 + version: 6.8.2 '@hookform/resolvers': specifier: ^3.3.4 version: 3.3.4(react-hook-form@7.49.3) @@ -85,10 +88,10 @@ dependencies: version: 0.0.14(react@18.2.0) '@stripe/react-stripe-js': specifier: ^2.4.0 - version: 2.4.0(@stripe/stripe-js@2.3.0)(react-dom@18.2.0)(react@18.2.0) + version: 2.4.0(@stripe/stripe-js@2.4.0)(react-dom@18.2.0)(react@18.2.0) '@stripe/stripe-js': specifier: ^2.3.0 - version: 2.3.0 + version: 2.4.0 '@t3-oss/env-nextjs': specifier: ^0.7.3 version: 0.7.3(typescript@5.3.3)(zod@3.22.4) @@ -100,13 +103,13 @@ dependencies: version: 8.11.7(react-dom@18.2.0)(react@18.2.0) '@tremor/react': specifier: ^3.13.2 - version: 3.13.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.1) + version: 3.13.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.1) '@uploadthing/react': specifier: ^6.2.0 - version: 6.2.0(next@14.1.0)(react@18.2.0)(uploadthing@6.2.0) + version: 6.2.2(next@14.1.0)(react@18.2.0)(uploadthing@6.3.1) ai: specifier: ^2.2.31 - version: 2.2.31(react@18.2.0)(solid-js@1.8.11)(svelte@4.2.9)(vue@3.4.15) + version: 2.2.31(react@18.2.0)(solid-js@1.8.11)(svelte@4.2.8)(vue@3.4.14) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -121,22 +124,22 @@ dependencies: version: 0.3.4(esbuild@0.19.11) date-fns: specifier: ^3.3.0 - version: 3.3.0 + version: 3.3.1 drizzle-orm: specifier: ^0.29.3 - version: 0.29.3(@opentelemetry/api@1.7.0)(@planetscale/database@1.14.0)(@types/react@18.2.48)(mysql2@3.7.1)(react@18.2.0) + version: 0.29.3(@opentelemetry/api@1.7.0)(@planetscale/database@1.14.0)(@types/react@18.2.48)(mysql2@3.9.1)(react@18.2.0) embla-carousel-react: specifier: 8.0.0-rc19 version: 8.0.0-rc19(react@18.2.0) mysql2: specifier: ^3.7.1 - version: 3.7.1 + version: 3.9.1 nanoid: specifier: ^5.0.4 version: 5.0.4 next: specifier: 14.1.0 - version: 14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + version: 14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) next-contentlayer: specifier: ^0.3.4 version: 0.3.4(contentlayer@0.3.4)(esbuild@0.19.11)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) @@ -145,7 +148,7 @@ dependencies: version: 0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) openai: specifier: ^4.25.0 - version: 4.25.0 + version: 4.26.0 react: specifier: 18.2.0 version: 18.2.0 @@ -154,7 +157,7 @@ dependencies: version: 2.3.3(react@18.2.0) react-day-picker: specifier: ^8.10.0 - version: 8.10.0(date-fns@3.3.0)(react@18.2.0) + version: 8.10.0(date-fns@3.3.1)(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -163,7 +166,7 @@ dependencies: version: 14.2.3(react@18.2.0) react-email: specifier: ^2.0.0 - version: 2.0.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(eslint@8.56.0) + version: 2.0.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(eslint@8.56.0) react-hook-form: specifier: ^7.49.3 version: 7.49.3(react@18.2.0) @@ -184,28 +187,28 @@ dependencies: version: 8.5.3(@types/react@18.2.48)(react@18.2.0) resend: specifier: ^3.0.0 - version: 3.0.0 + version: 3.1.0 server-only: specifier: ^0.0.1 version: 0.0.1 sonner: specifier: ^1.3.1 - version: 1.3.1(react-dom@18.2.0)(react@18.2.0) + version: 1.4.0(react-dom@18.2.0)(react@18.2.0) stripe: specifier: ^14.13.0 - version: 14.13.0 + version: 14.14.0 tailwind-merge: specifier: ^2.2.0 - version: 2.2.0 + version: 2.2.1 tailwindcss-animate: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.1) uploadthing: specifier: ^6.2.0 - version: 6.2.0 + version: 6.3.1 vaul: specifier: ^0.8.8 - version: 0.8.8(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) + version: 0.8.9(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) zod: specifier: ^3.22.4 version: 3.22.4 @@ -228,7 +231,7 @@ devDependencies: version: 8.56.2 '@types/node': specifier: ^20.11.5 - version: 20.11.5 + version: 20.11.10 '@types/react': specifier: ^18.2.48 version: 18.2.48 @@ -240,10 +243,10 @@ devDependencies: version: 15.5.11 '@typescript-eslint/eslint-plugin': specifier: ^6.19.0 - version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3) + version: 6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^6.19.0 - version: 6.19.0(eslint@8.56.0)(typescript@5.3.3) + version: 6.20.0(eslint@8.56.0)(typescript@5.3.3) autoprefixer: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.33) @@ -264,7 +267,7 @@ devDependencies: version: 9.1.0(eslint@8.56.0) eslint-plugin-tailwindcss: specifier: ^3.14.0 - version: 3.14.0(tailwindcss@3.4.1) + version: 3.14.1(tailwindcss@3.4.1) postcss: specifier: ^8.4.33 version: 8.4.33 @@ -282,7 +285,7 @@ devDependencies: version: 1.2.0 rehype-pretty-code: specifier: ^0.12.5 - version: 0.12.5(shikiji@0.9.19) + version: 0.12.6(shikiji@0.10.2) rehype-slug: specifier: ^6.0.0 version: 6.0.0 @@ -320,7 +323,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.20 /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -333,20 +336,20 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.7: - resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + /@babel/core@7.23.5: + resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helpers': 7.23.8 - '@babel/parser': 7.23.6 + '@babel/generator': 7.23.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helpers': 7.23.5 + '@babel/parser': 7.23.5 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -355,22 +358,22 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.23.5: + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 + browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -383,27 +386,27 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -414,13 +417,13 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -434,13 +437,13 @@ packages: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.23.8: - resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + /@babel/helpers@7.23.5: + resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color @@ -452,44 +455,67 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.5 + /@babel/parser@7.23.6: resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.23.6 + dev: false - /@babel/runtime@7.23.8: - resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} + /@babel/runtime@7.23.5: + resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 - /@babel/traverse@7.23.7: - resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + /@babel/traverse@7.23.5: + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/generator': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + /@babel/types@7.23.5: + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@babel/types@7.23.6: resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} @@ -497,6 +523,7 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: false /@clerk/backend@0.37.3(react@18.2.0): resolution: {integrity: sha512-ZfYacm4wNRf4Qe4fRVgfMUaQROryL6CT+Sg/qqfutoeJUXDORAMyu5Mm2kHZ+s+n1MSXnLRegDjWhILlKniUyw==} @@ -544,8 +571,8 @@ packages: - react dev: false - /@clerk/nextjs@4.29.4(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zJ3IH9LskDlCa/38q/0OAwn1YReMuVFqcw3B2kfwAEFZ17e4UalRxFgmWnionfFT7m1YEXXM51c5UDbPrejVug==} + /@clerk/nextjs@4.29.5(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6hNaqKsg/B6HuauyMOgnhES/YWt4g/43/fbS/IHmCKgmhhLkaNpRuOspDOOoUaz3wvtb9TP/t6trgqF4W7cylA==} engines: {node: '>=14'} peerDependencies: next: '>=10' @@ -557,7 +584,7 @@ packages: '@clerk/clerk-sdk-node': 4.13.7(react@18.2.0) '@clerk/shared': 1.3.1(react@18.2.0) '@clerk/types': 3.60.0 - next: 14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) path-to-regexp: 6.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -655,7 +682,7 @@ packages: chokidar: 3.5.3 fast-glob: 3.3.2 gray-matter: 4.0.3 - imagescript: 1.2.18 + imagescript: 1.2.17 micromatch: 4.0.5 ts-pattern: 4.3.0 unified: 10.1.2 @@ -694,22 +721,22 @@ packages: optional: true dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0) - '@effect-ts/otel-exporter-trace-otlp-grpc': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.20.0) - '@effect-ts/otel-sdk-trace-node': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0)(@opentelemetry/sdk-trace-node@1.20.0) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1) + '@effect-ts/otel-exporter-trace-otlp-grpc': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.18.1) + '@effect-ts/otel-sdk-trace-node': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1)(@opentelemetry/sdk-trace-node@1.18.1) '@js-temporal/polyfill': 0.4.4 '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-node': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 chokidar: 3.5.3 hash-wasm: 4.11.0 inflection: 2.0.1 memfs: 3.5.3 - oo-ascii-tree: 1.94.0 + oo-ascii-tree: 1.92.0 ts-pattern: 4.3.0 type-fest: 3.13.1 dev: false @@ -720,13 +747,30 @@ packages: superjson: 2.2.1 dev: true + /@easypost/api@6.8.2: + resolution: {integrity: sha512-BCiHisPBMWcDk0JsYii5PiHxlp3EayLqSpHwLndTMKi2BLHA7jZDx5kQ8k2KEKPFq/SLHo4JWxVkN7mRjP/TZw==} + engines: {node: '>= 12.0'} + hasBin: true + dependencies: + core-js: 3.30.2 + nodent-runtime: 3.2.1 + regenerator-runtime: 0.13.11 + source-map-support: 0.5.21 + superagent: 8.0.9 + uuid: 9.0.1 + yargs: 17.7.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /@effect-ts/core@0.60.5: resolution: {integrity: sha512-qi1WrtJA90XLMnj2hnUszW9Sx4dXP03ZJtCc5DiUBIOhF4Vw7plfb65/bdBySPoC9s7zy995TdUX1XBSxUkl5w==} dependencies: '@effect-ts/system': 0.57.5 dev: false - /@effect-ts/otel-exporter-trace-otlp-grpc@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.20.0): + /@effect-ts/otel-exporter-trace-otlp-grpc@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/exporter-trace-otlp-grpc@0.39.1)(@opentelemetry/sdk-trace-base@1.18.1): resolution: {integrity: sha512-47gAg0O2pW5Jlo86jfzjdkwL5a7Bzb+Kj5WTmdu4CxYRfWn9ytKjuuYIfsNDW8neuhdKzn+P5wCddgEh0glYyQ==} peerDependencies: '@effect-ts/core': ^0.60.2 @@ -736,14 +780,14 @@ packages: '@opentelemetry/sdk-trace-base': ^1.13.0 dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1) '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@effect-ts/otel-sdk-trace-node@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0)(@opentelemetry/sdk-trace-node@1.20.0): + /@effect-ts/otel-sdk-trace-node@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1)(@opentelemetry/sdk-trace-node@1.18.1): resolution: {integrity: sha512-a2sF0ylmn8xOJs8fNeT/spJ1gUcsksAJCALxo9WOfuTCMtTwMVtVhCKEPEeQoL7wFqU+JgPkVdP91+FJ/Rkeow==} peerDependencies: '@effect-ts/core': ^0.60.2 @@ -753,14 +797,14 @@ packages: '@opentelemetry/sdk-trace-node': ^1.13.0 dependencies: '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0) + '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1) '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-node': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@effect-ts/otel@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.20.0)(@opentelemetry/sdk-trace-base@1.20.0): + /@effect-ts/otel@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.7.0)(@opentelemetry/core@1.18.1)(@opentelemetry/sdk-trace-base@1.18.1): resolution: {integrity: sha512-AmZJHl7t0+Peh7Yb2+hqn6r9+rd9/UfeA4AMV9h0YGTdOyouyFfD3wzWlxnAUzAQ4Lrod4kC7Noruret4EpqpA==} peerDependencies: '@effect-ts/core': ^0.60.2 @@ -770,8 +814,8 @@ packages: dependencies: '@effect-ts/core': 0.60.5 '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) dev: false /@effect-ts/system@0.57.5: @@ -1222,7 +1266,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.24.0 + globals: 13.23.0 ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1244,17 +1288,17 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: false - /@floating-ui/core@1.5.3: - resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==} + /@floating-ui/core@1.5.1: + resolution: {integrity: sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==} dependencies: - '@floating-ui/utils': 0.2.1 + '@floating-ui/utils': 0.1.6 dev: false - /@floating-ui/dom@1.5.4: - resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==} + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} dependencies: - '@floating-ui/core': 1.5.3 - '@floating-ui/utils': 0.2.1 + '@floating-ui/core': 1.5.1 + '@floating-ui/utils': 0.1.6 dev: false /@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0): @@ -1263,18 +1307,18 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.4 + '@floating-ui/dom': 1.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@floating-ui/react-dom@2.0.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==} + /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.4 + '@floating-ui/dom': 1.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1292,16 +1336,16 @@ packages: tabbable: 6.2.0 dev: false - /@floating-ui/utils@0.2.1: - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} dev: false - /@grpc/grpc-js@1.9.14: - resolution: {integrity: sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==} + /@grpc/grpc-js@1.9.12: + resolution: {integrity: sha512-Um5MBuge32TS3lAKX02PGCnFM4xPT996yLgZNb5H03pn6NyJ4Iwn5YcPq6Jj9yxGRk7WOgaZFtVRH5iTdYBeUg==} engines: {node: ^8.13.0 || >=10.10.0} dependencies: '@grpc/proto-loader': 0.7.10 - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@grpc/proto-loader@0.7.10: @@ -1311,7 +1355,7 @@ packages: dependencies: lodash.camelcase: 4.3.0 long: 5.2.3 - protobufjs: 7.2.6 + protobufjs: 7.2.5 yargs: 17.7.2 dev: false @@ -1345,11 +1389,11 @@ packages: react-hook-form: 7.49.3(react@18.2.0) dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1359,8 +1403,8 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.4): resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} @@ -1371,11 +1415,11 @@ packages: '@vue/compiler-sfc': optional: true dependencies: - '@babel/core': 7.23.7 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/core': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 prettier: 3.2.4 semver: 7.5.4 transitivePeerDependencies: @@ -1399,7 +1443,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -1413,17 +1457,24 @@ packages: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.21 dev: false /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@jridgewell/trace-mapping@0.3.21: + resolution: {integrity: sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: false /@js-temporal/polyfill@0.4.4: resolution: {integrity: sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==} @@ -1439,7 +1490,7 @@ packages: react: ^16.8||^17||^18 dependencies: react: 18.2.0 - web-vitals: 3.5.1 + web-vitals: 3.5.0 dev: false /@mdx-js/esbuild@2.3.0(esbuild@0.19.11): @@ -1671,7 +1722,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.16.0 + fastq: 1.15.0 /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} @@ -1689,8 +1740,8 @@ packages: engines: {node: '>=8.0.0'} dev: false - /@opentelemetry/context-async-hooks@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-PNecg4zvRF5y5h3luK/hzUEmgZtZ8hbX19TMALj3SVShYS2MrDZG6uT27uLkAwACMfK9BP7/UyXXjND5lkaC2w==} + /@opentelemetry/context-async-hooks@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-HHfJR32NH2x0b69CACCwH8m1dpNALoCTtpgmIWMNkeMGNUeKT48d4AX4xsF4uIRuUoRTbTgtSBRvS+cF97qwCQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' @@ -1708,14 +1759,14 @@ packages: '@opentelemetry/semantic-conventions': 1.13.0 dev: false - /@opentelemetry/core@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lSRvk5AIdD6CtgYJcJXh0wGibQ3S/8bC2qbqKs9wK8e0K1tsWV6YkGFOqVc+jIRlCbZoIBeZzDe5UI+vb94uvg==} + /@opentelemetry/core@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-kvnUqezHMhsQvdsnhnqTNfAJs3ox/isB0SVrM1dhVFw7SsB7TstuVa6fgWnN2GdPyilIFLUvvbTZoVRmx6eiRg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/semantic-conventions': 1.18.1 dev: false /@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.7.0): @@ -1724,7 +1775,7 @@ packages: peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@grpc/grpc-js': 1.9.14 + '@grpc/grpc-js': 1.9.12 '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.7.0) '@opentelemetry/otlp-grpc-exporter-base': 0.39.1(@opentelemetry/api@1.7.0) @@ -1749,11 +1800,11 @@ packages: peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@grpc/grpc-js': 1.9.14 + '@grpc/grpc-js': 1.9.12 '@opentelemetry/api': 1.7.0 '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.7.0) '@opentelemetry/otlp-exporter-base': 0.39.1(@opentelemetry/api@1.7.0) - protobufjs: 7.2.6 + protobufjs: 7.2.5 dev: false /@opentelemetry/otlp-transformer@0.39.1(@opentelemetry/api@1.7.0): @@ -1771,24 +1822,24 @@ packages: '@opentelemetry/sdk-trace-base': 1.13.0(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/propagator-b3@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-rDLcZGhhe+VoKKY77U5o5IW5D+OMoXg44GYmCn68Jx3O5TBGMJ2oZBcCxLgHlAA/ZdqkdRgQD0E40s8bXq41JA==} + /@opentelemetry/propagator-b3@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-oSTUOsnt31JDx5SoEy27B5jE1/tiPvvE46w7CDKj0R5oZhCCfYH2bbSGa7NOOyDXDNqQDkgqU1DIV/xOd3f8pw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) dev: false - /@opentelemetry/propagator-jaeger@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-JqdKlyyrgIinR8ZhMoJrL54AAHMDEACLLXYLnabzFTHeoBEsC36ZoO98hVucrpUvkDCJMvdVHH/4cvvj+boUzg==} + /@opentelemetry/propagator-jaeger@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Kh4M1Qewv0Tbmts6D8LgNzx99IjdE18LCmY/utMkgVyU7Bg31Yuj+X6ZyoIRKPcD2EV4rVkuRI16WVMRuGbhWA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) dev: false /@opentelemetry/resources@1.13.0(@opentelemetry/api@1.7.0): @@ -1802,15 +1853,15 @@ packages: '@opentelemetry/semantic-conventions': 1.13.0 dev: false - /@opentelemetry/resources@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-nOpV0vGegSq+9ze2cEDvO3BMA5pGBhmhKZiAlj+xQZjiEjPmJtdHIuBLRvptu2ahcbFJw85gIB9BYHZOvZK1JQ==} + /@opentelemetry/resources@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-JjbcQLYMttXcIabflLRuaw5oof5gToYV9fuXbcsoOeQ0BlbwUn6DAZi++PNsSz2jjPeASfDls10iaO/8BRIPRA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false /@opentelemetry/sdk-logs@0.39.1(@opentelemetry/api-logs@0.39.1)(@opentelemetry/api@1.7.0): @@ -1850,30 +1901,30 @@ packages: '@opentelemetry/semantic-conventions': 1.13.0 dev: false - /@opentelemetry/sdk-trace-base@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-BAIZ0hUgnhdb3OBQjn1FKGz/Iwie4l+uOMKklP7FGh7PTqEAbbzDNMJKaZQh6KepF7Fq+CZDRKslD3yrYy2Tzw==} + /@opentelemetry/sdk-trace-base@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-tRHfDxN5dO+nop78EWJpzZwHsN1ewrZRVVwo03VJa3JQZxToRDH29/+MB24+yoa+IArerdr7INFJiX/iN4gjqg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.18.1 dev: false - /@opentelemetry/sdk-trace-node@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-3RRl4O63Wr/QyWhjreB7xilFhj3cQHWuMqESPwWHb7eJogNmjj1JQsRda/i8xj1Td4Bk+2ojC7aA8mwbKbEfPQ==} + /@opentelemetry/sdk-trace-node@1.18.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-ML0l9TNlfLoplLF1F8lb95NGKgdm6OezDS3Ymqav9sYxMd5bnH2LZVzd4xEF+ov5vpZJOGdWxJMs2nC9no7+xA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: '@opentelemetry/api': 1.7.0 - '@opentelemetry/context-async-hooks': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-b3': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-jaeger': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.20.0(@opentelemetry/api@1.7.0) + '@opentelemetry/context-async-hooks': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-b3': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-jaeger': 1.18.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.18.1(@opentelemetry/api@1.7.0) semver: 7.5.4 dev: false @@ -1882,8 +1933,8 @@ packages: engines: {node: '>=14'} dev: false - /@opentelemetry/semantic-conventions@1.20.0: - resolution: {integrity: sha512-3zLJJCgTKYpbqFX8drl8hOCHtdchELC+kGqlVcV4mHW1DiElTtv1Nt9EKBptTd1IfL56QkuYnWJ3DeHd2Gtu/A==} + /@opentelemetry/semantic-conventions@1.18.1: + resolution: {integrity: sha512-+NLGHr6VZwcgE/2lw8zDIufOCGnzsA5CbQIMleXZTrgkBd0TanCX+MiDYJ1TOS4KL/Tqk0nFRxawnaYr6pkZkA==} engines: {node: '>=14'} dev: false @@ -1899,7 +1950,7 @@ packages: resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} engines: {node: '>=8.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 dev: false /@peculiar/webcrypto@1.4.1: @@ -1909,7 +1960,7 @@ packages: '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.5 - tslib: 2.4.1 + tslib: 2.6.2 webcrypto-core: 1.7.7 dev: false @@ -1974,19 +2025,19 @@ packages: /@radix-ui/number@1.0.1: resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 dev: false /@radix-ui/primitive@1.0.0: resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 dev: false /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 dev: false /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): @@ -2002,7 +2053,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -2031,7 +2082,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2057,7 +2108,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2078,7 +2129,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2099,7 +2150,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2123,7 +2174,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2151,7 +2202,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2179,7 +2230,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -2195,7 +2246,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 dev: false @@ -2208,7 +2259,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -2218,7 +2269,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 dev: false @@ -2231,7 +2282,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -2242,7 +2293,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.0 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-context': 1.0.0(react@18.2.0) @@ -2276,7 +2327,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2306,7 +2357,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -2317,7 +2368,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.0 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) @@ -2340,7 +2391,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -2365,7 +2416,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -2390,7 +2441,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2409,7 +2460,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 dev: false @@ -2422,7 +2473,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -2433,7 +2484,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) @@ -2454,7 +2505,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2477,7 +2528,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2500,7 +2551,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) react: 18.2.0 dev: false @@ -2514,7 +2565,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 react: 18.2.0 @@ -2533,7 +2584,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2554,7 +2605,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2592,7 +2643,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2626,7 +2677,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2661,7 +2712,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2696,8 +2747,8 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@floating-ui/react-dom': 2.0.6(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.23.5 + '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2726,8 +2777,8 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@floating-ui/react-dom': 2.0.6(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.23.5 + '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2749,7 +2800,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2768,7 +2819,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2789,7 +2840,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2803,7 +2854,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) react: 18.2.0 @@ -2823,7 +2874,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 @@ -2838,7 +2889,7 @@ packages: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-slot': 1.0.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2857,7 +2908,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2878,7 +2929,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2907,7 +2958,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -2936,7 +2987,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -2977,7 +3028,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -2998,7 +3049,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) @@ -3021,7 +3072,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) react: 18.2.0 dev: false @@ -3035,7 +3086,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 react: 18.2.0 @@ -3054,7 +3105,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3081,7 +3132,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3109,7 +3160,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3136,7 +3187,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3159,7 +3210,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3191,7 +3242,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.48)(react@18.2.0) @@ -3215,7 +3266,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 dev: false @@ -3228,7 +3279,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -3238,7 +3289,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) react: 18.2.0 dev: false @@ -3252,7 +3303,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 react: 18.2.0 @@ -3263,7 +3314,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) react: 18.2.0 dev: false @@ -3277,7 +3328,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 react: 18.2.0 @@ -3288,7 +3339,7 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 dev: false @@ -3301,7 +3352,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -3315,7 +3366,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@types/react': 18.2.48 react: 18.2.0 dev: false @@ -3329,7 +3380,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/rect': 1.0.1 '@types/react': 18.2.48 react: 18.2.0 @@ -3344,7 +3395,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48)(react@18.2.0) '@types/react': 18.2.48 react: 18.2.0 @@ -3363,7 +3414,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.48 '@types/react-dom': 18.2.18 @@ -3374,7 +3425,7 @@ packages: /@radix-ui/rect@1.0.1: resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 dev: false /@react-email/body@0.0.7(react@18.2.0): @@ -3535,16 +3586,6 @@ packages: react: 18.2.0 dev: false - /@react-email/render@0.0.11: - resolution: {integrity: sha512-Ec4vLkVbxoQhThBK1H++FdO4NgCeucg57qmwQ8A9xbozA2hWJiT2jJb5IA/bLE0YdixK8BeucXghJp84YZIG7A==} - engines: {node: '>=18.0.0'} - dependencies: - html-to-text: 9.0.5 - js-beautify: 1.14.11 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@react-email/render@0.0.12: resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} engines: {node: '>=18.0.0'} @@ -3591,8 +3632,8 @@ packages: react: 18.2.0 dev: false - /@rushstack/eslint-patch@1.7.0: - resolution: {integrity: sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg==} + /@rushstack/eslint-patch@1.6.0: + resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==} dev: true /@selderee/plugin-htmlparser2@0.11.0: @@ -3606,21 +3647,21 @@ packages: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} dev: false - /@stripe/react-stripe-js@2.4.0(@stripe/stripe-js@2.3.0)(react-dom@18.2.0)(react@18.2.0): + /@stripe/react-stripe-js@2.4.0(@stripe/stripe-js@2.4.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1jVQEL3OuhuzNlf4OdfqovHt+MkWh8Uh8xpLxx/xUFUDdF+7/kDOrGKy+xJO3WLCfZUL7NAy+/ypwXbbYZi0tg==} peerDependencies: '@stripe/stripe-js': ^1.44.1 || ^2.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@stripe/stripe-js': 2.3.0 + '@stripe/stripe-js': 2.4.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@stripe/stripe-js@2.3.0: - resolution: {integrity: sha512-iTwzjw1ORUR+1pH21+C/M05w+Jh5hAuE4QUei7Gnku65N7QpEaHtyVszYMYDBs6iNyLrD1tfQTSrjD6NkOA/ww==} + /@stripe/stripe-js@2.4.0: + resolution: {integrity: sha512-WFkQx1mbs2b5+7looI9IV1BLa3bIApuN3ehp9FP58xGg7KL9hCHDECgW3BwO9l9L+xBPVAD7Yjn1EhGe6EDTeA==} dev: false /@swc/core-darwin-arm64@1.3.101: @@ -3830,8 +3871,8 @@ packages: resolution: {integrity: sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==} dev: false - /@tremor/react@3.13.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.1): - resolution: {integrity: sha512-Imw5wei9A8fOUIKkqt8+XDzY8NCh88cO/hmzhv0HV+SMydj/Km0WpMvQqeo1Ft6GUIVNhcIo1L/T3/02+OwHWA==} + /@tremor/react@3.13.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.1): + resolution: {integrity: sha512-v0JTAhZr1VTj67nmrb5WF/vI5Mq3Fj7LigPYwqFZcYwrF1UXkUwv5mEt8V5GR5QVMmprmYx7A6m8baImt99IQQ==} peerDependencies: react: ^18.0.0 react-dom: '>=16.6.0' @@ -3843,8 +3884,8 @@ packages: react: 18.2.0 react-day-picker: 8.10.0(date-fns@2.30.0)(react@18.2.0) react-dom: 18.2.0(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - recharts: 2.10.4(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + react-transition-state: 2.1.1(react-dom@18.2.0)(react@18.2.0) + recharts: 2.11.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) tailwind-merge: 1.14.0 transitivePeerDependencies: - prop-types @@ -3861,13 +3902,13 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/cookie@0.4.1: @@ -3880,13 +3921,13 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.14 '@types/keygrip': 1.0.6 - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/d3-array@3.2.1: @@ -3961,8 +4002,8 @@ packages: /@types/express-serve-static-core@4.17.41: resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: - '@types/node': 20.11.5 - '@types/qs': 6.9.11 + '@types/node': 20.11.10 + '@types/qs': 6.9.10 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: false @@ -3972,12 +4013,12 @@ packages: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.41 - '@types/qs': 6.9.11 + '@types/qs': 6.9.10 '@types/serve-static': 1.15.5 dev: false - /@types/hast@2.3.9: - resolution: {integrity: sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==} + /@types/hast@2.3.8: + resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} dependencies: '@types/unist': 2.0.10 dev: false @@ -4036,32 +4077,32 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - /@types/node-fetch@2.6.11: - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - dependencies: - '@types/node': 20.11.5 - form-data: 4.0.0 - dev: false - /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 form-data: 3.0.1 dev: false + /@types/node-fetch@2.6.9: + resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} + dependencies: + '@types/node': 20.11.10 + form-data: 4.0.0 + dev: false + /@types/node@16.18.6: resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==} dev: false - /@types/node@18.19.8: - resolution: {integrity: sha512-g1pZtPhsvGVTwmeVoexWZLTQaOvXwoSq//pTL0DHeNzUDrFnir4fgETdhjhIxjVnN+hKOuh98+E1eMLnUXstFg==} + /@types/node@18.19.1: + resolution: {integrity: sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.11.5: - resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + /@types/node@20.11.10: + resolution: {integrity: sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==} dependencies: undici-types: 5.26.5 @@ -4080,8 +4121,8 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/qs@6.9.11: - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + /@types/qs@6.9.10: + resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} dev: false /@types/range-parser@1.2.7: @@ -4121,7 +4162,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/serve-static@1.15.5: @@ -4129,7 +4170,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.5 + '@types/node': 20.11.10 dev: false /@types/unist@2.0.10: @@ -4141,9 +4182,9 @@ packages: /@types/webpack@5.28.5(@swc/core@1.3.101)(esbuild@0.19.11): resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.19.11) + webpack: 5.90.0(@swc/core@1.3.101)(esbuild@0.19.11) transitivePeerDependencies: - '@swc/core' - esbuild @@ -4151,8 +4192,8 @@ packages: - webpack-cli dev: false - /@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==} + /@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4163,11 +4204,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.19.0 - '@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/type-utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -4180,8 +4221,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==} + /@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4190,10 +4231,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.19.0 - '@typescript-eslint/types': 6.19.0 - '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -4201,16 +4242,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.19.0: - resolution: {integrity: sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==} + /@typescript-eslint/scope-manager@6.20.0: + resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.19.0 - '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/visitor-keys': 6.20.0 dev: true - /@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==} + /@typescript-eslint/type-utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4219,8 +4260,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -4229,13 +4270,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.19.0: - resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==} + /@typescript-eslint/types@6.20.0: + resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.19.0(typescript@5.3.3): - resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==} + /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3): + resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4243,8 +4284,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.19.0 - '@typescript-eslint/visitor-keys': 6.19.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/visitor-keys': 6.20.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4256,8 +4297,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==} + /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4265,9 +4306,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.19.0 - '@typescript-eslint/types': 6.19.0 - '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.20.0 + '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -4275,11 +4316,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.19.0: - resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==} + /@typescript-eslint/visitor-keys@6.20.0: + resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.19.0 + '@typescript-eslint/types': 6.20.0 eslint-visitor-keys: 3.4.3 dev: true @@ -4297,8 +4338,8 @@ packages: resolution: {integrity: sha512-ZUo1JHOPPMZDsUw1mOhhVDIvJGlsjj6T0xJ/YJtulyJwL43S9B5pxg1cHcRuTEgjaxj7B55jiqQ6r9mDrrjH9A==} dev: false - /@uploadthing/react@6.2.0(next@14.1.0)(react@18.2.0)(uploadthing@6.2.0): - resolution: {integrity: sha512-DTD4R9OaVH/UDbs+J/s2UFMjNVQfHA+FCjAUEoa1JgTXQUfP8HvpOl8pCMcLqWx555e98bZrSgw50LjsOWGS0A==} + /@uploadthing/react@6.2.2(next@14.1.0)(react@18.2.0)(uploadthing@6.3.1): + resolution: {integrity: sha512-fDfVooLTbC5/FM1o/chPDf5i8DRxCOeRSuRl0R6yh/jIHTdDO2kwXeM5DTaBazJmaEabh5GB+I9Rwg8nU0QdVA==} peerDependencies: next: '*' react: ^17.0.2 || ^18.0.0 @@ -4308,19 +4349,19 @@ packages: optional: true dependencies: '@uploadthing/dropzone': 0.1.1 - '@uploadthing/shared': 6.1.0(@uploadthing/mime-types@0.2.2) + '@uploadthing/shared': 6.2.0(@uploadthing/mime-types@0.2.2) attr-accept: 2.2.2 file-selector: 0.6.0 - next: 14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 tailwind-merge: 1.14.0 - uploadthing: 6.2.0 + uploadthing: 6.3.1 transitivePeerDependencies: - '@uploadthing/mime-types' dev: false - /@uploadthing/shared@6.1.0(@uploadthing/mime-types@0.2.2): - resolution: {integrity: sha512-pZNTqq/3QbAnLF6wRKAa9lM7MxdP057z3W3E6vZiHnhmwmdMllJpaVs3TWqe0wbSy6jcDDRLhDCuU/Vvr2KsZw==} + /@uploadthing/shared@6.2.0(@uploadthing/mime-types@0.2.2): + resolution: {integrity: sha512-GMC1gwZa9X48RZwuY7gGse7E8TXYMAMUNaYWEQL2ctVhMZv7viCPyMyZ0yMqBsQmOeGfbmycPnUeNE9IuesJGg==} peerDependencies: '@uploadthing/mime-types': ^0.2.2 peerDependenciesMeta: @@ -4328,79 +4369,80 @@ packages: optional: true dependencies: '@uploadthing/mime-types': 0.2.2 + std-env: 3.7.0 dev: false - /@vue/compiler-core@3.4.15: - resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} + /@vue/compiler-core@3.4.14: + resolution: {integrity: sha512-ro4Zzl/MPdWs7XwxT7omHRxAjMbDFRZEEjD+2m3NBf8YzAe3HuoSEZosXQo+m1GQ1G3LQ1LdmNh1RKTYe+ssEg==} dependencies: '@babel/parser': 7.23.6 - '@vue/shared': 3.4.15 + '@vue/shared': 3.4.14 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: false - /@vue/compiler-dom@3.4.15: - resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} + /@vue/compiler-dom@3.4.14: + resolution: {integrity: sha512-nOZTY+veWNa0DKAceNWxorAbWm0INHdQq7cejFaWM1WYnoNSJbSEKYtE7Ir6lR/+mo9fttZpPVI9ZFGJ1juUEQ==} dependencies: - '@vue/compiler-core': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-core': 3.4.14 + '@vue/shared': 3.4.14 dev: false - /@vue/compiler-sfc@3.4.15: - resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==} + /@vue/compiler-sfc@3.4.14: + resolution: {integrity: sha512-1vHc9Kv1jV+YBZC/RJxQJ9JCxildTI+qrhtDh6tPkR1O8S+olBUekimY0km0ZNn8nG1wjtFAe9XHij+YLR8cRQ==} dependencies: '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.4.15 - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-core': 3.4.14 + '@vue/compiler-dom': 3.4.14 + '@vue/compiler-ssr': 3.4.14 + '@vue/shared': 3.4.14 estree-walker: 2.0.2 magic-string: 0.30.5 postcss: 8.4.33 source-map-js: 1.0.2 dev: false - /@vue/compiler-ssr@3.4.15: - resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==} + /@vue/compiler-ssr@3.4.14: + resolution: {integrity: sha512-bXT6+oAGlFjTYVOTtFJ4l4Jab1wjsC0cfSfOe2B4Z0N2vD2zOBSQ9w694RsCfhjk+bC2DY5Gubb1rHZVii107Q==} dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/compiler-dom': 3.4.14 + '@vue/shared': 3.4.14 dev: false - /@vue/reactivity@3.4.15: - resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==} + /@vue/reactivity@3.4.14: + resolution: {integrity: sha512-xRYwze5Q4tK7tT2J4uy4XLhK/AIXdU5EBUu9PLnIHcOKXO0uyXpNNMzlQKuq7B+zwtq6K2wuUL39pHA6ZQzObw==} dependencies: - '@vue/shared': 3.4.15 + '@vue/shared': 3.4.14 dev: false - /@vue/runtime-core@3.4.15: - resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==} + /@vue/runtime-core@3.4.14: + resolution: {integrity: sha512-qu+NMkfujCoZL6cfqK5NOfxgXJROSlP2ZPs4CTcVR+mLrwl4TtycF5Tgo0QupkdBL+2kigc6EsJlTcuuZC1NaQ==} dependencies: - '@vue/reactivity': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/reactivity': 3.4.14 + '@vue/shared': 3.4.14 dev: false - /@vue/runtime-dom@3.4.15: - resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} + /@vue/runtime-dom@3.4.14: + resolution: {integrity: sha512-B85XmcR4E7XsirEHVqhmy4HPbRT9WLFWV9Uhie3OapV9m1MEN9+Er6hmUIE6d8/l2sUygpK9RstFM2bmHEUigA==} dependencies: - '@vue/runtime-core': 3.4.15 - '@vue/shared': 3.4.15 + '@vue/runtime-core': 3.4.14 + '@vue/shared': 3.4.14 csstype: 3.1.3 dev: false - /@vue/server-renderer@3.4.15(vue@3.4.15): - resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==} + /@vue/server-renderer@3.4.14(vue@3.4.14): + resolution: {integrity: sha512-pwSKXQfYdJBTpvWHGEYI+akDE18TXAiLcGn+Q/2Fj8wQSHWztoo7PSvfMNqu6NDhp309QXXbPFEGCU5p85HqkA==} peerDependencies: - vue: 3.4.15 + vue: 3.4.14 dependencies: - '@vue/compiler-ssr': 3.4.15 - '@vue/shared': 3.4.15 - vue: 3.4.15(typescript@5.3.3) + '@vue/compiler-ssr': 3.4.14 + '@vue/shared': 3.4.14 + vue: 3.4.14(typescript@5.3.3) dev: false - /@vue/shared@3.4.15: - resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} + /@vue/shared@3.4.14: + resolution: {integrity: sha512-nmi3BtLpvqXAWoRZ6HQ+pFJOHBU4UnH3vD3opgmwXac7vhaHKA9nj1VeGjMggdB9eLtW83eHyPCmOU1qzdsC7Q==} dev: false /@webassemblyjs/ast@1.11.6: @@ -4564,7 +4606,7 @@ packages: humanize-ms: 1.2.1 dev: false - /ai@2.2.31(react@18.2.0)(solid-js@1.8.11)(svelte@4.2.9)(vue@3.4.15): + /ai@2.2.31(react@18.2.0)(solid-js@1.8.11)(svelte@4.2.8)(vue@3.4.14): resolution: {integrity: sha512-WQH13RxP+RYo9IE/FX8foNQh9gcKO/dhl9OGy5JL2bHJVBlnugPmH2CYJWaRt+mvjXHaU8txB+jzGo/fbtH2HA==} engines: {node: '>=14.6'} peerDependencies: @@ -4587,12 +4629,12 @@ packages: react: 18.2.0 solid-js: 1.8.11 solid-swr-store: 0.10.7(solid-js@1.8.11)(swr-store@0.10.6) - sswr: 2.0.0(svelte@4.2.9) - svelte: 4.2.9 + sswr: 2.0.0(svelte@4.2.8) + svelte: 4.2.8 swr: 2.2.0(react@18.2.0) swr-store: 0.10.6 - swrv: 1.0.4(vue@3.4.15) - vue: 3.4.15(typescript@5.3.3) + swrv: 1.0.4(vue@3.4.14) + vue: 3.4.14(typescript@5.3.3) dev: false /ajv-keywords@3.5.2(ajv@6.12.6): @@ -4765,6 +4807,10 @@ packages: engines: {node: '>=0.10.0'} dev: false + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + /asn1js@3.0.5: resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} engines: {node: '>=12.0.0'} @@ -4805,8 +4851,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001565 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4821,8 +4867,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001581 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4844,13 +4890,6 @@ packages: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: true - - /axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - dependencies: - dequal: 2.0.3 - dev: false /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -4904,15 +4943,26 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001579 - electron-to-chromium: 1.4.640 + caniuse-lite: 1.0.30001565 + electron-to-chromium: 1.4.601 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + update-browserslist-db: 1.0.13(browserslist@4.22.1) + + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001581 + electron-to-chromium: 1.4.650 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) + dev: true /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4936,7 +4986,7 @@ packages: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 - set-function-length: 1.2.0 + set-function-length: 1.1.1 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -4972,8 +5022,11 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001579: - resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + /caniuse-lite@1.0.30001565: + resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} + + /caniuse-lite@1.0.30001581: + resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5232,6 +5285,10 @@ packages: repeat-string: 1.6.1 dev: false + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -5279,6 +5336,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + dev: false + /copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} @@ -5286,6 +5347,11 @@ packages: is-what: 4.1.16 dev: true + /core-js@3.30.2: + resolution: {integrity: sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==} + requiresBuild: true + dev: false + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false @@ -5424,11 +5490,11 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 dev: false - /date-fns@3.3.0: - resolution: {integrity: sha512-xuouT0GuI2W8yXhCMn/AXbSl1Av3wu2hJXxMnnILTY3bYY0UgNK0qOwVXqdFBrobW5qbX1TuOTgMw7c2H2OuhA==} + /date-fns@3.3.1: + resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==} dev: false /debounce@2.0.0: @@ -5539,6 +5605,13 @@ packages: dependencies: dequal: 2.0.3 + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -5586,14 +5659,7 @@ packages: /dom-helpers@3.4.0: resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} dependencies: - '@babel/runtime': 7.23.8 - dev: false - - /dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - dependencies: - '@babel/runtime': 7.23.8 - csstype: 3.1.3 + '@babel/runtime': 7.23.5 dev: false /dom-serializer@2.0.0: @@ -5627,7 +5693,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.6.2 dev: false /dotenv-cli@7.3.0: @@ -5635,7 +5701,7 @@ packages: hasBin: true dependencies: cross-spawn: 7.0.3 - dotenv: 16.3.2 + dotenv: 16.3.1 dotenv-expand: 10.0.0 minimist: 1.2.8 dev: true @@ -5650,8 +5716,8 @@ packages: engines: {node: '>=12'} dev: false - /dotenv@16.3.2: - resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} dev: true @@ -5684,7 +5750,7 @@ packages: - supports-color dev: true - /drizzle-orm@0.29.3(@opentelemetry/api@1.7.0)(@planetscale/database@1.14.0)(@types/react@18.2.48)(mysql2@3.7.1)(react@18.2.0): + /drizzle-orm@0.29.3(@opentelemetry/api@1.7.0)(@planetscale/database@1.14.0)(@types/react@18.2.48)(mysql2@3.9.1)(react@18.2.0): resolution: {integrity: sha512-uSE027csliGSGYD0pqtM+SAQATMREb3eSM/U8s6r+Y0RFwTKwftnwwSkqx3oS65UBgqDOM0gMTl5UGNpt6lW0A==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' @@ -5758,7 +5824,7 @@ packages: '@opentelemetry/api': 1.7.0 '@planetscale/database': 1.14.0 '@types/react': 18.2.48 - mysql2: 3.7.1 + mysql2: 3.9.1 react: 18.2.0 dev: false @@ -5776,8 +5842,12 @@ packages: semver: 7.5.4 dev: false - /electron-to-chromium@1.4.640: - resolution: {integrity: sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==} + /electron-to-chromium@1.4.601: + resolution: {integrity: sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==} + + /electron-to-chromium@1.4.650: + resolution: {integrity: sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==} + dev: true /embla-carousel-react@8.0.0-rc19(react@18.2.0): resolution: {integrity: sha512-4BBj1HvlUqhWXFyDJOL/JbQ74jtekfdH646B1wQzM9QmWn6CEcbD/SmovKqc6B5jYTKaaGEGEEw7bpUJRajA8w==} @@ -5832,7 +5902,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.11.5 + '@types/node': 20.11.10 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -5900,8 +5970,8 @@ packages: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 @@ -5929,7 +5999,7 @@ packages: has-symbols: 1.0.3 internal-slot: 1.0.6 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.0.1 dev: true /es-module-lexer@1.4.1: @@ -6092,12 +6162,12 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 14.1.0 - '@rushstack/eslint-patch': 1.7.0 - '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@rushstack/eslint-patch': 1.6.0 + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-react: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) @@ -6144,7 +6214,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -6154,8 +6224,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.56.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -6167,7 +6237,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6188,17 +6258,17 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.56.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6207,7 +6277,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -6216,7 +6286,7 @@ packages: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6225,7 +6295,7 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.15.0 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -6238,7 +6308,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -6291,8 +6361,8 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-tailwindcss@3.14.0(tailwindcss@3.4.1): - resolution: {integrity: sha512-SGy4JmZoP5m1bXCbcsPfQg1/axOdriJf9L22HghNMyDTM5mybg2XEkaMwgax4aR13zZJRRB1nWmkuYUn+SV6/Q==} + /eslint-plugin-tailwindcss@3.14.1(tailwindcss@3.4.1): + resolution: {integrity: sha512-orNkVzJ1fdCkj5d8AHE3tAbixNpMJRoKoHPnxZbZ6iBHTsNvOEmeBz62C3THPhFnXCXaD55SRbNjqGzMEXRoZA==} engines: {node: '>=12.13.0'} peerDependencies: tailwindcss: ^3.4.0 @@ -6339,7 +6409,7 @@ packages: '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -6358,7 +6428,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.3.0 imurmurhash: 0.1.4 @@ -6539,8 +6609,12 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fastq@1.16.0: - resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 @@ -6561,7 +6635,7 @@ packages: engines: {node: ^12.20 || >= 14.13} dependencies: node-domexception: 1.0.0 - web-streams-polyfill: 3.3.2 + web-streams-polyfill: 3.2.1 dev: false /file-entry-cache@6.0.1: @@ -6664,6 +6738,15 @@ packages: fetch-blob: 3.2.0 dev: false + /formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.2 + dev: false + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -6801,6 +6884,16 @@ packages: path-scurry: 1.10.1 dev: false + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -6826,8 +6919,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -6952,7 +7045,7 @@ packages: /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/unist': 2.0.10 hastscript: 7.2.0 property-information: 6.4.0 @@ -6993,7 +7086,7 @@ packages: /hast-util-parse-selector@3.1.1: resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 dev: false /hast-util-parse-selector@4.0.0: @@ -7005,7 +7098,7 @@ packages: /hast-util-raw@7.2.3: resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/parse5': 6.0.3 hast-util-from-parse5: 7.1.2 hast-util-to-parse5: 7.1.0 @@ -7023,7 +7116,7 @@ packages: dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/unist': 2.0.10 comma-separated-tokens: 2.0.3 estree-util-attach-comments: 2.1.1 @@ -7043,7 +7136,7 @@ packages: /hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/unist': 2.0.10 ccount: 2.0.1 comma-separated-tokens: 2.0.3 @@ -7081,7 +7174,7 @@ packages: /hast-util-to-parse5@7.1.0: resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 comma-separated-tokens: 2.0.3 property-information: 6.4.0 space-separated-tokens: 2.0.2 @@ -7113,7 +7206,7 @@ packages: /hastscript@6.0.0: resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 comma-separated-tokens: 1.0.8 hast-util-parse-selector: 2.2.5 property-information: 5.6.0 @@ -7123,7 +7216,7 @@ packages: /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 property-information: 6.4.0 @@ -7144,6 +7237,11 @@ packages: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: true + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + dev: false + /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: false @@ -7201,8 +7299,8 @@ packages: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} - /imagescript@1.2.18: - resolution: {integrity: sha512-8AwTawraXovLo2PgKvFt96SZqJDwl0CnHDyrtoPUQHMmoA7u9M8EnqFZwCofSM+Uo623Z580iKW74bs2fzjoYQ==} + /imagescript@1.2.17: + resolution: {integrity: sha512-gUibUVTqbd2AeakephgVshjTL9zqh7k4Ea9yk9z8O9jjn11qU3vQWbMRDWGVzQl1t/cLeHYjclefjx8HblXo9Q==} engines: {node: '>=14.0.0'} dev: false @@ -7560,7 +7658,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -8007,7 +8105,7 @@ packages: resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} dependencies: '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 @@ -8032,7 +8130,7 @@ packages: resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} dependencies: '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/mdast': 3.0.15 '@types/unist': 2.0.10 ccount: 2.0.1 @@ -8083,7 +8181,7 @@ packages: resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} dependencies: '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/mdast': 3.0.15 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 @@ -8120,7 +8218,7 @@ packages: /mdast-util-to-hast@12.3.0: resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/mdast': 3.0.15 mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.2.0 @@ -8130,8 +8228,8 @@ packages: unist-util-visit: 4.1.2 dev: false - /mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + /mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: '@types/hast': 3.0.3 '@types/mdast': 4.0.3 @@ -8141,7 +8239,6 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 dev: false /mdast-util-to-markdown@1.5.0: @@ -8190,7 +8287,7 @@ packages: peerDependencies: esbuild: 0.* dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 '@esbuild-plugins/node-resolve': 0.1.4(esbuild@0.19.11) '@fal-works/esbuild-plugin-global-externals': 2.1.2 '@mdx-js/esbuild': 2.3.0(esbuild@0.19.11) @@ -8249,6 +8346,11 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + /micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} dependencies: @@ -8777,6 +8879,12 @@ packages: mime-db: 1.52.0 dev: false + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -8847,8 +8955,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /mysql2@3.7.1: - resolution: {integrity: sha512-4EEqYu57mnkW5+Bvp5wBebY7PpfyrmvJ3knHcmLkp8FyBu4kqgrF2GxIjsC2tbLNZWqJaL21v/MYH7bU5f03oA==} + /mysql2@3.9.1: + resolution: {integrity: sha512-3njoWAAhGBYy0tWBabqUQcLtczZUxrmmtc2vszQUekg3kTJyZ5/IeLC3Fo04u6y6Iy5Sba7pIIa2P/gs8D3ZeQ==} engines: {node: '>= 8.0'} dependencies: denque: 2.1.0 @@ -8915,7 +9023,7 @@ packages: '@contentlayer/core': 0.3.4(esbuild@0.19.11) '@contentlayer/utils': 0.3.4 contentlayer: 0.3.4(esbuild@0.19.11) - next: 14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -8932,7 +9040,7 @@ packages: react: '*' react-dom: '*' dependencies: - next: 14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -8941,7 +9049,7 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /next@14.0.5-canary.46(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0): + /next@14.0.5-canary.46(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-u8yiAK7L+fl/U9yFmq3VOpkHlImx5wg3OoDz3qxTXhPmmMzNcPbblWgxBf5d6Z+aik8BEn27L31k/tXCRzwFxA==} engines: {node: '>=18.17.0'} hasBin: true @@ -8960,12 +9068,12 @@ packages: '@opentelemetry/api': 1.7.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001579 + caniuse-lite: 1.0.30001565 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.5)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.0.5-canary.46 '@next/swc-darwin-x64': 14.0.5-canary.46 @@ -8981,7 +9089,7 @@ packages: - babel-plugin-macros dev: false - /next@14.1.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0): + /next@14.1.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true @@ -9000,12 +9108,12 @@ packages: '@opentelemetry/api': 1.7.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001579 + caniuse-lite: 1.0.30001581 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.5)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.1.0 '@next/swc-darwin-x64': 14.1.0 @@ -9061,6 +9169,11 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /nodent-runtime@3.2.1: + resolution: {integrity: sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==} + requiresBuild: true + dev: false + /nopt@7.2.0: resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -9167,24 +9280,24 @@ packages: mimic-fn: 2.1.0 dev: false - /oo-ascii-tree@1.94.0: - resolution: {integrity: sha512-i6UllReifEW2InBJHVFJNxrledRp3yr/yKVbpDmgWTguRe8/7BtBK3njzjvZNcPLEAtiWWxr0o9SpwYjapmTOw==} + /oo-ascii-tree@1.92.0: + resolution: {integrity: sha512-rLSPbnakn5Wb3dOIVtrmn8jfHKqWv7bROpyBiw6DExq+dOG7qC49EIs89hBhyHkvLolX0oC+0a/RMPAyHEZ+1w==} engines: {node: '>= 14.17.0'} dev: false - /openai@4.25.0: - resolution: {integrity: sha512-qLMFOizjxKuDfQkBrczZPYo6XVL4bdcuz9MR11Q+M91kGcs8dQw+O90nRcC+qWuhaGphQkfXQJMn4cd7Yew3Kg==} + /openai@4.26.0: + resolution: {integrity: sha512-HPC7tgYdeP38F3uHA5WgnoXZyGbAp9jgcIo23p6It+q/07u4C+NZ8xHKlMShsPbDDmFRpPsa3vdbXYpbhJH3eg==} hasBin: true dependencies: - '@types/node': 18.19.8 - '@types/node-fetch': 2.6.11 + '@types/node': 18.19.1 + '@types/node-fetch': 2.6.9 abort-controller: 3.0.0 agentkeepalive: 4.5.0 digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 - web-streams-polyfill: 3.3.2 + web-streams-polyfill: 3.2.1 transitivePeerDependencies: - encoding dev: false @@ -9415,7 +9528,7 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.33 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.13 /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -9425,8 +9538,8 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -9564,8 +9677,8 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false - /protobufjs@7.2.6: - resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} + /protobufjs@7.2.5: + resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} engines: {node: '>=12.0.0'} requiresBuild: true dependencies: @@ -9579,7 +9692,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.11.5 + '@types/node': 20.11.10 long: 5.2.3 dev: false @@ -9638,13 +9751,13 @@ packages: react: 18.2.0 dev: false - /react-day-picker@8.10.0(date-fns@3.3.0)(react@18.2.0): + /react-day-picker@8.10.0(date-fns@3.3.1)(react@18.2.0): resolution: {integrity: sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg==} peerDependencies: date-fns: ^2.28.0 || ^3.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - date-fns: 3.3.0 + date-fns: 3.3.1 react: 18.2.0 dev: false @@ -9670,7 +9783,7 @@ packages: react: 18.2.0 dev: false - /react-email@2.0.0(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(eslint@8.56.0): + /react-email@2.0.0(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(eslint@8.56.0): resolution: {integrity: sha512-XzxyWkrfZC3zF9HnAjWwB823u9eTMpAQCy+SjLMtNSh4i8WuV8Fr5LriTTz/p1RRt6aXoiV3c/ZthaDt0nvBEA==} engines: {node: '>=18.0.0'} hasBin: true @@ -9700,7 +9813,7 @@ packages: glob: 10.3.4 log-symbols: 4.1.0 mime-types: 2.1.35 - next: 14.0.5-canary.46(@babel/core@7.23.7)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.0.5-canary.46(@babel/core@7.23.5)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) normalize-path: 3.0.0 ora: 5.4.1 postcss: 8.4.32 @@ -9767,10 +9880,10 @@ packages: devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.0.2 react: 18.2.0 remark-parse: 11.0.0 - remark-rehype: 11.1.0 + remark-rehype: 11.0.0 unified: 11.0.4 unist-util-visit: 5.0.0 vfile: 6.0.1 @@ -9819,7 +9932,7 @@ packages: react-remove-scroll-bar: 2.3.4(@types/react@18.2.48)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.48)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.48)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.48)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.48)(react@18.2.0) dev: false @@ -9838,7 +9951,7 @@ packages: react-remove-scroll-bar: 2.3.4(@types/react@18.2.48)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.48)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.48)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.48)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.48)(react@18.2.0) dev: false @@ -9878,7 +9991,7 @@ packages: peerDependencies: react: '>= 0.14.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.29.0 @@ -9892,7 +10005,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 react: 18.2.0 use-composed-ref: 1.3.0(react@18.2.0) use-latest: 1.2.1(@types/react@18.2.48)(react@18.2.0) @@ -9914,16 +10027,12 @@ packages: react-lifecycles-compat: 3.0.4 dev: false - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + /react-transition-state@2.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==} peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.23.8 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -9980,8 +10089,8 @@ packages: decimal.js-light: 2.5.1 dev: false - /recharts@2.10.4(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/Q7/wdf8bW91lN3NEeCjL9RWfaiXQViJFgdnas4Eix/I8B9HAI3tHHK/CW/zDfgRMh4fzW1zlfjoz1IAapLO1Q==} + /recharts@2.11.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5s+u1m5Hwxb2nh0LABkE3TS/lFqFHyWl7FnPbQhHobbQQia4ih1t3o3+ikPYr31Ns+kYe4FASIthKeKi/YYvMg==} engines: {node: '>=14'} peerDependencies: prop-types: ^15.6.0 @@ -9998,7 +10107,7 @@ packages: react-smooth: 2.0.5(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) recharts-scale: 0.4.5 tiny-invariant: 1.3.1 - victory-vendor: 36.8.2 + victory-vendor: 36.8.4 dev: false /rechoir@0.6.2: @@ -10036,6 +10145,10 @@ packages: prismjs: 1.27.0 dev: false + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -10076,17 +10189,17 @@ packages: unified: 11.0.4 dev: true - /rehype-pretty-code@0.12.5(shikiji@0.9.19): - resolution: {integrity: sha512-EnLi5MrL9PROc2jfEnp6bAT+ui/k/uixg6dAT35LA1V2xq0RCpgZYD8bWbpaAUnyAgVfgsmKgXbjCqAJejFc+w==} + /rehype-pretty-code@0.12.6(shikiji@0.10.2): + resolution: {integrity: sha512-AW18s4eXwnb4PGwL0Y8BoUzBJr23epWNXndCKaZ52S4kl/4tsgM+406oCp5NdtPZsB0ItpaY+hCMv3kw58DLrA==} engines: {node: '>=18'} peerDependencies: - shikiji: ^0.7.0 || ^0.8.0 || ^0.9.0 + shikiji: ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 dependencies: '@types/hast': 3.0.3 hast-util-to-string: 3.0.0 parse-numeric-range: 1.3.0 rehype-parse: 9.0.0 - shikiji: 0.9.19 + shikiji: 0.10.2 unified: 11.0.4 unist-util-visit: 5.0.0 dev: true @@ -10104,7 +10217,7 @@ packages: /rehype-stringify@9.0.4: resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 hast-util-to-html: 8.0.4 unified: 10.1.2 dev: false @@ -10184,18 +10297,18 @@ packages: /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: - '@types/hast': 2.3.9 + '@types/hast': 2.3.8 '@types/mdast': 3.0.15 mdast-util-to-hast: 12.3.0 unified: 10.1.2 dev: false - /remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + /remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} dependencies: '@types/hast': 3.0.3 '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 dev: false @@ -10222,11 +10335,11 @@ packages: engines: {node: '>=0.10.0'} dev: false - /resend@3.0.0: - resolution: {integrity: sha512-LpQVIX5tFqQOtTSco8Q0NxP16zh35Sqla5LqLKIQ1PNv3BRwGMeP84cQ6feIg+JWJ3Xk/1yVoqxJJ0C+iUucbA==} + /resend@3.1.0: + resolution: {integrity: sha512-H+Ll0bAim1L1slAGzjPZlYAlWqihHAdCM14POqJ0AUgEPfwZQ3Eb6Z9HCO5Wsi3IDMHihPx+O77kzgprj5CchQ==} engines: {node: '>=18'} dependencies: - '@react-email/render': 0.0.11 + '@react-email/render': 0.0.12 dev: false /resolve-from@4.0.0: @@ -10284,8 +10397,8 @@ packages: mri: 1.2.0 dev: false - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 @@ -10298,9 +10411,8 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} - engines: {node: '>= 0.4'} + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -10384,12 +10496,11 @@ packages: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} dev: false - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 - function-bind: 1.1.2 get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 @@ -10423,14 +10534,14 @@ packages: rechoir: 0.6.2 dev: false - /shikiji-core@0.9.19: - resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} + /shikiji-core@0.10.2: + resolution: {integrity: sha512-9Of8HMlF96usXJHmCL3Gd0Fcf0EcyJUF9m8EoAKKd98mHXi0La2AZl1h6PegSFGtiYcBDK/fLuKbDa1l16r1fA==} dev: true - /shikiji@0.9.19: - resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} + /shikiji@0.10.2: + resolution: {integrity: sha512-wtZg3T0vtYV2PnqusWQs3mDaJBdCPWxFDrBM/SE5LfrX92gjUvfEMlc+vJnoKY6Z/S44OWaCRzNIsdBRWcTAiw==} dependencies: - shikiji-core: 0.9.19 + shikiji-core: 0.10.2 dev: true /side-channel@1.0.4: @@ -10461,7 +10572,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.6.2 dev: false /snakecase-keys@3.2.1: @@ -10560,6 +10671,16 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /sonner@1.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -10617,12 +10738,12 @@ packages: engines: {node: '>= 0.6'} dev: false - /sswr@2.0.0(svelte@4.2.9): + /sswr@2.0.0(svelte@4.2.8): resolution: {integrity: sha512-mV0kkeBHcjcb0M5NqKtKVg/uTIYNlIIniyDfSGrSfxpEdM9C365jK0z55pl9K0xAkNTJi2OAOVFQpgMPUk+V0w==} peerDependencies: svelte: ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.8 swrev: 4.0.0 dev: false @@ -10633,6 +10754,10 @@ packages: type-fest: 0.7.1 dev: false + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: false + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -10746,11 +10871,11 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /stripe@14.13.0: - resolution: {integrity: sha512-uLOfWtBUL1amJCTpKCXWrHntFOSaO2PWb/2hsxV/OlXLr0bz5MyU8IW1pFlmZqpw6hBqAW5Fad7Ty7xRxDYrzA==} + /stripe@14.14.0: + resolution: {integrity: sha512-P6lvKHxgDzZXto9VMstG1ucv4Ls0U9nOoQhVZABXJ33kRD7zMwkBy5Y4c3BO59O230uSTkOFPLh87YxVzkp0Mg==} engines: {node: '>=12.*'} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.10 qs: 6.11.2 dev: false @@ -10766,7 +10891,7 @@ packages: inline-style-parser: 0.2.2 dev: false - /styled-jsx@5.1.1(@babel/core@7.23.7)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.23.5)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -10779,24 +10904,42 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.5 client-only: 0.0.1 react: 18.2.0 dev: false - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 - glob: 10.3.10 + glob: 7.1.6 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + /superagent@8.0.9: + resolution: {integrity: sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==} + engines: {node: '>=6.4.0 <13 || >=14'} + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.3.4 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.2 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.11.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + /superjson@2.2.1: resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} engines: {node: '>=16'} @@ -10832,17 +10975,16 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte@4.2.9: - resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==} + /svelte@4.2.8: + resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - '@types/estree': 1.0.5 + '@jridgewell/trace-mapping': 0.3.21 acorn: 8.11.3 aria-query: 5.3.0 - axobject-query: 4.0.0 + axobject-query: 3.2.1 code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 @@ -10872,12 +11014,12 @@ packages: resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} dev: false - /swrv@1.0.4(vue@3.4.15): + /swrv@1.0.4(vue@3.4.14): resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} peerDependencies: vue: '>=3.2.26 < 4' dependencies: - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.14(typescript@5.3.3) dev: false /tabbable@6.2.0: @@ -10891,7 +11033,13 @@ packages: /tailwind-merge@2.2.0: resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.23.5 + dev: false + + /tailwind-merge@2.2.1: + resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==} + dependencies: + '@babel/runtime': 7.23.9 dev: false /tailwindcss-animate@1.0.7(tailwindcss@3.4.1): @@ -10926,9 +11074,9 @@ packages: postcss-js: 4.0.1(postcss@8.4.33) postcss-load-config: 4.0.2(postcss@8.4.33) postcss-nested: 6.0.1(postcss@8.4.33) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.13 resolve: 1.22.8 - sucrase: 3.35.0 + sucrase: 3.34.0 transitivePeerDependencies: - ts-node dev: false @@ -10957,9 +11105,9 @@ packages: postcss-js: 4.0.1(postcss@8.4.33) postcss-load-config: 4.0.2(postcss@8.4.33) postcss-nested: 6.0.1(postcss@8.4.33) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.13 resolve: 1.22.8 - sucrase: 3.35.0 + sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -10967,7 +11115,7 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /terser-webpack-plugin@5.3.10(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.90.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -10983,14 +11131,14 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.21 '@swc/core': 1.3.101 esbuild: 0.19.11 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.19.11) + webpack: 5.90.0(@swc/core@1.3.101)(esbuild@0.19.11) dev: false /terser@5.27.0: @@ -11104,8 +11252,8 @@ packages: resolution: {integrity: sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==} dev: false - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -11350,23 +11498,35 @@ packages: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - /update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + + /update-browserslist-db@1.0.13(browserslist@4.22.3): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 + browserslist: 4.22.3 escalade: 3.1.1 picocolors: 1.0.0 + dev: true - /uploadthing@6.2.0: - resolution: {integrity: sha512-QP32VguzERaa/xeu8swvkBTUz6am7118zRXcK0rA/k+E8O7kNEdPKI43vMxDWMQMNwm0YVjsHWZLsBsj6Z6Xig==} + /uploadthing@6.3.1: + resolution: {integrity: sha512-eqbUpxSYtofT/aqqXHlaNJhpK94st6rGeEr8d2QmL0gHWKauS9w7J4jQ5Q7Jfmb2kMJj+pXW3duydkev/5G6Mw==} engines: {node: '>=18.13.0'} dependencies: '@uploadthing/mime-types': 0.2.2 - '@uploadthing/shared': 6.1.0(@uploadthing/mime-types@0.2.2) + '@uploadthing/shared': 6.2.0(@uploadthing/mime-types@0.2.2) consola: 3.2.3 + std-env: 3.7.0 dev: false /uri-js@4.4.1: @@ -11374,8 +11534,8 @@ packages: dependencies: punycode: 2.3.1 - /use-callback-ref@1.3.1(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} + /use-callback-ref@1.3.0(@types/react@18.2.48)(react@18.2.0): + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -11456,6 +11616,11 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -11479,8 +11644,8 @@ packages: engines: {node: '>= 0.8'} dev: false - /vaul@0.8.8(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z9K2b90M/LtY/sRyM1yfA8Y4mHC/5WIqhO2u7Byr49r5LQXkLGdVXiehsnjtws9CL+DyknwTuRMJXlCOHTqg/g==} + /vaul@0.8.9(@types/react-dom@18.2.18)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gpmtmZRWDPP6niQh14JfRIFUYZVyfvAWyA/7rUINOfNlO/2K7uEvI5rLXEXkxZIRFyUZj+TPHLFMirkegPHjrw==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 @@ -11536,8 +11701,8 @@ packages: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - /victory-vendor@36.8.2: - resolution: {integrity: sha512-NfSQi7ISCdBbDpn3b6rg+8RpFZmWIM9mcks48BbogHE2F6h1XKdA34oiCKP5hP1OGvTotDRzsexiJKzrK4Exuw==} + /victory-vendor@36.8.4: + resolution: {integrity: sha512-30dOGZVjrOraxzflyZozjwYBYnIjhX2c18kuVNiiZlRHx++8zXGptlXSAm57M87Y2WLN10XGbn8kTXntqteKUw==} dependencies: '@types/d3-array': 3.2.1 '@types/d3-ease': 3.0.2 @@ -11555,19 +11720,19 @@ packages: d3-timer: 3.0.1 dev: false - /vue@3.4.15(typescript@5.3.3): - resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} + /vue@3.4.14(typescript@5.3.3): + resolution: {integrity: sha512-Rop5Al/ZcBbBz+KjPZaZDgHDX0kUP4duEzDbm+1o91uxYUNmJrZSBuegsNIJvUGy+epLevNRNhLjm08VKTgGyw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.15 - '@vue/compiler-sfc': 3.4.15 - '@vue/runtime-dom': 3.4.15 - '@vue/server-renderer': 3.4.15(vue@3.4.15) - '@vue/shared': 3.4.15 + '@vue/compiler-dom': 3.4.14 + '@vue/compiler-sfc': 3.4.14 + '@vue/runtime-dom': 3.4.14 + '@vue/server-renderer': 3.4.14(vue@3.4.14) + '@vue/shared': 3.4.14 typescript: 5.3.3 dev: false @@ -11588,8 +11753,8 @@ packages: /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - /web-streams-polyfill@3.3.2: - resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} dev: false @@ -11598,8 +11763,8 @@ packages: engines: {node: '>= 14'} dev: false - /web-vitals@3.5.1: - resolution: {integrity: sha512-xQ9lvIpfLxUj0eSmT79ZjRoU5wIRfIr7pNukL7ZE4EcWZSmfZQqOlhuAGfkVa3EFmzPHZhWhXfm2i5ys+THVPg==} + /web-vitals@3.5.0: + resolution: {integrity: sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==} dev: false /webcrypto-core@1.7.7: @@ -11609,7 +11774,7 @@ packages: '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.5 - tslib: 2.4.1 + tslib: 2.6.2 dev: false /webidl-conversions@3.0.1: @@ -11621,8 +11786,8 @@ packages: engines: {node: '>=10.13.0'} dev: false - /webpack@5.89.0(@swc/core@1.3.101)(esbuild@0.19.11): - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + /webpack@5.90.0(@swc/core@1.3.101)(esbuild@0.19.11): + resolution: {integrity: sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -11638,7 +11803,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.6 acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.22.2 + browserslist: 4.22.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.4.1 @@ -11652,7 +11817,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.101)(esbuild@0.19.11)(webpack@5.90.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/src/app/(checkout)/checkout/[storeId]/page.tsx b/src/app/(checkout)/checkout/[storeId]/page.tsx index 6de5a77b1..3c44f8f27 100644 --- a/src/app/(checkout)/checkout/[storeId]/page.tsx +++ b/src/app/(checkout)/checkout/[storeId]/page.tsx @@ -1,23 +1,19 @@ +import * as React from "react" import type { Metadata } from "next" import Link from "next/link" import { notFound } from "next/navigation" import { db } from "@/db" import { stores } from "@/db/schema" import { env } from "@/env.mjs" -import { ArrowLeftIcon } from "@radix-ui/react-icons" +import { currentUser } from "@clerk/nextjs" import { eq } from "drizzle-orm" -import { createPaymentIntent } from "@/lib/actions/stripe" +// import { createPaymentIntent } from "@/lib/actions/stripe" import { getCart } from "@/lib/fetchers/cart" import { getStripeAccount } from "@/lib/fetchers/stripe" -import { cn, formatPrice } from "@/lib/utils" -import { Button, buttonVariants } from "@/components/ui/button" -import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer" -import { ScrollArea } from "@/components/ui/scroll-area" -import { Separator } from "@/components/ui/separator" -import { CartLineItems } from "@/components/checkout/cart-line-items" -import { CheckoutForm } from "@/components/checkout/checkout-form" -import { CheckoutShell } from "@/components/checkout/checkout-shell" +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" +import CheckoutContent from "@/components/checkout/checkout-content" import { Shell } from "@/components/shells/shell" export const metadata: Metadata = { @@ -33,6 +29,11 @@ interface CheckoutPageProps { } export default async function CheckoutPage({ params }: CheckoutPageProps) { + const user = await currentUser() + if (!user) { + notFound() + } + const storeId = Number(params.storeId) const store = await db @@ -56,15 +57,24 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) { const cartLineItems = await getCart({ storeId }) - const paymentIntentPromise = createPaymentIntent({ - storeId: store.id, - items: cartLineItems, - }) + // const paymentIntentPromise = createPaymentIntent({ + // storeId: storeId, + // items: cartLineItems, + // }) - const total = cartLineItems.reduce( - (total, item) => total + item.quantity * Number(item.price), - 0 - ) + const clientUser = { + firstName: user.firstName, + lastName: user.lastName, + email: user.emailAddresses.find( + (emailObj) => emailObj.id === user.primaryEmailAddressId + )!.emailAddress, + } + + const clientStore = { + id: store.id, + name: store.name, + stripeAccountId: store.stripeAccountId ?? "", + } if (!(isConnected && store.stripeAccountId)) { return ( @@ -94,81 +104,11 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) { } return ( -
-
-
-
- -
-
-
-
- Pay {store.name} -
-
{formatPrice(total)}
-
- -
- - - - - -
+ ) } diff --git a/src/app/(checkout)/checkout/[storeId]/success/page.tsx b/src/app/(checkout)/checkout/[storeId]/success/page.tsx index e0d6a41e8..8fc594400 100644 --- a/src/app/(checkout)/checkout/[storeId]/success/page.tsx +++ b/src/app/(checkout)/checkout/[storeId]/success/page.tsx @@ -39,7 +39,9 @@ export default async function OrderSuccessPage({ const storeId = Number(params.storeId) const { payment_intent, + // eslint-disable-next-line @typescript-eslint/no-unused-vars payment_intent_client_secret, + // eslint-disable-next-line @typescript-eslint/no-unused-vars redirect_status, delivery_postal_code, } = searchParams ?? {} diff --git a/src/app/api/uploadthing/core.ts b/src/app/api/uploadthing/core.ts index da5c62bf5..2b2aeb54d 100644 --- a/src/app/api/uploadthing/core.ts +++ b/src/app/api/uploadthing/core.ts @@ -8,6 +8,7 @@ export const ourFileRouter = { // Define as many FileRoutes as you like, each with a unique routeSlug productImage: f({ image: { maxFileSize: "4MB", maxFileCount: 3 } }) // Set permissions and file types for this FileRoute + // eslint-disable-next-line @typescript-eslint/no-unused-vars .middleware(async (req) => { // This code runs on your server before upload const user = await currentUser() diff --git a/src/components/checkout/cart-line-items.tsx b/src/components/checkout/cart-line-items.tsx index e38aeff1f..c5341fbd9 100644 --- a/src/components/checkout/cart-line-items.tsx +++ b/src/components/checkout/cart-line-items.tsx @@ -86,9 +86,12 @@ export function CartLineItems({ )} {variant === "default" ? ( - {`${item.category} ${ - item.subcategory ? `/ ${item.subcategory}` : "" - }`} + { + `${item.category}` + // ${ + // item.subcategory ? `/ ${item.subcategory}` : "" + // }` + } ) : null} diff --git a/src/components/checkout/cart-sheet.tsx b/src/components/checkout/cart-sheet.tsx index 60924dc90..5358bc9e0 100644 --- a/src/components/checkout/cart-sheet.tsx +++ b/src/components/checkout/cart-sheet.tsx @@ -62,7 +62,7 @@ export async function CartSheet() {
Shipping - Free + Calculated at checkout
Taxes diff --git a/src/components/checkout/checkout-card.tsx b/src/components/checkout/checkout-card.tsx index c6487a163..b33230f7c 100644 --- a/src/components/checkout/checkout-card.tsx +++ b/src/components/checkout/checkout-card.tsx @@ -12,6 +12,7 @@ import { } from "@/components/ui/card" import { Separator } from "@/components/ui/separator" import { CartLineItems } from "@/components/checkout/cart-line-items" +import ShippingLineItem from "@/components/checkout/shipping-line-item" interface CheckoutCardProps { storeId: number @@ -51,6 +52,10 @@ export async function CheckoutCard({ storeId }: CheckoutCardProps) { + diff --git a/src/components/checkout/checkout-content.tsx b/src/components/checkout/checkout-content.tsx new file mode 100644 index 000000000..43616e792 --- /dev/null +++ b/src/components/checkout/checkout-content.tsx @@ -0,0 +1,266 @@ +"use client" + +import * as React from "react" +import Link from "next/link" +import type { CartLineItem, GetShippingRateProps } from "@/types" +import { ArrowLeftIcon } from "@radix-ui/react-icons" +import { toast } from "sonner" + +import { getShippingRate } from "@/lib/actions/easypost" +import { + createPaymentIntent, + updatePaymentIntentWithShipping, +} from "@/lib/actions/stripe" +import { formatPrice } from "@/lib/utils" +import { useCheckoutFormState } from "@/hooks/use-checkout-form-state" +import { useDebounce } from "@/hooks/use-debounce" +import { + getDimensions, + transformAddress, + useShipping, +} from "@/hooks/use-shipping-rate-state" +import { Button } from "@/components/ui/button" +import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer" +import { Label } from "@/components/ui/label" +import { ScrollArea } from "@/components/ui/scroll-area" +import { Separator } from "@/components/ui/separator" +import { Switch } from "@/components/ui/switch" +import { CartLineItems } from "@/components/checkout/cart-line-items" +import { CheckoutForm } from "@/components/checkout/checkout-form" +import { CheckoutShell } from "@/components/checkout/checkout-shell" +import ShippingLineItem from "@/components/checkout/shipping-line-item" +import { Icons } from "@/components/icons" + +interface CheckoutContentProps { + user: { + firstName: string | null + lastName: string | null + email: string + } + store: { + id: number + name: string + stripeAccountId: string + } + cartLineItems: CartLineItem[] +} + +export default function CheckoutContent({ + user, + store, + cartLineItems, +}: CheckoutContentProps) { + // clientSecret needs to be accessible to the Checkout Shell and Checkout Form below + const [clientSecret, setClientSecret] = React.useState(null) + + // State management for shipping related variables + const name = `${user.firstName || ""} ${user.lastName || ""}`.trim() + const { rate, setRate, total } = useShipping(cartLineItems) + + // Form data state management + const { + email, + address, + confirmed, + isLoading, + isPending, + updateEmail, + updateAddress, + toggleConfirmed, + updateLoading, + startTransition, + clearForm, + } = useCheckoutFormState({ + email: user.email, + address: undefined, + confirmed: false, + }) + const debouncedAddress = useDebounce(address, 500) + + // When Confirmed is toggled, we need to update the shipping rate and payment intent + const handleShippingChange = (checked: boolean) => { + startTransition(async () => { + if (debouncedAddress) { + const shippingAddress = transformAddress(debouncedAddress) + const shippingRate = await getShippingRate({ + toAddress: shippingAddress, + items: cartLineItems, + storeId: store.id, + // dimensions: dimensions, + } as GetShippingRateProps) + + const dimensions = getDimensions(cartLineItems) + + if (typeof shippingRate.rate === "number") { + const updatedIntent = await updatePaymentIntentWithShipping({ + toAddress: shippingAddress, + storeId: store.id, + dimensions: dimensions, + items: cartLineItems, + }) + if (updatedIntent.clientSecret) { + toggleConfirmed(checked) + setRate(shippingRate.rate) + setClientSecret(updatedIntent.clientSecret) + } else { + toast.error( + "Something went wrong with setting up the payment, please try again." + ) + } + } else { + toast.error( + "Something went wrong with the address, please update it and try again." + ) + } + } + }) + } + + // On Setup make the paymentIntent and then store the clientSecret + React.useEffect(() => { + createPaymentIntent({ + storeId: store.id, + items: cartLineItems, + }) + .then((result) => { + setClientSecret(result.clientSecret) + }) + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .catch((e) => { + toast.error( + "Something went wrong with setting up the payment, please try again." + ) + }) + }, [store.id, cartLineItems]) + + return ( +
+
+
+
+ +
+
+
+
+ Pay {store.name} +
+
{formatPrice(total + rate)}
+
+ + +
+ + + +
+ +
+ + {isPending && ( +
+
+
+
+
+ ) +} diff --git a/src/components/checkout/checkout-form.tsx b/src/components/checkout/checkout-form.tsx index d0bbe8597..b84b54904 100644 --- a/src/components/checkout/checkout-form.tsx +++ b/src/components/checkout/checkout-form.tsx @@ -10,28 +10,62 @@ import { } from "@stripe/react-stripe-js" import { toast } from "sonner" +import type { StripeAddress } from "@/types/index" import { absoluteUrl, cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { Icons } from "@/components/icons" // See the stripe playemnts docs: https://stripe.com/docs/payments/quickstart -interface CheckoutFormProps extends React.ComponentPropsWithoutRef<"form"> { +interface CheckoutFormProps + extends Omit< + React.ComponentPropsWithoutRef<"form">, + | "updateEmail" + | "updateAddress" + | "toggleConfirmed" + | "clearForm" + | "updateLoading" + > { storeId: number + userFullName: string + email: string + address: StripeAddress | undefined + debouncedAddress: StripeAddress | undefined + confirmed: boolean + updateEmail: (newEmail: string) => void + updateAddress: (newAddress: StripeAddress | undefined) => void + toggleConfirmed: (newConfirmed: boolean) => void + clearForm: () => void + isLoading: boolean + updateLoading: (newLoading: boolean) => void + isPending: boolean } export function CheckoutForm({ storeId, + userFullName, + email, + address, + debouncedAddress, + confirmed, + updateEmail, + updateAddress, + toggleConfirmed, + clearForm, + isLoading, + updateLoading, + isPending, className, ...props }: CheckoutFormProps) { + //Stripe Elements variables const id = React.useId() const stripe = useStripe() const elements = useElements() - const [email, setEmail] = React.useState("") + const [message, setMessage] = React.useState(null) - const [isLoading, setIsLoading] = React.useState(false) + // When the client secret changes, we need to update the payment intent React.useEffect(() => { if (!stripe) return @@ -61,17 +95,20 @@ export function CheckoutForm({ }) }, [stripe]) + // Payment submission async function onSubmit(event: React.FormEvent) { event.preventDefault() - if (!stripe || !elements) { + if (!stripe || !elements || !debouncedAddress) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return } - setIsLoading(true) + updateLoading(true) setMessage(null) + toggleConfirmed(false) + clearForm() const { error } = await stripe.confirmPayment({ //`Elements` instance that was used to create the Payment Element @@ -95,7 +132,7 @@ export function CheckoutForm({ toast.error(message) - setIsLoading(false) + updateLoading(false) } return ( @@ -108,34 +145,55 @@ export function CheckoutForm({ > setEmail(e.value.email)} + options={{ defaultValues: { email: email } }} + onChange={(e) => updateEmail(e.value.email)} /> - { + if (e.complete) updateAddress(e.value.address) + }} + // eslint-disable-next-line @typescript-eslint/no-unused-vars + onFocus={(e) => { + toggleConfirmed(false) }} /> - + {confirmed && ( + + )} + {confirmed && ( + + )} ) } diff --git a/src/components/checkout/checkout-shell.tsx b/src/components/checkout/checkout-shell.tsx index 23deda36e..987116254 100644 --- a/src/components/checkout/checkout-shell.tsx +++ b/src/components/checkout/checkout-shell.tsx @@ -6,21 +6,20 @@ import { type StripeElementsOptions } from "@stripe/stripe-js" import { getStripe } from "@/lib/get-stripe" import { cn } from "@/lib/utils" +import { Icons } from "@/components/icons" // Docs: https://stripe.com/docs/payments/quickstart interface CheckoutShellProps extends React.PropsWithChildren> { storeStripeAccountId: string - paymentIntentPromise: Promise<{ - clientSecret: string | null - }> + clientSecret: string | null } export function CheckoutShell({ children, storeStripeAccountId, - paymentIntentPromise, + clientSecret, className, ...props }: CheckoutShellProps) { @@ -29,13 +28,17 @@ export function CheckoutShell({ [storeStripeAccountId] ) - // Calling createPaymentIntentAction at the client component to avoid stripe authentication error in server action - const { clientSecret } = React.use(paymentIntentPromise) - if (!clientSecret) { return (
-
+
+
+
+
) } @@ -45,11 +48,12 @@ export function CheckoutShell({ appearance: { theme: "stripe", }, + loader: "auto", } return (
- + {children}
diff --git a/src/components/checkout/shipping-line-item.tsx b/src/components/checkout/shipping-line-item.tsx new file mode 100644 index 000000000..274b4e199 --- /dev/null +++ b/src/components/checkout/shipping-line-item.tsx @@ -0,0 +1,46 @@ +import { Slot } from "@radix-ui/react-slot" + +import { cn, formatPrice } from "@/lib/utils" + +interface ShippingLineItemProps extends React.HTMLAttributes { + shipping: string | number + variant?: "default" | "minimal" +} + +export default function ShippingLineItem({ + shipping, + variant = "default", + className, + ...props +}: ShippingLineItemProps) { + const Comp = Slot + return ( + +
+
+
+
+
+
+ + Shipping + +
+
+
+ + {typeof shipping === "string" + ? shipping + : formatPrice(Number(shipping).toFixed(2))} + +
+
+
+
+
+
+ ) +} diff --git a/src/components/ui/switch.tsx b/src/components/ui/switch.tsx index 37d61e4bf..be8400305 100644 --- a/src/components/ui/switch.tsx +++ b/src/components/ui/switch.tsx @@ -2,28 +2,73 @@ import * as React from "react" import * as SwitchPrimitives from "@radix-ui/react-switch" +import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" +const switchRootVariants = cva( + "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50", + { + variants: { + variant: { + primary: + "data-[state=checked]:bg-border data-[state=unchecked]:bg-accent", + }, + size: { + default: "h-5 w-9", + sm: "h-4 w-8", + lg: "h-6 w-12", + xl: "h-8 w-16", + }, + }, + defaultVariants: { + variant: "primary", + size: "default", + }, + } +) + +const switchThumbVariants = cva( + "pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0", + { + variants: { + variant: { + primary: + "data-[state=checked]:bg-background data-[state=unchecked]:bg-background", + }, + size: { + default: "size-4 data-[state=checked]:translate-x-4", + sm: "size-3 data-[state=checked]:translate-x-4", + lg: "size-5 data-[state=checked]:translate-x-6", + xl: "size-7 data-[state=checked]:translate-x-8", + }, + }, + defaultVariants: { + variant: "primary", + size: "default", + }, + } +) + +export interface SwitchProps + extends React.ComponentPropsWithoutRef, + VariantProps, + VariantProps {} + const Switch = React.forwardRef< React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( + SwitchProps +>(({ className, variant, size, ...props }, ref) => ( )) -Switch.displayName = SwitchPrimitives.Root.displayName +Switch.displayName = "Switch" -export { Switch } +export { Switch, switchRootVariants, switchThumbVariants } diff --git a/src/env.mjs b/src/env.mjs index e6210eba4..85f1b4e62 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -20,6 +20,7 @@ export const env = createEnv({ STRIPE_WEBHOOK_SECRET: z.string().min(1), STRIPE_STD_MONTHLY_PRICE_ID: z.string().min(1), STRIPE_PRO_MONTHLY_PRICE_ID: z.string().min(1), + EASYPOST_API_KEY: z.string(), OPENAI_API_KEY: z.string().optional(), }, @@ -55,6 +56,7 @@ export const env = createEnv({ STRIPE_WEBHOOK_SECRET: process.env.STRIPE_WEBHOOK_SECRET, STRIPE_STD_MONTHLY_PRICE_ID: process.env.STRIPE_STD_MONTHLY_PRICE_ID, STRIPE_PRO_MONTHLY_PRICE_ID: process.env.STRIPE_PRO_MONTHLY_PRICE_ID, + EASYPOST_API_KEY: process.env.EASYPOST_API_KEY, OPENAI_API_KEY: process.env.OPENAI_API_KEY, }, /** diff --git a/src/hooks/use-checkout-form-state.tsx b/src/hooks/use-checkout-form-state.tsx new file mode 100644 index 000000000..cd79fe881 --- /dev/null +++ b/src/hooks/use-checkout-form-state.tsx @@ -0,0 +1,110 @@ +import { useEffect, useState, useTransition } from "react" + +import type { StripeAddress } from "@/types/index" + +interface FormState { + email: string + address: StripeAddress | undefined + confirmed: boolean +} + +function parseAddress(jsonString: string) { + try { + return JSON.parse(jsonString) as StripeAddress | undefined + } catch (e) { + console.error("Error parsing JSON:", e) + return undefined + } +} + +function parseEmail(jsonString: string) { + try { + return JSON.parse(jsonString) as string + } catch (e) { + console.error("Error parsing JSON:", e) + return "" + } +} + +function parseConfirmed(jsonString: string) { + try { + return JSON.parse(jsonString) as boolean + } catch (e) { + console.error("Error parsing JSON:", e) + return false + } +} + +export function useCheckoutFormState(initialState: FormState) { + // State declarations + const [address, setAddress] = useState(() => { + const savedAddress = localStorage.getItem("checkoutAddress") + return savedAddress ? parseAddress(savedAddress) : initialState.address + }) + + const [email, setEmail] = useState(() => { + const savedEmail = localStorage.getItem("checkoutEmail") + return savedEmail ? parseEmail(savedEmail) : initialState.email + }) + + const [confirmed, setConfirmed] = useState(() => { + const savedConfirmed = localStorage.getItem("confirmedState") + return savedConfirmed !== null + ? parseConfirmed(savedConfirmed) + : initialState.confirmed + }) + + const [isLoading, setIsLoading] = useState(false) + + const [isPending, startTransition] = useTransition() + + // Effects for synchronization with local storage + useEffect(() => { + localStorage.setItem("checkoutEmail", JSON.stringify(email)) + }, [email]) + + useEffect(() => { + localStorage.setItem("checkoutAddress", JSON.stringify(address)) + }, [address]) + + useEffect(() => { + localStorage.setItem("confirmedState", JSON.stringify(confirmed)) + }, [confirmed]) + + // Functions to update the states + const updateEmail = (newEmail: string) => { + setEmail(newEmail) + } + + const updateAddress = (newAddress: StripeAddress | undefined) => { + setAddress(newAddress) + } + + const toggleConfirmed = (newConfirmed: boolean) => { + setConfirmed(newConfirmed) + } + + const updateLoading = (newLoading: boolean) => { + setIsLoading(newLoading) + } + + const clearForm: () => void = () => { + localStorage.removeItem("confirmedState") + localStorage.removeItem("checkoutEmail") + localStorage.removeItem("checkoutAddress") + } + + return { + email, + address, + confirmed, + isLoading, + isPending, + updateEmail, + updateAddress, + toggleConfirmed, + updateLoading, + startTransition, + clearForm, + } +} diff --git a/src/hooks/use-shipping-rate-state.tsx b/src/hooks/use-shipping-rate-state.tsx new file mode 100644 index 000000000..1232ecb41 --- /dev/null +++ b/src/hooks/use-shipping-rate-state.tsx @@ -0,0 +1,61 @@ +"use client" + +import { useState } from "react" +import type { + CartLineItem, + Dimensions, + EasyPostAddress, + StripeAddress, +} from "@/types" + +export const transformAddress = ( + address: StripeAddress, + additionalFields?: object +): EasyPostAddress => { + const { + line1: street1, + line2: street2, + postal_code: zip, + ...restOfAddressData + } = address + const transformedAddress = { + street1, + zip, + ...restOfAddressData, + ...additionalFields, + } as EasyPostAddress + if (street2) transformedAddress.street2 = street2 + return transformedAddress +} + +export function useShipping(cartLineItems: CartLineItem[]) { + const [rate, setRate] = useState(0) + + const total = cartLineItems.reduce( + (total, item) => total + item.quantity * Number(item.price), + 0 + ) + + return { rate, setRate, total } +} + +export function getDimensions(cartLineItems: CartLineItem[]) { + // TODO: Add support for dimension packing algorithm to calculate shipping rates + const dimensions = cartLineItems.reduce( + (dimensions, item) => { + const { width, height, length, weight } = item + if (width) dimensions.width += Number(width) + if (height) dimensions.height += Number(height) + if (length) dimensions.length += Number(length) + if (weight) dimensions.weight += Number(weight) + return dimensions + }, + { + width: 10, + height: 10, + length: 10, + weight: 10, + } + ) as Dimensions + return dimensions +} diff --git a/src/lib/actions/easypost.ts b/src/lib/actions/easypost.ts new file mode 100644 index 000000000..fd0a47537 --- /dev/null +++ b/src/lib/actions/easypost.ts @@ -0,0 +1,131 @@ +"use server" + +import type { Dimensions, GetShippingRateProps } from "@/types" +import type { Address, Parcel } from "@easypost/api" +import { Shipment } from "@easypost/api" +import { z } from "zod" + +import { easypost } from "@/lib/easypost" +import { ratesSchema } from "@/lib/validations/easypost" + +interface ShipmentResponse { + rate: number | null + error: string + ok: boolean + status: number +} + +export async function buyShippingLabel(shipment: Shipment) { + // Buy postage label with the lowest rate + const updatedShipment = await Shipment.buy(shipment.id, shipment.lowestRate()) + + return updatedShipment.postage_label.label_url +} + +// export async function createShipment(data: GetShippingRateProps) { +// const fromAddress = await easypost.Address.createAndVerify(data.fromAddress) +// const toAddress = await easypost.Address.createAndVerify(data.toAddress) +// const parcel = await easypost.Parcel.create(data.dimensions) + +// const shipment = await Shipment.create({ +// to_address: fromAddress, +// from_address: toAddress, +// parcel: parcel, +// }) + +// return shipment +// } + +export async function getShippingRate( + input: GetShippingRateProps +): Promise { + try { + const data = ratesSchema.parse(input) + + // const store = await db + // .select({ + // street1: stores.street1, + // street2: stores.street2, + // city: stores.city, + // state: stores.state, + // zip: stores.zip, + // country: stores.country, + // }) + // .from(stores) + // .where(eq(stores.id, data.storeId)) + // .execute() + // .then((rows) => rows[0]) + + // if (!store) { + // throw new Error("Store not found.") + // } + + // TODO: Update DB Schema to include store address and get from there + const storeAddress = { + company: "EasyPost", + street1: "417 Montgomery Street", + street2: "5th Floor", + city: "San Francisco", + state: "CA", + zip: "94104", + country: "US", + phone: "415-528-7555", + } + + // TODO: THIS IS CURRENT ALSO A CLIENT FUNCTION IN use-shipping-rate-state.tsx + // Both places need to be changed and maybe abstracted + const dimensions = data.items.reduce( + (dimensions, item) => { + const { width, height, length, weight } = item + if (width) dimensions.width += Number(width) + if (height) dimensions.height += Number(height) + if (length) dimensions.length += Number(length) + if (weight) dimensions.weight += Number(weight) + return dimensions + }, + { + width: 10, + height: 10, + length: 10, + weight: 10, + } + ) as Dimensions + + // TODO: Once out of Beta this should become easypost.BetaRate.retrieveStatelessRates({...}) + const shipment = await easypost.Shipment.create({ + to_address: data.toAddress as Address, + from_address: storeAddress as Address, + parcel: dimensions as Parcel, + }) + + // handled the return like it was a response from a POST but can be changed + return { + rate: Number(shipment.lowestRate().list_rate), + error: "No Error", + ok: true, + status: 200, + } + } catch (err) { + console.error(err) + + if (err instanceof z.ZodError) { + return { rate: null, error: err.message, ok: false, status: 400 } + } + + if (err instanceof Error && "statusCode" in err) { + return { + rate: null, + error: err.message, + ok: false, + status: err.statusCode as number, + } + } + + return { + rate: null, + error: "Something went wrong.", + ok: false, + status: 500, + } + } +} diff --git a/src/lib/actions/stripe.ts b/src/lib/actions/stripe.ts index fd1c74f4b..512208ebd 100644 --- a/src/lib/actions/stripe.ts +++ b/src/lib/actions/stripe.ts @@ -9,6 +9,8 @@ import { currentUser } from "@clerk/nextjs" import { eq } from "drizzle-orm" import { type z } from "zod" +import type { GetShippingRateProps } from "@/types/index" +import { getShippingRate } from "@/lib/actions/easypost" import { calculateOrderAmount } from "@/lib/checkout" import { getStripeAccount } from "@/lib/fetchers/stripe" import { stripe } from "@/lib/stripe" @@ -17,6 +19,7 @@ import { createPaymentIntentSchema, getStripeAccountSchema, manageSubscriptionSchema, + updatePaymentIntentSchema, } from "@/lib/validations/stripe" // Managing stripe subscriptions for a user @@ -51,7 +54,7 @@ export async function manageSubscription( const stripeSession = await stripe.checkout.sessions.create({ success_url: billingUrl, cancel_url: billingUrl, - payment_method_types: ["card"], + payment_method_types: ["card", "link"], mode: "subscription", billing_address_collection: "auto", customer_email: email, @@ -133,7 +136,7 @@ export async function createAccountLink( // Creating a payment intent for a store export async function createPaymentIntent( rawInput: z.infer -): Promise<{ clientSecret: string | null }> { +): Promise<{ paymentId: string | null; clientSecret: string | null }> { try { const input = createPaymentIntentSchema.parse(rawInput) @@ -196,9 +199,108 @@ export async function createPaymentIntent( application_fee_amount: fee, currency: "usd", metadata, - automatic_payment_methods: { - enabled: true, - }, + // automatic_payment_methods: { + // enabled: true, + // }, + payment_method_types: ["card", "link"], + // payment_method_options: { + // link: { + // persistent_token: req.cookies[LINK_PERSISTENT_TOKEN_COOKIE_NAME], + // } + // } + }, + { + stripeAccount: payment.stripeAccountId, + } + ) + + // Update the cart with the payment intent id and client secret + if (paymentIntent.status === "requires_payment_method") { + await db + .update(carts) + .set({ + paymentIntentId: paymentIntent.id, + clientSecret: paymentIntent.client_secret, + }) + .where(eq(carts.id, cartId)) + } + + return { + paymentId: paymentIntent.id, + clientSecret: paymentIntent.client_secret, + } + } catch (err) { + console.error(err) + return { + paymentId: null, + clientSecret: null, + } + } +} + +export async function updatePaymentIntentWithShipping( + rawInput: z.infer +): Promise<{ clientSecret: string | null }> { + try { + const input = updatePaymentIntentSchema.parse(rawInput) + + const { isConnected, payment } = await getStripeAccount(input) + + if (!isConnected || !payment) { + throw new Error("Store not connected to Stripe.") + } + + if (!payment.stripeAccountId) { + throw new Error("Stripe account not found.") + } + + const cartId = Number(cookies().get("cartId")?.value) + + const checkoutItems: CheckoutItem[] = input.items.map((item) => ({ + productId: item.id, + price: Number(item.price), + quantity: item.quantity, + })) + + const metadata = { + cartId: isNaN(cartId) ? "" : cartId, + // Stripe metadata values must be within 500 characters string + items: JSON.stringify(checkoutItems), + } + + const { total, fee } = calculateOrderAmount(input.items) + + // Calculate shipping cost using EasyPost based on the address + const rate = await getShippingRate({ + toAddress: input.toAddress, + items: input.items, + storeId: input.storeId, + // dimensions: input.dimensions, + } as GetShippingRateProps) + + const shippingCost = rate.rate + if (typeof shippingCost !== "number" || shippingCost === null) { + throw new Error("Shipping cost not found.") + } else if (shippingCost < 0) { + throw new Error("Invalid shipping cost calculated.") + } + + // Create a payment intent if it doesn't exist + const paymentIntent = await stripe.paymentIntents.create( + { + amount: total, + application_fee_amount: fee + Number((shippingCost * 100).toFixed(0)), + currency: "usd", + metadata, + // automatic_payment_methods: { + // enabled: true, + // }, + payment_method_types: ["card", "link"], + // payment_method_options: { + // link: { + // persistent_token: req.cookies[LINK_PERSISTENT_TOKEN_COOKIE_NAME], + // } + // } }, { stripeAccount: payment.stripeAccountId, diff --git a/src/lib/easypost.ts b/src/lib/easypost.ts new file mode 100644 index 000000000..346dcb5fd --- /dev/null +++ b/src/lib/easypost.ts @@ -0,0 +1,4 @@ +import { env } from "@/env.mjs" +import EasyPost from "@easypost/api" + +export const easypost = new EasyPost(env.EASYPOST_API_KEY) diff --git a/src/lib/validations/cart.ts b/src/lib/validations/cart.ts index 4213a48ac..28db0814b 100644 --- a/src/lib/validations/cart.ts +++ b/src/lib/validations/cart.ts @@ -11,6 +11,7 @@ export const checkoutItemSchema = cartItemSchema.extend({ price: z.number(), }) +// TODO: Remove optional on dimensions export const cartLineItemSchema = z.object({ id: z.number(), name: z.string(), @@ -28,6 +29,10 @@ export const cartLineItemSchema = z.object({ subcategory: z.string().optional().nullable(), price: z.string().regex(/^\d+(\.\d{1,2})?$/), inventory: z.number().default(0), + width: z.number().optional().nullable(), + height: z.number().optional().nullable(), + length: z.number().optional().nullable(), + weight: z.number().optional().nullable(), quantity: z.number(), storeId: z.number(), storeName: z.string().optional().nullable(), diff --git a/src/lib/validations/easypost.ts b/src/lib/validations/easypost.ts new file mode 100644 index 000000000..a2a0f562a --- /dev/null +++ b/src/lib/validations/easypost.ts @@ -0,0 +1,19 @@ +import * as z from "zod" + +import { cartLineItemSchema } from "@/lib/validations/cart" + +export const ratesSchema = z.object({ + toAddress: z.object({ + street1: z.string(), + street2: z.string().optional(), + city: z.string(), + state: z.string(), + zip: z.string(), + country: z.string(), + company: z.string().optional(), + phone: z.string().optional(), + email: z.string().optional(), + }), + items: z.array(cartLineItemSchema), + storeId: z.number(), +}) diff --git a/src/lib/validations/stripe.ts b/src/lib/validations/stripe.ts index a97c63dd3..5685102ea 100644 --- a/src/lib/validations/stripe.ts +++ b/src/lib/validations/stripe.ts @@ -35,3 +35,24 @@ export const getPaymentIntentSchema = z.object({ paymentIntentId: z.string(), deliveryPostalCode: z.string().optional().nullable(), }) + +export const updatePaymentIntentSchema = z.object({ + toAddress: z.object({ + company: z.string().optional(), + street1: z.string(), + street2: z.string().optional().nullable(), + city: z.string(), + state: z.string(), + zip: z.string(), + country: z.string(), + phone: z.string().optional(), + }), + storeId: z.number(), + dimensions: z.object({ + length: z.number(), + width: z.number(), + height: z.number(), + weight: z.number(), + }), + items: z.array(cartLineItemSchema), +}) diff --git a/src/types/index.ts b/src/types/index.ts index 78a6713f7..6e1a40e15 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -121,3 +121,46 @@ export interface UserSubscriptionPlan extends SubscriptionPlan { isCanceled: boolean isActive: boolean } + +export interface EasyPostAddress { + company?: string + street1: string + street2?: string | null + city: string + state: string + zip: string + country: string + phone?: string +} + +export interface StripeAddress { + company?: string + line1: string + line2?: string | null + city: string + state: string + postal_code: string + country: string + phone?: string +} + +export interface Dimensions { + length: number + width: number + height: number + weight: number +} + +export interface RateResponse { + rate: number + ok: boolean + status: number + error?: string +} + +// export type GetShippingRateProps = z.infer +export interface GetShippingRateProps { + toAddress: EasyPostAddress + items: CartLineItem[] + storeId: number +}