From 909872137484ca1e3ded07338da4d1392d2462f6 Mon Sep 17 00:00:00 2001 From: Nazarii Korniienko Date: Wed, 27 Dec 2023 22:28:01 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=84feat(app):=20release=20relivator=20?= =?UTF-8?q?1.2.0=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 156 +- .eslintignore | 18 - .eslintrc.cjs | 202 - .gitattributes | 4 + .github/translations/readme/polish.md | 400 + .github/translations/readme/ukrainian.md | 402 + .gitignore | 9 +- .knip.json | 2 - .lintstagedrc.json | 8 +- .npmcheckrc | 2 +- .prettierignore | 5 +- .storybook/main.ts | 15 + .swcrc | 36 + .thing/hooks/discord_webhook.json | 35 + .thing/hooks/github_pr_opened.json | 532 + .thing/hooks/stripe_payment_failed.json | 408 + .thing/hooks/stripe_payment_succeeded.json | 218 + .thing/wt.md | 3 + .vscode/extensions.json | 25 +- .vscode/launch.json | 78 +- .vscode/settings.json | 112 +- LICENSE.md | 4 +- README.md | 532 +- SECURITY.md | 30 +- ava.config.mjs | 26 + biome.json | 15 + changelog.md | 87 +- code_of_conduct.md | 67 +- commitlint.config.cjs | 18 +- components.json | 2 +- contributing.md | 137 +- cspell.json | 103 +- drizzle.config.ts | 74 +- drizzle/mysql/0001_futuristic_rhodey.sql | 51 + drizzle/mysql/meta/0001_snapshot.json | 1186 + drizzle/mysql/meta/_journal.json | 9 +- drizzle/pgsql/0001_silly_pandemic.sql | 41 + drizzle/pgsql/meta/0001_snapshot.json | 1004 + drizzle/pgsql/meta/_journal.json | 9 +- eslint.config.ts | 578 + jest.config.js | 37 +- jest.setup.ts | 8 +- next.config.mjs | 143 +- package.json | 398 +- playwright.config.ts | 7 +- pnpm-lock.yaml | 31807 ++++++++++++---- postcss.config.cjs | 7 +- prettier.config.cjs | 36 +- public/screenshot.png | Bin 149199 -> 331402 bytes src/app.ts | 82 +- .../dashboard/admin/_islands/privilegies.tsx | 44 + .../[locale]/(adm)/dashboard/admin/page.tsx | 66 + src/app/[locale]/(adm)/dashboard/layout.tsx | 27 + src/app/[locale]/(adm)/layout.tsx | 18 + src/app/[locale]/(auth)/auth/layout.tsx | 4 +- src/app/[locale]/(auth)/auth/page.tsx | 249 +- src/app/[locale]/(auth)/block/page.tsx | 19 + src/app/[locale]/(auth)/layout.tsx | 4 +- src/app/[locale]/(auth)/sign-in/layout.tsx | 6 +- src/app/[locale]/(auth)/sign-in/page.tsx | 50 +- src/app/[locale]/(auth)/sign-out/layout.tsx | 6 +- src/app/[locale]/(auth)/sign-out/page.tsx | 8 +- src/app/[locale]/(auth)/sign-sso/page.tsx | 4 +- src/app/[locale]/(auth)/sign-up/layout.tsx | 6 +- src/app/[locale]/(auth)/sign-up/page.tsx | 52 +- .../[locale]/(blog)/blog/[...slug]/page.tsx | 6 +- .../blog/new/_islands/auto-format/blocks.ts | 88 + .../blog/new/_islands/auto-format/funcs.ts | 43 + .../new/_islands/auto-format/indent-list.ts | 24 + .../blog/new/_islands/auto-format/index.ts | 31 + .../blog/new/_islands/auto-format/lists.ts | 46 + .../blog/new/_islands/auto-format/marks.ts | 84 + .../blog/new/_islands/editor-placeholder.tsx | 85 + .../(blog)/blog/new/_islands/editor-plate.tsx | 37 + .../blog/new/_islands/editor-plugins.ts | 193 + .../(blog)/blog/new/_islands/editor-ui.tsx | 35 + .../blog/new/_islands/elements/heading.tsx | 45 + .../blog/new/_islands/elements/paragraph.tsx | 22 + .../(blog)/blog/new/_islands/leafs/bold.tsx | 23 + .../(blog)/blog/new/_islands/leafs/code.tsx | 26 + src/app/[locale]/(blog)/blog/new/page.tsx | 17 + src/app/[locale]/(blog)/blog/page.tsx | 10 +- src/app/[locale]/(blog)/layout.tsx | 10 +- src/app/[locale]/(cms)/layout.tsx | 24 + src/app/[locale]/(legal)/layout.tsx | 2 +- src/app/[locale]/(legal)/privacy/page.tsx | 22 +- src/app/[locale]/(legal)/terms/content.mdx | 2 +- src/app/[locale]/(legal)/terms/page.tsx | 2 +- .../(main)/(checkout)/cart/layout.tsx | 6 +- .../[locale]/(main)/(checkout)/cart/page.tsx | 41 +- .../(checkout)/checkout/[storeId]/page.tsx | 80 +- .../checkout/[storeId]/success/loading.tsx | 1 + .../checkout/[storeId]/success/page.tsx | 154 +- .../(main)/(checkout)/checkout/layout.tsx | 6 +- .../dashboard/account/manage/loading.tsx | 30 + .../dashboard/account/manage/page.tsx | 41 + .../(dashboard)/dashboard/account/page.tsx | 10 +- .../(dashboard)/dashboard/billing/page.tsx | 162 +- .../(main)/(dashboard)/dashboard/page.tsx | 2 +- .../(dashboard)/dashboard/purchases/page.tsx | 2 +- .../dashboard/settings/email/page.tsx | 12 +- .../(dashboard)/dashboard/settings/page.tsx | 2 - .../stores/[storeId]/analytics/page.tsx | 6 +- .../dashboard/stores/[storeId]/layout.tsx | 20 +- .../stores/[storeId]/orders/page.tsx | 60 +- .../dashboard/stores/[storeId]/page.tsx | 24 +- .../[storeId]/products/[productId]/page.tsx | 4 +- .../stores/[storeId]/products/new/page.tsx | 8 +- .../stores/[storeId]/products/page.tsx | 78 +- .../(dashboard)/dashboard/stores/new/page.tsx | 2 +- .../(dashboard)/dashboard/stores/page.tsx | 29 +- .../[locale]/(main)/(dashboard)/layout.tsx | 11 +- .../(main)/(features)/apiFromClient/page.tsx | 6 +- .../(main)/(features)/apiFromServer/page.tsx | 10 +- .../(main)/(features)/protected/page.tsx | 2 +- .../(main)/(features)/serverAction/page.tsx | 2 +- .../(main)/(marketing)/about/page.tsx | 61 +- src/app/[locale]/(main)/layout.tsx | 4 +- .../[category]/[subcategory]/page.tsx | 52 +- .../(store)/categories/[category]/page.tsx | 43 +- .../[locale]/(store)/custom/clothing/page.tsx | 49 +- src/app/[locale]/(store)/layout.tsx | 4 +- .../[productId]/page.tsx | 6 +- .../product/[productId]/_islands/client.tsx | 63 + .../(store)/product/[productId]/page.tsx | 145 +- .../(..)product-preview/[productId]/page.tsx | 35 - .../(store)/products/@modal/default.tsx | 3 - src/app/[locale]/(store)/products/layout.tsx | 16 - src/app/[locale]/(store)/products/loading.tsx | 5 +- src/app/[locale]/(store)/products/page.tsx | 68 +- .../[locale]/(store)/store/[storeId]/page.tsx | 65 +- src/app/[locale]/(store)/stores/page.tsx | 39 +- src/app/[locale]/[...rest]/page.tsx | 7 + src/app/[locale]/layout.tsx | 124 +- src/app/[locale]/not-found.tsx | 97 +- src/app/[locale]/page.tsx | 162 +- src/app/api/auth/[...nextauth]/route.ts | 4 +- src/app/api/auth/whoAmI/route.ts | 3 +- src/app/api/cms/create/island/README.md | 7 + src/app/api/cms/create/page/README.md | 7 + src/app/api/trpc/[trpc]/route.ts | 32 +- src/app/api/uploadthing/core.ts | 57 +- src/app/api/uploadthing/route.ts | 1 - src/app/api/user/[id]/billing/manage/route.ts | 2 +- src/app/api/webhooks/stripe/route.ts | 74 +- src/app/layout.tsx | 4 +- src/app/manifest.ts | 1 + src/app/not-found.tsx | 1 + src/app/page.tsx | 2 +- src/app/robots.ts | 14 +- src/app/sitemap.ts | 14 +- src/core/adm/actions.ts | 56 + src/{auth.ts => core/auth/authjs/index.ts} | 39 +- .../authjs/islands/check-user-button.tsx} | 1 + .../auth/authjs/islands}/sign-out-button.tsx | 0 src/core/auth/authjs/other/checks.tsx | 1 + .../clerkjs/islands}/user-profile-clerk.tsx | 30 +- src/core/auth/clerkjs/other/checks.tsx | 1 + src/core/auth/shared/index.ts | 1 + .../shared/islands/auth-pages-content.tsx | 249 + src/core/cors/csp.mjs | 227 + src/core/link/index.tsx | 39 + src/core/logs/config.ts | 9 + src/core/logs/index.ts | 14 + src/core/logs/winston.ts | 126 + src/{utils => core}/stripe/actions.ts | 294 +- src/{utils => core}/stripe/connect.ts | 3 +- src/{utils => core}/stripe/getting.ts | 1 + src/{utils => core}/stripe/handlers.ts | 9 +- src/{utils => core}/stripe/helpers.ts | 6 +- src/{utils => core}/stripe/loading.ts | 5 +- src/{utils => core}/stripe/stripe.ts | 23 +- src/{utils => core}/stripe/zod.ts | 0 .../trpc/others => core/trpc}/context.ts | 3 +- src/core/trpc/index.ts | 5 + src/core/trpc/infer.ts | 23 + src/core/trpc/react.tsx | 87 + src/core/trpc/root.ts | 45 + src/{utils => core}/trpc/routers/auth.ts | 0 src/core/trpc/routers/auth2.ts | 33 + .../users.ts => core/trpc/routers/auth3.ts} | 0 src/{utils => core}/trpc/routers/product.ts | 2 +- src/{utils => core}/trpc/routers/todo.ts | 5 +- .../todos.ts => core/trpc/routers/todo2.ts} | 2 +- .../todos.ts => core/trpc/routers/todos3.ts} | 0 .../clerk => core/trpc/routers}/type.ts | 0 .../clerk => core/trpc/routers}/webhook.ts | 2 +- src/core/trpc/server.tsx | 43 + .../trpc/tanstack/blog-comments-server.tsx | 30 + src/core/trpc/tanstack/blog-posts-client.tsx | 25 + src/core/trpc/tanstack/post-thread-list.tsx | 9 + src/core/trpc/tanstack/products-admin.tsx | 192 + src/{utils => core}/trpc/trpc.ts | 13 +- .../others/trpc.ts => core/trpc/trpc2.ts} | 2 +- src/data/db/index.ts | 70 +- src/data/db/schema/index.ts | 69 +- src/data/db/schema/mysql.ts | 86 +- src/data/db/schema/pgsql.ts | 88 +- src/data/i18n/de-de.json | 426 +- src/data/i18n/en-us.json | 466 +- src/data/i18n/es-es.json | 426 +- src/data/i18n/fa-ir.json | 728 + src/data/i18n/fr-fr.json | 426 +- src/data/i18n/hi-in.json | 446 +- src/data/i18n/it-it.json | 426 +- src/data/i18n/pl-pl.json | 428 +- src/data/i18n/tr-tr.json | 426 +- src/data/i18n/uk-ua.json | 100 +- src/data/mail/auth-user.tsx | 2 +- src/data/mail/newsletter.tsx | 9 +- src/data/mdx/hello.mdx | 2 +- src/data/meta/builder.ts | 20 +- src/data/meta/default.ts | 2 +- src/data/meta/extend.ts | 2 +- src/data/other/countries.json | 1709 + src/data/validations/cart.ts | 3 + src/data/validations/error.ts | 63 + src/data/validations/params.ts | 49 + src/data/validations/product.ts | 35 +- src/env.mjs | 67 +- src/forms/add-product-form.tsx | 308 +- src/forms/add-store-form.tsx | 9 +- src/forms/add-to-cart-form.tsx | 33 +- src/forms/contact-form.tsx | 2 +- src/forms/email-form-2.tsx | 69 + src/forms/email-form.tsx | 64 + src/forms/manage-subscription-form.tsx | 131 +- src/forms/newsletter-subscribe.tsx | 9 +- src/forms/update-product-form.tsx | 60 +- src/hooks/experimental/uRC-test-1.tsx | 18 + src/hooks/experimental/uRC-test-2.tsx | 37 + src/hooks/experimental/useEvent.tsx | 21 + .../useIsomorphicLayoutEffect.tsx | 7 + src/hooks/experimental/useRenderCount.tsx | 25 + src/hooks/experimental/useSignalState.tsx | 85 + src/hooks/index.ts | 1 + src/hooks/use-clipboard.ts | 4 +- src/hooks/use-hotkeys.ts | 2 + src/hooks/use-intersection-observer.ts | 2 - src/hooks/use-promise.tsx | 45 + src/hooks/use-toast-1.ts | 14 +- src/hooks/use-toast-2.ts | 14 +- src/hooks/use-url-state.ts | 4 +- src/i18n.ts | 63 +- src/indicators-error.tsx | 243 + src/islands/account/action-button.tsx | 3 +- src/islands/account/auth-provider.tsx | 4 +- src/islands/account/auth-required.tsx | 2 +- src/islands/account/header.tsx | 25 - src/islands/account/home-link.tsx | 2 +- src/islands/account/language-switcher.tsx | 34 - src/islands/account/logout-buttons.tsx | 67 +- src/islands/account/signin-link.tsx | 2 +- src/islands/account/sso-callback.tsx | 6 +- src/islands/account/text-link.tsx | 5 +- src/islands/account/user-login.tsx | 4 +- src/islands/animated/gsap-playground.tsx | 94 + .../experimental/rxjs-signals-test.tsx | 63 + .../notifications/react-hot-toast.tsx | 7 +- src/islands/checkout/cart-line-items.tsx | 36 +- src/islands/checkout/cart-sheet.tsx | 65 +- src/islands/checkout/checkout-button.tsx | 42 +- src/islands/checkout/checkout-shell.tsx | 6 +- src/islands/checkout/update-cart.tsx | 9 +- src/islands/checkout/verify-order-form.tsx | 1 + src/islands/client-button.tsx | 3 +- .../commerce/commerce-dashboard-layout.tsx | 25 - src/islands/commerce/commerce-dashboard.tsx | 29 + src/islands/commerce/featured-store-items.tsx | 81 +- .../{Pricing.tsx => pricing-modules.tsx} | 49 +- src/islands/commerce/subcategories.tsx | 2 +- src/islands/commerce/validIntervals.ts | 15 - src/islands/commerce/validRanges.ts | 13 - src/islands/content/auth-pages-content.tsx | 314 - src/islands/content/clerk-auth-provider.tsx | 63 + src/islands/content/clerk-auth-service.tsx | 191 + src/islands/content/clerk-page-oauth.tsx | 77 +- src/islands/content/components/index.ts | 24 + src/islands/content/components/provider.tsx | 331 + src/islands/content/index.ts | 5 + src/islands/content/not-found-content.tsx | 33 + src/islands/content/provider-button.tsx | 33 +- src/islands/content/settings-content.tsx | 15 - src/islands/content/user-content.tsx | 14 +- src/islands/copy-button.tsx | 6 +- src/islands/data-api/create-todo.tsx | 2 +- src/islands/faceted-filter.tsx | 21 +- src/islands/fake-loading.tsx | 59 +- src/islands/file-dialog.tsx | 80 +- src/islands/generate.tsx | 11 +- src/islands/icons.tsx | 18 +- src/islands/loglib-analytics.tsx | 1 + src/islands/marketing/hero-section.tsx | 6 +- src/islands/message.tsx | 30 +- src/islands/modules/cards/checkout-card.tsx | 66 +- src/islands/modules/cards/error-card.tsx | 8 +- src/islands/modules/cards/mdx-card.tsx | 3 +- src/islands/modules/cards/product-card.tsx | 92 +- .../modules/cards/store-card-dashboard.tsx | 64 + ...{store-card.tsx => store-card-default.tsx} | 11 +- .../data-table/data-table-column-header.tsx | 18 +- .../data-table/data-table-faceted-filter.tsx | 15 +- .../modules/data-table/data-table-loading.tsx | 12 +- .../modules/data-table/data-table-toolbar.tsx | 40 +- src/islands/modules/data-table/data-table.tsx | 33 +- src/islands/modules/mode-toggle.tsx | 2 +- .../modules/spinner/spinner.module.css | 1 + src/islands/modules/spinner/spinner.tsx | 1 + src/islands/modules/zu-clock.tsx | 50 + src/islands/modules/zu-counter.tsx | 34 + src/islands/multi-select.tsx | 21 +- src/islands/navigation/combobox.tsx | 58 +- src/islands/navigation/main-menu.tsx | 55 +- src/islands/navigation/menubar.tsx | 4 +- src/islands/navigation/mobile-menu.tsx | 31 +- src/islands/navigation/nav-menu-client.tsx | 11 +- src/islands/navigation/nav-menu.tsx | 4 +- src/islands/navigation/page-header.tsx | 4 +- .../navigation/pagination/breadcrumbs.tsx | 9 +- .../navigation/pagination/mdx-pager.tsx | 16 +- .../pagination/pagination-button.tsx | 8 +- .../navigation/pagination/product-pager.tsx | 18 +- .../navigation/pagination/store-pager.tsx | 16 +- .../navigation/pagination/store-switcher.tsx | 8 +- .../navigation/pagination/store-tabs.tsx | 2 +- src/islands/navigation/sidebar-nav.tsx | 54 +- src/islands/navigation/site-footer.tsx | 17 +- src/islands/navigation/site-header.tsx | 103 +- src/islands/navigation/user-menu.tsx | 99 +- src/islands/password-input.tsx | 6 +- src/islands/placeholders.tsx | 39 +- src/islands/primitives/badge.tsx | 2 +- src/islands/primitives/button.tsx | 9 +- src/islands/primitives/calendar.tsx | 8 +- src/islands/primitives/combobox.tsx | 14 +- src/islands/primitives/command.tsx | 4 +- src/islands/primitives/dropdown.tsx | 4 +- src/islands/primitives/form.tsx | 6 +- src/islands/primitives/forms/input.tsx | 2 +- src/islands/primitives/forms/password.tsx | 6 +- src/islands/primitives/input.tsx | 5 +- src/islands/primitives/popover.tsx | 2 +- src/islands/primitives/popup.tsx | 4 +- src/islands/primitives/select.tsx | 4 +- src/islands/primitives/skeleton.tsx | 2 +- src/islands/primitives/tabs.tsx | 2 +- src/islands/primitives/textarea.tsx | 5 +- src/islands/primitives/theme.ts | 17 + src/islands/product-building.tsx | 78 +- src/islands/product-carousel.tsx | 15 +- src/islands/products-ctx.tsx | 2 +- src/islands/products.tsx | 90 +- src/islands/provider.tsx | 4 +- src/islands/providers/auth-provider.tsx | 29 + .../providers/indicators/debug-indicator.tsx | 27 - .../indicators/errors-indicators.tsx | 86 - src/islands/providers/nextintl-provider.tsx | 3 +- .../{primitives => providers}/tooltip.tsx | 2 +- src/islands/providers/useInterval.ts | 23 + src/islands/providers/zu-store.ts | 62 + src/islands/providers/zustand.tsx | 18 + src/islands/stores.tsx | 22 +- src/islands/stripe-btn-connect.tsx | 2 +- .../switchers/localization-main-beta.tsx | 124 + src/islands/switchers/navigation-new-beta.ts | 112 + .../switchers/themes-dynamic-switcher.tsx | 43 - .../switchers/themes-general-switcher.tsx | 4 +- src/islands/text-cts.tsx | 17 + src/islands/text-link.tsx | 40 + src/islands/toast-1.tsx | 8 +- src/islands/toast-2.tsx | 19 +- src/islands/wrappers/general-shell.tsx | 6 +- src/islands/wrappers/icons/google-svg.tsx | 1 + src/islands/wrappers/page-layout.tsx | 4 +- src/islands/wrappers/products-table-shell.tsx | 10 +- src/islands/zoom-image.tsx | 2 +- src/liveblocks.config.ts | 141 + ...ain-switcher.tsx => localization-main.tsx} | 43 +- src/mdx-components.tsx | 12 +- src/middleware.ts | 412 +- src/navigation.ts | 9 +- src/pages/api/cms/create/island/route.ts | 55 + src/pages/api/cms/create/page/route.ts | 63 + src/pages/api/fuse.ts | 7 + src/plugins/builder/creating.tsx | 137 + src/plugins/islands/github/client.tsx | 123 - src/plugins/islands/github/server.tsx | 50 - src/plugins/islands/github/stars.tsx | 208 + src/plugins/million/islands/cursor.tsx | 35 + src/plugins/million/islands/room.tsx | 30 + src/plugins/million/islands/showdown.tsx | 241 + src/plugins/million/islands/users-online.tsx | 43 + .../million/islands/visitors-cursors.tsx | 143 + src/plugins/tests/data/meta/builder.test.ts | 36 - src/plugins/tests/main.spec.ts | 99 - src/plugins/tests/server/utils.test.ts | 13 - src/plugins/utils/db/compare.py | 49 + src/plugins/utils/db/compare.ts | 41 + src/plugins/utils/db/convert.py | 41 + src/plugins/utils/db/convert.ts | 40 + src/plugins/utils/db/migrate.ts | 66 +- src/plugins/utils/db/seed-db.ts | 2 +- src/plugins/utils/db/switcher.ts | 45 + src/plugins/utils/db/warn-gen.ts | 4 +- src/plugins/utils/db/warn-push.ts | 2 +- src/plugins/utils/other/cspell.py | 42 + src/plugins/utils/other/deps.py | 94 + src/plugins/utils/typescript/types-info.py | 43 + src/plugins/utils/typescript/types-info.ts | 73 + src/server/actions/cart.ts | 261 +- src/server/actions/generate.ts | 13 +- src/server/actions/order.ts | 38 +- src/server/actions/product.ts | 267 +- src/server/actions/store.ts | 179 +- src/server/cart.ts | 106 + src/server/clients/next-safe-action.ts | 5 + src/server/config/dashboard.ts | 27 +- src/server/config/products.ts | 4 +- src/server/config/socials.ts | 5 +- src/server/config/subscriptions.ts | 12 +- src/server/fonts.ts | 2 + src/server/funcs/client.ts | 8 +- src/server/funcs/handler.ts | 6 +- src/server/funcs/is-ssr.ts | 19 + src/server/funcs/s-to-v.ts | 18 + src/server/links.ts | 9 +- src/server/logger.ts | 18 +- src/server/pattern.ts | 11 +- src/server/subs.ts | 29 +- src/server/utapi.ts | 3 + .../v2/currency/currencyValidation.ts | 2 +- src/styles/globals.css | 64 +- src/styles/mdx.css | 5 +- src/tests/ava/ava-test-1.ts | 16 + src/tests/ava/ava-test-2.ts | 22 + src/tests/ava/swc/tests/ava/ava-test-1.js | 9 + src/tests/ava/swc/tests/ava/ava-test-2.js | 16 + src/tests/jest/builder.test.ts | 28 + src/tests/jest/cart.test.ts | 73 + src/tests/jest/identity.test.ts | 8 + src/tests/pw/index.ts | 1 + src/types/User.ts | 35 + src/types/global/i18n.d.ts | 11 + src/types/global/reset.d.ts | 3 + src/{types.ts => types/index.ts} | 6 +- src/utils/auth/mw.ts | 161 + src/utils/{ => auth}/users.ts | 19 +- src/utils/{ => auth}/with.ts | 4 +- src/utils/index.ts | 122 +- src/utils/other/for-test/cart-calc.ts | 14 + src/utils/other/for-test/identity.ts | 15 + src/utils/other/for-test/math-ava.ts | 3 + src/utils/other/signals.ts | 14 + src/utils/other/toast.tsx | 67 + src/utils/other/uploads/muploader.tsx | 47 + .../other/uploads}/uploadthing.ts | 4 + src/utils/trpc/others/react.tsx | 25 - src/utils/trpc/others/routers/users.ts | 28 - src/utils/trpc/react.tsx | 47 - src/utils/trpc/root.ts | 23 - src/utils/trpc/server.ts | 29 - src/utils/trpc/shared.ts | 30 - stylelint.config.mjs | 6 + tailwind.config.ts | 10 +- tsconfig.json | 20 +- typestat.json | 35 + vercel.json | 3 +- wallaby.cjs | 19 + 468 files changed, 46567 insertions(+), 14158 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.cjs create mode 100644 .github/translations/readme/polish.md create mode 100644 .github/translations/readme/ukrainian.md create mode 100644 .storybook/main.ts create mode 100644 .swcrc create mode 100644 .thing/hooks/discord_webhook.json create mode 100644 .thing/hooks/github_pr_opened.json create mode 100644 .thing/hooks/stripe_payment_failed.json create mode 100644 .thing/hooks/stripe_payment_succeeded.json create mode 100644 .thing/wt.md create mode 100644 ava.config.mjs create mode 100644 biome.json create mode 100644 drizzle/mysql/0001_futuristic_rhodey.sql create mode 100644 drizzle/mysql/meta/0001_snapshot.json create mode 100644 drizzle/pgsql/0001_silly_pandemic.sql create mode 100644 drizzle/pgsql/meta/0001_snapshot.json create mode 100644 eslint.config.ts create mode 100644 src/app/[locale]/(adm)/dashboard/admin/_islands/privilegies.tsx create mode 100644 src/app/[locale]/(adm)/dashboard/admin/page.tsx create mode 100644 src/app/[locale]/(adm)/dashboard/layout.tsx create mode 100644 src/app/[locale]/(adm)/layout.tsx create mode 100644 src/app/[locale]/(auth)/block/page.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/blocks.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/funcs.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/indent-list.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/index.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/lists.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/auto-format/marks.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/editor-placeholder.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/editor-plate.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/editor-plugins.ts create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/editor-ui.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/elements/heading.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/elements/paragraph.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/leafs/bold.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/_islands/leafs/code.tsx create mode 100644 src/app/[locale]/(blog)/blog/new/page.tsx create mode 100644 src/app/[locale]/(cms)/layout.tsx create mode 100644 src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/loading.tsx create mode 100644 src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/page.tsx rename src/app/[locale]/(store)/{preview => product-preview}/[productId]/page.tsx (60%) create mode 100644 src/app/[locale]/(store)/product/[productId]/_islands/client.tsx delete mode 100644 src/app/[locale]/(store)/products/@modal/(..)product-preview/[productId]/page.tsx delete mode 100644 src/app/[locale]/(store)/products/@modal/default.tsx delete mode 100644 src/app/[locale]/(store)/products/layout.tsx create mode 100644 src/app/api/cms/create/island/README.md create mode 100644 src/app/api/cms/create/page/README.md create mode 100644 src/core/adm/actions.ts rename src/{auth.ts => core/auth/authjs/index.ts} (69%) rename src/{app/[locale]/(main)/(features)/serverAction/WhoAmIButton.tsx => core/auth/authjs/islands/check-user-button.tsx} (95%) rename src/{islands/account => core/auth/authjs/islands}/sign-out-button.tsx (100%) create mode 100644 src/core/auth/authjs/other/checks.tsx rename src/{islands/account => core/auth/clerkjs/islands}/user-profile-clerk.tsx (65%) create mode 100644 src/core/auth/clerkjs/other/checks.tsx create mode 100644 src/core/auth/shared/index.ts create mode 100644 src/core/auth/shared/islands/auth-pages-content.tsx create mode 100644 src/core/cors/csp.mjs create mode 100644 src/core/link/index.tsx create mode 100644 src/core/logs/config.ts create mode 100644 src/core/logs/index.ts create mode 100644 src/core/logs/winston.ts rename src/{utils => core}/stripe/actions.ts (64%) rename src/{utils => core}/stripe/connect.ts (99%) rename src/{utils => core}/stripe/getting.ts (99%) rename src/{utils => core}/stripe/handlers.ts (96%) rename src/{utils => core}/stripe/helpers.ts (90%) rename src/{utils => core}/stripe/loading.ts (72%) rename src/{utils => core}/stripe/stripe.ts (91%) rename src/{utils => core}/stripe/zod.ts (100%) rename src/{utils/trpc/others => core/trpc}/context.ts (84%) create mode 100644 src/core/trpc/index.ts create mode 100644 src/core/trpc/infer.ts create mode 100644 src/core/trpc/react.tsx create mode 100644 src/core/trpc/root.ts rename src/{utils => core}/trpc/routers/auth.ts (100%) create mode 100644 src/core/trpc/routers/auth2.ts rename src/{utils/trpc/others/handlers/users.ts => core/trpc/routers/auth3.ts} (100%) rename src/{utils => core}/trpc/routers/product.ts (90%) rename src/{utils => core}/trpc/routers/todo.ts (93%) rename src/{utils/trpc/others/routers/todos.ts => core/trpc/routers/todo2.ts} (97%) rename src/{utils/trpc/others/handlers/todos.ts => core/trpc/routers/todos3.ts} (100%) rename src/{utils/trpc/routers/clerk => core/trpc/routers}/type.ts (100%) rename src/{utils/trpc/routers/clerk => core/trpc/routers}/webhook.ts (96%) create mode 100644 src/core/trpc/server.tsx create mode 100644 src/core/trpc/tanstack/blog-comments-server.tsx create mode 100644 src/core/trpc/tanstack/blog-posts-client.tsx create mode 100644 src/core/trpc/tanstack/post-thread-list.tsx create mode 100644 src/core/trpc/tanstack/products-admin.tsx rename src/{utils => core}/trpc/trpc.ts (88%) rename src/{utils/trpc/others/trpc.ts => core/trpc/trpc2.ts} (89%) create mode 100644 src/data/i18n/fa-ir.json create mode 100644 src/data/other/countries.json create mode 100644 src/data/validations/error.ts create mode 100644 src/data/validations/params.ts create mode 100644 src/forms/email-form-2.tsx create mode 100644 src/forms/email-form.tsx create mode 100644 src/hooks/experimental/uRC-test-1.tsx create mode 100644 src/hooks/experimental/uRC-test-2.tsx create mode 100644 src/hooks/experimental/useEvent.tsx create mode 100644 src/hooks/experimental/useIsomorphicLayoutEffect.tsx create mode 100644 src/hooks/experimental/useRenderCount.tsx create mode 100644 src/hooks/experimental/useSignalState.tsx create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/use-promise.tsx create mode 100644 src/indicators-error.tsx delete mode 100644 src/islands/account/header.tsx delete mode 100644 src/islands/account/language-switcher.tsx create mode 100644 src/islands/animated/gsap-playground.tsx create mode 100644 src/islands/application/experimental/rxjs-signals-test.tsx delete mode 100644 src/islands/commerce/commerce-dashboard-layout.tsx create mode 100644 src/islands/commerce/commerce-dashboard.tsx rename src/islands/commerce/{Pricing.tsx => pricing-modules.tsx} (51%) delete mode 100644 src/islands/commerce/validIntervals.ts delete mode 100644 src/islands/commerce/validRanges.ts delete mode 100644 src/islands/content/auth-pages-content.tsx create mode 100644 src/islands/content/clerk-auth-provider.tsx create mode 100644 src/islands/content/clerk-auth-service.tsx create mode 100644 src/islands/content/components/index.ts create mode 100644 src/islands/content/components/provider.tsx create mode 100644 src/islands/content/index.ts create mode 100644 src/islands/content/not-found-content.tsx delete mode 100644 src/islands/content/settings-content.tsx create mode 100644 src/islands/modules/cards/store-card-dashboard.tsx rename src/islands/modules/cards/{store-card.tsx => store-card-default.tsx} (86%) create mode 100644 src/islands/modules/zu-clock.tsx create mode 100644 src/islands/modules/zu-counter.tsx create mode 100644 src/islands/primitives/theme.ts create mode 100644 src/islands/providers/auth-provider.tsx delete mode 100644 src/islands/providers/indicators/debug-indicator.tsx delete mode 100644 src/islands/providers/indicators/errors-indicators.tsx rename src/islands/{primitives => providers}/tooltip.tsx (94%) create mode 100644 src/islands/providers/useInterval.ts create mode 100644 src/islands/providers/zu-store.ts create mode 100644 src/islands/providers/zustand.tsx create mode 100644 src/islands/switchers/localization-main-beta.tsx create mode 100644 src/islands/switchers/navigation-new-beta.ts delete mode 100644 src/islands/switchers/themes-dynamic-switcher.tsx create mode 100644 src/islands/text-cts.tsx create mode 100644 src/islands/text-link.tsx create mode 100644 src/liveblocks.config.ts rename src/{islands/switchers/localization-main-switcher.tsx => localization-main.tsx} (75%) create mode 100644 src/pages/api/cms/create/island/route.ts create mode 100644 src/pages/api/cms/create/page/route.ts create mode 100644 src/pages/api/fuse.ts create mode 100644 src/plugins/builder/creating.tsx delete mode 100644 src/plugins/islands/github/client.tsx delete mode 100644 src/plugins/islands/github/server.tsx create mode 100644 src/plugins/islands/github/stars.tsx create mode 100644 src/plugins/million/islands/cursor.tsx create mode 100644 src/plugins/million/islands/room.tsx create mode 100644 src/plugins/million/islands/showdown.tsx create mode 100644 src/plugins/million/islands/users-online.tsx create mode 100644 src/plugins/million/islands/visitors-cursors.tsx delete mode 100644 src/plugins/tests/data/meta/builder.test.ts delete mode 100644 src/plugins/tests/main.spec.ts delete mode 100644 src/plugins/tests/server/utils.test.ts create mode 100644 src/plugins/utils/db/compare.py create mode 100644 src/plugins/utils/db/compare.ts create mode 100644 src/plugins/utils/db/convert.py create mode 100644 src/plugins/utils/db/convert.ts create mode 100644 src/plugins/utils/db/switcher.ts create mode 100644 src/plugins/utils/other/cspell.py create mode 100644 src/plugins/utils/other/deps.py create mode 100644 src/plugins/utils/typescript/types-info.py create mode 100644 src/plugins/utils/typescript/types-info.ts create mode 100644 src/server/cart.ts create mode 100644 src/server/clients/next-safe-action.ts create mode 100644 src/server/funcs/is-ssr.ts create mode 100644 src/server/funcs/s-to-v.ts create mode 100644 src/server/utapi.ts create mode 100644 src/tests/ava/ava-test-1.ts create mode 100644 src/tests/ava/ava-test-2.ts create mode 100644 src/tests/ava/swc/tests/ava/ava-test-1.js create mode 100644 src/tests/ava/swc/tests/ava/ava-test-2.js create mode 100644 src/tests/jest/builder.test.ts create mode 100644 src/tests/jest/cart.test.ts create mode 100644 src/tests/jest/identity.test.ts create mode 100644 src/tests/pw/index.ts create mode 100644 src/types/User.ts create mode 100644 src/types/global/i18n.d.ts create mode 100644 src/types/global/reset.d.ts rename src/{types.ts => types/index.ts} (98%) create mode 100644 src/utils/auth/mw.ts rename src/utils/{ => auth}/users.ts (84%) rename src/utils/{ => auth}/with.ts (90%) create mode 100644 src/utils/other/for-test/cart-calc.ts create mode 100644 src/utils/other/for-test/identity.ts create mode 100644 src/utils/other/for-test/math-ava.ts create mode 100644 src/utils/other/signals.ts create mode 100644 src/utils/other/toast.tsx create mode 100644 src/utils/other/uploads/muploader.tsx rename src/{server/funcs => utils/other/uploads}/uploadthing.ts (58%) delete mode 100644 src/utils/trpc/others/react.tsx delete mode 100644 src/utils/trpc/others/routers/users.ts delete mode 100644 src/utils/trpc/react.tsx delete mode 100644 src/utils/trpc/root.ts delete mode 100644 src/utils/trpc/server.ts delete mode 100644 src/utils/trpc/shared.ts create mode 100644 stylelint.config.mjs create mode 100644 typestat.json create mode 100644 wallaby.cjs diff --git a/.env.example b/.env.example index 306293e1..4215c08f 100644 --- a/.env.example +++ b/.env.example @@ -2,45 +2,32 @@ # 🔴 REQUIRED #=========================================== -# neon (https://neon.tech) | planetscale (https://planetscale.com) +# planetscale (https://planetscale.com) | neon (https://neon.tech) # vercel (https://vercel.com) | railway (https://railway.app) NEXT_PUBLIC_DB_PROVIDER="planetscale" -# postgres://username:password@hostname/database # mysql://username:password@hostname/database +# postgres://username:password@hostname/database DATABASE_URL="mysql://YOUR_MYSQL_URL_HERE" -# authjs (https://authjs.dev) | clerk (https://clerk.com) -NEXT_PUBLIC_AUTH_PROVIDER="clerk" - #=========================================== -# 🟢 OPTIONAL +# 🟢 OPTIONAL (EASY) #=========================================== -# https://dashboard.clerk.com -# Test mode: pk_test_ and sk_test_ -# Production: pk_live_ and sk_live_ -NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_test_" -CLERK_SECRET_KEY="sk_test_" - -# Production: https://use-your-domain-here.com -NEXT_PUBLIC_APP_URL="http://localhost:3000" -NEXTAUTH_URL="http://localhost:3000" +# clerk (https://clerk.com) | authjs (https://authjs.dev) +NEXT_PUBLIC_AUTH_PROVIDER="authjs" -# https://convertsimple.com/random-base64-generator -NEXTAUTH_SECRET="PleaseUseSomethingRandomHere" +# Required if you have chosen "clerk" as auth provider +# https://dashboard.clerk.com/last-active?path=api-keys +NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="" +CLERK_SECRET_KEY="" -# https://discord.com/developers/applications -DISCORD_CLIENT_ID="" -DISCORD_CLIENT_SECRET="" - -# https://github.com/settings/developers -GITHUB_CLIENT_SECRET="" -GITHUB_CLIENT_ID="" +# Specify your website domain in production +NEXT_PUBLIC_APP_URL="http://localhost:3000" -# https://console.cloud.google.com/apis/credentials -GOOGLE_CLIENT_SECRET="" -GOOGLE_CLIENT_ID="" +#=========================================== +# 🟡 OPTIONAL (MEDIUM) +#=========================================== # https://dashboard.stripe.com/test/products STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID="" @@ -50,31 +37,74 @@ STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID="" NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="" STRIPE_SECRET_KEY="" -# Scroll down for instructions +# Read the instructions at the end of file STRIPE_WEBHOOK_SIGNING_SECRET="" +# Specify if you want image uploads +# https://uploadthing.com/dashboard +UPLOADTHING_SECRET="" +UPLOADTHING_APP_ID="" + #=========================================== -# 🔵 ADDITIONAL +# 🟠 OPTIONAL (ADVANCED) #=========================================== -# next-intl | next-international (soon) | disable (soon) +# Specify if you have "authjs" as auth provider +# https://discord.com/developers/applications +DISCORD_CLIENT_SECRET="" +DISCORD_CLIENT_ID="" +# https://github.com/settings/developers +GITHUB_CLIENT_SECRET="" +GITHUB_CLIENT_ID="" +# https://console.cloud.google.com/apis/credentials +GOOGLE_CLIENT_SECRET="" +GOOGLE_CLIENT_ID="" +# https://generate-secret.vercel.app/32 +NEXTAUTH_SECRET="UseSomethingRandomHere32CharLong" +NEXTAUTH_URL="http://localhost:3000" + +# Specify if you want to have +# https://loglib.io analytics +LOGLIB_SITE_ID="" + +#=========================================== +# 🔵 OPTIONAL (ADDITIONAL) +#=========================================== + +# Specify if you want to enable ip rate limit +# Upstash Redis (https://console.upstash.com) +UPSTASH_REDIS_REST_URL="" +UPSTASH_REDIS_REST_TOKEN="" + +# If you want multiplayer https://liveblocks.io +NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY="" + +# Set "true" to enable checks for any bot activity +CHECK_BOT_ACTIVITY="false" + +# Set "true" to enable "src/core/cors/csp.mjs" file +NEXT_PUBLIC_CSP_XSS="false" + +# Set "false" to ask search engines not to index site +# Ypu need to have NEXT_PUBLIC_CSP_XSS="true" as well +NEXT_PUBLIC_IS_LIVE="true" + +# next-intl | next-international (soon) | none (soon) NEXT_PUBLIC_INTL_PROVIDER="next-intl" -# none | contentlayer (soon) -NEXT_PUBLIC_CMS_PROVIDER="none" +# Set "true" to hide environment info when missing +NEXT_PUBLIC_HIDE_ENV_INFO="false" -# drizzle | prisma (soon) -NEXT_PUBLIC_DB_LIBRARY="drizzle" +# It's recommended to specify your live domain +# here on the development (with https:// part) +# Use comma without spaces to specify multiple +# Ypu need to have NEXT_PUBLIC_CSP_XSS="true" +ADDITIONAL_CSP_ORIGINS="https://*.vercel.app,https://relivator.bleverse.com" #=========================================== -# 🟡 INSTRUCTIONS +# 🟣 INSTRUCTIONS #=========================================== -# [IMPORTANT THINGS TO KNOW] -# Never share anywhere and never commit ".env" file. -# When adding additional environment variables, schema -# in "/src/env.mjs" file should be updated accordingly. - # [STRIPE WEBHOOK FOR DEVELOPMENT] # 1. Install Stripe CLI: https://stripe.com/docs/stripe-cli#install # 2. https://dashboard.stripe.com/test/webhooks/create?endpoint_location=local @@ -82,22 +112,38 @@ NEXT_PUBLIC_DB_LIBRARY="drizzle" # 4. Copy signing secret from your terminal, paste to STRIPE_WEBHOOK_SIGNING_SECRET. # 5. Run "stripe trigger payment_intent.succeeded", wait for Completed, click Done. # Keep "pnpm stripe:listen" enabled when you need to test Stripe on the localhost. -# When testing the Stripe, use these test data: 4242 4242 4242 4242 | 12/34 | 567. +# When testing the Stripe -> use these test data: 4242424242424242 | 12/34 | 567 # [STRIPE WEBHOOK FOR PRODUCTION] # 1. https://dashboard.stripe.com/test/webhooks/create?endpoint_location=hosted # 2. As endpoint use: https://use-your-domain-here.com/api/webhooks/stripe -# 3. Choose "Latest API version" and select these events: -# - charge.captured -# - charge.succeeded -# - checkout.session.completed -# - customer.subscription.updated -# - invoice.payment_succeeded -# - invoice.upcoming -# - payment_intent.payment_failed -# - payment_intent.processing -# - payment_intent.succeeded -# - subscription_schedule.canceled -# 4. Open newly created webhook and reveal your signing secret. -# Please note: you will get a test-mode production signing key, -# switch to the live mode to get real one, steps are the same. +# 3. "Select events" > "Select all events" > "Add events". +# 4. "Events on your account"; Version "Latest API version". +# 5. Scroll the page down to the end and click "Add endpoint". +# 6. Open newly created webhook and reveal your signing secret. +# Please note: you will get the test-mode production signing key, +# switch to the live-mode to get real one, steps possibly the same. + +# [IMPORTANT THINGS TO KNOW] +# Never share or commit the ".env" file anywhere. +# When adding new variables, update the schema +# in the "/src/env.mjs" file accordingly. +# Also, specify any missing variables +# in "/src/indicators-error.tsx". + +#=========================================== +# ⭕ CURRENTLY NOT USED +#=========================================== + +# For Discord Server Integration: Go to Edit Channel +# > Integrations > New Webhook, and obtain your URL +DISCORD_WEBHOOK_URL="" + +# stripe | lemonsqueezy (soon) | disable (soon) +NEXT_PUBLIC_PAYMENT_PROVIDER="stripe" + +# drizzle | prisma (soon) +NEXT_PUBLIC_DB_LIBRARY="drizzle" + +# none | contentlayer (soon) +NEXT_PUBLIC_CMS_PROVIDER="none" diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 4c56bee7..00000000 --- a/.eslintignore +++ /dev/null @@ -1,18 +0,0 @@ -# ?? https://eslint.org/docs/latest/use/configure/ignore#the-eslintignore-file - -# dependencies -/node_modules - -# next.js -/.next -/out - -# production -/build -/dist - -# typescript -next-env.d.ts - -# temporary -*.tson diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index ebbad1cb..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,202 +0,0 @@ -/** - * @see https://eslint.org - * @see https://typescript-eslint.io - * @see https://github.com/godaddy/eslint-plugin-i18n-json#readme - */ - -/** @type {import('eslint').Linter.Config} */ -const config = { - // ============================================== - // | Global: TypeScript + JavaScript + Jest | - // ============================================== - root: true, - env: { - es2023: true, - browser: true, - node: true, - }, - settings: { - "import/resolver": { - typescript: { - project: ["./tsconfig.json"], - }, - }, - tailwindcss: { - callees: ["classNames", "clsx", "cls", "cva", "cn"], - config: "./tailwind.config.ts", - }, - }, - extends: [ - "plugin:tailwindcss/recommended", - "plugin:i18n-json/recommended", - "next/core-web-vitals", - "eslint:recommended", - "prettier", - ], - overrides: [ - { - // ============================================ - // | Overrides for TypeScript | - // ============================================ - files: ["*.ts", "*.tsx", "*.mts", "*.cts", "*.d.ts"], - parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["@tanstack/query"], - extends: [ - "plugin:@tanstack/eslint-plugin-query/recommended", - "plugin:@typescript-eslint/stylistic-type-checked", - "plugin:@typescript-eslint/strict-type-checked", - ], - rules: { - "i18n-json/valid-message-syntax": [ - 2, - { - syntax: "icu", - }, - ], - "i18n-json/valid-json": 2, - "i18n-json/sorted-keys": [ - 2, - { - order: "asc", - indentSpaces: 2, - }, - ], - "i18n-json/identical-keys": 0, - "@typescript-eslint/consistent-type-imports": [ - "off", - // "warn", - // { - // prefer: "type-imports", - // fixStyle: "inline-type-imports" // "separate-type-imports" - // } - ], - "@typescript-eslint/no-unused-vars": [ - "off", - // "warn", - // { - // argsIgnorePattern: "^_", - // caughtErrors: "none", - // varsIgnorePattern: "^_" - // } - ], - "@typescript-eslint/consistent-type-definitions": [ - "off" /* "error", "type" */, - ], - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-unsafe-enum-comparison": "off", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/restrict-plus-operands": "off", - "@typescript-eslint/non-nullable-type-assertion-style": "off", - "@tanstack/query/exhaustive-deps": "error", - "@typescript-eslint/restrict-template-expressions": "off", - "no-case-declarations": "off", - "@typescript-eslint/no-unnecessary-type-arguments": "off", - "@typescript-eslint/consistent-indexed-object-style": "off", - "no-constant-condition": "off", - "@next/next/no-html-link-for-pages": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-misused-promises": "off", - "@typescript-eslint/no-empty-interface": "off", - "@typescript-eslint/prefer-nullish-coalescing": "off", - "@typescript-eslint/array-type": "off", - "@typescript-eslint/no-meaningless-void-operator": "off", - "@typescript-eslint/no-confusing-void-expression": "off", - "@typescript-eslint/prefer-optional-chain": "off", - "@typescript-eslint/no-unnecessary-condition": "off", - "@tanstack/query/prefer-query-object-syntax": "off", - "@typescript-eslint/no-redundant-type-constituents": "off", - "@typescript-eslint/no-unnecessary-type-assertion": "off", - "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/require-await": "off", - "react-hooks/exhaustive-deps": "off", - "react/display-name": "off", - "react/no-unescaped-entities": "off", - "tailwindcss/classnames-order": "off", - "tailwindcss/enforces-shorthand": "off", - "tailwindcss/migration-from-tailwind-2": "off", - "tailwindcss/no-custom-classname": "off", - "import/order": [ - "off", - // "error", - // { - // "newlines-between": "always", - // groups: [ - // ["builtin", "external"], - // "internal", - // ["sibling", "parent"], - // "index", - // "object", - // "type" - // ], - // alphabetize: { - // order: "asc" - // } - // } - ], - "sort-imports": [ - "off", - // "error", - // { - // ignoreDeclarationSort: true - // } - ], - }, - }, - { - // ============================================ - // | Overrides for specific files | - // ============================================ - files: ["auth.ts"], - rules: { - "@typescript-eslint/consistent-type-definitions": ["off"], - }, - }, - { - // ============================================ - // | Overrides for JavaScript | - // ============================================ - files: ["*.js", "*.jsx", "*.mjs", "*.cjs"], - }, - { - // ============================================ - // | Override for Jest Tests | - // ============================================ - files: ["**/__tests__/**/*.{ts,tsx}", "**/*.test.{ts,tsx}"], - env: { "jest/globals": true }, - plugins: ["jest"], - extends: [ - "plugin:@typescript-eslint/stylistic-type-checked", - "plugin:@typescript-eslint/strict-type-checked", - "plugin:jest-extended/all", - "plugin:jest/style", - "plugin:jest/all", - ], - rules: { - "@typescript-eslint/prefer-nullish-coalescing": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "jest/prefer-expect-assertions": "off", - "jest/no-disabled-tests": "warn", - "jest/no-focused-tests": "error", - "jest/no-identical-title": "error", - "jest/prefer-to-have-length": "warn", - "jest/valid-expect": "error", - "jest/require-top-level-describe": "off", - }, - }, - ], -}; - -module.exports = config; diff --git a/.gitattributes b/.gitattributes index dfe07704..83a29eba 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,6 @@ +# @see https://dev.to/deadlybyte/please-add-gitattributes-to-your-git-repository-1jld +# @see https://rehansaeed.com/gitattributes-best-practices +# @see https://github.com/gitattributes/gitattributes + # Auto detect text files and perform LF normalization * text=auto diff --git a/.github/translations/readme/polish.md b/.github/translations/readme/polish.md new file mode 100644 index 00000000..0b22a8a8 --- /dev/null +++ b/.github/translations/readme/polish.md @@ -0,0 +1,400 @@ +# Relivator: Najbogatszy w funkcje starter Next.js 14 + + + +🌐 [Запустити демо-версію Relivator](https://relivator.bleverse.com) + +**Uwaga: Poniższy tekst jest w większości maszynowym tłumaczeniem pliku [README.md](https://github.com/blefnk/relivator#readme). Aktywnie pracujemy nad jego ulepszeniem. Prosimy o zapoznanie się z oryginałem, jeśli niektóre fragmenty tekstu są niejasne.** + +Naszym celem jest stworzenie najbardziej bogatego w funkcje i globalnego startera Next.js na świecie. Oferuje więcej niż tylko kod - to podróż. Jest stabilny i gotowy do produkcji. Przewiń w dół i sprawdź zapierającą dech w piersiach listę funkcji projektu, w tym przełączanie między Clerk/NextAuth.js oraz MySQL/PostgreSQL "on-the-fly". + +## Jak zainstalować i rozpocząć + +1. **Niezbędne narzędzia**: Upewnij się, że [_VSCode_](https://code.visualstudio.com), [_Git_](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), _GitHub Desktop_ ([Windows/macOS](https://desktop.github.com/) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)) i _Node.js LTS_ ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) są zainstalowane. +2. **Klonowanie projektu**: [_Utwórz nowy fork_](https://github.com/blefnk/relivator/fork) i użyj GitHub Desktop, aby go pobrać. +3. **Konfiguracja**: Otwórz VSCode i załaduj folder projektu. Naciśnij `Ctrl+Shift+P` i wyszukaj `>Create New Terminal`. Zainstaluj _PNPM_ używając `corepack enable`. Następnie wpisz `pnpm install`, aby zainstalować pakiety. Następnie skopiuj plik `.env.example` do nowego pliku `.env` i wypełnij przynajmniej pola `NEXT_PUBLIC_DB_PROVIDER` i `DATABASE_URL`. Na koniec wyślij schemat bazy danych do swojej bazy danych za pomocą `pnpm mysql:push` lub `pnpm pg:push`. +4. **Run, Stop, Build**: Użyj `pnpm dev` by uruchomić aplikację (odwiedź by to sprawdzić). Zatrzymaj ją, skupiając się na konsoli i naciskając `Ctrl+C`. Po wprowadzeniu zmian, zbuduj aplikację używając `pnpm build`. W porządku, jeśli zobaczysz ostrzeżenia Clerk. +5. **Commit and Deploy**: Prześlij projekt do swojego profilu GitHub za pomocą GitHub Desktop. Następnie wdróż go, importując projekt do [Vercel](https://vercel.com/new), dzięki czemu Twoja witryna będzie publicznie dostępna w Internecie. Jeśli chcesz podzielić się swoją pracą, uzyskać opinię lub poprosić o pomoc, możesz to zrobić [na naszym serwerze Discord](https://discord.gg/Pb8uKbwpsJ) lub [za pośrednictwem dyskusji GitHub](https://github.com/blefnk/relivator/discussions). + +Przewiń stronę w dół, aby zobaczyć wiele przydatnych informacji o tym, jak wszystko działa w projekcie. + +## Lista kontrolna funkcji projektu + +Przestań biegać od jednego startera do drugiego. Dzięki Relivator będziesz mieć nieograniczone możliwości. Możesz stworzyć wszystko, co chcesz; wszystkie narzędzia są już przygotowane, specjalnie dla Ciebie. + +**Uwaga:** Co dwa tygodnie darujemy wczesny dostęp do przyszłych wtyczek Relivator trzem losowo wybranym osobom. Po prostu dodaj `gwiazdkę do tego repozytorium` i [daj nam znać, jak się z Tobą skontaktować](https://forms.gle/NXZ6QHpwrxh52VA36). Aby dyskutować, dołącz do [Discord projektu](https://discord.gg/Pb8uKbwpsJ). + +- [x] Wykorzystano [Next.js 14](https://nextjs.org), [React 18](https://react.dev), [TailwindCSS](https://tailwindcss.com) i [TypeScript](https://typescriptlang.org) to podstawowe technologie projektu. +- [x] Wdrożono uwierzytelnianie poprzez **zarówno [Clerk](https://clerk.com/), jak i [NextAuth.js](https://authjs.dev)**. +- [x] Rozpętano szeroką internacjonalizację **w 10 językach** (_angielski, niemiecki, hiszpański, perski, francuski, hindi, włoski, polski, turecki, ukraiński_), używając [next-intl]( -docs.vercel.app). +- [x] Podjęto próbę [Drizzle ORM](https://orm.drizzle.team), wykorzystując **bazy danych MySQL i PostgreSQL** oraz [PlanetScale](https://planetscale.com)/[Neon](https://neon.tech)/[Vercel](https://vercel.com)/[Railway](https://railway.app). +- [x] Pomyślnie skonfigurowano `next.config.mjs` z obsługą i18n i MDX. +- [x] Przez cały projekt dążyłem do dokładnej dokumentacji i przyjaznego podejścia dla początkujących. +- [x] Umiejętnie skonfigurowany i skomentowany `middleware.ts` dla i18n i next-auth. +- [x] Skonfigurowano system Content-Security-Policy (CSP) jako środek bezpieczeństwa zapobiegający atakom XSS (domyślnie wyłączony). +- [x] Podano przykładowe ustawienia VSCode i zalecane rozszerzenia. +- [x] Zoptymalizowano [Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) pod kątem SEO, integrując procedury obsługi systemu plików. +- [x] Zintegrowano wskaźnik rozmiaru ekranu TailwindCSS dla lokalnych uruchomień projektów. +- [x] Utworzono system subskrypcji i kasowania użytkowników przy użyciu [Stripe](hhttps://github.com/stripe/stripe-node#readme). +- [x] Zapewniono weryfikację bezpieczeństwa typów schematów projektu i pól interfejsu użytkownika przy użyciu [Zod](https://zod.dev). +- [x] Zatrudniłem [EsLint](https://eslint.org) i [Prettier](https://prettier.io), aby zapewnić bezpieczeństwo i czytelność kodu. +- [x] Elegancko wykonany system czcionek, wykorzystujący [Inter](https://rsms.me/inter) i dodatkowe kroje pisma. +- [x] Opracowano witrynę sklepową zawierającą funkcjonalność produktu, kategorii i podkategorii. +- [x] Zaprojektowano nowoczesny, przejrzyście skomponowany interfejs użytkownika przy użyciu [Radix](https://radix-ui.com) z atrakcyjnymi komponentami interfejsu użytkownika od [shadcn/ui](https://ui.shadcn.com). +- [x] Utworzono obszerny, przyjazny dla początkujących plik „README.md”, zawierający opisy [zmiennych środowiskowych] (). +- [x] Funkcjonalność bloga realizowana poprzez wykorzystanie plików MDX. +- [x] Zaimplementowano [tRPC](https://trpc.io) i [Zapytanie TanStack](https://tanstack.com/query) (z [React Normy]( normy#readme)), aby mieć zaawansowane pobieranie danych serwera i klienta. +- [ ] Użyj ścieżek bezwzględnych, jeśli są stosowane. +- [ ] Użyj [Kysely](https://kysely.dev) z Drizzle, aby uzyskać pełne bezpieczeństwo typu kreatora zapytań SQL TypeScript. +- [ ] Przetłumacz README.md i powiązane pliki na więcej języków. +- [ ] Przekształć się poza prosty sklep e-commerce w uniwersalny starter stron internetowych. +- [ ] Uporządkuj `package.json` z poprawnie zainstalowanymi i uporządkowanymi pakietami w `zależnościach` i `devDependency`. +- [ ] Autor projektu powinien opublikować serię szczegółowych filmów wideo na temat korzystania z tego projektu. Powinni też znaleźć się pasjonaci chcący publikować w swoich zasobach własne filmy o projekcie. +- [ ] Zmniejsz w miarę możliwości liczbę pakietów projektu, plików konfiguracyjnych itp. +- [ ] Ogranicz zagnieżdżanie znaczników HTML i zapewnij ich prawidłowe użycie, jeśli to możliwe. +- [ ] Nadaj priorytet dostępności, zarówno w przypadku interfejsu użytkownika aplikacji (interfejsu użytkownika), UX (doświadczenia użytkownika), jak i DX (doświadczenia programisty) dla programistów. Zachowaj użyteczność bez uszczerbku dla estetyki. +- [ ] Preferuj `funkcję`/`typ` zamiast `const`/`interfejs`, aby zachować czytelny, czysty i przyjazny dla początkujących kod. +- [ ] Zoptymalizuj wszystkie elementy aplikacji, aby poprawić prędkość zimnego startu programistów i kompilacji. +- [ ] Przeprowadź migrację do NextAuth.js' [next-auth@beta](https://npmjs.com/package/next-auth?activeTab=versions) ([dyskusje]( next-auth/releases/tag/next-auth%405.0.0-beta.4)) i do [@clerk/*@alpha] Clerka. +- [ ] Przenieś każdy powiązany system do jego specjalnego folderu (do folderu `src/core`), aby każdy system mógł zostać łatwo usunięty z projektu, jeśli zajdzie taka potrzeba. +- [ ] Przenieś style komponentów do plików .css lub .scss lub użyj pakietów zapewniających lepszą składnię stylów w plikach .tsx. +- [ ] Zarządzaj weryfikacją e-maili, zapisami do biuletynu i marketingiem e-mailowym za pomocą opcji [Wyślij ponownie] () i [Reaguj e-mailem] (). +- [ ] Spraw, aby każda zmienna środowiskowa była opcjonalna, umożliwiając aplikacji działanie bez skonfigurowania czegokolwiek, po prostu pomijając określone sekcje kodu, jeśli to konieczne. +- [ ] Po wbudowaniu terminala programistycznego upewnij się, że każda strona i oprogramowanie pośrednie są zielone lub żółte, ale nie czerwone. +- [ ] Utrzymuj projekt w najlepszym możliwym sposobie pisania dobrego i czystego kodu, postępując zgodnie z wytycznymi takimi jak [Przewodnik po stylu JavaScript Airbnb](https://github.com/airbnb/javascript/tree/master/react) / [Airbnb Przewodnik po stylu React/JSX](https://github.com/airbnb/javascript/tree/master/react). +- [ ] Utrzymuj projekt wolny od `@ts-expect-error` i powiązanych rzeczy, które nie są zbyt bezpieczne dla typów. +- [ ] Utrzymuj jak najmniejszą liczbę plików cookie, przygotuj się na przyszłość bez plików cookie, wdrażaj zarządzanie plikami cookie i powiadomienia. +- [ ] Wprowadź system komentarzy do produktów, obejmujący typy recenzji i pytań. +- [ ] Zintegruj cenne spostrzeżenia z [Next.js Weekly](https://nextjsweekly.com/issues) z tym starterem. +- [ ] Zintegruj cenne rzeczy z [Przykładów Next.js](https://github.com/vercel/next.js/tree/canary/examples) do tego projektu. +- [ ] Wdrożyć inteligentny i ujednolicony system logów, zarówno na potrzeby programowania, jak i produkcji, zarówno dla konsoli, jak i zapisu do określonych plików. +- [ ] Zaimplementuj najlepsze rzeczy z [Payload CMS](https://github.com/payloadcms/payload) dzięki ulepszeniom Relivator. +- [ ] Implementuj przesyłanie plików za pomocą [UploadThing](https://uploadthing.com) i [Cloudinary](https://cloudinary.com). +- [ ] Zaimplementuj dynamiczne przełączanie między funkcjami aplikacji, takimi jak dostawca bazy danych, dokonując odpowiednich kontroli zmiennych środowiskowych. +- [ ] Zaimplementuj pełną obsługę `next dev --turbo`. +- [ ] Zaimplementuj obsługę Storybook 8.0 (przeczytaj ogłoszenie „[Storybook for React Server Components](https://storybook.js.org/blog/storybook-react-server-components)”. +- [ ] Wdrażaj możliwości współpracy, korzystając z takich rzeczy jak [liveblocks](https://liveblocks.io). +- [ ] Zaimplementuj dokumentację do projektu i przenieś każde wyjaśnienie z kodu do tego dokumentu. +- [ ] Zaimplementuj Sentry do obsługi błędów i raportów CSP dla aplikacji. +- [ ] Zaimplementuj głęboką zgodność funkcji i łatwą migrację z Reliverse. +- [ ] Zaimplementuj własną wersję [Saas UI] () Relivator/Reliverse, aby była w pełni kompatybilna z naszym projektem z tylko potrzebną funkcjonalnością, z użyciem Tailwind i Shadcn zamiast Chakra. +- [ ] Zaimplementuj nasz własny rozwidlenie biblioteki [Radix Themes] () z skonfigurowanym `
` jako opakowaniem zamiast aktualnej ``; LUB zaimplementuj nasze własne rozwiązanie, które generuje Tailwind zamiast klas Radix. +- [ ] Implementuj funkcje AI i czat, używając na przykład [Vercel AI SDK](https://sdk.vercel.ai/docs) (patrz: [Przedstawiamy zestaw Vercel AI SDK]( /blog/przedstawiamy-vercel-ai-sdk)). +- [ ] Zaimplementuj zaawansowane przełączanie motywów bez flashowania, wykorzystując tryb ciemny Tailwind z [obsługą React Server Side](https://michaelangelo.io/blog/darkmode-rsc) i dynamicznymi plikami cookie. +- [ ] Zaimplementuj testy [Jest](https://jestjs.io), zoptymalizowane pod kątem Next.js. +- [ ] Zaimplementuj pełną obsługę [Million.js](https://million.dev) (przeczytaj [Ogłoszenie Million 3.0](https://million.dev/blog/million-3), aby dowiedzieć się więcej). +- [ ] Zaimplementuj obsługę [GraphQL](https://hygraph.com/learn/graphql) bezpieczną dla typu, używając framework [Fuse.js](https://fusejs.org). +- [ ] Zaimplementuj CLI, aby szybko uzyskać Relivator tylko z wybranymi opcjami; spróbuj użyć [Charm](https://charm.sh) rzeczy do zbudowania interfejsu CLI Reliverse. +- [ ] Gwarancja, że każda możliwa strona zostanie otoczona przy użyciu przedefiniowanych opakowań powłoki. +- [ ] Obficie komentuj cały kod, dbając o jego czystość. +- [ ] W pełni opracuj zaawansowane strony rejestracji i logowania, integrując zarówno media społecznościowe, jak i metody klasycznych formularzy. +- [ ] Postępuj zgodnie z zaleceniami [Material Design 3](https://m3.material.io) i innych systemów projektowania, jeśli ma to zastosowanie. +- [ ] Postępuj zgodnie ze sprawdzonymi metodami z artykułów i filmów, takich jak „[10 antywzorców reagowania, których należy unikać](https://www.youtube.com/watch?v=b0IZo2Aho9Y)” (sprawdź także sekcję z komentarzami). +- [ ] Ustal, udokumentuj i przestrzegaj konwencji, takich jak utrzymywanie jednego stylu nazewnictwa dla plików i zmiennych. +- [ ] Utworzenie wszechstronnego i18n, wykorzystującego kody krajów i ustawień regionalnych oraz obsługę jeszcze większej liczby języków. Upewnij się, że native speakerzy sprawdzają każdy język po tłumaczeniu maszynowym. Rozważ użycie biblioteki [next-international](https://github.com/QuiiBz/next-international). +- [ ] Wyeliminuj wszelkie wyłączenia w pliku `.eslintrc.cjs`, skonfiguruj konfigurację na ścisłą, ale nadal przyjazną dla początkujących. +- [ ] Zapewnij najwyższe bezpieczeństwo typów, używając trybu ścisłego w [TypeScript] (), typedRoutes, Zod, oprogramowaniu pośrednim itp. +- [ ] Upewnij się, że w projekcie nie ma żadnych nieużywanych elementów, w tym pakietów, bibliotek, zmiennych itp. +- [ ] Zapewnij pełną obsługę i kompatybilność Next.js Edge. +- [ ] Upewnij się, że projekt używa pętli tam, gdzie jest to naprawdę i zdecydowanie konieczne (artykuł: [Kodowanie bez pętli](https://codereadability.com/coding-without-loops)). +- [ ] Zapewnij pełną obsługę i kompatybilność [Biome](https://biomejs.dev/), [Bun](https://bun.sh) i [Docker](https://docker.com). +- [ ] Upewnij się, że wszystkie języki witryny są poprawne gramatycznie i zgodne z najnowszymi zasady dla każdego języka. +- [ ] Upewnij się, że wszystkie elementy projektu są posortowane w kolejności rosnącej, chyba że gdzie indziej wymagane jest inne sortowanie. +- [ ] Zapewnij dostępność **użytkownikom**, **programistom** (zarówno początkującym, jak i ekspertom), **botom** (takim jak [Googlebot]( -indexing/googlebot) lub [robot indeksujący PageSpeed Insights](https://pagespeed.web.dev)), dla **wszystkich**. +- [ ] Ulepszono konfigurację `middleware.ts` dzięki implementacji multi-middleware. +- [ ] Wykorzystaj wszystkie odpowiednie biblioteki [TanStack](https://tanstack.com). +- [ ] Elegancko skonfiguruj `app.ts`, oferując jedną konfigurację, która zastąpi wszystkie inne. +- [ ] Opracuj przepływy pracy zarówno dla sprzedawców, jak i klientów. +- [ ] Stwórz zaawansowaną witrynę sklepową zawierającą produkty, kategorie i podkategorie. +- [ ] Opracuj zaawansowaną stronę 404 Not Found z pełną obsługą internacjonalizacji. +- [ ] Opracuj zaawansowaną rejestrację, logowanie i przywracanie za pomocą hasła e-mail i magicznych linków. +- [ ] Opracuj jeszcze bardziej wyrafinowaną implementację subskrypcji użytkowników i systemu realizacji transakcji za pośrednictwem Stripe; a także napisz testy Jest/Ava dla Stripe i użyj do tych testów plików danych `.thing/hooks/stripe_*.json` [webhookthing](https://docs.webhookthing.com). +- [ ] Zmniejsz liczbę plików, łącząc podobne elementy itp. +- [ ] Stwórz możliwie najbardziej przyjazny dla początkujących i estetyczny starter. +- [ ] Utwórz zaawansowany system powiadomień, obejmujący tostery, wyskakujące okienka i strony. +- [ ] Utwórz nową stronę docelową z charakterystycznym projektem i zaktualizuj komponenty, a także całkowicie przeprojektuj wszystkie pozostałe strony i komponenty. +- [ ] Potwierdź, że projekt nie zawiera duplikatów, takich jak pliki, komponenty itp. +- [ ] Przeprowadź przydatne testy, w tym ewentualne testy warunków skrajnych, aby symulować i oceniać wydajność aplikacji w warunkach dużego ruchu. +- [ ] Kompleksowa konfiguracja routera aplikacji Next.js 14 z trasami API zarządzanymi przez moduły obsługi tras, w tym RSC i wszystkimi innymi nowymi funkcjami. +- [ ] Wypełnij listę kontrolną BA11YC (Konwencja dostępności Bleverse). +- [ ] Wypełnij części [listy kontrolnej BA11YC (Konwencja Bleverse Accessibility)](https://github.com/bs-oss/BA11YC). +- [ ] Zwiększ wyniki wydajności aplikacji na platformach takich jak Google PageSpeed Insights. Upewnij się, że aplikacja przeszła wszystkie rygorystyczne testy. +- [ ] W razie potrzeby zastosuj bibliotekę [next-usequerystate](https://github.com/47ng/next-usequerystate) ([przeczytaj artykuł]( -stan-w-adresie-url-z-następnymi)). +- [ ] Dodaj do projektu kilka interesujących i przydatnych typów, na przykład korzystając z biblioteki [type-fest](https://github.com/sindresorhus/type-fest). +- [ ] Dodaj najcenniejsze i najbardziej przydatne rzeczy ESLint z kolekcji [awesome-eslint](https://github.com/dustinspecker/awesome-eslint). +- [ ] Dodaj wyskakujące okienka dla powiadomień o plikach cookie/RODO (z odpowiednią stroną ustawień zarządzania) i pływające powiadomienia Google umożliwiające szybkie logowanie itp. +- [ ] Dodaj panel administracyjny zawierający sklepy, produkty, zamówienia, subskrypcje i płatności. +- [ ] Dodaj zaawansowane wskaźniki zainstalowanych pakietów, zmienne środowiskowe i ulepszenia rozmiarów ekranu TailwindCSS. + +Ten plan działania przedstawia najważniejsze funkcje i ulepszenia planowane do wdrożenia w tym starterze Next.js. Elementy nieoznaczone mogą być już skonfigurowane, ale mogły nie przejść szeroko zakrojonych testów. Jeśli znajdziesz jakieś błędy, utwórz problem. + +![Zrzut ekranu strony docelowej Relivator](/public/screenshot.png) + +🌐 [https://relivator.bleverse.com](https://relivator.bleverse.com) + +## Polecenia projektu + +- **`pnpm stripe:listen`**: To polecenie uruchamia odbiornik webhook Stripe i pomaga w konfigurowaniu zmiennych środowiskowych Stripe. Aby uruchomić to polecenie, może być konieczne zainstalowanie [Stripe CLI](https://stripe.com/docs/stripe-cli). +- **`pnpm appts`**: To polecenie przeprowadza kompleksowe sprawdzenie bazy kodu. Wykonuje sekwencyjnie polecenie „pnpm lint” w celu lintingu kodu, „pnpm typecheck” w celu sprawdzenia typu i zidentyfikowania błędów TypeScript, „pnpm format” w celu sformatowania w Prettier, „pnpm test” w celu sprawdzenia testów Jest i na koniec uruchamia `kompilacja pnpm`. +- **`pnpm last`**: To polecenie aktualizuje wszystkie pakiety projektu do najnowszych stabilnych wersji i aktualizuje `next-intl` do najnowszej wersji beta/rc. +- **`pnpm up-next:canary`**: To polecenie uruchamia `pnpm najnowszy` i aktualizuje Next.js i React do najnowszych wersji dostępnych w ich oddziałach Canary. Używaj tej opcji tylko wtedy, gdy masz pewność, dlaczego jej potrzebujesz. + +## O projekcie + +Położyliśmy fundamenty — teraz Twoja kolej, aby zagłębić się w szczegóły i przyspieszyć swój rozwój. I tak, baw się dobrze — pomyśl o Relivator jak o sandbox\*\*! To jest jak Minecraft; z Relivator możesz zbudować wszystko, ponieważ Twoja kreatywność nie ma granic! Odkryj wszystko, co nowe w z Next.js 14 i wieloma rzeczami internetowymi tu i teraz — dzięki Relivator. + +Możesz nawet myśleć o Relivator jako o frameworku Next.js! Więc w końcu, po prostu to złap, pobierz i ciesz się! I nie zapominaj: Twoja opinia i gwiazdki są dla nas bardzo ważne. Naciśnij ten gwiazdkowy przycisk, prosimy! Zrób forka! Twoje zaangażowanie podnosi projekt na nowe wyżyny! Jeśli masz umiejętności kodowania, Twoje wnioski kodu są zawsze mile widziane! + +Napotkałeś problemy? Dołącz do dyskusji w naszym repozytorium, otwórz problem lub napisz do nas na DM: [Twitter/𝕏](https://x.com/blefnk), [Discord](https://discord.gg/Pb8uKbwpsJ), [Fiverr](https://fiverr.com/blefnk), [LinkedIn](https://linkedin.com/in/blefnk) lub [Facebook](https://facebook.com/blefnk). + +Ten projekt ma wielkie plany i cenimy każdą pomoc, jaką możemy uzyskać! Jeśli chcesz dokonać własnych zmian, zapoznaj się z powyższą mapą drogową projektu, aby zobaczyć potencjalne ulepszenia projektu. Użyj także `Cmd/Ctrl+Shift+F` w VSCode i wyszukaj `todo:`, aby znaleźć miejsca wymagające uwagi. Odwiedź kartę **[Zatwierdzenia](https://github.com/blefnk/relivator/issues)**, aby uzyskać więcej możliwości pomocy. + +[![Dołącz do Relivator Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord] + +**🔥 Szybko się rozwijamy! Ogromne podziękowania dla [wszystkich naszych wspierających](https://github.com/blefnk/relivator/stargazers)! Sprawdź historię naszych gwiazd:** + +[![Wykres historii gwiazd](https://api.star-history.com/svg?repos=blefnk/relivator&type=Date)](https://star-history.com/#blefnk/relivator&Date) + +> **Uwaga** +> Starając się być bardzo użytecznym, ten plik README zawiera wiele informacji. Niektóre teksty mogą być nieaktualne i będą aktualizowane w miarę rozwoju. Daj nam znać na [stronie dyskusji](https://github.com/blefnk/relivator/discussions/6), jeśli zauważysz jakieś drobne problemy, takie jak nieaktualne informacje, uszkodzone linki lub błędy gramatyczne/ortograficzne w pliku README.md lub inne pliki. + +## Zmienne środowiskowe (plik `.env`) + +**Jako przewodnik użyj pliku [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env.example). Po prostu skopiuj z niego dane do nowego pliku `.env`.** + +Zmienne środowiskowe `DATABASE_URL`, `NEXT_PUBLIC_DB_PROVIDER` i `NEXT_PUBLIC_AUTH_PROVIDER` są obowiązkowe; inne są opcjonalne. Możesz wdrożyć aplikację w niezmienionej postaci, ale upewnij się, że sprawdziłeś, co jest konieczne. Chociaż aplikacja będzie działać bez pewnych zmiennych, ich brak może dezaktywować określone funkcje. + +Upewnij się, że dla podstawowych zmiennych środowiskowych zdefiniowano wartości domyślne. Nigdy nie przechowuj sekretów w pliku `.env.example`. W przypadku nowicjuszy lub klonujących repo użyj `.env.example` jako szablonu do utworzenia pliku `.env`, upewniając się, że nigdy nie zostanie on zatwierdzony. Zaktualizuj schemat w `/src/env.mjs` podczas dodawania nowych zmiennych. + +Dalsze [informacje o zmiennych środowiskowych są dostępne tutaj](https://nextjs.org/docs/app/building-your-application/configuring/environment-variables). + +_Już wkrótce pojawi się czystsza i ulepszona wersja tej sekcji. Miej oko!_ + +W wersji 1.1.0 Relivator plik `.env.example` został znacznie uproszczony i będzie jeszcze bardziej usprawniony w nadchodzących wersjach. Naszym celem jest zapewnienie, że nieokreślone wartości po prostu dezaktywują powiązane funkcje bez zatrzymywania kompilacji aplikacji. + +## Płatności w paski + +Skorzystaj z pliku [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env.example) jako przewodnika, gdzie i jak uzyskać wszystkie ważne klucze zmiennych środowiskowych dla Stripe , w tym webhooki zarówno dla hosta lokalnego, jak i wdrożenia. + +Lokalnie zainstaluj [Stripe CLI] () i uruchom polecenie „pnpm stripe:listen”, aby zainicjować odbiornik webhook Stripe. Ta czynność łączy Stripe z Twoim kontem i generuje klucz webhooka, który możesz następnie ustawić jako zmienną środowiskową w ustawieniach Stripe. + +Podczas testowania Stripe możesz wykorzystać jego dane testowe: `4242424242424242` | `12/34` | `567` | `Losowa nazwa` | „Przypadkowy kraj”. + +Proszę zapoznać się z plikiem [src/app/api/webhooks/stripe/route.ts](https://github.com/blefnk/relivator/blob/main/src/app/api/webhooks/stripe/route.ts) aby dowiedzieć się więcej o szczegółach działania Stripe w aplikacji. Możesz także odwiedzić [oficjalne repozytorium Stripe](https://github.com/stripe/stripe-node#readme), gdzie znajdziesz wiele przydatnych informacji. + +## Obsługa baz danych + +Relivator został zaprojektowany tak, aby bezproblemowo obsługiwać zarówno bazy danych `MySQL`, jak i `PostgreSQL`. Chociaż jest dostarczany z MySQL i [PlanetScale](https://planetscale.com) skonfigurowanymi jako domyślny dostawca bazy danych, przejście na PostgreSQL zapewniane przez [Neon](https://neon.tech)/[Vercel](https:/ /vercel.com/storage/postgres)/[Railway](https://railway.app) — to naprawdę proste jak bułka z masłem. Aby to zrobić, po prostu zaktualizuj klucz `NEXT_PUBLIC_DB_PROVIDER` w pliku `.env` do odpowiednio `neon`/`vercel`/`railway`. Chociaż Relivator jest zoptymalizowany dla tych dostawców, inne kompatybilne z Drizzle i NextAuth.js mogą również działać, chociaż mogą wymagać dodatkowej konfiguracji. + +Aby zainicjować nową bazę danych lub propagować zmiany schematu, wykonaj polecenie `pnpm mysql:push` lub `pnpm pg:push`. Dzięki temu wszystkie wersje robocze plików schematu — znajdujące się w `src/data/db/*` — zostaną odzwierciedlone w wybranym dostawcy bazy danych. + +W przypadku migracji baz danych użyj polecenia `mysql:generate`/`pg:generate`, przejrzyj folder `drizzle`, aby upewnić się, że wszystko jest w porządku (uruchom `db:drop`, jeśli nie) i uruchom komendę `pnpm:migrate`, gdy są gotowi. + +Upewnij się, że nie usuwasz ręcznie plików z katalogu `drizzle`. Jeśli konieczne jest cofnięcie migracji, użyj metody [`ppm db:drop`](https://orm.drizzle.team/kit-docs/commands#drop-migration), aby zarządzać tym w kontrolowany sposób. + +W wydaniu Relivator v1.1.0 dołożyliśmy wszelkich starań, aby zapewnić jednoczesną obsługę zarówno MySQL, jak i PostgreSQL dla Drizzle ORM. W przyszłych wersjach zamierzamy zintegrować Prisma ORM również z tym projektem. Dzięki temu projekt będzie jeszcze bardziej włączający dla wszystkich. + +Domyślnie upewniamy się, że każdy system baz danych ma wszystko to samo, używając zmiennej env `NEXT_PUBLIC_DB_PROVIDER` i eksportując rzeczy do pliku `src/data/db/index.ts`. Kiedy już zdecydujesz, który dostawca bazy danych najlepiej odpowiada Twoim potrzebom, możesz bezpiecznie skomentować lub usunąć niepotrzebnych dostawców w „skrzynce przełącznika” tego pliku, a następnie można również usunąć powiązane pliki schematu; pamiętaj, że może być również wymagana niewielka dodatkowa praca. + +### Dodatkowe uwagi na temat paska + +Trasa interfejsu API webhooka Stripe nie musi być wywoływana jawnie w aplikacji, na przykład po wybraniu przez użytkownika planu subskrypcji lub dokonaniu zakupu. Webhooki działają niezależnie od działań użytkownika na interfejsie i służą Stripe do przekazywania zdarzeń bezpośrednio do Twojego serwera. + +Gdy po stronie Stripe nastąpi zdarzenie, np. pomyślna płatność, Stripe generuje obiekt zdarzenia. Obiekt ten jest następnie automatycznie wysyłany do określonego punktu końcowego, albo w panelu kontrolnym Stripe, albo w celach testowych w pliku `package.json` poprzez interfejs CLI Stripe. Na koniec trasa API Twojego serwera odbiera zdarzenie i odpowiednio je przetwarza. + +Na przykład, gdy użytkownik wybierze plan subskrypcji, zazwyczaj najpierw użyjesz interfejsu API Stripe, aby utworzyć obiekt „Zamiar płatności” lub „Zamiar konfiguracji”. Tę akcję można wykonać po stronie klienta lub serwera. Następnie frontend potwierdza płatność za pomocą Stripe.js, kończąc w ten sposób proces konfiguracji płatności lub subskrypcji. + +Twój webhook jest automatycznie uruchamiany na podstawie tych zdarzeń. Nie ma potrzeby ręcznego „wywoływania” trasy webhooka; Stripe zarządza tym za Ciebie zgodnie z Twoimi ustawieniami w Panelu Stripe lub w pliku `package.json` na potrzeby testów lokalnych. + +Po wdrożeniu aplikacji nie zapomnij podać adresu URL elementu webhook w panelu kontrolnym Stripe. Przejdź do sekcji Webhooks i wprowadź następujący adres URL: `https://twojadomena.com/api/webhooks/stripe`. + +Podsumowując, nie ma potrzeby określania ścieżki do trasy API Stripe, w której użytkownik wybiera plan subskrypcji. Mechanizm webhooka działa niezależnie i jest uruchamiany automatycznie przez Stripe. + +## Internacjonalizacja + +_Bądź na bieżąco z dalszymi rozszerzeniami tej sekcji w przyszłości._ + +Wielojęzyczność w Bleverse jest szanowana. Uwielbiamy o tym dyskutować i planujemy zagłębić się w temat internacjonalizacji routera aplikacji Next.js 14 w przyszłych artykułach. + +Użyj `pnpm lint:i18n`, aby zweryfikować pliki i18n. Narzędzie próbuje naprawić problemy, jeśli to możliwe, oferując takie funkcje, jak sortowanie rosnąco. Brak sygnału wyjściowego oznacza, że wszystko jest w porządku. + +Obecnie wszystkie języki są tłumaczone maszynowo. Planowane są przyszłe poprawki przez native speakerów. + +Należy pamiętać, że wiadomości i18n z innego naszego projektu open source są obecnie obecne i wkrótce zostaną usunięte. + +Do internacjonalizacji używamy wersji beta/rc _next-intl_. Więcej informacji o [tutaj](https://next-intl-docs.vercel.app/blog/next-intl-3-0) i [tutaj]( /pociągnij/149). + +**Obecnie obsługiwane lokalizacje (możesz dodać własne ręcznie):** + +de-DE, en-US, es-ES, fa-IR, fr-FR, hi-IN, it-IT, pl-PL, tr-TR, uk-UA. + +## Zasady, decyzje projektowe, spostrzeżenia dotyczące kodu, zalecenia + +_Nieustannie udoskonalamy tę sekcję. Wpłaty są mile widziane!_ + +Nasz starter ma być bogatym źródłem informacji dla programistów na wszystkich etapach ich podróży. W blokach komentarzy i dedykowanych sekcjach na końcu wybranych plików znajdziesz cenne spostrzeżenia i wyjaśnienia na szeroki zakres tematów. Gorąco zachęcamy do Twojego wkładu w ulepszanie tych edukacyjnych bryłek! + +**Zasady (W.I.P):** + +- [ ] Każdy plik i komponent powinien być tworzony świadomie, z pewnym poczuciem inteligencji i z myślą o wydajności. +- [ ] Musimy myśleć o projekcie tak, jakby był planetą z własnymi kontynentami, krajami, miastami, pokojami, osobami, podmiotami itp. + +**Wysoce zalecane rozszerzenia VSCode:** + +1. [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments) +2. [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) +3. [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens) +4. [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) +5. [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) +6. [i18n Ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) +7. [JavaScript and TypeScript Nightly](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next) +8. [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) +9. [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) +10. [POP! Icon Theme](https://marketplace.visualstudio.com/items?itemName=mikekscholz.pop-icon-theme) +11. [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) +12. [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) +13. [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) +14. [TailwindCSS Tune](https://marketplace.visualstudio.com/items?itemName=omkarbhede.tailwindcss-tune) +15. [TypeScript Essential Plugins](https://marketplace.visualstudio.com/items?itemName=zardoy.ts-essential-plugins) + +
+ Dlaczego zalecane są „Niezbędne wtyczki TypeScript” + +«Kompletna wtyczka TypeScript, która ulepsza każdą wbudowaną funkcję, taką jak uzupełnienia, definicje, odniesienia itd., a także dodaje nawet nowe funkcje zabójcze TypeScript, dzięki czemu możesz szybciej pracować z dużymi bazami kodu! Sprawiamy, że uzupełnienia są bardziej pouczające. Definicje, odniesienia (a czasem nawet uzupełnienia) są mniej hałaśliwe. I wreszcie naszym głównym celem jest zapewnienie najbardziej konfigurowalnego środowiska TypeScript dla funkcji IDE.» © [Repozytorium rozszerzeń VSCode](https://github.com/zardoy/typescript-vscode-plugins#readme) + +Uwaga: możesz skonfigurować ustawienia rozszerzenia, otwierając interfejs użytkownika ustawień VSCode i wyszukując tam `@ext:zardoy.ts-essential-plugins`. + +
+ +**Zaawansowane zmienne środowiskowe:** + +Plik `.env.example` zawiera wszystkie niezbędne zmienne dla w pełni funkcjonalnej strony internetowej, dostosowanej dla początkujących. Jeśli jednak potrzebujesz zaawansowanych konfiguracji, możesz w razie potrzeby zmodyfikować dowolną wartość w pliku `.env`. + +**Informacje o folderze wtyczek:** + +Ten folder zawiera opcjonalne wtyczki do Relivator. Wtyczki te, opracowane przez @blefnk i innych autorów, rozszerzają funkcjonalność i zapewniają dodatkowe funkcje. Jeśli stwierdzisz, że niektóre wtyczki nie są korzystne dla Twojego projektu, możesz usunąć odpowiadające im foldery. + +**Funkcja nad stałą dla komponentów:** + +Zalecamy używanie słowa kluczowego `function` zamiast `const` podczas definiowania komponentów React. Używanie „funkcji” często poprawia ślady stosu, ułatwiając debugowanie. Dodatkowo sprawia, że semantyka kodu jest bardziej przejrzysta, ułatwiając w ten sposób innym programistom zrozumienie Twoich intencji. + +**Osobiste rekomendacje:** + +Zalecamy regularne czyszczenie pamięci podręcznej przeglądarki i usuwanie folderu `.next`, aby zapewnić optymalną wydajność i funkcjonalność. + +Obecnie nie korzystamy z Contentlayer ze względu na jego niestabilność w systemie Windows. Dlatego badamy możliwości jego użycia w pliku konfiguracyjnym `.env`. Plany na przyszłość mogą obejmować opracowanie własnego rozwiązania do pisania treści. Integracja z dostawcami zewnętrznymi, takimi jak Sanity, może być również przyszłą funkcją, z odpowiednimi opcjami włączania/wyłączania. + +**Konfiguracja projektu:** + +Plik `src/app.ts` zawiera krytyczne konfiguracje umożliwiające modyfikację zawartości i ustawień witryny internetowej, umożliwiając: + +- Kontroluj treści prezentowane na stronie. +- Dostosuj różne ustawienia, takie jak dezaktywacja przełącznika motywu. +- Zarządzaj ogólnymi informacjami dotyczącymi całej witryny. + +Dostosuj ten plik zgodnie ze swoimi wymaganiami. + +**Uwierzytelnianie:** + +Konfigurowanie uwierzytelniania jest proste. + +Dostępnych dostawców logowania dla Clerk możesz skonfigurować w pliku `src/app.ts`. + +Pamiętaj, że Clerk w pełni współpracuje z usługami stron trzecich, takimi jak „Google PageSpeed Insight”, tylko wtedy, gdy używana jest domena i aktywne klucze. + +_Ta sekcja zostanie wkrótce wdrożona._ + +**Jak wdrożyć projekt:** + +Przed przystąpieniem do wstępnego wdrożenia sprawdź sekcję _Jak zainstalować i rozpocząć pracę_. + +Zapoznaj się z przewodnikami wdrażania dla [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify) i [Docker](https://create.t3.gg/en/deployment/docker), aby uzyskać więcej informacji. Projekt został przetestowany jedynie na Vercel; prosimy o poinformowanie nas, jeśli napotkasz problemy z innymi usługami wdrożeniowymi. + +**Projekt systemu i komponentów interfejsu użytkownika:** + +DO ZROBIENIA: Wdrożenie systemu projektowania i przewodnika po stylu. + +Domyślnie ten projekt zawiera komponenty z różnych bibliotek, a także komponenty [shadcn/ui](https://ui.shadcn.com) bez stylu. Shadcn/ui umożliwia nawet generowanie nowych komponentów interfejsu użytkownika przy użyciu interfejsu CLI (gdzie „przyciskiem” może być dowolny element interfejsu użytkownika Shadcn): `pnpm dlx shadcn-ui@latest add przycisk`. + +**Zgodność z bułkami:** + +`Relivator` może już wykorzystać kilka fantastycznych funkcji **[`Bun`](https://bun.sh)**. W przypadku tego startera obecnie zalecamy użycie `pnpm`. Pełna obsługa i kompatybilność Bun zostaną dostarczone, gdy tylko dostępne będą pliki binarne systemu Windows. _Rozbudowa sekcji już wkrótce._ + +**Typowy przepływ pracy w aplikacji (wkrótce):** + +Obszerny przewodnik szczegółowo opisujący typowe zastosowania zostanie wkrótce wdrożony. Na razie oto krótki przegląd: + +1. _Uruchom serwer deweloperski_: `ppm dev` +2. _Konfiguracja środowiska_: `.env` +3. _Konfiguracja oprogramowania pośredniego_: `middleware.ts` +4. _Dodatkowe kroki_: Bądź na bieżąco... + +**FAQ (często zadawane pytania):** + +_Q:_ Jak przyznać uprawnienia administratora sobie lub innemu użytkownikowi? +_A:_ Po prostu uruchom `pnpm db:studio`, przejdź do tabeli `acme_user` i ustaw `role: admin` dla użytkownika, którego potrzebujesz. W przyszłości, jeśli posiadasz uprawnienia administratora, będziesz mógł zmieniać uprawnienia wybranych użytkowników bezpośrednio ze strony administratora frontendu. + +_Q:_ Co oznacza zmienna środowiskowa `DEV_DEMO_NOTES`? +_A:_ Po prostu tego nie używaj. Jest używany wyłącznie na oficjalnej [witrynie demonstracyjnej Relivator](https://relivator.bleverse.com) w celu zaprezentowania pewnych funkcji, które nie są potrzebne w rzeczywistych aplikacjach. + +_P:_ Używam PlanetScale jako mojego dostawcy baz danych. Po przerwie w projekcie wyskakuje mi błąd „nie można połączyć się z oddziałem” w konsoli. Jak mogę to naprawić? +_A:_ Po prostu przejdź do panelu PlanetScale i kliknij przycisk „obudź”. Jeżeli Twoja baza danych nie śpi, a problem nadal występuje, skontaktuj się z nami. + +**Zalecane rzeczy do nauczenia:** + +1. [Introduction to Next.js and React](https://www.youtube.com/watch?v=h2BcitZPMn4) by [Lee Robinson](https://twitter.com/leeerob) +2. [Relivator: Next.js 14 Starter (Release Announce of Relivator on Medium)](https://cutt.ly/awf6fScS) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +3. [Welcome to the Wild World of TypeScript, Mate! Is it scary?](https://cutt.ly/CwjVPUNu) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +4. [React: Common Mistakes in 2023](https://docs.google.com/presentation/d/1kuBeSh-yTrL031IlmuwrZ8LvavOGzSbo) by [Cory House](https://twitter.com/housecor) +5. [Thoughts on Next.js 13, Server Actions, Drizzle, Neon, Clerk, and More](https://github.com/Apestein/nextflix/blob/main/README.md#overall-thoughts) by [@Apestein](https://github.com/Apestein) +6. [Huge Next-Multilingual Readme About i18n](https://github.com/Avansai/next-multilingual#readme) by [@Avansai](https://github.com/Avansai) + +_Więcej zasobów edukacyjnych można znaleźć w plikach tego repozytorium._ + +## Migracja z innych starterów do Relivator + +Jeśli zastanawiasz się, który starter Next.js wybrać do swojego następnego projektu, na przykład [create-next-app](https://vercel.com/templates/next.js/nextjs-boilerplate), [create-t3- aplikacja](https://create.t3.gg), [Next.js Commerce (Vercel Store)](https://vercel.store), [SkateShop](https://github.com/sadmann7/skateshop) , [OneStopShop](https://github.com/jackblatch/OneStopShop), [Taksonomia](https://github.com/shadcn-ui/taxonomy)/[nextflix]( /nextflix), [ładunek] (), [Medusa] () lub [dowolne inne projekty] ( .com/blefnk/relivator/wiki/Project-Credits-&-Contributors) – tutaj możesz zakończyć swoje poszukiwania. + +Wszystkie te projekty są niesamowite i jeśli przemawia do Ciebie minimalizm, polecamy je sprawdzić. Twórcy tych projektów to niezwykle utalentowane osoby, za co serdecznie im dziękujemy. Bez nich ten starter by nie istniał. + +Jednakże, **jeśli potrzebujesz POWERHOUSE** – Relivator odpowiedniego do każdego scenariusza – to **Relivator to zdecydowanie starter, którego potrzebujesz**, aby go teraz rozwidlić! Relivator zawiera wiele funkcji ze wszystkich tych projektów i stara się przesuwać granice możliwości Next.js i React. Dzięki Relivator Twoje możliwości są nieograniczone. + +Jeśli **wybierzesz Relivator jako swój następny projekt startowy** i chcesz migrować z powyższych projektów do Relivator, daj nam kilka dni. Będziemy korzystać z wiki projektu, aby napisać tam przewodnik, jak to zrobić. W tym przewodniku dowiesz się jak przenieść swój projekt do naszego projektu. Przewodnik po migracji będzie dostępny zarówno dla katalogów „aplikacja”, jak i „strony”. + +## Wkład i napisy + +_Ta sekcja zostanie wkrótce wzbogacona o prostsze kroki umożliwiające przygotowanie wszystkiego._ + +Wpłaty są mile widziane! Wyrażamy naszą wdzięczność wszystkim, którzy przyczynili się do powstania tego repozytorium. Twój wkład zostanie doceniony. Jeśli masz jakieś pytania lub sugestie, otwórz problem. Aby uzyskać więcej informacji, zobacz [przewodnik współautora](https://github.com/blefnk/relivator/blob/main/contributing.md). + +Odwiedź [tę specjalną stronę wiki](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors), aby wyświetlić pełną listę twórców i współautorów. Aby przyczynić się do Bleverse Relivator, wykonaj następujące kroki: + +1. Zacznij od przeczytania sekcji „Jak zainstalować i rozpocząć” na górze tego repozytorium oraz od przeczytania pliku [CONTRIBUTING.md](https://github.com/blefnk/relivator/blob/main/contributing.md) strona. +2. Utwórz gałąź: `git checkout -b `. +3. Wprowadź i zatwierdź zmiany: `git commit -m ''` +4. Prześlij do oryginalnej gałęzi: `git Push Origin ` +5. Prześlij żądanie ściągnięcia. + +Alternatywnie przejrzyj dokumentację GitHuba na temat [jak utworzyć żądanie ściągnięcia](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) . + +## Licencja projektu + +Ten projekt jest objęty licencją MIT i można go swobodnie wykorzystywać i modyfikować do własnych projektów. Szczegóły znajdziesz w pliku [LICENSE.md](https://github.com/blefnk/relivator/LICENSE.md). + +🌐 [https://relivator.bleverse.com](https://relivator.bleverse.com) + +--- + +**Śledź nas wszędzie:** [GitHub](https://github.com/blefnk) | [Twitter/𝕏](https://x.com/blefnk) | [Discord](https://discord.gg/Pb8uKbwpsJ) | [Fiverr](https://fiverr.com/blefnk) | [LinkedIn](https://linkedin.com/in/blefnk) | [Facebook](https://facebook.com/blefnk) + +Ten starter Next.js 14 został stworzony z miłością przez [@blefnk Nazarii Korniienko](https://github.com/blefnk) i niesamowitą [społeczność Bleverse OSS]( /wiki/Project-Credits-&-Contributors). Jesteśmy głęboko wdzięczni za wszelki wkład i wsparcie udzielone przez wszystkich na rzecz tego projektu. + +--- + +Miłego kodowania! Rozpocznij swoją przygodę z kodowaniem, ucz się, iteruj i co najważniejsze – ciesz się procesem! Pamiętaj – to przestrzeń nauki i eksperymentowania. Zanurz się i rozkoszuj podróżą! 🚀🌌 + +![Obraz OG Bleverse Relivator](/public/og-image.png) + +Sprawdź [nasz inny darmowy starter Next.js 14](https://github.com/blefnk/reliverse). To, monorepo, zapewnia technologię używaną w bieżącym starterze i dodaje: Turborepo/Turbopack, Prisma, Valibot, Lucia, Clerk i wiele więcej, ponieważ eksperymentalnie próbujemy połączyć wszystkie istotne i powszechnie używane technologie. To tak jakby myśleć o: Reliverse (WordPress) + Relivator (WooCommerce) = 😍. + +[bleverse-discord]: https://discord.gg/Pb8uKbwpsJ diff --git a/.github/translations/readme/ukrainian.md b/.github/translations/readme/ukrainian.md new file mode 100644 index 00000000..5f679303 --- /dev/null +++ b/.github/translations/readme/ukrainian.md @@ -0,0 +1,402 @@ +# Relivator: Найбагатший на можливості Next.js 14 Starter + + + +🌐 [Uruchom demo-wersję Relivator](https://relivator.bleverse.com) + +**Увага: Текст нижче в більшості є машинним перекладом файлу [README.md](https://github.com/blefnk/relivator#readme). Ми активно працюємо над його покращенням. Будь ласка, зверніться до оригіналу, якщо певні частини тексту виявляться незрозумілими.** + +Ми прагнемо створити найбільш функціональний і глобальний Next.js стартер у світі. Пропонуючи більше, ніж просто код — це подорож. Він стабільний і готовий до виробництва. Прокрутіть вниз і ознайомтеся із захоплюючим списком можливостей проєкту, включаючи перемикання між Clerk/NextAuth.js і MySQL/PostgreSQL на льоту. + +Щотижня ми надаємо ранній доступ до майбутніх плагінів Relivator трьом випадково обраним користувачам. Просто "відмітьте цей репозиторій" і [повідомте нам, як з вами зв'язатися] (). Для обговорення приєднуйтесь до [Discord проєкту](https://discord.gg/Pb8uKbwpsJ). + +## Як встановити та розпочати роботу + +1. **Основні інструменти**: Переконайтеся, що [_VSCode_](https://code.visualstudio.com), [_Git_](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), _GitHub Desktop_ ([Windows/macOS](https://desktop.github.com/) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)) та _Node.js LTS_ ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) встановлено. +2. \*\*Клонування проєкту: [_Створити новий форк_](https://github.com/blefnk/relivator/fork) та завантажте його за допомогою GitHub Desktop. +3. **Налаштування**: Відкрийте VSCode і завантажте теку з проєктом. Натисніть `Ctrl+Shift+P` і знайдіть `>Create New Terminal`. Встановіть _PNPM_ за допомогою `corepack enable`. Потім введіть `pnpm install` для встановлення пакунків. Далі скопіюйте файл `.env.example` до нового файлу `.env` і заповніть принаймні поля `NEXT_PUBLIC_DB_PROVIDER` та `DATABASE_URL`. Нарешті, надішліть схему бази даних до вашої бази даних за допомогою `pnpm mysql:push` або `pnpm pg:push`. +4. \*\*Запуск, зупинка, збірка: Використовуйте `pnpm dev` для запуску програми (відвідайте , щоб перевірити це). Зупиніть його, сфокусувавшись на консолі і натиснувши `Ctrl+C`. Після внесення змін зберіть програму за допомогою `pnpm build`. Не біда, якщо ви побачите попередження Clerk. +5. \*\*Фіксація та розгортання: Завантажте ваш проєкт до вашого профілю на GitHub за допомогою GitHub Desktop. Потім розгорніть його, імпортувавши проєкт у [Vercel] (), зробивши ваш веб-сайт загальнодоступним в Інтернеті. Якщо ви хочете поділитися своєю роботою, отримати відгуки або попросити про допомогу, ви можете зробити це або [на нашому сервері Discord](https://discord.gg/Pb8uKbwpsJ), або [через обговорення на GitHub](https://github.com/blefnk/relivator/discussions). + +Будь ласка, прокрутіть сторінку вниз, щоб побачити багато корисної інформації про те, як все працює в проєкті. + +## Чеклист особливостей проєкту + +Перестаньте бігати від одного стартера до іншого. З Relivator ви матимете необмежені можливості. Ви можете створити все, що завгодно; всі інструменти вже підготовлені, це все для вас. + +**Примітка:** Кожні два тижні ми даруємо ранній доступ до майбутніх плагінів Relivator трьом випадково вибраним особам. Просто поставте зірочку цьому репозиторію та [повідомте нас, як з вами зв'язатися](https://forms.gle/NXZ6QHpwrxh52VA36). Для обговорень приєднуйтесь до [Discord проєкту](https://discord.gg/Pb8uKbwpsJ). + +- [x] Використані [Next.js 14](https://nextjs.org), [React 18](https://react.dev), [TailwindCSS](https://tailwindcss.com) та [TypeScript](https://typescriptlang.org) слугують основними технологіями проєкту. +- [x] Реалізували автентифікацію за допомогою [Clerk](https://clerk.com/) та [NextAuth.js](https://authjs.dev)\*\*. +- [x] Розпочато широку інтернаціоналізацію **10 мовами** (_англійська, німецька, іспанська, перська, французька, хінді, італійська, польська, турецька, українська_), використовуючи [next-intl](https://next-intl-docs.vercel.app). +- [x] Впровадив [Drizzle ORM](https://orm.drizzle.team), використовуючи **бази даних MySQL та PostgreSQL**, а також сервіси [PlanetScale](https://planetscale.com)/[Neon](https://neon.tech)/[Vercel](https://vercel.com)/[Railway](https://railway.app). +- [x] Успішно налаштували `next.config.mjs` з підтримкою i18n та MDX. +- [x] Прагнув до ретельної документації та дружнього до новачків підходу протягом усього проєкту. +- [x] Вміло налаштував та прокоментував `middleware.ts` для i18n та next-auth. +- [x] Налаштував систему Content-Security-Policy (CSP) як захід безпеки для запобігання XSS-атакам (за замовчуванням вимкнено). +- [x] Надано зразкові налаштування VSCode та рекомендовані розширення. +- [x] Оптимізовано [Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) для SEO, інтегрувавши обробники файлової системи. +- [x] Інтегровано індикатор розміру екрану TailwindCSS для локальних запусків проєктів. +- [x] Створено систему підписки та оплати за допомогою [Stripe](hhttps://github.com/stripe/stripe-node#readme). +- [x] Забезпечили перевірку безпеки типу для схем проєкту та полів інтерфейсу за допомогою [Zod](https://zod.dev). +- [x] Використано [EsLint](https://eslint.org) та [Prettier](https://prettier.io) для забезпечення безпеки та читабельності коду. +- [x] Елегантно виконали систему шрифтів, використовуючи [Inter](https://rsms.me/inter) та додаткові шрифти. +- [x] Розробили вітрину магазину, що включає функціональність продуктів, категорій та підкатегорій. +- [x] Розробили сучасний, чітко скомпонований інтерфейс користувача з використанням [Radix](https://radix-ui.com), з привабливими компонентами інтерфейсу з [shadcn/ui](https://ui.shadcn.com). +- [x] Створено вичерпний, зручний для початківців `README.md`, включаючи описи [змінних оточення](https://nextjs.org/docs/basic-features/environment-variables). +- [x] Реалізовано функціональність блогу за допомогою файлів MDX. +- [x] Реалізовано [tRPC](https://trpc.io) та [TanStack Query](https://tanstack.com/query) (з [React Normy](https://github.com/klis87/normy#readme)) для розширеної вибірки даних на сервері та клієнті. +- [ ] Використовуйте абсолютні шляхи, де це можливо. +- [ ] Використовуйте [Kysely](https://kysely.dev) з Drizzle для досягнення повної типової безпеки конструктора SQL-запитів TypeScript. +- [ ] Перекладіть README.md та пов'язані з ним файли більшою кількістю мов. +- [ ] Перетворення з простого магазину електронної комерції на універсальний засіб для створення веб-сайтів. +- [ ] Привести до ладу `package.json` з правильно встановленими та впорядковано відсортованими пакунками у `dependencies` та `devDependencies`. +- [ ] Автору проєкту слід опублікувати серію детальних відео про те, як користуватися цим проєктом. Також мають знайтися ентузіасти, готові опублікувати власні відео про проєкт на своїх ресурсах. +- [ ] Максимально зменшити кількість пакунків проєкту, конфігураційних файлів і т.д., наскільки це можливо. +- [ ] Зменшити вкладеність HTML-тегів та забезпечити коректне використання HTML-тегів, коли це можливо. +- [ ] Надавайте пріоритет доступності як для користувача програми UI (User Interface) та UX (User Experience), так і для розробника DX (Developer Experience). Підтримуйте юзабіліті без шкоди для естетики. +- [ ] Надавайте перевагу `функціям`/`типам`, а не `константам`/`інтерфейсам`, щоб підтримувати чистий і зрозумілий для початківців код. +- [ ] Оптимізуйте всі елементи програми, щоб покращити швидкість холодного запуску та збірки. +- [ ] Мігруйте на NextAuth.js' [next-auth@beta](https://npmjs.com/package/next-auth?activeTab=versions) ([обговорення](https://github.com/nextauthjs/next-auth/releases/tag/next-auth%405.0.0-beta.4)), а також на Clerk's [@clerk/*@alpha]. +- [ ] Перемістіть кожну пов'язану систему до її спеціальної теки (до теки `src/core`), щоб будь-яку систему можна було легко вилучити з проєкту за потреби. +- [ ] Перенесіть стилі компонентів у файли .css або .scss, або скористайтеся пакетами, які надають синтаксичний цукор для стилів у файлах .tsx. +- [ ] Керуйте перевіркою електронної пошти, підпискою на розсилки та email-маркетингом за допомогою [Resend](https://resend.com) та [React Email](https://react.email). +- [ ] Зробіть кожну змінну оточення необов'язковою, щоб додаток міг працювати без жодних налаштувань, просто опускаючи певні секції коду за необхідності. +- [ ] Переконайтеся, що кожна сторінка та проміжне програмне забезпечення мають зелений або жовтий, але не червоний колір після збірки в терміналі розробки. +- [ ] Підтримуйте проєкт на найкращому з можливих способів написання хорошого і чистого коду, дотримуючись таких рекомендацій, як [Airbnb JavaScript Style Guide] () / [Airbnb React/JSX Style Guide] (). +- [ ] Не допускайте в проєкті `@ts-expect-error` та пов'язаних з ним не дуже безпечних з точки зору типізації речей. +- [ ] Зменшити кількість файлів cookie до мінімуму, підготуватися до майбутнього без файлів cookie, впровадити управління файлами cookie та сповіщення. +- [ ] Впровадити систему коментарів до продуктів, включаючи типи "Відгук" і "Питання". +- [ ] Інтегрувати цінні ідеї з [Next.js Weekly] () в цей стартер. +- [ ] Інтегрувати цінні речі з [Next.js' Examples](https://github.com/vercel/next.js/tree/canary/examples) в цей проєкт. +- [ ] Реалізувати розумну та уніфіковану систему логування, як для розробки, так і для виробництва, як для консолі, так і для запису в певні файли. +- [ ] Реалізувати найкраще з [Payload CMS](https://github.com/payloadcms/payload) з покращеннями від Relivator. +- [ ] Реалізувати завантаження файлів за допомогою [UploadThing](https://uploadthing.com) та [Cloudinary](https://cloudinary.com). +- [ ] Реалізувати повну підтримку `next dev --turbo`. +- [ ] Реалізувати динамічне перемикання між функціями програми, наприклад, провайдером бази даних, за допомогою відповідних перевірок змінних оточення. +- [ ] Реалізувати підтримку Storybook 8.0 (прочитайте анонс "[Storybook for React Server Components](https://storybook.js.org/blog/storybook-react-server-components)"). +- [ ] Реалізуйте можливості співпраці, використовуючи такі речі, як [liveblocks] (). +- [ ] Додайте до проєкту документацію і перенесіть кожне пояснення з коду в цю документацію. +- [ ] Реалізувати Sentry для обробки помилок та звітів CSP для програми. +- [ ] Реалізувати глибоку сумісність функцій та легку міграцію з Reliverse. +- [ ] Реалізувати власну версію [Saas UI] () від Relivator/Reliverse для повної сумісності з нашим проєктом, з використанням лише необхідної функціональності, з використанням Tailwind та Shadcn замість Chakra. +- [ ] Реалізувати наш власний форк бібліотеки [Radix Themes](https://radix-ui.com/) з налаштуванням `
` як обгортки замість поточного `
`; АБО реалізувати наше власне рішення, яке генерує Tailwind замість класів Radix. +- [ ] Реалізувати функції штучного інтелекту та чату, використовуючи, наприклад, [Vercel AI SDK](https://sdk.vercel.ai/docs) (див.: [Представляємо Vercel AI SDK](https://vercel.com/blog/introducing-the-vercel-ai-sdk)). +- [ ] Реалізувати просунуте перемикання тем без перезавантаження, використовуючи Tailwind Dark Mode з підтримкою [React Server Side support](https://michaelangelo.io/blog/darkmode-rsc) та динамічних куків. +- [ ] Реалізувати тестування [Jest](https://jestjs.io), оптимізоване для Next.js. +- [ ] Реалізувати повну підтримку [Million.js](https://million.dev) (читайте [Million 3.0 Announcement](https://million.dev/blog/million-3), щоб дізнатися більше). +- [ ] Реалізувати типо-безпечну підтримку [GraphQL](https://hygraph.com/learn/graphql) за допомогою фреймворку [Fuse.js](https://fusejs.org). +- [ ] Реалізувати CLI для швидкого отримання Relivator лише з вибраними опціями; спробуйте використати [Charm](https://charm.sh) для побудови Reliverse CLI. +- [ ] Гарантувати, що кожна можлива сторінка буде обгорнута за допомогою попередньо визначених обгорток оболонки. +- [ ] Коментуйте весь код, зберігаючи його чистим. +- [ ] Повністю розробити просунуті сторінки реєстрації та входу, інтегруючи як соціальні мережі, так і класичні методи форм. +- [ ] Дотримуйтесь рекомендацій з [Material Design 3] () та інших систем дизайну, коли це доречно. — Дотримуйтесь найкращих практик зі статей та відео, таких як "[10 антипатернів React, яких слід уникати] ()" (також перевірте їхній розділ коментарів). +- [ ] Створіть, задокументуйте та дотримуйтесь угод, наприклад, підтримуйте єдиний стиль імен для файлів та змінних. +- [ ] Створіть повний i18n, використовуючи коди країни та місцевості, і підтримуйте ще більше мов. Переконайтеся, що носії мови перевіряють кожну мову після машинного перекладу. +- [ ] Розгляньте можливість використання бібліотеки [next-international](https://github.com/QuiiBz/next-international). +- [ ] Усуньте всі вимкнення у файлі `.eslintrc.cjs`, налаштуйте config на суворий, але дружній до початківців лад. +- [ ] Забезпечити максимальну безпеку типів, використовуючи строгий режим у [TypeScript](https://typescriptlang.org), typedRoutes, Zod, проміжному програмному забезпеченні тощо. +- [ ] Переконайтеся, що у проєкті немає невикористовуваних елементів, зокрема пакунків, бібліотек, змінних тощо. +- [ ] Переконайтеся в повній підтримці та сумісності Next.js Edge. +- [ ] Переконайтеся, що проєкт використовує цикли там, де це дійсно необхідно (стаття: [Кодування без циклів] ()). +- [ ] Забезпечити повну підтримку та сумісність [Biome](https://biomejs.dev/), [Bun](https://bun.sh) та [Docker](https://docker.com). +- [ ] Переконайтеся, що всі мови веб-сайту є граматично правильними та відповідають останнім правилам для кожної мови. +- [ ] Переконайтеся, що всі елементи в проєкті відсортовані за зростанням, якщо інше сортування не вимагається деінде. +- [ ] Забезпечте доступність для **користувачів**, **розробників** (як початківців, так і експертів), **ботів** (таких як [Googlebot](https://developers.google.com/search/docs/crawling-indexing/googlebot) або [PageSpeed Insights Crawler](https://pagespeed.web.dev)), для **кожного**. +- [ ] Вдосконалити конфігурацію `middleware.ts` за допомогою реалізації проміжного програмного забезпечення. +- [ ] Використовувати усі відповідні бібліотеки [TanStack](https://tanstack.com). +- [ ] Елегантно налаштувати `app.ts`, пропонуючи єдиний конфіг для заміни всіх інших. +- [ ] Розробити робочі процеси як для продавців, так і для клієнтів. +- [ ] Розробити вдосконалену вітрину магазину з продуктами, категоріями та підкатегоріями. +- [ ] Розробити вдосконалену сторінку 404 "Не знайдено" з повною підтримкою інтернаціоналізації. +- [ ] Розробити вдосконалену систему реєстрації, входу та відновлення за допомогою електронної пошти-пароля та магічних посилань. +- [ ] Розробити ще більш складну реалізацію підписок користувачів і системи оформлення замовлення через Stripe; а також написати Jest/Ava тести для Stripe і використовувати файли даних `.thing/hooks/stripe_*.json` [webhookthing](https://docs.webhookthing.com) для цих тестів. +- [ ] Зменшити кількість файлів, об'єднавши схожі елементи тощо. +- [ ] Створити максимально дружній до новачків та естетично привабливий стартовий екран. +- [ ] Створити розширену систему сповіщень, включаючи тостери, виринаючі вікна та сторінки. +- [ ] Створити нову цільову сторінку з відмінним дизайном та оновленими компонентами, а також повністю переробити всі інші сторінки та компоненти. +- [ ] Переконайтеся, що проєкт не містить дублікатів, наприклад, файлів, компонентів тощо. +- [ ] Провести корисні тести, включаючи можливі стрес-тести, щоб змоделювати та оцінити продуктивність додатку в умовах високого трафіку. +- [ ] Повністю налаштувати Next.js 14 App Router, з маршрутами API, керованими обробниками маршрутів, включаючи RSC і всі інші нові функції. +- [ ] Заповнити контрольний список BA11YC (Bleverse Accessibility Convention). +- [ ] Заповнити частини контрольного списку [BA11YC (Bleverse Accessibility Convention)] (). +- [ ] Підвищити показники продуктивності застосунку на таких платформах, як Google PageSpeed Insights. Переконайтеся, що додаток пройшов усі суворі тести. +- [ ] Застосовуйте бібліотеку [next-usequerystate](https://github.com/47ng/next-usequerystate), де це доречно ([прочитайте статтю](https://francoisbest.com/posts/2023/storing-react-state-in-the-url-with-nextjs)). +- [ ] Додайте до проєкту цікаві та корисні типи, наприклад, за допомогою бібліотеки [type-fest](https://github.com/sindresorhus/type-fest). +- [ ] Додайте найцінніші та найкорисніші речі ESLint з колекції [awesome-eslint](https://github.com/dustinspecker/awesome-eslint). +- [ ] Додати виринаючі вікна для сповіщень про файли cookie/GDPR (з відповідною сторінкою налаштувань управління), а також плаваючі сповіщення Google для швидкого входу в систему тощо. +- [ ] Додати інформаційну панель адміністратора, яка включає магазини, продукти, замовлення, підписки та платежі. — [ ] Додати розширені індикатори для встановлених пакунків, змінних середовища та покращення розмірів екрану TailwindCSS. + +Ця дорожня карта описує ключові функції та покращення, заплановані для реалізації в цьому стартовому Next.js. Елементи, які не позначені, можуть бути вже налаштовані, але ще не пройшли всебічне тестування. Якщо ви знайдете будь-які помилки, будь ласка, створіть проблему. + +[!Скриншот цільової сторінки Relivator](/public/screenshot.png) + +🌐 [https://relivator.bleverse.com](https://relivator.bleverse.com) + +## Команди проєкту + +- **`pnpm stripe:listen`**: Ця команда запускає слухач веб-хуків Stripe і допомагає налаштувати змінні середовища Stripe. Для запуску цієї команди вам може знадобитися встановити [Stripe CLI](https://stripe.com/docs/stripe-cli). +- **`pnpm appts`**: Ця команда виконує комплексну перевірку кодової бази. Вона послідовно виконує `pnpm lint` для лінтування коду, `pnpm typecheck` для перевірки типів і виявлення помилок TypeScript, `pnpm format` для форматування за допомогою Prettier, `pnpm test` для перевірки Jest-тестів і, нарешті, запускає `pnpm build`. +- **`pnpm latest`**: Ця команда оновлює всі пакунки проєкту до останніх стабільних версій та оновлює `next-intl` до останньої бета/rc версії. +- **`pnpm up-next:canary`**: Ця команда запускає `pnpm latest` і оновлює Next.js і React до останніх версій, доступних у їхніх гілках canary. Використовуйте цю команду, тільки якщо ви впевнені, навіщо вам це потрібно. + +## Про проєкт + +Ми заклали фундамент — тепер ваша черга зануритися і прискорити свій розвиток. І так, розважайтеся — уявіть собі Relivator як пісочницю! Це як Minecraft: з Relivator ви можете створити все, що завгодно, адже ваша творчість не має меж! Відкрийте для себе все нове у Next.js 14 та багато веб-речей прямо тут і зараз — з Relivator. + +Ви навіть можете думати про Relivator як про фреймворк Next.js! Тож, нарешті, просто візьміть його та насолоджуйтеся! І не забувайте: ваші відгуки та зіроньки дуже важливі для нас. Тицяйте ту зіркову кнопку та зробіть форк! Ваша участь підносить проєкт на нові висоти! Якщо у вас є навички програмування, ваші внески завжди вітаються! + +Виникли проблеми? Приєднуйтесь до обговорень нашого репозиторію, відкривайте тему або пишіть нам у DM: [Twitter/𝕏](https://x.com/blefnk), [Discord](https://discord.gg/Pb8uKbwpsJ), [Fiverr](https://fiverr.com/blefnk), [LinkedIn](https://linkedin.com/in/blefnk) або [Facebook](https://facebook.com/blefnk). + +У цього проєкту великі плани, і ми цінуємо будь-яку допомогу, яку можемо отримати! Якщо ви хочете зробити свій внесок, перегляньте Дорожню карту проєкту вище, щоб побачити потенційні покращення проєкту. Також використовуйте `Cmd/Ctrl+Shift+F` у VSCode і шукайте `todo:`, щоб знайти місця, які потребують уваги. Будь ласка, відвідайте вкладку **[Commits](https://github.com/blefnk/relivator/issues)**, щоб дізнатися більше про можливості допомоги. + +[![Приєднуйтесь до Relivator Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord] + +**🔥 Ми швидко зростаємо! Величезна подяка [всім нашим прихильникам](https://github.com/blefnk/relivator/stargazers)! Погляньте на нашу зоряну історію:** + +[![Star History Chart](https://api.star-history.com/svg?repos=blefnk/relivator&type=Date)](https://star-history.com/#blefnk/relivator&Date) + +**Примітка:** + +> Прагнучи бути максимально корисним, цей README містить багато інформації. Деякий текст може бути застарілим і буде оновлюватися по мірі нашого розвитку. Будь ласка, повідомте нас на [сторінці обговорення](https://github.com/blefnk/relivator/discussions/6), якщо ви помітили якісь невеликі проблеми, такі як застаріла інформація, непрацюючі посилання або граматичні/орфографічні помилки у README.md або інших файлах. + +## Змінні середовища (файл `.env`) + +**Зверніться до файлу [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env.example) як до посібника. Просто скопіюйте дані з нього до нового файлу `.env`.**. + +Змінні оточення `DATABASE_URL`, `NEXT_PUBLIC_DB_PROVIDER` та `NEXT_PUBLIC_AUTH_PROVIDER` є обов'язковими; інші є необов'язковими. Ви можете розгорнути програму як є, але переконайтеся, що ви перевірили все необхідне. Хоча програма працюватиме без деяких змінних, їх відсутність може деактивувати певні функції. + +Переконайтеся, що для важливих змінних оточення визначено значення за замовчуванням. Ніколи не зберігайте секрети у файлі `.env.example`. Для новачків або репо-клонів використовуйте `.env.example` як шаблон для створення вашого файлу `.env`, переконавшись, що він ніколи не буде зафіксований. Оновлюйте схему в `/src/env.mjs` при додаванні нових змінних. + +Додаткову [інформацію про змінні оточення можна знайти тут](https://nextjs.org/docs/app/building-your-application/configuring/environment-variables). + +Незабаром буде випущено чистішу та покращену версію цього розділу. Слідкуйте за оновленнями! + +У випуску 1.1.0 Relivator було значно спрощено файл `.env.example`, який буде ще більше спрощено у наступних версіях. Ми прагнемо до того, щоб невизначені значення просто деактивували відповідну функціональність, не зупиняючи компіляцію програми. + +## Смугові платежі + +Зверніться до файлу [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env.example) як до керівництва, де і як отримати всі важливі ключі змінних оточення для Stripe, включаючи веб-хуки як для localhost, так і для розгортання. + +Локально встановіть [Stripe CLI](https://stripe.com/docs/stripe-cli) і виконайте команду `pnpm stripe:listen`, щоб ініціювати слухач веб-хуків Stripe. Ця дія з'єднає Stripe з вашим акаунтом і згенерує ключ веб-хука, який ви можете встановити як змінну оточення в налаштуваннях Stripe. + +При тестуванні Stripe ви можете використовувати його тестові дані: `4242424242424242` | `12/34` | `567` | `Випадкове ім'я` | `Випадкова країна`. + +Будь ласка, зверніться до файлу [src/app/api/webhooks/stripe/route.ts](https://github.com/blefnk/relivator/blob/main/src/app/api/webhooks/stripe/route.ts), щоб дізнатися більше про те, як працює Stripe в додатку. Ви також можете відвідати [офіційний репозиторій Stripe](https://github.com/stripe/stripe-node#readme), де ви знайдете багато корисної інформації. + +## Підтримка баз даних + +Relivator розроблено для легкої підтримки баз даних `MySQL` та `PostgreSQL`. Хоча він постачається з MySQL та [PlanetScale](https://planetscale.com), налаштованими як постачальники баз даних за замовчуванням, перехід на PostgreSQL від [Neon](https://neon.tech)/[Vercel](https://vercel.com/storage/postgres)/[Railway](https://railway.app) — дуже простий, як пиріг. Для цього просто змініть ключ `NEXT_PUBLIC_DB_PROVIDER` у вашому файлі `.env` на `neon`/`vercel`/`railway` відповідно. Хоча Relivator оптимізовано для цих провайдерів, будь-які інші, сумісні з Drizzle та NextAuth.js, також можуть працювати, хоча й потребують додаткового налаштування. + +Щоб ініціювати нову базу даних або поширити зміни схеми, виконайте команду `pnpm mysql:push` або `pnpm pg:push`. Це гарантує, що всі чернетки, зроблені у файлах схеми, які знаходяться у каталозі `rc/data/db/*`, будуть віддзеркалені у вибраному вами провайдері баз даних. + +Для перенесення бази даних скористайтеся командами `mysql:generate`/`pg:generate`, перегляньте теку `drizzle`, щоб переконатися, що все зроблено правильно (якщо ні, виконайте `db:drop`), і виконайте команду `pnpm:migrate`, коли будете готові. + +Переконайтеся, що ви не видаляєте файли з каталогу `drizzle` вручну. Якщо міграцію потрібно скасувати, скористайтеся командою [`pnpm db:drop`](https://orm.drizzle.team/kit-docs/commands#drop-migration), щоб зробити це контрольованим способом. + +У випуску Relivator v1.1.0 ми доклали максимум зусиль, щоб забезпечити одночасну підтримку MySQL та PostgreSQL для Drizzle ORM. У майбутніх релізах ми плануємо інтегрувати Prisma ORM до цього проєкту. Завдяки цьому проєкт стане ще більш інклюзивним для всіх. + +За замовчуванням ми гарантуємо, що кожна система баз даних має все однаково, використовуючи змінну `NEXT_PUBLIC_DB_PROVIDER` env та експортуючи дані у файлі `src/data/db/index.ts`. Коли ви вирішите, який провайдер бази даних найкраще відповідає вашим потребам, ви можете безпечно закоментувати або видалити непотрібних провайдерів у `witch-case` цього файлу, після чого також можна видалити відповідні файли схем; зауважте, що може знадобитися невелика додаткова робота. + +### Додаткові примітки про Stripe + +Маршрут API веб-хука Stripe не обов'язково викликати явно у вашому додатку, наприклад, після того, як користувач вибрав план підписки або здійснив покупку. Веб-хуки працюють незалежно від дій користувача на фронтенді і слугують засобом, за допомогою якого Stripe передає події безпосередньо на ваш сервер. + +Коли на стороні Stripe відбувається подія, наприклад, успішна оплата, Stripe генерує об'єкт події. Потім цей об'єкт автоматично надсилається до кінцевої точки, яку ви вказали, або в панелі інструментів Stripe, або, для тестування, у вашому `package.json` через інтерфейс командного рядка Stripe CLI. Нарешті, маршрут API вашого сервера отримує подію і обробляє її відповідним чином. + +Наприклад, коли користувач обирає план підписки, ви зазвичай спочатку використовуєте API Stripe для створення об'єкта `Payment Intent` або `Setup Intent`. Ця дія може бути виконана як на стороні клієнта, так і на стороні сервера. Потім фронтенд підтверджує платіж за допомогою Stripe.js, тим самим завершуючи процес оплати або налаштування підписки. + +Ваш веб-хук автоматично запускається на основі цих подій. Немає необхідності вручну "викликати" маршрут веб-хука; Stripe керує цим за вас відповідно до ваших налаштувань в панелі інструментів Stripe або в вашому `package.json` для локального тестування. + +Після розгортання вашого додатку не забудьте вказати URL-адресу веб-хука у вашому Stripe Dashboard. Перейдіть до розділу Webhooks і введіть наступну URL-адресу: `https://yourdomain.com/api/webhooks/stripe`. + +Таким чином, немає необхідності вказувати шлях до вашого маршруту API Stripe, де користувач обирає план підписки. Механізм веб-хуків працює незалежно і запускається Stripe автоматично. + +## Інтернаціоналізація + +Слідкуйте за подальшим розширенням цього розділу в майбутньому. + +Багатомовність у Bleverse шанується. Ми обожнюємо обговорювати її і плануємо заглибитися в тему інтернаціоналізації Next.js 14 App Router в майбутніх статтях. + +Використовуйте `pnpm lint:i18n` для перевірки ваших i18n файлів. Інструмент намагається виправити проблеми, коли це можливо, пропонуючи такі функції, як сортування за зростанням. Відсутність результатів означає, що все в порядку. + +Наразі всі мови перекладено машинним перекладом. В майбутньому планується доопрацювання носіями мови. + +Зверніть увагу, що наразі присутні повідомлення i18n з іншого нашого проєкту з відкритим вихідним кодом, які буде видалено найближчим часом. + +Для інтернаціоналізації ми використовуємо бета/rc _next-intl_ версії. Додаткову інформацію про них можна знайти [тут](https://next-intl-docs.vercel.app/blog/next-intl-3-0) і [тут](https://github.com/amannn/next-intl/pull/149). + +**Підтримувані локалі (ви можете додати власну вручну):**: de-DE, en-US, en, en, en, en, en, en, en, en, en, en, en, en, en + +de-DE, en-US, es-ES, fa-IR, fr-FR, hi-IN, it-IT, pl-PL, tr-TR, uk-UA. + +## Принципи, дизайнерські рішення, ідеї коду, рекомендації + +Ми постійно вдосконалюємо цей розділ. Ми вітаємо ваші пропозиції! + +Наш стартер має на меті стати багатим ресурсом для розробників на всіх етапах їхньої подорожі. У блоках коментарів та спеціальних розділах в кінці окремих файлів ви знайдете цінні поради та роз'яснення з широкого спектру тем. Ваш внесок у покращення цих освітніх скарбів буде дуже доречним! + +**Принципи (W.I.P.):** + +- Кожен файл і компонент повинен бути створений свідомо, з певним почуттям інтелекту, з думкою про продуктивність. +- Ми повинні думати про проєкт, як про планету зі своїми континентами, країнами, містами, кімнатами, людьми, організаціями тощо. + +**Наполегливо рекомендовані розширення VSCode:**. + +1. [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments) +2. [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) +3. [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens) +4. [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) +5. [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) +6. [i18n Ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) +7. [JavaScript and TypeScript Nightly](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next) +8. [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) +9. [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) +10. [POP! Icon Theme](https://marketplace.visualstudio.com/items?itemName=mikekscholz.pop-icon-theme) +11. [Prettier — Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) +12. [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) +13. [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) +14. [TailwindCSS Tune](https://marketplace.visualstudio.com/items?itemName=omkarbhede.tailwindcss-tune) +15. [TypeScript Essential Plugins](https://marketplace.visualstudio.com/items?itemName=zardoy.ts-essential-plugins) + +
+ Чому рекомендується "TypeScript Essential Plugins" + +"Повнофункціональний плагін TypeScript, який покращує кожну вбудовану функцію, таку як завершення, визначення, посилання тощо, а також додає нові функції-кілери TypeScript, щоб ви могли швидше працювати з великими кодовими базами! Ми зробили доповнення більш інформативними. Визначення, посилання (а іноді і завершення) — менш шумними. І, нарешті, наша головна мета — забезпечити максимально адаптований досвід роботи з TypeScript для функцій IDE". © [VSCode Extension Repository](https://github.com/zardoy/typescript-vscode-plugins#readme) + +Примітка: Ви можете налаштувати параметри розширення, відкривши інтерфейс налаштувань VSCode і знайшовши там `@ext:zardoy.ts-essential-plugins`. + +
+ +**Розширені змінні оточення:** + +Файл `.env.example` містить всі основні змінні для повнофункціонального веб-сайту, призначеного для початківців. Однак, якщо вам потрібні розширені конфігурації, ви можете змінити будь-яке значення у файлі `.env` за потреби. + +Про теку плагінів:\*_ *Про теку плагінів:*_ + +Ця тека містить додаткові плагіни для Relivator. Розроблені @blefnk та іншими учасниками, ці плагіни розширюють функціональність і надають додаткові можливості. Якщо ви вважаєте, що певні плагіни не є корисними для вашого проєкту, не соромтеся видаляти відповідні теки. + +**Перевизначення функцій над константами для компонентів:** + +Ми рекомендуємо використовувати ключове слово `function` замість `const` при визначенні React-компонентів. Використання `function` часто покращує трасування стеку, що полегшує налагодження. Крім того, це робить семантику коду більш явною, тим самим полегшуючи іншим розробникам розуміння ваших намірів. + +**Особисті рекомендації:** + +Ми рекомендуємо регулярно очищати кеш браузера і видаляти теку `.next` для забезпечення оптимальної продуктивності і функціональності. + +Наразі ми не використовуємо Contentlayer через його нестабільну роботу з Windows. Тому ми вивчаємо можливості його використання в конфігураційному файлі `.env`. В майбутньому ми плануємо розробити власне рішення для написання контенту. Інтеграція із зовнішніми провайдерами, такими як Sanity, також може стати майбутньою функцією, з відповідними опціями ввімкнення/вимкнення. + +**Конфігурація проєкту:** + +У файлі `src/app.ts` містяться критичні конфігурації для зміни вмісту та налаштувань веб-сайту, що дозволяє вам + +- Керувати вмістом, представленим на веб-сайті. +- Налаштовувати різні параметри, наприклад, деактивувати перемикач тем. +- Керувати загальною інформацією на сайті. + +Налаштувати цей файл відповідно до ваших вимог. + +**Автентифікація:** + +Налаштування автентифікації дуже просте. + +Ви можете налаштувати доступних постачальників послуг для входу в Clerk у файлі `src/app.ts`. + +Будь ласка, пам'ятайте, що Clerk повноцінно працює зі сторонніми сервісами, такими як "Google PageSpeed Insight", лише за умови використання доменних і живих ключів. + +Цей розділ буде реалізовано найближчим часом. + +**Як розгорнути проєкт:** + +Будь ласка, ознайомтеся з розділом _Як встановити і почати роботу_ перед початковим розгортанням. + +Зверніться до посібників з розгортання для [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify) та [Docker](https://create.t3.gg/en/deployment/docker) для отримання більш детальної інформації. Проєкт було протестовано лише на Vercel; будь ласка, повідомте нас, якщо у вас виникнуть проблеми з іншими сервісами розгортання. + +**Система дизайну та компоненти інтерфейсу користувача:** + +TODO: Реалізувати систему дизайну та керівництво по стилю. + +За замовчуванням цей проєкт включає компоненти з різних бібліотек, а також нестилізовані [shadcn/ui](https://ui.shadcn.com) компоненти. Shadcn/ui навіть дозволяє генерувати нові компоненти інтерфейсу користувача за допомогою свого CLI (де "кнопкою" може бути будь-який елемент інтерфейсу користувача Shadcn): `pnpm dlx shadcn-ui@latest add button`. + +**Сумісність з Bun Things:** + +`Relivator` вже може використовувати деякі фантастичні можливості **[`Bun`](https://bun.sh)**. Для початку ми рекомендуємо використовувати `pnpm`. Повну підтримку та сумісність з Bun буде надано, щойно будуть доступні двійкові файли для Windows. Розширення розділу незабаром. + +**Типові робочі процеси програм (незабаром):** + +Вичерпний посібник, що детально описує типовий робочий процес програми, буде реалізовано найближчим часом. Наразі, ось короткий огляд: + +1. Запуск сервера розробки: `pnpm dev`. +2. Конфігурація оточення: `.env` 2. +3. Налаштування проміжного програмного забезпечення\_: `middleware.ts`. +4. Додаткові кроки: Слідкуйте за новинами... + +**FAQ (Часті запитання):** + +_П:_ Як надати права адміністратора собі або іншому користувачеві? +_В:_ Просто запустіть `pnpm db:studio`, перейдіть до таблиці `acme_user` і встановіть `role: admin` для потрібного вам користувача. В майбутньому, якщо у вас є права адміністратора, ви зможете змінювати права обраних користувачів безпосередньо зі сторінки адміністратора фронтенду. + +_П:_ Що означає змінна оточення `DEV_DEMO_NOTES`? +_В:_ Просто не використовуйте її. Вона використовується лише на офіційному [демо-сайті Relivator](https://relivator.bleverse.com) для демонстрації певних можливостей, які не потрібні у реальних програмах. + +_П:_ Я використовую PlanetScale як провайдера баз даних. Після перерви в роботі над проєктом я зіткнувся з помилкою "unable to connect to branch" в консолі. Як я можу це виправити? +_В:_ Просто перейдіть на інформаційну панель PlanetScale і натисніть на кнопку "прокинутися". Будь ласка, зв'яжіться з нами у випадку, якщо ваша база даних не заснула, а проблема не зникла. + +**Рекомендовані речі, які варто вивчити:** + +1. [Introduction to Next.js and React](https://youtube.com/watch?v=h2BcitZPMn4) by [Lee Robinson](https://twitter.com/leeerob) +2. [Relivator: Next.js 14 Starter (Release Announce of Relivator on Medium)](https://cutt.ly/awf6fScS) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +3. [Welcome to the Wild World of TypeScript, Mate! Is it scary?](https://cutt.ly/CwjVPUNu) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +4. [React: Common Mistakes in 2023](https://docs.google.com/presentation/d/1kuBeSh-yTrL031IlmuwrZ8LvavOGzSbo) by [Cory House](https://twitter.com/housecor) +5. [Thoughts on Next.js 13, Server Actions, Drizzle, Neon, Clerk, and More](https://github.com/Apestein/nextflix/blob/main/README.md#overall-thoughts) by [@Apestein](https://github.com/Apestein) +6. [Huge Next-Multilingual Readme About i18n](https://github.com/Avansai/next-multilingual#readme) by [@Avansai](https://github.com/Avansai) + +Більше навчальних ресурсів можна знайти у файлах цього сховища. + +## Міграція з інших стартерів до Relivator + +Якщо ви в роздумах, який Next.js стартер вибрати для вашого наступного проєкту, як [create-next-app](https://vercel.com/templates/next.js/nextjs-boilerplate), [create-t3-app](https://create.t3.gg), [Next.js Commerce (Vercel Store)](https://vercel.store), [SkateShop](https://github.com/sadmann7/skateshop), [OneStopShop](https://github.com/jackblatch/OneStopShop), [Taxonomy](https://github.com/shadcn-ui/taxonomy)/[nextflix](https://github.com/Apestein/nextflix), [payload](https://github.com/payloadcms/payload), [Medusa](https://github.com/medusajs/medusa) чи [інші проєкти](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors) – ваш пошук може закінчитися саме на Relivator. + +Всі ці проєкти неймовірні, і якщо вам подобається мінімалізм, ми рекомендуємо ознайомитися з ними. Творці цих проєктів — надзвичайно талановиті люди, і ми висловлюємо їм безмежну подяку. Без них цієї добірки не існувало б. + +Однак, якщо вам потрібне щось що не має жодних обмежень — Relivator, придатний для будь-якого сценарію — тоді **Relivator — це саме той стартап, який вам потрібен**, щоб запустити його прямо зараз! Relivator включає в себе численні функції з усіх цих проєктів і прагне розширити межі можливостей Next.js та React. З Relivator ваші можливості безмежні. + +Якщо ви **вибираєте Relivator як свій наступний проєкт** і хочете перейти з вищезгаданих проєктів на Relivator, будь ласка, дайте нам кілька днів. Ми використаємо вікі проєкту, щоб написати посібник про те, як це зробити. У цьому посібнику ви дізнаєтеся, як перенести ваш проєкт на наш проєкт. Посібник з міграції буде доступний для каталогів "app" і "pages". + +## Внески та кредити + +Незабаром цей розділ буде доповнено простішими кроками, які допоможуть вам підготувати все необхідне. + +Ми щиро вітаємо внески! Ми висловлюємо подяку всім, хто долучився до створення цього сховища. Ваш внесок буде визнано. Якщо у вас є запитання чи пропозиції, будь ласка, відкрийте тему. Для отримання додаткової інформації див. [посібник для дописувачів] (). + +Будь ласка, відвідайте [цю спеціальну вікі-сторінку](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors), щоб переглянути повний список авторів та дописувачів. Щоб зробити внесок у Bleverse Relivator, виконайте наступні кроки: + +1. Почніть з прочитання розділу "Як встановити і почати роботу" у верхній частині цього репозиторію, а також сторінки [CONTRIBUTING.md](https://github.com/blefnk/relivator/blob/main/contributing.md). +2. Створіть гілку: `git checkout -b <назва_гілки>`. +3. Внесіть і зафіксуйте ваші зміни: `git commit -m '<повідомлення_фіксації>'`. +4. Перенесіть до початкової гілки: `git push origin <назва_гілки>' +5. Надішліть запит на вилучення. + +Крім того, зверніться до документації GitHub про те, як створити запит на вилучення (). + +## Ліцензія проєкту + +Цей проєкт має ліцензію MIT і є вільним для використання та модифікації для ваших власних проєктів. Перевірте файл [LICENSE.md](https://github.com/blefnk/relivator/LICENSE.md) для отримання детальної інформації. + +🌐 [https://relivator.bleverse.com](https://relivator.bleverse.com) + +--- + +**Слідкуйте за нами всюди:** [GitHub](https://github.com/blefnk) | [Twitter/𝕏](https://x.com/blefnk) | [Discord](https://discord.gg/Pb8uKbwpsJ) | [Fiverr](https://fiverr.com/blefnk) | [LinkedIn](https://linkedin.com/in/blefnk) | [Facebook](https://facebook.com/blefnk) + +Цей стартер Next.js 14 був створений з любов'ю [@blefnk Назарієм Корнієнком](https://github.com/blefnk) та неймовірною [спільнотою Bleverse OSS](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors). Ми глибоко вдячні всім за внесок і підтримку, надану для цього проєкту. + +--- + +Щасливого кодування! Вирушайте у свою пригоду з кодування, вчіться, ітерації, а головне — отримуйте задоволення від процесу! Пам'ятайте — це простір навчання та експериментів. Поринь і насолоджуйся подорожжю! 🚀🌌 + +![Bleverse Relivator OG Image](/public/og-image.png) + +Перевірте [наш інший безкоштовний початковий курс Next.js 14](https://github.com/blefnk/reliverse). Цей, монорепо, надає технологію, що використовується в поточному стартері, і додає нові можливості: Turborepo/Turbopack, Prisma, Valibot, Lucia, Clerk і багато іншого, оскільки ми експериментально намагаємося об'єднати всі життєво важливі і широко використовувані технології. Це як думати про: Reliverse (WordPress) + Relivator (WooCommerce) = 😍. + +[bleverse-discord]: https://discord.gg/Pb8uKbwpsJ diff --git a/.gitignore b/.gitignore index 17bab285..825a1993 100644 --- a/.gitignore +++ b/.gitignore @@ -24,12 +24,14 @@ next-env.d.ts npm-debug.log* yarn-debug.log* yarn-error.log* +*.ignore.* +*.ignore # local env files # do not commit any .env files to git # except for the .env.example file -.env .env*.local +.env # vercel .vercel @@ -39,3 +41,8 @@ robots.txt sitemap.xml sitemap-*.xml *.tsbuildinfo +/.swc + +# logs +.logs +*.log diff --git a/.knip.json b/.knip.json index fc1fadde..d5436725 100644 --- a/.knip.json +++ b/.knip.json @@ -51,7 +51,6 @@ "@trpc/client", "@trpc/react-query", "@trpc/server", - "@types/js-cookie", "@types/lodash", "@types/mdx", "@types/pg", @@ -70,7 +69,6 @@ "eslint-interactive", "flag-icons", "international-types", - "js-cookie", "lodash", "lucide-react", "mdx", diff --git a/.lintstagedrc.json b/.lintstagedrc.json index 75fef237..3f744e72 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,4 +1,8 @@ { - "*.{js,ts,tsx}": ["cspell", "eslint --fix", "prettier -w"], - "*.{md,json}": ["prettier -w"] + "**/*.{js,jsx,cjs,mjs,ts,tsx,md,mdx}": [ + "eslint --fix", + "prettier --check --write" + ], + "**/*.{json,yml}": ["prettier --check --write"], + "**/*.css": ["prettier --write"] } diff --git a/.npmcheckrc b/.npmcheckrc index efce09db..6b8f612d 100644 --- a/.npmcheckrc +++ b/.npmcheckrc @@ -23,9 +23,9 @@ "autoprefixer", "cspell", "dotenv", + "flag-icons", "drizzle.config", "eslint-interactive", - "flag-icons", "international-types", "next-international", "postcss" diff --git a/.prettierignore b/.prettierignore index f92e8165..4d2021b6 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,4 @@ -# ?? https://prettier.io/docs/en/ignore.html +# @see https://prettier.io/docs/en/ignore.html # dependencies /node_modules @@ -13,3 +13,6 @@ # typescript next-env.d.ts + +# project +/drizzle diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 00000000..66e609c9 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,15 @@ +/** + * @see https://github.com/shilman/storybook-rsc-demo + * @see https://storybook.js.org/blog/storybook-react-server-components + */ + +import type { StorybookConfig } from "@storybook/nextjs"; + +const config: StorybookConfig = { + stories: [], + staticDirs: ["../src/public"], + features: { experimentalNextRSC: true }, + framework: { name: "@storybook/nextjs", options: {} }, +}; + +export default config; diff --git a/.swcrc b/.swcrc new file mode 100644 index 00000000..de00279f --- /dev/null +++ b/.swcrc @@ -0,0 +1,36 @@ +{ + "$schema": "https://json.schemastore.org/swcrc", + "minify": true, + "env": { + "mode": "entry", + "coreJs": "3.27", + "targets": { + "chrome": "64", + "edge": "79", + "firefox": "67", + "opera": "51", + "safari": "12", + "ios": "12" + } + }, + "jsc": { + "transform": { "react": { "runtime": "automatic" } }, + "parser": { + "jsx": false, + "decoratorsBeforeExport": false, + "exportNamespaceFrom": false, + "exportDefaultFrom": false, + "dynamicImport": false, + "decorators": false, + "importMeta": false, + "functionBind": false, + "privateMethod": false, + "syntax": "ecmascript", + "topLevelAwait": false + }, + "externalHelpers": true, + "keepClassNames": false, + "target": "esnext", + "loose": true + } +} diff --git a/.thing/hooks/discord_webhook.json b/.thing/hooks/discord_webhook.json new file mode 100644 index 00000000..55c966e2 --- /dev/null +++ b/.thing/hooks/discord_webhook.json @@ -0,0 +1,35 @@ +{ + "content": "Hey, welcome to webhookthing The easiest way to test webhooks on your local dev environment!\n_ _", + "embeds": [ + { + "title": "What's this?", + "description": "This is a sample discord embed", + "color": 5814783, + "fields": [ + { + "name": "This is a field", + "value": "This is the field's value" + } + ], + "author": { + "name": "This is the Author", + "url": "https://example.com", + "icon_url": "https://via.placeholder.com/64" + }, + "footer": { + "text": "This is a footer", + "icon_url": "https://via.placeholder.com/8" + }, + "timestamp": "1970-01-01T08:00:00.000Z", + "image": { + "url": "https://via.placeholder.com/512" + }, + "thumbnail": { + "url": "https://via.placeholder.com/64" + } + } + ], + "username": "example#0001", + "avatar_url": "https://via.placeholder.com/32", + "attachments": [] +} diff --git a/.thing/hooks/github_pr_opened.json b/.thing/hooks/github_pr_opened.json new file mode 100644 index 00000000..7a6a23c3 --- /dev/null +++ b/.thing/hooks/github_pr_opened.json @@ -0,0 +1,532 @@ +{ + "action": "opened", + "number": 15, + "pull_request": { + "url": "https://api.github.com/repos/example_org/example_repo/pulls/15", + "id": 1211243938, + "node_id": "PR_0000000000000000", + "html_url": "https://github.com/example_org/example_repo/pull/15", + "diff_url": "https://github.com/example_org/example_repo/pull/15.diff", + "patch_url": "https://github.com/example_org/example_repo/pull/15.patch", + "issue_url": "https://api.github.com/repos/example_org/example_repo/issues/15", + "number": 15, + "state": "open", + "locked": false, + "title": "jdoe/example-branch", + "user": { + "login": "jdoe", + "id": 1234567, + "node_id": "MDQ6VXNlcjEyMzQ1Njc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1234567?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdoe", + "html_url": "https://github.com/jdoe", + "followers_url": "https://api.github.com/users/jdoe/followers", + "following_url": "https://api.github.com/users/jdoe/following{/other_user}", + "gists_url": "https://api.github.com/users/jdoe/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdoe/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdoe/subscriptions", + "organizations_url": "https://api.github.com/users/jdoe/orgs", + "repos_url": "https://api.github.com/users/jdoe/repos", + "events_url": "https://api.github.com/users/jdoe/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdoe/received_events", + "type": "User", + "site_admin": false + }, + "body": "This is a test PR", + "created_at": "2023-01-20T09:03:04Z", + "updated_at": "2023-01-20T09:03:04Z", + "closed_at": null, + "merged_at": null, + "merge_commit_sha": null, + "assignee": null, + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/example_org/example_repo/pulls/15/commits", + "review_comments_url": "https://api.github.com/repos/example_org/example_repo/pulls/15/comments", + "review_comment_url": "https://api.github.com/repos/example_org/example_repo/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/example_org/example_repo/issues/15/comments", + "statuses_url": "https://api.github.com/repos/example_org/example_repo/statuses/07a6048532c799c58bf7eafdbc7d4eaf6b6bbde6", + "head": { + "label": "example_org:jdoe/example-branch", + "ref": "jdoe/example-branch", + "sha": "07a6048532c799c58bf7eafdbc7d4eaf6b6bbde6", + "user": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/example_org", + "html_url": "https://github.com/example_org", + "followers_url": "https://api.github.com/users/example_org/followers", + "following_url": "https://api.github.com/users/example_org/following{/other_user}", + "gists_url": "https://api.github.com/users/example_org/gists{/gist_id}", + "starred_url": "https://api.github.com/users/example_org/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/example_org/subscriptions", + "organizations_url": "https://api.github.com/users/example_org/orgs", + "repos_url": "https://api.github.com/users/example_org/repos", + "events_url": "https://api.github.com/users/example_org/events{/privacy}", + "received_events_url": "https://api.github.com/users/example_org/received_events", + "type": "Organization", + "site_admin": false + }, + "repo": { + "id": 553972582, + "node_id": "R_kgDOIQTzZg", + "name": "example_repo", + "full_name": "example_org/example_repo", + "private": true, + "owner": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/example_org", + "html_url": "https://github.com/example_org", + "followers_url": "https://api.github.com/users/example_org/followers", + "following_url": "https://api.github.com/users/example_org/following{/other_user}", + "gists_url": "https://api.github.com/users/example_org/gists{/gist_id}", + "starred_url": "https://api.github.com/users/example_org/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/example_org/subscriptions", + "organizations_url": "https://api.github.com/users/example_org/orgs", + "repos_url": "https://api.github.com/users/example_org/repos", + "events_url": "https://api.github.com/users/example_org/events{/privacy}", + "received_events_url": "https://api.github.com/users/example_org/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/example_org/example_repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/example_org/example_repo", + "forks_url": "https://api.github.com/repos/example_org/example_repo/forks", + "keys_url": "https://api.github.com/repos/example_org/example_repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/example_org/example_repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/example_org/example_repo/teams", + "hooks_url": "https://api.github.com/repos/example_org/example_repo/hooks", + "issue_events_url": "https://api.github.com/repos/example_org/example_repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/example_org/example_repo/events", + "assignees_url": "https://api.github.com/repos/example_org/example_repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/example_org/example_repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/example_org/example_repo/tags", + "blobs_url": "https://api.github.com/repos/example_org/example_repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/example_org/example_repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/example_org/example_repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/example_org/example_repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/example_org/example_repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/example_org/example_repo/languages", + "stargazers_url": "https://api.github.com/repos/example_org/example_repo/stargazers", + "contributors_url": "https://api.github.com/repos/example_org/example_repo/contributors", + "subscribers_url": "https://api.github.com/repos/example_org/example_repo/subscribers", + "subscription_url": "https://api.github.com/repos/example_org/example_repo/subscription", + "commits_url": "https://api.github.com/repos/example_org/example_repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/example_org/example_repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/example_org/example_repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/example_org/example_repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/example_org/example_repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/example_org/example_repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/example_org/example_repo/merges", + "archive_url": "https://api.github.com/repos/example_org/example_repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/example_org/example_repo/downloads", + "issues_url": "https://api.github.com/repos/example_org/example_repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/example_org/example_repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/example_org/example_repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/example_org/example_repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/example_org/example_repo/labels{/name}", + "releases_url": "https://api.github.com/repos/example_org/example_repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/example_org/example_repo/deployments", + "created_at": "2022-10-19T03:41:52Z", + "updated_at": "2022-10-23T23:12:34Z", + "pushed_at": "2023-01-20T09:03:04Z", + "git_url": "git://github.com/example_org/example_repo.git", + "ssh_url": "git@github.com:example_org/example_repo.git", + "clone_url": "https://github.com/example_org/example_repo.git", + "svn_url": "https://github.com/example_org/example_repo", + "homepage": "https://www.example.com", + "size": 642, + "stargazers_count": 1, + "watchers_count": 1, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 4, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "internal", + "forks": 0, + "open_issues": 4, + "watchers": 1, + "default_branch": "main", + "allow_squash_merge": true, + "allow_merge_commit": false, + "allow_rebase_merge": false, + "allow_auto_merge": true, + "delete_branch_on_merge": false, + "allow_update_branch": true, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE" + } + }, + "base": { + "label": "example_org:main", + "ref": "main", + "sha": "caf87bf0162986f2874ec1b668f1d576b9f99e76", + "user": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/example_org", + "html_url": "https://github.com/example_org", + "followers_url": "https://api.github.com/users/example_org/followers", + "following_url": "https://api.github.com/users/example_org/following{/other_user}", + "gists_url": "https://api.github.com/users/example_org/gists{/gist_id}", + "starred_url": "https://api.github.com/users/example_org/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/example_org/subscriptions", + "organizations_url": "https://api.github.com/users/example_org/orgs", + "repos_url": "https://api.github.com/users/example_org/repos", + "events_url": "https://api.github.com/users/example_org/events{/privacy}", + "received_events_url": "https://api.github.com/users/example_org/received_events", + "type": "Organization", + "site_admin": false + }, + "repo": { + "id": 553972582, + "node_id": "R_kgDOIQTzZg", + "name": "captain", + "full_name": "example_org/example_repo", + "private": true, + "owner": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/example_org", + "html_url": "https://github.com/example_org", + "followers_url": "https://api.github.com/users/example_org/followers", + "following_url": "https://api.github.com/users/example_org/following{/other_user}", + "gists_url": "https://api.github.com/users/example_org/gists{/gist_id}", + "starred_url": "https://api.github.com/users/example_org/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/example_org/subscriptions", + "organizations_url": "https://api.github.com/users/example_org/orgs", + "repos_url": "https://api.github.com/users/example_org/repos", + "events_url": "https://api.github.com/users/example_org/events{/privacy}", + "received_events_url": "https://api.github.com/users/example_org/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/example_org/example_repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/example_org/example_repo", + "forks_url": "https://api.github.com/repos/example_org/example_repo/forks", + "keys_url": "https://api.github.com/repos/example_org/example_repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/example_org/example_repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/example_org/example_repo/teams", + "hooks_url": "https://api.github.com/repos/example_org/example_repo/hooks", + "issue_events_url": "https://api.github.com/repos/example_org/example_repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/example_org/example_repo/events", + "assignees_url": "https://api.github.com/repos/example_org/example_repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/example_org/example_repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/example_org/example_repo/tags", + "blobs_url": "https://api.github.com/repos/example_org/example_repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/example_org/example_repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/example_org/example_repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/example_org/example_repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/example_org/example_repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/example_org/example_repo/languages", + "stargazers_url": "https://api.github.com/repos/example_org/example_repo/stargazers", + "contributors_url": "https://api.github.com/repos/example_org/example_repo/contributors", + "subscribers_url": "https://api.github.com/repos/example_org/example_repo/subscribers", + "subscription_url": "https://api.github.com/repos/example_org/example_repo/subscription", + "commits_url": "https://api.github.com/repos/example_org/example_repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/example_org/example_repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/example_org/example_repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/example_org/example_repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/example_org/example_repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/example_org/example_repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/example_org/example_repo/merges", + "archive_url": "https://api.github.com/repos/example_org/example_repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/example_org/example_repo/downloads", + "issues_url": "https://api.github.com/repos/example_org/example_repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/example_org/example_repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/example_org/example_repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/example_org/example_repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/example_org/example_repo/labels{/name}", + "releases_url": "https://api.github.com/repos/example_org/example_repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/example_org/example_repo/deployments", + "created_at": "2022-10-19T03:41:52Z", + "updated_at": "2022-10-23T23:12:34Z", + "pushed_at": "2023-01-20T09:03:04Z", + "git_url": "git://github.com/example_org/example_repo.git", + "ssh_url": "git@github.com:example_org/example_repo.git", + "clone_url": "https://github.com/example_org/example_repo.git", + "svn_url": "https://github.com/example_org/example_repo", + "homepage": "https://www.example.com", + "size": 642, + "stargazers_count": 1, + "watchers_count": 1, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 4, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "internal", + "forks": 0, + "open_issues": 4, + "watchers": 1, + "default_branch": "main", + "allow_squash_merge": true, + "allow_merge_commit": false, + "allow_rebase_merge": false, + "allow_auto_merge": true, + "delete_branch_on_merge": false, + "allow_update_branch": true, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/example_org/example_repo/pulls/15" + }, + "html": { + "href": "https://github.com/example_org/example_repo/pull/15" + }, + "issue": { + "href": "https://api.github.com/repos/example_org/example_repo/issues/15" + }, + "comments": { + "href": "https://api.github.com/repos/example_org/example_repo/issues/15/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/example_org/example_repo/pulls/15/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/example_org/example_repo/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/example_org/example_repo/pulls/15/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/example_org/example_repo/statuses/07a6048532c799c58bf7eafdbc7d4eaf6b6bbde6" + } + }, + "author_association": "COLLABORATOR", + "auto_merge": null, + "active_lock_reason": null, + "merged": false, + "mergeable": null, + "rebaseable": null, + "mergeable_state": "unknown", + "merged_by": null, + "comments": 0, + "review_comments": 0, + "maintainer_can_modify": false, + "commits": 7, + "additions": 557, + "deletions": 45, + "changed_files": 27 + }, + "repository": { + "id": 553972582, + "node_id": "R_kgDOIQTzZg", + "name": "captain", + "full_name": "example_org/example_repo", + "private": true, + "owner": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/example_org", + "html_url": "https://github.com/example_org", + "followers_url": "https://api.github.com/users/example_org/followers", + "following_url": "https://api.github.com/users/example_org/following{/other_user}", + "gists_url": "https://api.github.com/users/example_org/gists{/gist_id}", + "starred_url": "https://api.github.com/users/example_org/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/example_org/subscriptions", + "organizations_url": "https://api.github.com/users/example_org/orgs", + "repos_url": "https://api.github.com/users/example_org/repos", + "events_url": "https://api.github.com/users/example_org/events{/privacy}", + "received_events_url": "https://api.github.com/users/example_org/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/example_org/example_repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/example_org/example_repo", + "forks_url": "https://api.github.com/repos/example_org/example_repo/forks", + "keys_url": "https://api.github.com/repos/example_org/example_repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/example_org/example_repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/example_org/example_repo/teams", + "hooks_url": "https://api.github.com/repos/example_org/example_repo/hooks", + "issue_events_url": "https://api.github.com/repos/example_org/example_repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/example_org/example_repo/events", + "assignees_url": "https://api.github.com/repos/example_org/example_repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/example_org/example_repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/example_org/example_repo/tags", + "blobs_url": "https://api.github.com/repos/example_org/example_repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/example_org/example_repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/example_org/example_repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/example_org/example_repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/example_org/example_repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/example_org/example_repo/languages", + "stargazers_url": "https://api.github.com/repos/example_org/example_repo/stargazers", + "contributors_url": "https://api.github.com/repos/example_org/example_repo/contributors", + "subscribers_url": "https://api.github.com/repos/example_org/example_repo/subscribers", + "subscription_url": "https://api.github.com/repos/example_org/example_repo/subscription", + "commits_url": "https://api.github.com/repos/example_org/example_repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/example_org/example_repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/example_org/example_repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/example_org/example_repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/example_org/example_repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/example_org/example_repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/example_org/example_repo/merges", + "archive_url": "https://api.github.com/repos/example_org/example_repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/example_org/example_repo/downloads", + "issues_url": "https://api.github.com/repos/example_org/example_repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/example_org/example_repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/example_org/example_repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/example_org/example_repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/example_org/example_repo/labels{/name}", + "releases_url": "https://api.github.com/repos/example_org/example_repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/example_org/example_repo/deployments", + "created_at": "2022-10-19T03:41:52Z", + "updated_at": "2022-10-23T23:12:34Z", + "pushed_at": "2023-01-20T09:03:04Z", + "git_url": "git://github.com/example_org/example_repo.git", + "ssh_url": "git@github.com:example_org/example_repo.git", + "clone_url": "https://github.com/example_org/example_repo.git", + "svn_url": "https://github.com/example_org/example_repo", + "homepage": "https://www.example.com", + "size": 642, + "stargazers_count": 1, + "watchers_count": 1, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 4, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "internal", + "forks": 0, + "open_issues": 4, + "watchers": 1, + "default_branch": "main" + }, + "organization": { + "login": "example_org", + "id": 2345678, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjIzNDU2Nzg=", + "url": "https://api.github.com/orgs/example_org", + "repos_url": "https://api.github.com/orgs/example_org/repos", + "events_url": "https://api.github.com/orgs/example_org/events", + "hooks_url": "https://api.github.com/orgs/example_org/hooks", + "issues_url": "https://api.github.com/orgs/example_org/issues", + "members_url": "https://api.github.com/orgs/example_org/members{/member}", + "public_members_url": "https://api.github.com/orgs/example_org/public_members{/member}", + "avatar_url": "https://avatars.githubusercontent.com/u/2345678?v=4", + "description": "Example organization description" + }, + "enterprise": { + "id": 12345, + "slug": "example-enterprise", + "name": "Example Enterprise", + "node_id": "E_kgDRKO7", + "avatar_url": "https://avatars.githubusercontent.com/b/12345?v=4", + "description": "Example enterprise description", + "website_url": "https://www.example.com", + "html_url": "https://github.com/enterprises/example-enterprise", + "created_at": "2022-09-19T23:04:52Z", + "updated_at": "2022-09-19T23:16:12Z" + }, + "sender": { + "login": "jdoe", + "id": 1234567, + "node_id": "MDQ6VXNlcjY3NTE3ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/1234567?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jdoe", + "html_url": "https://github.com/jdoe", + "followers_url": "https://api.github.com/users/jdoe/followers", + "following_url": "https://api.github.com/users/jdoe/following{/other_user}", + "gists_url": "https://api.github.com/users/jdoe/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jdoe/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jdoe/subscriptions", + "organizations_url": "https://api.github.com/users/jdoe/orgs", + "repos_url": "https://api.github.com/users/jdoe/repos", + "events_url": "https://api.github.com/users/jdoe/events{/privacy}", + "received_events_url": "https://api.github.com/users/jdoe/received_events", + "type": "User", + "site_admin": false + } +} diff --git a/.thing/hooks/stripe_payment_failed.json b/.thing/hooks/stripe_payment_failed.json new file mode 100644 index 00000000..ddfff0a8 --- /dev/null +++ b/.thing/hooks/stripe_payment_failed.json @@ -0,0 +1,408 @@ +{ + "object": { + "id": "in_000000000000000000000000", + "object": "invoice", + "account_country": "US", + "account_name": "Account Name Here", + "account_tax_ids": null, + "amount_due": 3600, + "amount_paid": 0, + "amount_remaining": 3600, + "application": null, + "application_fee_amount": null, + "attempt_count": 2, + "attempted": true, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "subscription_cycle", + "charge": "ch_000000000000000000000000", + "collection_method": "charge_automatically", + "created": 1674096196, + "currency": "usd", + "custom_fields": null, + "customer": "cus_00000000000000", + "customer_address": { + "city": null, + "country": "BR", + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "customer_email": "jdoe@example.com", + "customer_name": "John Doe", + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "from_invoice": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_00000000000000/live_xxx?s=ap", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_00000000000000/live_xxx/pdf?s=ap", + "last_finalization_error": null, + "latest_revision": null, + "lines": { + "object": "list", + "data": [ + { + "id": "il_000000000000000000000000", + "object": "line_item", + "amount": 1600, + "amount_excluding_tax": 1600, + "currency": "usd", + "description": "description goes here", + "discount_amounts": [], + "discountable": true, + "discounts": [], + "livemode": true, + "metadata": {}, + "period": { + "end": 1676774467, + "start": 1674096067 + }, + "plan": { + "id": "price_000000000000000000000000", + "object": "plan", + "active": true, + "aggregate_usage": null, + "amount": null, + "amount_decimal": null, + "billing_scheme": "tiered", + "created": 1653499797, + "currency": "usd", + "interval": "month", + "interval_count": 1, + "livemode": true, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "tiers_mode": "graduated", + "transform_usage": null, + "trial_period_days": null, + "usage_type": "licensed" + }, + "price": { + "id": "price_000000000000000000000000", + "object": "price", + "active": true, + "billing_scheme": "tiered", + "created": 1653499797, + "currency": "usd", + "custom_unit_amount": null, + "livemode": true, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "recurring": { + "aggregate_usage": null, + "interval": "month", + "interval_count": 1, + "trial_period_days": null, + "usage_type": "licensed" + }, + "tax_behavior": "unspecified", + "tiers_mode": "graduated", + "transform_quantity": null, + "type": "recurring", + "unit_amount": null, + "unit_amount_decimal": null + }, + "proration": false, + "proration_details": { + "credited_items": null + }, + "quantity": 1, + "subscription": "sub_000000000000000000000000", + "subscription_item": "si_00000000000000", + "tax_amounts": [], + "tax_rates": [], + "type": "subscription", + "unit_amount_excluding_tax": "1600" + }, + { + "id": "il_000000000000000000000000", + "object": "line_item", + "amount": 800, + "amount_excluding_tax": 800, + "currency": "usd", + "description": "description goes here", + "discount_amounts": [], + "discountable": true, + "discounts": [], + "livemode": true, + "metadata": {}, + "period": { + "end": 1676774467, + "start": 1674096067 + }, + "plan": { + "id": "price_000000000000000000000000", + "object": "plan", + "active": true, + "aggregate_usage": null, + "amount": null, + "amount_decimal": null, + "billing_scheme": "tiered", + "created": 1653499797, + "currency": "usd", + "interval": "month", + "interval_count": 1, + "livemode": true, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "tiers_mode": "graduated", + "transform_usage": null, + "trial_period_days": null, + "usage_type": "licensed" + }, + "price": { + "id": "price_000000000000000000000000", + "object": "price", + "active": true, + "billing_scheme": "tiered", + "created": 1653499797, + "currency": "usd", + "custom_unit_amount": null, + "livemode": true, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "recurring": { + "aggregate_usage": null, + "interval": "month", + "interval_count": 1, + "trial_period_days": null, + "usage_type": "licensed" + }, + "tax_behavior": "unspecified", + "tiers_mode": "graduated", + "transform_quantity": null, + "type": "recurring", + "unit_amount": null, + "unit_amount_decimal": null + }, + "proration": false, + "proration_details": { + "credited_items": null + }, + "quantity": 1, + "subscription": "sub_000000000000000000000000", + "subscription_item": "si_00000000000000", + "tax_amounts": [], + "tax_rates": [], + "type": "subscription", + "unit_amount_excluding_tax": "800" + }, + { + "id": "il_000000000000000000000000", + "object": "line_item", + "amount": 0, + "amount_excluding_tax": 0, + "currency": "usd", + "description": "description goes here", + "discount_amounts": [], + "discountable": true, + "discounts": [], + "livemode": true, + "metadata": {}, + "period": { + "end": 1676774467, + "start": 1674096067 + }, + "plan": { + "id": "price_000000000000000000000000", + "object": "plan", + "active": true, + "aggregate_usage": null, + "amount": null, + "amount_decimal": null, + "billing_scheme": "tiered", + "created": 1653499881, + "currency": "usd", + "interval": "month", + "interval_count": 1, + "livemode": true, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "tiers_mode": "graduated", + "transform_usage": null, + "trial_period_days": null, + "usage_type": "licensed" + }, + "price": { + "id": "price_000000000000000000000000", + "object": "price", + "active": true, + "billing_scheme": "tiered", + "created": 1653499881, + "currency": "usd", + "custom_unit_amount": null, + "livemode": true, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "recurring": { + "aggregate_usage": null, + "interval": "month", + "interval_count": 1, + "trial_period_days": null, + "usage_type": "licensed" + }, + "tax_behavior": "unspecified", + "tiers_mode": "graduated", + "transform_quantity": null, + "type": "recurring", + "unit_amount": null, + "unit_amount_decimal": null + }, + "proration": false, + "proration_details": { + "credited_items": null + }, + "quantity": 1, + "subscription": "sub_000000000000000000000000", + "subscription_item": "si_00000000000000", + "tax_amounts": [], + "tax_rates": [], + "type": "subscription", + "unit_amount_excluding_tax": "0" + }, + { + "id": "il_000000000000000000000000", + "object": "line_item", + "amount": 1200, + "amount_excluding_tax": 1200, + "currency": "usd", + "description": "descroipion goes here", + "discount_amounts": [], + "discountable": true, + "discounts": [], + "livemode": true, + "metadata": {}, + "period": { + "end": 1676774467, + "start": 1674096067 + }, + "plan": { + "id": "price_000000000000000000000000", + "object": "plan", + "active": true, + "aggregate_usage": null, + "amount": 1200, + "amount_decimal": "1200", + "billing_scheme": "per_unit", + "created": 1653499957, + "currency": "usd", + "interval": "month", + "interval_count": 1, + "livemode": true, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "tiers_mode": null, + "transform_usage": null, + "trial_period_days": null, + "usage_type": "licensed" + }, + "price": { + "id": "price_000000000000000000000000", + "object": "price", + "active": true, + "billing_scheme": "per_unit", + "created": 1653499957, + "currency": "usd", + "custom_unit_amount": null, + "livemode": true, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "recurring": { + "aggregate_usage": null, + "interval": "month", + "interval_count": 1, + "trial_period_days": null, + "usage_type": "licensed" + }, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "recurring", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "proration_details": { + "credited_items": null + }, + "quantity": 1, + "subscription": "sub_000000000000000000000000", + "subscription_item": "si_00000000000000", + "tax_amounts": [], + "tax_rates": [], + "type": "subscription", + "unit_amount_excluding_tax": "1200" + } + ], + "has_more": false, + "total_count": 4, + "url": "/v1/invoices/in_000000000000000000000000/lines" + }, + "livemode": true, + "metadata": {}, + "next_payment_attempt": 1674312413, + "number": "68373AF5-0002", + "on_behalf_of": null, + "paid": false, + "paid_out_of_band": false, + "payment_intent": "pi_000000000000000000000000", + "payment_settings": { + "default_mandate": null, + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1674096067, + "period_start": 1673491267, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "rendering_options": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "open", + "status_transitions": { + "finalized_at": 1674099909, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": "sub_000000000000000000000000", + "subtotal": 3600, + "subtotal_excluding_tax": 3600, + "tax": null, + "test_clock": null, + "total": 3600, + "total_discount_amounts": [], + "total_excluding_tax": 3600, + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1674096197 + } +} diff --git a/.thing/hooks/stripe_payment_succeeded.json b/.thing/hooks/stripe_payment_succeeded.json new file mode 100644 index 00000000..ba0fd7c9 --- /dev/null +++ b/.thing/hooks/stripe_payment_succeeded.json @@ -0,0 +1,218 @@ +{ + "object": { + "id": "in_1000000000000000000000000", + "object": "invoice", + "account_country": "US", + "account_name": "Account Name Here", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application": null, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "subscription_cycle", + "charge": null, + "collection_method": "charge_automatically", + "created": 1674244834, + "currency": "usd", + "custom_fields": null, + "customer": "cus_00000000000000", + "customer_address": { + "city": null, + "country": "US", + "line1": null, + "line2": null, + "postal_code": "94142", + "state": null + }, + "customer_email": "jdoe@example.com", + "customer_name": "John Doe", + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": { + "id": "di_000000000000000000000000", + "object": "discount", + "checkout_session": null, + "coupon": { + "id": "00000000", + "object": "coupon", + "amount_off": null, + "created": 1642708299, + "currency": null, + "duration": "forever", + "duration_in_months": null, + "livemode": true, + "max_redemptions": null, + "metadata": {}, + "name": "Coupon Name Here", + "percent_off": 100, + "redeem_by": null, + "times_redeemed": 2, + "valid": true + }, + "customer": "cus_00000000000000", + "end": null, + "invoice": null, + "invoice_item": null, + "promotion_code": "promo_000000000000000000000000", + "start": 1642708821, + "subscription": "sub_000000000000000000000000" + }, + "discounts": ["di_000000000000000000000000"], + "due_date": null, + "ending_balance": 0, + "footer": null, + "from_invoice": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_00000000000000/live_xxx?s=ap", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_00000000000000/live_xxx/pdf?s=ap", + "last_finalization_error": null, + "latest_revision": null, + "lines": { + "object": "list", + "data": [ + { + "id": "il_000000000000000000000000", + "object": "line_item", + "amount": 50000, + "amount_excluding_tax": 50000, + "currency": "usd", + "description": "description goes here", + "discount_amounts": [ + { + "amount": 50000, + "discount": "di_000000000000000000000000" + } + ], + "discountable": true, + "discounts": [], + "livemode": true, + "metadata": {}, + "period": { + "end": 1676923221, + "start": 1674244821 + }, + "plan": { + "id": "price_000000000000000000000000", + "object": "plan", + "active": true, + "aggregate_usage": null, + "amount": 50000, + "amount_decimal": "50000", + "billing_scheme": "per_unit", + "created": 1642394608, + "currency": "usd", + "interval": "month", + "interval_count": 1, + "livemode": true, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "tiers_mode": null, + "transform_usage": null, + "trial_period_days": null, + "usage_type": "licensed" + }, + "price": { + "id": "price_000000000000000000000000", + "object": "price", + "active": true, + "billing_scheme": "per_unit", + "created": 1642394608, + "currency": "usd", + "custom_unit_amount": null, + "livemode": true, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "product": "prod_00000000000000", + "recurring": { + "aggregate_usage": null, + "interval": "month", + "interval_count": 1, + "trial_period_days": null, + "usage_type": "licensed" + }, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "recurring", + "unit_amount": 50000, + "unit_amount_decimal": "50000" + }, + "proration": false, + "proration_details": { + "credited_items": null + }, + "quantity": 1, + "subscription": "sub_000000000000000000000000", + "subscription_item": "si_00000000000000", + "tax_amounts": [], + "tax_rates": [], + "type": "subscription", + "unit_amount_excluding_tax": "50000" + } + ], + "has_more": false, + "total_count": 1, + "url": "/v1/invoices/in_000000000000000000000000/lines" + }, + "livemode": true, + "metadata": {}, + "next_payment_attempt": null, + "number": "B29DAD55-0015", + "on_behalf_of": null, + "paid": true, + "paid_out_of_band": false, + "payment_intent": null, + "payment_settings": { + "default_mandate": null, + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1674244821, + "period_start": 1671566421, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "rendering_options": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "paid", + "status_transitions": { + "finalized_at": 1674248448, + "marked_uncollectible_at": null, + "paid_at": 1674248448, + "voided_at": null + }, + "subscription": "sub_000000000000000000000000", + "subtotal": 50000, + "subtotal_excluding_tax": 50000, + "tax": null, + "test_clock": null, + "total": 0, + "total_discount_amounts": [ + { + "amount": 50000, + "discount": "di_000000000000000000000000" + } + ], + "total_excluding_tax": 0, + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1674244835 + } +} diff --git a/.thing/wt.md b/.thing/wt.md new file mode 100644 index 00000000..a1504ebb --- /dev/null +++ b/.thing/wt.md @@ -0,0 +1,3 @@ +# webhookthing + +[webhookthing](https://docs.webhookthing.com): Run webhooks locally with 1 click. diff --git a/.vscode/extensions.json b/.vscode/extensions.json index b7cb6a72..fad65727 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,16 +1,25 @@ { "recommendations": [ "aaron-bond.better-comments", - "bradlc.vscode-tailwindcss", - "davidanson.vscode-markdownlint", + "streetsidesoftware.code-spell-checker", + "usernamehw.errorlens", "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", + "github.copilot", "lokalise.i18n-ally", - "omkarbhede.tailwindcss-tune", - "streetsidesoftware.code-spell-checker", - "yoavbls.pretty-ts-errors", + "ms-vscode.vscode-typescript-next", "yzhang.markdown-all-in-one", - "usernamehw.errorlens", - "github.copilot" + "davidanson.vscode-markdownlint", + "mikekscholz.pop-icon-theme", + "esbenp.prettier-vscode", + "yoavbls.pretty-ts-errors", + "bradlc.vscode-tailwindcss", + "omkarbhede.tailwindcss-tune", + "zardoy.ts-essential-plugins", + "biomejs.biome", + "helixquar.randomeverything", + "dsznajder.es7-react-js-snippets", + "alduncanson.react-hooks-snippets", + "planbcoding.vscode-react-refactor", + "orta.vscode-twoslash-queries" ] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 45bfb51e..72e149d2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,32 +1,76 @@ -// Use IntelliSense to learn about possible attributes. -// Hover to view descriptions of existing attributes. -// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - { "version": "0.2.0", "configurations": [ { - "name": "Next.js: debug server-side", - "type": "node-terminal", + "name": "Attach by Process ID", + "type": "node", + "request": "attach", + "processId": "${command:PickProcess}", + "restart": true + }, + { + "name": "Launch Next.js", + "type": "node", "request": "launch", - "command": "npm run dev" + "program": "${workspaceFolder}/node_modules/next/dist/bin/next", + "env": { "NODE_OPTIONS": "--inspect" }, + "console": "internalConsole", + "sourceMaps": true, + "trace": true }, { - "name": "Next.js: debug client-side", + "name": "Launch Next.js in Chrome", "type": "chrome", "request": "launch", - "url": "http://localhost:3000" + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}" + }, + { + "name": "Launch Next.js in Edge", + "type": "msedge", + "request": "launch", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}" + }, + { + "name": "Launch All Jest Tests", + "type": "node", + "request": "launch", + "envFile": "${workspaceFolder}/.env", + "program": "${workspaceFolder}/node_modules/jest/bin/jest", + "args": ["--runInBand"] }, { - "name": "Next.js: debug full stack", - "type": "node-terminal", + "name": "Launch Current Jest Test", + "type": "node", "request": "launch", - "command": "pnpm run dev", - "serverReadyAction": { - "pattern": "started server on .+, url: (https?://.+)", - "uriFormat": "%s", - "action": "debugWithChrome" - } + "program": "${workspaceFolder}/node_modules/jest/bin/jest", + "args": ["${relativeFile}"], + "console": "internalConsole", + "internalConsoleOptions": "openOnSessionStart" + }, + { + "name": "Launch Ava Test (experimental)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/node_modules/ava/entrypoints/cli.mjs", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/ava", + "runtimeArgs": ["debug", "--break", "${file}"], + "skipFiles": ["/**/*.js"], + "outputCapture": "std", + "runtimeVersion": "20.10.0", + "console": "integratedTerminal", + "env": { "NODE_OPTIONS": "--loader=tsx" } + } + ], + "compounds": [ + { + "name": "Launch Next.js and Edge", + "configurations": ["Launch Next.js", "Launch Next.js in Edge"] + }, + { + "name": "Launch Next.js and Chrome", + "configurations": ["Launch Next.js", "Launch Next.js in Chrome"] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index cbdc67be..f4215b74 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,37 +1,68 @@ { - // TypeScript Config "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, - - // TailwindCSS Config "tailwindCSS.experimental.classRegex": [ ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], ["tw=\"([^\"]*)\""] ], - "tailwindCSS.includeLanguages": { "plaintext": "html" }, - - // i18n-ally Config - // @see https://github.com/zmedamine90/startui-enzyme/tree/master#translations "i18n-ally.keystyle": "nested", + "css.validate": false, + "tailwindCSS.classAttributes": [ + "class", + "className", + "classNames", + "containerClassName" + ], "i18n-ally.sourceLanguage": "en-us", "i18n-ally.displayLanguage": "en-us", "i18n-ally.localesPaths": ["src/data/i18n"], "i18n-ally.enabledFrameworks": ["general", "react", "next-intl"], - - // Files Config "files.trimTrailingWhitespace": true, "files.insertFinalNewline": true, "files.associations": { "*.ignore": "plaintext", - "*.tson": "typescript", "*.txt": "plaintext" }, - - // VSCode Config "editor.tabSize": 2, - "editor.codeActionsOnSave": { "source.fixAll": false }, - "editor.formatOnSave": true, + "eslint.format.enable": true, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "yzhang.markdown-all-in-one" + }, + "markdownlint.config": { + "MD033": { + "allowed_elements": ["img", "p", "a", "details", "summary"] + } + }, + "tsEssentialPlugins.fixSuggestionsSorting": true, + "search.exclude": { + "**/node_modules": false, + "**/node_modulesDISABLE": true + }, + "tsEssentialPlugins.globalLibCompletions.action": "mark", + "tsEssentialPlugins.patchOutline": true, + "tsEssentialPlugins.outline.arraysTuplesNumberedItems": true, + "tsEssentialPlugins.renameImportNameOfFileRename": true, + "tsEssentialPlugins.signatureHelp.excludeBlockScope": true, + "tsEssentialPlugins.skipNodeModulesReferences": true, + "tsEssentialPlugins.suggestions.localityBonus": true, + "tsEssentialPlugins.tupleHelpSignature": true, + "tsEssentialPlugins.jsxEmmet.modernize": true, + "cSpell.enabled": true, + "tsEssentialPlugins.arrayMethodsSnippets.enable": true, + "ava-runner.experimentalEnabled": false, "editor.unicodeHighlight.allowedCharacters": { "a": true, "а": true, @@ -53,35 +84,34 @@ "у": true, "У": true }, - - // ESLint Config - "eslint.format.enable": true, + "jest.autoRevealOutput": "on-exec-error", + "cSpell.words": [ + "ecmascript", + "graphqlsp", + "nextjs", + "trpc", + "typecheck", + "webhookthing" + ], + "eslint.lintTask.options": "-c ${workspaceFolder}/eslint.config.ts", + "eslint.experimental.useFlatConfig": true, + "prettier.enable": true, + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, "eslint.validate": [ "javascript", "javascriptreact", "typescript", - "typescriptreact" - ], - - // Filetype-specific Config - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[markdown]": { - "editor.defaultFormatter": "DavidAnson.vscode-markdownlint" - }, - "markdownlint.config": { - "MD033": { - "allowed_elements": ["img", "p", "a"] - } - } + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml" + ] } diff --git a/LICENSE.md b/LICENSE.md index 2d967b67..cf620b86 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -17,5 +17,5 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 9890a427..d2a8c627 100644 --- a/README.md +++ b/README.md @@ -1,105 +1,164 @@ -# Relivator: The Most Feature-Rich Next.js 14 Starter +# Relivator 1.2.0: The Most Feature-Rich Next.js 14 Starter -🌐 [https://relivator.bleverse.com](https://relivator.bleverse.com) +🌐 [Launch Relivator's Demo](https://relivator.bleverse.com) | ❄️ [Check Project Features](https://github.com/blefnk/relivator#project-features-checklist) + +Stop running from one starter to the next. With Relivator, you'll have unlimited possibilities. You can create anything you want; all the tools are already prepared, just for you. -We aim to create the world's most feature-rich and global Next.js starter. Offering more than just code—it's a journey. It's stable and ready for production. Scroll down and check out the breathtaking list of project features, including switching between Clerk/NextAuth.js and MySQL/PostgreSQL on the fly. +We aim to create the world's most feature-rich and global Next.js starter. Offering more than just code—it's a journey. It's stable and ready for production. Scroll down and check out the breathtaking list of project features, including switching between Clerk/NextAuth.js and Drizzle's MySQL/PostgreSQL on the fly. -Each week, we grant early access to Relivator to 2 randomly selected individuals. Simply `star this repository` and [let us know how to contact you](https://forms.gle/NXZ6QHpwrxh52VA36). For discussions, join [the project Discord](https://discord.gg/Pb8uKbwpsJ). +Please scroll down the page to see a lot of useful information about how everything works in the project, and a comprehensive list of project features as well. ## How to Install and Get Started -1. **Essential Tools**: Ensure that [_VSCode_](https://code.visualstudio.com), [_Git_](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), _GitHub Desktop_ ([Windows/macOS](https://desktop.github.com/) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)), and _Node.js LTS_ ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) are installed. +1. **Essential Tools**: Ensure that [_VSCode_](https://code.visualstudio.com), [_Git_](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), _GitHub Desktop_ ([Windows/macOS](https://desktop.github.com) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)), and _Node.js LTS_ ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) are installed. 2. **Project Cloning**: [_Create a new fork_](https://github.com/blefnk/relivator/fork) and use GitHub Desktop to download it. -3. **Configuration**: Open VSCode and load the project folder. Press `Ctrl+Shift+P` and search for `>Create New Terminal`. Install _PNPM_ using `corepack enable`. Then, enter `pnpm install` to install the packages. Next, copy the `.env.example` file to a new `.env` file and fill in at least the `DATABASE_URL` field. Finally, send the database schema to your database using `pnpm mysql:push` or `pnpm pg:push`. -4. **Run, Stop, Build**: Use `pnpm dev` to run the app (visit to check it). Stop it by focusing on the console and pressing `Ctrl+C`. After making changes, build the app using `pnpm build`. Thats okay if you see Clerk's warnings. +3. **Configuration**: Open VSCode and load the project folder. Press `Ctrl+Shift+P` and search for `>Create New Terminal`. Install _PNPM_ using `corepack enable`. Then, enter `pnpm install` to install the packages. Next, copy the `.env.example` file to a new `.env` file and fill in at least the `NEXT_PUBLIC_DB_PROVIDER` and `DATABASE_URL` fields. Finally, send the database schema to your database using `pnpm mysql:push` or `pnpm pg:push`. +4. **Run, Stop, Build**: Use `pnpm dev` to run the app (visit to check it). Stop it by focusing on the console and pressing `Ctrl+C`. After making changes, build the app using `pnpm build`. _Thats okay if you see Clerk's warnings_ when executing `pnpm build`, this is a known issue not related to Relivator. 5. **Commit and Deploy**: Upload your project to your GitHub profile using GitHub Desktop. Then, deploy it by importing the project into [Vercel](https://vercel.com/new), making your website publicly accessible on the internet. If you wish to share your work, seek feedback, or ask for assistance, you're welcome to do so either [in our Discord server](https://discord.gg/Pb8uKbwpsJ) or [via GitHub discussions](https://github.com/blefnk/relivator/discussions). -Please scroll down the page to see a lot of useful information about how everything works in the project. +Tip! You can create a folder, for instance, `home`, within the `src` directory, to store your project-specific files. It allows you for easy updates whenever Relivator has new versions. ## Project Features Checklist -- [x] Utilized [Next.js 14](https://nextjs.org), [React 18](https://react.dev), [TailwindCSS](https://tailwindcss.com), and [TypeScript](https://typescriptlang.org) serve as the project's core technologies. -- [x] Implemented authentication through **both [Clerk](https://clerk.com/) and [NextAuth.js](https://authjs.dev)**. -- [x] Unleashed extensive internationalization **in 9 languages** (_English, German, Spanish, French, Hindi, Italian, Polish, Turkish, Ukrainian_), using [next-intl](https://next-intl-docs.vercel.app). -- [x] Undertook [Drizzle ORM](https://orm.drizzle.team), utilizing **both MySQL and PostgreSQL** databases, and [PlanetScale](https://planetscale.com)/[Neon](https://neon.tech)/[Vercel](https://vercel.com)/[Railway](https://railway.app) services. -- [x] Successfully configured `next.config.mjs` with i18n and MDX support. -- [x] Strived for thorough documentation and a beginner-friendly approach throughout the project. -- [x] Skillfully configured and commented on `middleware.ts` for i18n and next-auth. -- [x] Provided exemplary VSCode settings and recommended extensions. -- [x] Optimized the [Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) for SEO, integrating file-system handlers. -- [x] Integrated a TailwindCSS screen size indicator for local project runs. -- [x] Established a user subscription and checkout system using [Stripe](hhttps://github.com/stripe/stripe-node#readme). -- [x] Ensured type-safety validations for project schemas and UI fields using [Zod](https://zod.dev). -- [x] Employed [EsLint](https://eslint.org) and [Prettier](https://prettier.io) to ensure the code is safe and readable. -- [x] Elegantly executed the font system, utilizing [Inter](https://rsms.me/inter) and additional typefaces. -- [x] Developed a storefront, incorporating product, category, and subcategory functionality. -- [x] Designed a modern, cleanly composed UI using [Radix](https://radix-ui.com), with attractive UI components from [shadcn/ui](https://ui.shadcn.com). -- [x] Composed a comprehensive, beginner-friendly `README.md`, including descriptions of [environment variables](https://nextjs.org/docs/basic-features/environment-variables). -- [x] Blog functionality realized through the use of MDX files. -- [x] Implemented [tRPC](https://trpc.io) and [TanStack Query](https://tanstack.com/query) for server and client data fetching. -- [ ] Use absolute paths where applied. -- [ ] Use [Kysely](https://kysely.dev) with Drizzle to achieve full TypeScript SQL query builder type-safety. -- [ ] Translate README.md and related files into more languages. -- [ ] Transform beyond a simple e-commerce store to become a universal website starter. -- [ ] Tidy up `package.json` with correctly installed and orderly sorted packages in `dependencies` and `devDependencies`. -- [ ] The project author should publish a series of detailed videos on how to use this project. There should also be some enthusiasts willing to publish their own videos about the project on their resources. -- [ ] Reduce the number of config files as much as possible. -- [ ] Reduce HTML tag nesting and ensure correct usage of HTML tags whenever possible. -- [ ] Prioritize accessibility throughout, for both app user UI (User Interface) and UX (User Experience), as well as developers' DX (Developer Experience). Maintain usability without compromising aesthetics. -- [ ] Prefer `function` over `const` for components to maintain clean and beginner-friendly code. -- [ ] Optimize all app elements to improve dev cold start and build speeds. -- [ ] Manage email verification, newsletter sign-ups, and email marketing via [Resend](https://resend.com) and [React Email](https://react.email). -- [ ] Make certain environment variables optional, allowing the app to operate without them, simply omitting specific code sections as necessary. -- [ ] Keep the project free from `@ts-expect-error` and related not very type-safety things. -- [ ] Keep the cookie count as low as possible, prepare for a cookie-free future, and implement cookie notifications. -- [ ] Introduce a comment system for products, including Review and Question types. -- [ ] Integrate valuable insights from [Next.js Weekly](https://nextjsweekly.com/issues) into this starter. -- [ ] Implement file uploads using [UploadThing](https://uploadthing.com) and [Cloudinary](https://cloudinary.com). -- [ ] Implement dynamic switching between app features, like database provider, by making corresponding checks for environment variables. -- [ ] Implement AI features and chat, using, for example, [Vercel AI SDK](https://sdk.vercel.ai/docs) (see: [Introducing the Vercel AI SDK](https://vercel.com/blog/introducing-the-vercel-ai-sdk)). -- [ ] Implement advanced theme switching without flashing, utilizing Tailwind Dark Mode with [React Server Side support](https://michaelangelo.io/blog/darkmode-rsc) and dynamic cookies. -- [ ] Implement [Jest](https://jestjs.io) testing, optimized for Next.js. -- [ ] Implement CLI to quickly get Relivator with selected options only. -- [ ] Guarantee that every possible page is enveloped using predefined shell wrappers. -- [ ] Generously comment throughout your code, while keeping it clean. -- [ ] Fully develop advanced sign-up and sign-in pages, integrating both social media and classic form methods. -- [ ] Follow recommendations from [Material Design 3](https://m3.material.io) and other design systems when relevant. -- [ ] Establish, document, and adhere to conventions, such as maintaining a single naming case style for files and variables. -- [ ] Establish a comprehensive i18n, using country and locale codes, and support even more languages. Ensure native speakers verify each language following machine translation. Consider to use the [next-international](https://github.com/QuiiBz/next-international) library. -- [ ] Ensure ultimate type safety using strict mode in [TypeScript](https://typescriptlang.org), typedRoutes, Zod, middleware, etc. -- [ ] Ensure the project lacks any unused items, including packages, libraries, variables, etc. -- [ ] Ensure full Next.js Edge support and compatibility. -- [ ] Ensure full [Bun](https://bun.sh) support and compatibility. -- [ ] Ensure all website languages are grammatically correct and adhere to the latest rules for each language. -- [ ] Ensure all items in the project are sorted in ascending order unless different sorting is required elsewhere. -- [ ] Ensure accessibility for **users**, **developers** (both beginners and experts), **bots** (like [Googlebot](https://developers.google.com/search/docs/crawling-indexing/googlebot) or [PageSpeed Insights Crawler](https://pagespeed.web.dev)), for **everyone**. -- [ ] Enhance `middleware.ts` configuration with multi-middleware implementation. -- [ ] Employ all relevant [TanStack](https://tanstack.com) libraries. -- [ ] Elegantly configure `app.ts`, offering a single config to replace all others. -- [ ] Develop workflows for both sellers and customers. -- [ ] Develop an advanced storefront featuring products, categories, and subcategories. -- [ ] Develop an advanced 404 Not Found page with full internationalization support. -- [ ] Develop advanced sign-up, sign-in, and restoration using email-password and magic links. -- [ ] Develop an even more sophisticated implementation of user subscriptions and the checkout system via Stripe. -- [ ] Decrease file count by merging similar items, etc. -- [ ] Create the most beginner-friendly and aesthetically pleasing starter possible. -- [ ] Create an advanced notification system, inclusive of toasters, pop-ups, and pages. -- [ ] Create a new landing page with a distinctive design and update components, plus fully redesign all other pages and components. -- [ ] Confirm the project is free from duplicates, like files, components, etc. -- [ ] Conduct useful tests, including possible stress tests, to simulate and assess app performance under high-traffic conditions. -- [ ] Comprehensively configure Next.js 14 App Router, with API routes managed by Route Handlers, including the RSCs and all other new features. -- [ ] Complete the BA11YC (Bleverse Accessibility Convention) checklist. -- [ ] Complete parts of the [BA11YC (Bleverse Accessibility Convention) checklist](https://github.com/bs-oss/BA11YC). -- [ ] Boost app performance scores on platforms like Google PageSpeed Insights. Ensure the app passes all rigorous tests. -- [ ] Apply the [next-usequerystate](https://github.com/47ng/next-usequerystate) library where appropriate ([read the article](https://francoisbest.com/posts/2023/storing-react-state-in-the-url-with-nextjs)). -- [ ] Add some interesting and useful types to the project, for example, using the [type-fest](https://github.com/sindresorhus/type-fest) library. -- [ ] Add pop-ups for cookies/GDPR notifications (with a respective management settings page), and Google floating notifications for quick login, etc. -- [ ] Add an admin dashboard that includes stores, products, orders, subscriptions, and payments. -- [ ] Add advanced indicators for installed packages, environment variables, and improvements to TailwindCSS screen sizes. - -This roadmap outlines the key features and improvements planned for implementation in this Next.js starter. Items not marked may already be configured but might not have undergone extensive testing. Should you find any mistakes, please create an issue. +**Note:** _Every two weeks, we gift early access to Relivator's future plugins to three randomly selected individuals. Simply `star this repository` and [let us know how to contact you](https://forms.gle/NXZ6QHpwrxh52VA36). For discussions, join [the project's Discord](https://discord.gg/Pb8uKbwpsJ)._ + +
+ [27.12.2023] 🎄 Relivator v1.2.0 is here! 🥳 Click to see the announcement 🎁 + +--- + +_Relivator 1.2.0 is already here! I, [@blefnk Nazarii Korniienko](https://github.com/blefnk), am thrilled to wrap up this year 2023, proudly presenting this release to the OSS community! So, the result of over two months of hard work is finally here!_ + +In this version, significant attention was focused on stability, security, performance optimization, and a substantial improvements in design—both visually, UX, and the logic of how the app works. A lot was really done, too much to list everything! Be sure to install it and check it out for yourself! + +By the way, you can now enjoy a finely-tuned ESLint Flat Config! Also, it's worth noting that Clerk, since version 1.1.0, is no longer considered deprecated in the Relivator project. Thanks to 1.2.0, Clerk now works seamlessly with an easy switch to NextAuth.js when needed, all on the fly. Plus, full support for Turbopack (next dev --turbo) is finally here, even for next-intl! + +As for next-intl, finally, we can now enjoy internationalization that works not only on the client-side but also on the server! Only the 404 page has client-side i18n messages, all other pages and components use i18n as server-first. And this is really cool! + +Many unique solutions have been implemented in this new version. Moreover, using Relivator from this version, you have the opportunity to try out the alpha version of our unique Code-First/No-Code Builder system for React pages and components (which will appear in Reliverse CMS in the future). Just visit the Admin page while in the development environment and enjoy. + +If you have already used Relivator before, please pay attention, this is very important! Be sure to check the updated .env.example file and update your .env file accordingly. + +As a small teaser/spoiler, for Relivator 1.3.0, even more improvements in visual design and UX are planned; 1.4.0 will come with a magical CLI implementation, allowing you to quickly obtain only the necessary features and dependencies for your app (even automated updates and the ability to add other functions and packages to an already installed app); 1.5.0 will undergo a full code refactoring that will meet all the best standards and practices; 1.6.0-2.0.0+ versions, apart from many other things, will receive most of the items currently unchecked in the Roadmap (located in the project's README.md). It's going to be incredible! + +So, install this new version of Relivator 1.2.0 and appreciate the multitude of incredible features, and freely use it in your own projects today. Please use your preferred feedback channels to share your thoughts on Relivator 1.2.0 and what you would like to see in future releases. + +Don't forget to also check out the significantly updated README.md, it's worth it. + +Enjoy! ❄️☃️ Merry Christmas and Happy New Year 2024! 🎇🥳 + +
+ +--- + +_The roadmap below outlines the key features and improvements planned for implementation in this Next.js starter. `Items not marked may already be configured` but might not have undergone extensive testing. Should you find any mistakes, please create an issue._ + +- [x] 1. Utilized [Next.js 14](https://nextjs.org) with **complete [Turbopack](https://turbo.build) support**, alongside [React 18](https://react.dev), [TailwindCSS](https://tailwindcss.com), and [TypeScript](https://typescriptlang.org) as the project's core technologies. +- [x] 2. Undertook [Drizzle ORM](https://orm.drizzle.team), utilizing **both MySQL and PostgreSQL** databases, and [PlanetScale](https://planetscale.com)/[Neon](https://neon.tech)/[Vercel](https://vercel.com)/[Railway](https://railway.app) services. +- [x] 3. Successfully configured `next.config.mjs` with i18n, MDX, and even [Million.js](https://million.dev) support. +- [x] 4. Strived for thorough documentation and a beginner-friendly approach throughout the project. +- [x] 5. Skillfully configured and commented on `middleware.ts` for i18n and next-auth. +- [x] 6. Set upped the Content-Security-Policy (CSP) system as a security measure to prevent XSS attacks (disabled by default). +- [x] 7. Provided exemplary VSCode settings and recommended extensions. +- [x] 8. Optimized the [Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) for SEO, integrating file-system handlers. +- [x] 9. Integrated a TailwindCSS screen size indicator for local project runs. +- [x] 10. Implemented extensive internationalization in 10 languages (English, German, Spanish, Persian, French, Hindi, Italian, Polish, Turkish, Ukrainian) using the [next-intl](https://next-intl-docs.vercel.app) library, which works both on server and client, and included support for `next dev --turbo`. +- [x] 11. Implemented authentication through **both [Clerk](https://clerk.com) and [NextAuth.js](https://authjs.dev)**. +- [x] 12. Implemented [tRPC](https://trpc.io) and [TanStack Query](https://tanstack.com/query) (with [React Normy](https://github.com/klis87/normy#readme)) to have advanced server and client data fetching. +- [x] 13. Established a user subscription and checkout system using [Stripe](hhttps://github.com/stripe/stripe-node#readme). +- [x] 14. Ensured type-safety validations for project schemas and UI fields using [zod](https://zod.dev) library. +- [x] 15. Employed [EsLint](https://eslint.org) (with [Flat Config support](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new) and [@antfu/eslint-config](https://github.com/antfu/eslint-config#antfueslint-config), including a [TypeScript patch](https://github.com/antfu/eslint-ts-patch#eslint-ts-patch) to enable the `eslint.config.ts` filename), perfectly configured to work with both [Biome](https://biomejs.dev) and [Prettier](https://prettier.io) (including the latest Sort Imports addon) to ensure the code is readable, clean, and safe. **Tip:** use `pnpm ui:eslint` to open [ESLint Flat Config Viewer](https://github.com/antfu/eslint-flat-config-viewer#eslint-flat-config-viewer) UI tool. +- [x] 16. Elegantly executed the font system, utilizing [Inter](https://rsms.me/inter) and additional typefaces. +- [x] 17. Developed a storefront, incorporating product, category, and subcategory functionality. +- [x] 18. Designed a modern, cleanly composed UI using [Radix](https://radix-ui.com), with attractive UI components from [shadcn/ui](https://ui.shadcn.com). +- [x] 19. Composed a comprehensive, beginner-friendly `README.md`, including descriptions of [environment variables](https://nextjs.org/docs/basic-features/environment-variables). +- [x] 20. Blog functionality realized through the use of MDX files. +- [ ] 21. Use absolute paths everywhere where applied in the project. +- [ ] 22. Use [Kysely](https://kysely.dev) with Drizzle to achieve full TypeScript SQL query builder type-safety. +- [ ] 23. Translate README.md and related files into more languages. +- [ ] 24. Transform beyond a simple e-commerce store to become a universal website starter. +- [ ] 25. Tidy up `package.json` with correctly installed and orderly sorted packages in `dependencies` and `devDependencies`. +- [ ] 26. The project author should publish a series of detailed videos on how to use this project. There should also be some enthusiasts willing to publish their own videos about the project on their resources. +- [ ] 27. Reduce the number of project packages, config files, and etc., as much as possible. +- [ ] 28. Reduce HTML tag nesting and ensure correct usage of HTML tags whenever possible. +- [ ] 29. Prioritize accessibility throughout, for both app user UI (User Interface) and UX (User Experience), as well as developers' DX (Developer Experience). Maintain usability without compromising aesthetics. +- [ ] 30. Prefer `function`/`type` over `const`/`interface` to maintain readably-clean and beginner-friendly code (by using specific [recommendations for functional programming](https://youtu.be/nuML9SmdbJ4) approach). +- [ ] 31. Optimize all app elements to improve dev cold start and build speeds. +- [ ] 32. Move each related system to its special folder (into the `src/core` folder), so any system can be easily removed from the project as needed. +- [ ] 33. Move component styles to .css or .scss files, or use packages that provide syntax sugar for styles in .tsx files. +- [ ] 34. Migrate to NextAuth.js' [next-auth@beta](https://npmjs.com/package/next-auth?activeTab=versions) ([discussions](https://github.com/nextauthjs/next-auth/releases/tag/next-auth%405.0.0-beta.4)), and to Clerk's [@clerk/*@alpha]. +- [ ] 35. Manage email verification, newsletter sign-ups, and email marketing via [Resend](https://resend.com) and [React Email](https://react.email). +- [ ] 36. Make sure each page and the middleware are green or yellow, but not red, upon build in the development terminal. +- [ ] 37. Make each environment variable optional, allowing the app to operate without anything configured, simply omitting specific code sections as necessary. +- [ ] 38. Keep the project on the best possible way of writing good and clean code, by following guidelines like [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript/tree/master/react) / [Airbnb React/JSX Style Guide](https://github.com/airbnb/javascript/tree/master/react). +- [ ] 39. Keep the project free from things like `@ts-expect-error`, `eslint-disable`, `biome-ignore`, and others related not very safety things. +- [ ] 40. Keep the cookie count as low as possible, prepare for a cookie-free future, implement cookie management and notifications. +- [ ] 41. Introduce a comment system for products, including Review and Question types. +- [ ] 42. Integrate valuable things from [Next.js' Examples](https://github.com/vercel/next.js/tree/canary/examples) into this project. +- [ ] 43. Integrate valuable insights from [Next.js Weekly](https://nextjsweekly.com/issues) into this starter. +- [ ] 44. Implement type-safe [GraphQL](https://hygraph.com/learn/graphql) support by using [Fuse.js](https://fusejs.org) framework. +- [ ] 45. Implement the best things from [Payload CMS](https://github.com/payloadcms/payload) with Relivator's improvements. +- [ ] 46. Implement Storybook 8.0 support (read the "[Storybook for React Server Components](https://storybook.js.org/blog/storybook-react-server-components)" announcement). +- [ ] 47. Implement smart and unified log system, both for development and production, both for console and writing to specific files. +- [ ] 48. Implement Sentry to handle errors and CSP reports for the application. +- [ ] 49. Implement Relivator's/Reliverse's own version of [Saas UI](https://saas-ui.dev) to be fully compatible with our project with only needed functionality, with using Tailwind and Shadcn instead of Chakra. +- [ ] 50. Implement our own fork of [Radix Themes](https://radix-ui.com) library with set up `
` as wrapper instead of its current `
`; OR implement our very own solution which generates Tailwind instead of Radix's classes. +- [ ] 51. Implement full [Million.js](https://million.dev) support (read [Million 3.0 Announcement](https://million.dev/blog/million-3) to learn more). +- [ ] 52. Implement file uploads using [UploadThing](https://uploadthing.com) and [Cloudinary](https://cloudinary.com). +- [ ] 53. Implement dynamic switching between app features, like database provider, by making corresponding checks for environment variables. +- [ ] 54. Implement docs to the project and move each explanation from the code into that docs. +- [ ] 55. Implement deep feature-parity and easy-migration compatibility with Reliverse. +- [ ] 56. Implement cooperation possibilities by using things like [liveblocks](https://liveblocks.io). +- [ ] 57. Implement CLI to quickly get Relivator with selected options only; try to use [Charm](https://charm.sh) things to build the Reliverse CLI. +- [ ] 58. Implement AI features and chat, using, for example, [Vercel AI SDK](https://sdk.vercel.ai/docs) (see: [Introducing the Vercel AI SDK](https://vercel.com/blog/introducing-the-vercel-ai-sdk)). +- [ ] 59. Implement advanced theme switching without flashing, utilizing Tailwind Dark Mode with [React Server Side support](https://michaelangelo.io/blog/darkmode-rsc) and dynamic cookies. +- [ ] 60. Implement [Jest](https://jestjs.io) testing, optimized for Next.js. +- [ ] 61. Guarantee that every possible page is enveloped using predefined shell wrappers. +- [ ] 62. Generously comment throughout the code, while keeping it clean. +- [ ] 63. Fully develop advanced sign-up and sign-in pages, integrating both social media and classic form methods. +- [ ] 64. Follow the best practices from the articles and videos like "[10 React Antipatterns to Avoid](https://youtube.com/watch?v=b0IZo2Aho9Y)" (check theirs comment section as well). +- [ ] 65. Follow recommendations from [Material Design 3](https://m3.material.io) and other design systems when relevant. +- [ ] 66. Establish, document, and adhere to conventions, such as maintaining a single naming case style for files and variables. +- [ ] 67. Establish a comprehensive i18n, using country and locale codes, and support even more languages. Ensure native speakers verify each language following machine translation. Consider to use the [next-international](https://github.com/QuiiBz/next-international) library. +- [ ] 68. Ensure ultimate type-safety using strict mode in [TypeScript](https://typescriptlang.org) including ["Do's and Don'ts"](https://typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html) recommendations (without using [dangerous type assertions](https://youtube.com/watch?v=K9pMxqb5IAk), and with [optional types correct usage](https://youtube.com/watch?v=qy6IBZggXSQ), by also using `pnpm fix:ts` — once you run that, [TypeStat](https://github.com/JoshuaKGoldberg/TypeStat) will start auto-fixing TS typings); And also ensure type-safety with typedRoutes, zod, middleware, etc. +- [ ] 69. Ensure the project lacks any unused items, including packages, libraries, variables, etc. +- [ ] 70. Ensure project has full support for [GSAP](https://gsap.com) (GreenSock Animation Platform) library, with convient ways to use @gsap/react [useGSAP() hook](https://gsap.com/docs/v3/React/tools/useGSAP). +- [ ] 71. Ensure full Next.js Edge support and compatibility. +- [ ] 72. Ensure full [Biome](https://biomejs.dev), [Bun](https://bun.sh), and [Docker](https://docker.com) support and compatibility. +- [ ] 73. Ensure all website languages are grammatically correct and adhere to the latest rules for each language. +- [ ] 74. Ensure all items in the project are sorted in ascending order unless different sorting is required elsewhere. +- [ ] 75. Ensure the project avoids using redundant imports, such as importing everything from React, when it's sufficient to import only the necessary hooks, for example. +- [ ] 76. Ensure accessibility for **users**, **developers** (both beginners and experts), **bots** (like [Googlebot](https://developers.google.com/search/docs/crawling-indexing/googlebot) or [PageSpeed Insights Crawler](https://pagespeed.web.dev)), for **everyone**. +- [ ] 77. Enhance `middleware.ts` configuration with multi-middleware implementation. +- [ ] 78. Employ all relevant [TanStack](https://tanstack.com) libraries. +- [ ] 79. Eliminate each disabling in the `.eslintrc.cjs` file, configure config to strict, but to be still beginner-friendly. +- [ ] 80. Elegantly configure `app.ts`, offering a single config to replace all possible others. +- [ ] 81. Develop workflows for both sellers and customers. +- [ ] 82. Develop an even more sophisticated implementation of user subscriptions and the checkout system via Stripe; and also write Jest/Ava tests for Stripe and use `.thing/hooks/stripe_*.json` [webhookthing](https://docs.webhookthing.com) data files for these tests. +- [ ] 83. Develop an advanced storefront featuring products, categories, and subcategories. +- [ ] 84. Develop an advanced 404 Not Found page with full internationalization support. +- [ ] 85. Develop advanced sign-up, sign-in, and restoration using email-password and magic links. +- [ ] 86. Decrease file count by merging similar items, etc. +- [ ] 87. Create the most beginner-friendly and aesthetically pleasing starter possible. +- [ ] 88. Create an advanced notification system, inclusive of toasters, pop-ups, and pages. +- [ ] 89. Create a new landing page with a distinctive design and update components, plus fully redesign all other pages and components. +- [ ] 90. Consider adding Facebook's [StyleX](https://stylexjs.com) to work seamlessly with TailwindCSS, but only StyleX will work without setting up Babel in the project to keep full Turbopack/Turborepo support. +- [ ] 91. Confirm the project is free from duplicates, like files, components, etc. +- [ ] 92. Conduct useful tests, including possible stress tests, to simulate and assess app performance under high-traffic conditions. +- [ ] 93. Comprehensively configure Next.js 14 App Router, with API routes managed by Route Handlers, including the RSCs and all other new features. +- [ ] 94. Complete the BA11YC (Bleverse Accessibility Convention) checklist. +- [ ] 95. Complete parts of the [BA11YC (Bleverse Accessibility Convention) checklist](https://github.com/bs-oss/BA11YC). +- [ ] 96. Check all components with side-effects for re-rendering, it is recommended to re-render each component a maximum of 2 times ([good video about it (in Ukrainian)](https://youtu.be/uH9uMH2e5Ts)). +- [ ] 97. Boost app performance scores on platforms like Google PageSpeed Insights. Ensure the app passes all rigorous tests. +- [ ] 98. Apply the [next-usequerystate](https://github.com/47ng/next-usequerystate) library where appropriate ([read the article](https://francoisbest.com/posts/2023/storing-react-state-in-the-url-with-nextjs)). +- [ ] 99. Add the most valuable and useful ESLint things from [awesome-eslint](https://github.com/dustinspecker/awesome-eslint) collection. +- [ ] 100. Add some interesting and useful types to the project, for example, using the [type-fest](https://github.com/sindresorhus/type-fest) library. +- [ ] 101. Add pop-ups for cookies/GDPR notifications (with a respective management settings page), and Google floating notifications for quick login, etc. +- [ ] 102. Add an admin dashboard that includes stores, products, orders, subscriptions, and payments. +- [ ] 103. Add advanced indicators for environment variables, and improvements to TailwindCSS screen sizes. +- [ ] 104. Add the integration of a smart git-hooks system with various additional useful functionality. ![Relivator Landing Page Screenshot](/public/screenshot.png) @@ -107,29 +166,38 @@ This roadmap outlines the key features and improvements planned for implementati ## Project Commands -- **`pnpm stripe:listen`**: This command runs the Stripe webhook listener and assists in setting up Stripe environment variables. You may need to have [Stripe CLI](https://stripe.com/docs/stripe-cli) installed to run this command. -- **`pnpm appts`**: This command performs a comprehensive check of the codebase. It sequentially executes `pnpm typecheck` to conduct type-checking and identify any TypeScript errors, `pnpm lint` for code linting, `pnpm format` to format with Prettier, and finally, `pnpm:build`. -- **`pnpm latest`**: This command updates all project packages to their latest stable versions and updates `next-intl` to the latest beta version. Please update the latest line in the `scripts` section of `package.json` if a [newer beta version of _next-intl_](https://github.com/amannn/next-intl/pull/149) is released. -- **`pnpm latest:canary`**: This command runs `pnpm latest` and updates Next.js and React to the latest versions available on their canary branches. Use this only if you are certain about why you need it. +- **`pnpm db:studio`**: This command runs the Drizzle Studio on the path. +- **`pnpm stripe:listen`**: This command runs the Stripe webhook listener and assists in setting up Stripe environment variables. You may need to have the [Stripe CLI](https://stripe.com/docs/stripe-cli) installed to run this command. +- **`pnpm latest`**: This command updates all project packages to their latest stable versions and updates tRPC to the most recent version on the next branch. This ensures we have the newest versions of TanStack Query v5. +- **`pnpm up-next:canary`**: This command updates Next.js and React to the latest versions available on their canary branches. Use this only if you are certain about its necessity. +- **`pnpm appts`**: This command performs a comprehensive check of the codebase. It sequentially executes `pnpm typecheck` to identify any TypeScript errors, `pnpm format` to format the code with Prettier (and/or with Biome — coming soon), `pnpm lint` for code linting with EsLint (most of rules in `eslint.config.ts` are disabled by default, just enable what you need) (and/or with Biome — coming soon). **NOTE**: Linting can be time-consuming, so please be patient. The command also runs `pnpm test` to check Jest tests, and finally, it executes `pnpm build`. _Thats okay if you see Clerk's warnings_ when executing `pnpm build`, this is a known issue not related to Relivator. -## About the Project +## Details About the Project -We've laid the foundation – now it’s your turn to dive in and speed up your development. Explore everything new with Next.js 14 right here, with Relivator. +[![Join the Relivator Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord] -Grab it and enjoy! Don’t forget: your feedback and stars mean the world to us. Smash that star button! Fork it! Your involvement lifts the project to new heights! If you have coding skills, your contributions are always welcome! +We've laid the foundation—now it's your turn to dive in and speed up your development. And, yes, have **fun—think of Relivator as a sandbox**! It's like Minecraft; you can build anything with Relivator, as your creativity has no limits! Explore everything new with Next.js 14 and with many web things right here, right now—with Relivator. + +You can even think of Relivator as a Next.js framework! So, finally, just grab it and enjoy! And, don’t forget: your feedback and stars mean the world to us. Smash that star button! Fork it! Your involvement lifts the project to new heights! If you have coding skills, your contributions are always welcome! Run into issues? Join our repository discussions, open an issue, or DM us on: [Twitter/𝕏](https://x.com/blefnk), [Discord](https://discord.gg/Pb8uKbwpsJ), [Fiverr](https://fiverr.com/blefnk), [LinkedIn](https://linkedin.com/in/blefnk), or [Facebook](https://facebook.com/blefnk). This project has big plans and we value all the help we can get! If you’re keen to make your own commits, check out the Project Roadmap above to see potential enhancements for the project. Also, use `Cmd/Ctrl+Shift+F` in VSCode and search for `todo:` to find spots that need attention. Please visit the **[Commits](https://github.com/blefnk/relivator/issues)** tab for more opportunities to assist. +**🔥 We're Growing Fast! A Huge Thanks to [All Our Supporters](https://github.com/blefnk/relivator/stargazers)! Check Out Our Star History:** + +[![Star History Chart](https://api.star-history.com/svg?repos=blefnk/relivator&type=Date)](https://star-history.com/#blefnk/relivator&Date) + > **Note** > Striving to be highly useful, this README contains a lot of information. Some text may be outdated and will be updated as we grow. Please let us know on the [discussion page](https://github.com/blefnk/relivator/discussions/6) if you spot any small issues like outdated info, broken links, or grammatical/spelling errors in README.md or other files. +_Hint: This README.md is translated into these languages (may be outdated):_ [Polish](https://github.com/blefnk/relivator/blob/main/.github/translations/polish.md), [Ukrainian](https://github.com/blefnk/relivator/blob/main/.github/translations/ukrainian.md). + ## Environment Variables (`.env` file) **Refer to the [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env.example) file as your guide. Simply copy data from it to a new `.env` file.** -The DATABASE_URL environment variable is mandatory; others are optional. You're welcome to deploy the application as-is, but ensure you verify what's necessary. Though the application will run without certain variables, missing ones may deactivate specific features. +The `DATABASE_URL`, `NEXT_PUBLIC_DB_PROVIDER`, and `NEXT_PUBLIC_AUTH_PROVIDER` environment variables are mandatory; others are optional. You're welcome to deploy the application as-is, but ensure you verify what's necessary. Though the application will run without certain variables, missing ones may deactivate specific features. Ensure that default values are defined for essential environment variables. Never store secrets in the `.env.example` file. For newcomers or repo cloners, use `.env.example` as a template to create your `.env` file, ensuring it’s never committed. Update the schema in `/src/env.mjs` when adding new variables. @@ -145,7 +213,7 @@ Refer to the [`.env.example`](https://github.com/blefnk/relivator/blob/main/.env Locally, install the [Stripe CLI](https://stripe.com/docs/stripe-cli) and run the command `pnpm stripe:listen` to initiate the Stripe webhook listener. This action connects Stripe to your account and generates a webhook key, which you can then set as an environment variable in Stripe's settings. -When testing Stripe, you can use its test data: `4242 4242 4242 4242` | `12/34` | `567` | `Random Name` | `Random Country`. +When testing Stripe, you can use its test data: `4242424242424242` | `12/34` | `567` | `Random Name` | `Random Country`. Please refer to [src/app/api/webhooks/stripe/route.ts](https://github.com/blefnk/relivator/blob/main/src/app/api/webhooks/stripe/route.ts) file to learn more in the deep details how Stripe things work in the app. You can also visit the [official Stripe repository](https://github.com/stripe/stripe-node#readme), where you'll find a lot of useful information. @@ -189,27 +257,53 @@ Presently, all languages are machine-translated. Future revisions by native spea Note that i18n messages from another one of our open-source projects are currently present and will be removed shortly. +We are using beta/rc _next-intl_ versions for internationalization. Find more information about [here](https://next-intl-docs.vercel.app/blog/next-intl-3-0) and [here](https://github.com/amannn/next-intl/pull/149). + **Currently supported locales (you can add your own manually):** -de-DE, en-US, es-ES, fr-FR, hi-IN, it-IT, pl-PL, tr-TR, uk-UA. +de-DE, en-US, es-ES, fa-IR, fr-FR, hi-IN, it-IT, pl-PL, tr-TR, uk-UA. -## Design Decisions, Code Insights, Recommendations +## Principles, Design Decisions, Code Insights, Recommendations _We're continuously improving this section. Contributions are welcomed!_ Our starter aims to be a rich resource for developers at all stages of their journey. Within the comment blocks and dedicated sections at the end of select files, you'll find valuable insights and clarifications on a wide array of topics. Your contributions to enhancing these educational nuggets are highly encouraged! -**Advanced Environment Variables:** +**Principles (W.I.P):** + +- [ ] Every file and component should be built consciously, with a certain sense of intelligence, with performance in mind. +- [ ] We need to think of the project as if it were a planet with its own continents, countries, cities, rooms, individuals, entities etc. + +**Highly-Recommended VSCode Extensions:** + +1. [Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments) +2. [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) +3. [Error Lens](https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens) +4. [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) +5. [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) +6. [i18n Ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) +7. [JavaScript and TypeScript Nightly](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next) +8. [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) +9. [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) +10. [POP! Icon Theme](https://marketplace.visualstudio.com/items?itemName=mikekscholz.pop-icon-theme) +11. [Prettier—Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) +12. [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) +13. [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) +14. [TailwindCSS Tune](https://marketplace.visualstudio.com/items?itemName=omkarbhede.tailwindcss-tune) +15. [TypeScript Essential Plugins](https://marketplace.visualstudio.com/items?itemName=zardoy.ts-essential-plugins) -The `.env.example` file covers all the essential variables for a fully functional website, tailored for beginners. However, if you require advanced configurations, you can extend your `.env` file with the following variables: +
+ Why "TypeScript Essential Plugins" is Recommended -```properties -# For Discord Server Integration: Navigate to Edit Channel > Integrations > New Webhook to obtain the URL. -DISCORD_WEBHOOK_URL="" +«Feature-complete TypeScript plugin that improves every single builtin feature such as completions, definitions, references and so on, and also adds even new TypeScript killer features, so you can work with large codebases faster! We make completions more informative. Definitions, references (and sometimes even completions) less noisy. And finally our main goal is to provide most customizable TypeScript experience for IDE features.» © [VSCode Extension Repository](https://github.com/zardoy/typescript-vscode-plugins#readme) -# For Loglib Integration: The site ID can be found on https://loglib.io. -LOGLIB_SITE_ID="" -``` +Note: You can configure extension settings by opening VSCode Settings UI and searching for `@ext:zardoy.ts-essential-plugins` there. + +
+ +**Advanced Environment Variables:** + +The `.env.example` file covers all the essential variables for a fully functional website, tailored for beginners. However, if you require advanced configurations, you can modify any value in `.env` file as needed. **About the Plugins Folder:** @@ -235,20 +329,27 @@ The `src/app.ts` file hosts critical configurations to modify website contents a Customize this file as per your requirements. +**Authentication:** + +Setting up authentication is straightforward. + +You can configure available sign-in providers for Clerk in the `src/app.ts` file. + +Please remember that Clerk fully works with third-party services like "Google PageSpeed Insight" only when domain and live keys are used. + +_This section will be implemented soon._ + **How to Deploy the Project:** Please check the _How to Install and Get Started_ section before making the initial deployment. Consult the deployment guides for [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify), and [Docker](https://create.t3.gg/en/deployment/docker) for further details. The project has only been tested on Vercel; please inform us if you encounter issues with other deployment services. -**UI Components:** +**Design System and UI Components:** -By default, this project includes components from various libraries, as well as unstyled [shadcn/ui](https://ui.shadcn.com) components. Shadcn/ui even allows you to generate new UI components using its CLI (where "button" can be any Shadcn UI element): `pnpm dlx shadcn-ui@latest add button`. - -**Authentication:** +TODO: Implement design system and style guide. -Setting up authentication is straightforward. -_This section will be implemented soon._ +By default, this project includes components from various libraries, as well as unstyled [shadcn/ui](https://ui.shadcn.com) components. Shadcn/ui even allows you to generate new UI components using its CLI (where "button" can be any Shadcn UI element): `pnpm dlx shadcn-ui@latest add button`. **Bun Things Compatibility:** @@ -263,12 +364,25 @@ A comprehensive guide detailing the typical application workflow will be impleme 3. _Middleware Setup_: `middleware.ts` 4. _Additional Steps_: Stay tuned... +**FAQ (Frequently Asked Questions):** + +_Q:_ How to grant admin rights to myself or to another user? +_A:_ Just run `pnpm db:studio`, navigate to the `acme_user` table and set `role: admin` for the user you need. In the future, if you have admin rights, you will be able to change the user privilegies of selected users directly from the frontend admin page. + +_Q:_ What does the `DEV_DEMO_NOTES` environment variable mean? +_A:_ Just don't use it. It is used only on the official [Relivator demo website](https://relivator.bleverse.com) to showcase certain features that are not needed in real-world applications. + +_Q:_ I'm using PlanetScale as my database provider. After taking a break from the project, I'm now encountering "unable to connect to branch" error in the console. How can I fix this? +_A:_ Simply go to the PlanetScale dashboard and click on the `wake up` button. Please contact us in case if your database is not asleep and the problem still persists. + **Recommended Things to Learn:** -1. [Relivator: Next.js 14 Starter (Release Announce of Relivator on Medium)](https://cutt.ly/awf6fScS) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) -2. [Welcome to the Wild World of TypeScript, Mate! Is it scary?](https://cutt.ly/CwjVPUNu) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) -3. [Thoughts on Next.js 13, Server Actions, Drizzle, Neon, Clerk, and More](https://github.com/Apestein/nextflix/blob/main/README.md#overall-thoughts) by [@Apestein](https://github.com/Apestein) -4. [Huge Next-Multilingual Readme About i18n](https://github.com/Avansai/next-multilingual#readme) by [@Avansai](https://github.com/Avansai) +1. [Introduction to Next.js and React](https://youtube.com/watch?v=h2BcitZPMn4) by [Lee Robinson](https://twitter.com/leeerob) +2. [Relivator: Next.js 14 Starter (Release Announce of Relivator on Medium)](https://cutt.ly/awf6fScS) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +3. [Welcome to the Wild World of TypeScript, Mate! Is it scary?](https://cutt.ly/CwjVPUNu) by [Nazarii Korniienko @Blefnk](https://github.com/blefnk) +4. [React: Common Mistakes in 2023](https://docs.google.com/presentation/d/1kuBeSh-yTrL031IlmuwrZ8LvavOGzSbo) by [Cory House](https://twitter.com/housecor) +5. [Thoughts on Next.js 13, Server Actions, Drizzle, Neon, Clerk, and More](https://github.com/Apestein/nextflix/blob/main/README.md#overall-thoughts) by [@Apestein](https://github.com/Apestein) +6. [Huge Next-Multilingual Readme About i18n](https://github.com/Avansai/next-multilingual#readme) by [@Avansai](https://github.com/Avansai) _More learning resources can be found within the files of this repository._ @@ -308,22 +422,188 @@ This project is licensed under MIT and is free to use and modify for your own pr **Follow Us Everywhere:** [GitHub](https://github.com/blefnk) | [Twitter/𝕏](https://x.com/blefnk) | [Discord](https://discord.gg/Pb8uKbwpsJ) | [Fiverr](https://fiverr.com/blefnk) | [LinkedIn](https://linkedin.com/in/blefnk) | [Facebook](https://facebook.com/blefnk) -This Next.js 14 starter was crafted with love by [@blefnk Nazarii Korniienko](https://github.com/blefnk), and by the incredible [Bleverse OSS community](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors). We are deeply grateful for all the contributions and support provided by everyone for this project. +This Next.js 14 starter—Relivator—was crafted with love by [@blefnk Nazarii Korniienko](https://github.com/blefnk), and by the incredible [Bleverse OSS community](https://github.com/blefnk/relivator/wiki/Project-Credits-&-Contributors). We are deeply grateful for all the contributions and support provided by everyone for this project. --- Happy coding! Embark on your coding adventure, learn, iterate, and most importantly – enjoy the process! Remember – this is a space of learning and experimentation. Dive in and savor the journey! 🚀🌌 -[![Join the Bleverse Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord] +![Bleverse Relivator OG Image](/public/og-image.png) -**🔥 We're Growing Fast! A Huge Thanks to [All Our Supporters](https://github.com/blefnk/relivator/stargazers)! Check Out Our Star History:** +Check out [our other free Next.js 14 starter](https://github.com/blefnk/reliverse). This one, a monorepo, provides the tech used in the current starter and adds: Turborepo/Turbopack, Prisma, Valibot, Lucia, Clerk, and much more, as we experimentally attempt to combine all vital and widely-used tech. It's like thinking about: Reliverse (WordPress) + Relivator (WooCommerce) = 😍. -[![Star History Chart](https://api.star-history.com/svg?repos=blefnk/relivatorandtype=Timeline)](https://star-history.com/#blefnk/relivator) +[bleverse-discord]: https://discord.gg/Pb8uKbwpsJ --- -![Bleverse Relivator OG Image](/public/og-image.png) - -_Check out [our other free Next.js 14 starter](https://github.com/blefnk/reliverse). This one, a monorepo, provides the tech used in the current starter and adds: Turborepo/Turbopack, Prisma, Valibot, Lucia, Clerk, and much more, as we experimentally attempt to combine all vital and widely-used tech._ - -[bleverse-discord]: https://discord.gg/Pb8uKbwpsJ +
+ Relivator v1.2.0: Table of Dependencies + +| Unsorted Packages | Radix/Udecode | ESLint Plugins | React/Next | CSpell | Types | +| -------------------------------------------- | ----------------------------------- | -------------------------------------- | --------------------------- | --------------------------- | --------------------- | +| 1. @auth/core | 2. @radix-ui/react-accordion | 3. eslint-plugin-drizzle | 4. next-auth | 5. @cspell/dict-companies | 6. @types/mdx | +| 7. @auth/drizzle-adapter | 8. @radix-ui/react-alert-dialog | 9. eslint-plugin-deprecation | 10. next-international | 11. @cspell/dict-de-de | 12. @types/jest | +| 13. @clerk/clerk-react | 14. @radix-ui/react-aspect-ratio | 15. eslint-plugin-format | 16. next-intl | 17. @cspell/dict-es-es | 18. @types/lodash | +| 19. @clerk/localizations | 20. @radix-ui/react-avatar | 21. eslint-plugin-functional | 22. next-safe-action | 23. @cspell/dict-fr-fr | 24. @types/negotiator | +| 25. @clerk/nextjs | 26. @radix-ui/react-checkbox | 27. eslint-plugin-import | 28. next-themes | 29. @cspell/dict-fullstack | 30. @types/node | +| 31. @clerk/themes | 32. @radix-ui/react-dialog | 33. eslint-plugin-jest | 34. next-usequerystate | 35. @cspell/dict-it-it | 36. @types/pg | +| 37. @clerk/types | 38. @radix-ui/react-dropdown-menu | 39. eslint-plugin-jest-extended | 40. react-aria-components | 41. @cspell/dict-markdown | 42. @types/react | +| 43. @faire/mjml-react | 44. @radix-ui/react-icons | 45. eslint-plugin-jest-formatting | 46. react-cropper | 47. @cspell/dict-npm | 48. @types/react-dom | +| 49. @faker-js/faker | 50. @radix-ui/react-label | 51. eslint-plugin-jsdoc | 52. react-day-picker | 53. @cspell/dict-pl_pl | | +| 54. @formatjs/intl-localematcher | 55. @radix-ui/react-menubar | 56. eslint-plugin-jsonc | 57. react-dom | 58. @cspell/dict-tr-tr | | +| 59. @gsap/react | 60. @radix-ui/react-navigation-menu | 61. eslint-plugin-jsx-a11y | 62. react-dropzone | 63. @cspell/dict-typescript | | +| 64. @hookform/resolvers | 65. @radix-ui/react-popover | 66. eslint-plugin-no-barrel-files | 67. react-hook-form | 68. @cspell/dict-fa-ir | | +| 69. @inquirer/prompts | 70. @radix-ui/react-scroll-area | 71. eslint-plugin-no-secrets | 72. react-hot-toast | 73. @cspell/dict-uk-ua | | +| 74. @lemonsqueezy/lemonsqueezy.js | 75. @radix-ui/react-select | 76. eslint-plugin-promise | 77. react-icons | | | +| 78. @liveblocks/client | 79. @radix-ui/react-separator | 80. eslint-plugin-react | 81. react-lag-radar | | | +| 82. @liveblocks/react | 83. @radix-ui/react-slider | 84. eslint-plugin-react-hooks | 85. react-medium-image-zoom | | | +| 86. @loglib/tracker | 87. @radix-ui/react-slot | 88. eslint-plugin-react-refresh | 89. react-wrap-balancer | | | +| 90. @mdx-js/loader | 91. @radix-ui/react-switch | 92. eslint-plugin-redundant-undefined | 93. next-secure-headers | | | +| 94. @mdx-js/react | 95. @radix-ui/react-tabs | 96. eslint-plugin-sonarjs | | | | +| 97. @neondatabase/serverless | 98. @radix-ui/react-toast | 99. eslint-plugin-tailwindcss | | | | +| 100. @next/mdx | 101. @radix-ui/react-tooltip | 102. eslint-plugin-tsdoc | | | | +| 103. @normy/react-query | 104. @udecode/cn | 105. eslint-plugin-unicorn | | | | +| 106. @planetscale/database | 107. @udecode/plate-autoformat | 108. eslint-plugin-write-good-comments | | | | +| 109. @preact/signals-core | 110. @udecode/plate-basic-marks | 111. eslint-plugin-xss | | | | +| 112. @preact/signals-react | 113. @udecode/plate-block-quote | | | | | +| 114. @react-rxjs/core | 115. @udecode/plate-break | | | | | +| 116. @react-rxjs/utils | 117. @udecode/plate-code-block | | | | | +| 118. @redux-devtools/extension | 119. @udecode/plate-common | | | | | +| 120. @storybook/nextjs | 121. @udecode/plate-heading | | | | | +| 122. @stripe/react-stripe-js | 123. @udecode/plate-highlight | | | | | +| 124. @stripe/stripe-js | 125. @udecode/plate-horizontal-rule | | | | | +| 126. @t3-oss/env-nextjs | 127. @udecode/plate-indent-list | | | | | +| 128. @tanstack/react-query | 129. @udecode/plate-link | | | | | +| 130. @tanstack/react-query-devtools | 131. @udecode/plate-list | | | | | +| 132. @tanstack/react-query-next-experimental | 133. @udecode/plate-media | | | | | +| 134. @tanstack/react-table | 135. @udecode/plate-node-id | | | | | +| 136. @trpc/client | 137. @udecode/plate-normalizers | | | | | +| 138. @trpc/react-query | 139. @udecode/plate-paragraph | | | | | +| 140. @trpc/server | 141. @udecode/plate-reset-node | | | | | +| 142. @uploadthing/react | 143. @udecode/plate-select | | | | | +| 144. @upstash/ratelimit | 145. @udecode/plate-table | | | | | +| 146. @upstash/redis | 147. @udecode/plate-trailing-block | | | | | +| 148. @vercel/analytics | | | | | | +| 149. axios | | | | | | +| 150. browserslist | | | | | | +| 151. class-variance-authority | | | | | | +| 152. clsx | | | | | | +| 153. cmdk | | | | | | +| 154. cookies-next | | | | | | +| 155. cropperjs | | | | | | +| 156. dat.gui | | | | | | +| 157. dayjs | | | | | | +| 158. drizzle-orm | | | | | | +| 159. drizzle-zod | | | | | | +| 160. embla-carousel-react | | | | | | +| 161. eslint-config-next | | | | | | +| 162. flag-icons | | | | | | +| 163. fuse | | | | | | +| 164. graphql | | | | | | +| 165. graphql-scalars | | | | | | +| 166. gsap | | | | | | +| 167. healthier | | | | | | +| 168. international-types | | | | | | +| 169. lodash | | | | | | +| 170. lucide-react | | | | | | +| 171. mdx | | | | | | +| 172. micro | | | | | | +| 173. million | | | | | | +| 174. negotiator | | | | | | +| 175. next | | | | | | +| 176. nextjs-google-analytics | | | | | | +| 177. nodemailer | | | | | | +| 178. pg | | | | | | +| 179. postgres | | | | | | +| 180. react | | | | | | +| 181. reflect-metadata | | | | | | +| 182. remark-gfm | | | | | | +| 183. request-ip | | | | | | +| 184. resend | | | | | | +| 185. rooks | | | | | | +| 186. rxjs | | | | | | +| 187. slate | | | | | | +| 188. slate-history | | | | | | +| 189. slate-hyperscript | | | | | | +| 190. slate-react | | | | | | +| 191. storybook | | | | | | +| 192. string-ts | | | | | | +| 193. stripe | | | | | | +| 194. superjson | | | | | | +| 195. tailwind-variants | | | | | | +| 196. tailwindcss-animate | | | | | | +| 197. ts-deepmerge | | | | | | +| 198. type-fest | | | | | | +| 199. type-graphql | | | | | | +| 200. uploadthing | | | | | | +| 201. vaul | | | | | | +| 202. winston | | | | | | +| 203. zod | | | | | | +| 204. zustand | | | | | | +| 205. @0no-co/graphqlsp | | | | | | +| 206. @antfu/eslint-config | | | | | | +| 207. @ava/typescript | | | | | | +| 208. @biomejs/biome | | | | | | +| 209. @bufbuild/jest-environment-jsdom | | | | | | +| 210. @commitlint/cli | | | | | | +| 211. @commitlint/config-conventional | | | | | | +| 212. @commitlint/types | | | | | | +| 213. @graphql-typed-document-node/core | | | | | | +| 214. @ianvs/prettier-plugin-sort-imports | | | | | | +| 215. @limegrass/eslint-plugin-import-alias | | | | | | +| 216. @next/eslint-plugin-next | | | | | | +| 217. @playwright/test | | | | | | +| 218. @tailwindcss/typography | | | | | | +| 219. @tanstack/eslint-plugin-query | | | | | | +| 220. @testing-library/jest-dom | | | | | | +| 221. @total-typescript/ts-reset | | | | | | +| 222. @typescript-eslint/eslint-plugin | | | | | | +| 223. @typescript-eslint/parser | | | | | | +| 224. autoprefixer | | | | | | +| 225. ava | | | | | | +| 226. cross-env | | | | | | +| 227. cspell | | | | | | +| 228. dotenv-cli | | | | | | +| 229. drizzle-kit | | | | | | +| 230. eslint | | | | | | +| 231. eslint-config-airbnb | | | | | | +| 232. eslint-config-prettier | | | | | | +| 233. eslint-import-resolver-typescript | | | | | | +| 234. eslint-interactive | | | | | | +| 235. eslint-ts-patch | | | | | | +| 236. husky | | | | | | +| 237. jest | | | | | | +| 238. jest-environment-jsdom | | | | | | +| 239. jest-extended | | | | | | +| 240. jsonc-eslint-parser | | | | | | +| 241. knip | | | | | | +| 242. lemonsqueezy.ts | | | | | | +| 243. lint-staged | | | | | | +| 244. markdown-it-shikiji | | | | | | +| 245. mysql2 | | | | | | +| 246. npm-check | | | | | | +| 247. npm-run-all2 | | | | | | +| 248. postcss | | | | | | +| 249. postcss-load-config | | | | | | +| 250. prettier | | | | | | +| 251. prettier-plugin-packagejson | | | | | | +| 252. prettier-plugin-tailwindcss | | | | | | +| 253. rehype-shikiji | | | | | | +| 254. shikiji | | | | | | +| 255. standard | | | | | | +| 256. stylelint | | | | | | +| 257. stylelint-config-css-modules | | | | | | +| 258. stylelint-config-standard | | | | | | +| 259. stylelint-config-standard-scss | | | | | | +| 260. stylelint-scss | | | | | | +| 261. tailwind-merge | | | | | | +| 262. tailwindcss | | | | | | +| 263. ts-jest | | | | | | +| 264. ts-node | | | | | | +| 265. ts-standard | | | | | | +| 266. tslib | | | | | | +| 267. tsx | | | | | | +| 268. typescript | | | | | | +| 269. xo | | | | | | + +
diff --git a/SECURITY.md b/SECURITY.md index 0424877f..645c4f05 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,8 +1,8 @@ # Security Policy -## Supported Version +## Supported Versions -The security policy outlined below applies to latest only version of the project. +Our commitment to security extends to the following version of the project: | Version | Supported | | ------- | ------------------ | @@ -10,21 +10,17 @@ The security policy outlined below applies to latest only version of the project ## Reporting a Vulnerability -If you discover a security vulnerability in this project, we appreciate your responsible disclosure. By working together, we can address the issue promptly and ensure the security of our users' data. +We greatly value the security community's efforts in helping keep our project safe. If you've discovered a security vulnerability, your responsible disclosure is crucial for us. Here's how you can report it: -To report a vulnerability, please follow these steps: +1. **Contact Method**: Email us at [hello@bleverse.com](mailto:hello@bleverse.com). +2. **Email Subject**: Please use a concise yet descriptive subject, such as "Security Vulnerability Found". +3. **Vulnerability Details**: Provide a comprehensive description of the vulnerability. Include reproduction steps, and any other information that might help us understand and resolve the issue effectively. +4. **Proof of Concept**: Attach any proof-of-concept or sample code if available. Please ensure that your research does not involve destructive testing or violate any laws. +5. **Encryption**: For secure communication, use our public PGP key available on our website or public key servers. +6. **Response Timeline**: We aim to acknowledge your report within [e.g., 48 hours] and will keep you updated on our progress. +7. **Investigation and Remediation**: Our team will promptly investigate and work on resolving the issue. We'll maintain communication with you throughout this process. +8. **Disclosure Policy**: Please refrain from public disclosure until we have mitigated the vulnerability. We will collaborate with you to decide on an appropriate disclosure timeline, considering the issue's severity. -1. **Email**: Send an email to our security team at [:blefnk@gmail.com](mailto:blefnk@gmail.com). -2. **Subject**: Use a clear and descriptive subject line, such as "Security Vulnerability Report" -3. **Description**: Provide a detailed description of the vulnerability, including the steps to reproduce it and any relevant information that can help us understand and address the issue. -4. **Attach Proof of Concept**: If possible, provide a proof-of-concept or sample code that demonstrates the vulnerability. However, please refrain from performing any destructive actions or violating any privacy or security laws during your research. -5. **Encryption (Optional)**: If you prefer to encrypt your communication, please use our public PGP key, which can be found on our website or on public key servers. -6. **Responsiveness**: We strive to respond to vulnerability reports promptly. You can expect an initial response acknowledging your report within [specify time frame, e.g., 48 hours]. -7. **Investigation and Disclosure**: Our security team will investigate the reported vulnerability and assess its impact on our system. We will keep you informed of our progress and any necessary actions. -8. **Responsible Disclosure**: We kindly request that you do not disclose the vulnerability publicly until we have addressed it and provided an official announcement. We will work together with you to determine an appropriate timeline for disclosure, considering the severity and complexity of the vulnerability. +We're grateful for your contributions to our project's security. Contributors who help improve our security may be publicly acknowledged (with consent). -We value the contributions of security researchers and the broader community in improving the security of our project. As a token of our appreciation, we may acknowledge your contribution publicly, upon mutual agreement. - -Thank you for your commitment to keeping our project secure! - -Note: This security policy is subject to change without notice. +_Note: Our security policy may be updated periodically._ diff --git a/ava.config.mjs b/ava.config.mjs new file mode 100644 index 00000000..c1115f5b --- /dev/null +++ b/ava.config.mjs @@ -0,0 +1,26 @@ +/** + * Ava Testing Library Configuration + * ================================= + * + * todo: compile ts files before ava running + * + * @see https://github.com/avajs/ava#why-ava + * @see https://typestrong.org/ts-node/docs + */ + +import { register } from "node:module"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +const filename = fileURLToPath(import.meta.url); +register("ts-node/esm", pathToFileURL(filename)); + +const avaConfig = { + files: ["src/tests/ava/**/*.ts"], + typescript: { + rewritePaths: { "src/": "src/tests/ava/swc/" }, + extensions: ["ts", "tsx"], + compile: false, + }, +}; + +export default avaConfig; diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..50af1916 --- /dev/null +++ b/biome.json @@ -0,0 +1,15 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "organizeImports": { "enabled": false }, + "files": { "ignore": ["node_modules"] }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { "noUselessElse": "off" }, + "suspicious": { "noExplicitAny": "off" }, + "correctness": { "useExhaustiveDependencies": "off" }, + "complexity": { "useLiteralKeys": "off" } + } + } +} diff --git a/changelog.md b/changelog.md index 9280ff3e..1ea6756e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,47 +1,50 @@ # Project Changelog -## v0.0.0-v1.0.0 Project Features +## v0.0.0-v1.2.0 Features -1. [x] 🌍 **[Next.js 14](https://nextjs.org)**, **[React 18](https://react.dev)**, and **[TypeScript 5](https://typescriptlang.org)** used as core. -2. [x] ✅ Perfectly configured `next.config.mjs` with i18n and mdx support implementation. -3. [x] 📚 Everything is tried to be as well-documented as possible, and beginner-friendly. -4. [x] 🧱 Nicely configured and documented with comments `middleware.ts` for i18n and next-auth. -5. [x] 🍭 Cleanly composed modern user interface, built with **[Radix](https://radix-ui.com)** and stunning UI components, all thanks to **[shadcn/ui](https://ui.shadcn.com)** and **[@auth/drizzle-adapter](https://authjs.dev/reference/adapter/drizzle)**.. -6. [x] 🌐 Comprehensive implementations for i18n, means internationalization, with 8 languages included, using **[next-intl](https://next-intl-docs.vercel.app/docs/getting-started/app-router-server-components)**, but in the future we want to use our very own solutions, and/or **[next-international](https://github.com/QuiiBz/next-international)**. -7. [x] 🦫 **[Drizzle ORM](https://orm.drizzle.team)** and **[DrizzleKit](https://orm.drizzle.team/kit-docs/overview)** configured for serverless-first environments, for services like **[Neon](https://neon.tech)** and **[Vercel Postgres](https://vercel.com/docs/storage/vercel-postgres)**. -8. [x] 🦺 Usage of [Cuid2](https://github.com/paralleldrive/cuid2) to automatically generate collision-free modern IDs in the database models. -9. [x] 📊 Data fetching, which works on server and client, using **[tRPC](https://trpc.io)** & **[TanStack Query](https://tanstack.com/query)**. -10. [x] ✳️ Awesomely crafted VSCode settings and recommended extensions. -11. [x] 🌿 Authentication via **[NextAuth](https://authjs.dev)** (previously known as NextAuth.js and next-auth). -12. [x] 🛍️ Implementation of storefront with products, categories, and subcategories. -13. [x] 🧫 Indicator implementation for TailwindCSS screen sizes. -14. [x] 💰 Implementation of user subscriptions and checkout system via **Stripe**. -15. [x] 💮 Optimized **[Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata)** for SEO handling, with file-system handlers. -16. [x] 💻 Blog implementation by using **MDX** files. -17. [x] 📖 Well written `README.md`, and is beginner-friendly first, including descriptions for the **[environment variables](https://nextjs.org/docs/basic-features/environment-variables)**. -18. [x] 🤩 Using **[TailwindCSS](https://tailwindcss.com)** for utility-first CSS. -19. [x] 🦦 Using **[EsLint](https://eslint.org)** with **[Prettier](https://prettier.io)** for readable, safe code. -20. [x] 🅰️ The beautiful implementation of font system, using **[Inter](https://rsms.me/inter)** and other typefaces. -21. [x] 🔀 Type-safety validations for project schemas and UI fields via **[Zod](https://zod.dev)**. -22. [x] 🎉 And a lot more amazing things have been already done! [Now Relivator v1.0.0 is officially released](https://github.com/blefnk/relivator/releases/tag/1.0.0)! +- [x] Utilized [Next.js 14](https://nextjs.org), [React 18](https://react.dev), [TailwindCSS](https://tailwindcss.com), and [TypeScript](https://typescriptlang.org) serve as the project's core technologies. +- [x] Implemented authentication through **both [Clerk](https://clerk.com/) and [NextAuth.js](https://authjs.dev)**. +- [x] Unleashed extensive internationalization **in 10 languages** (_English, German, Spanish, Persian, French, Hindi, Italian, Polish, Turkish, Ukrainian_), using [next-intl](https://next-intl-docs.vercel.app). +- [x] Undertook [Drizzle ORM](https://orm.drizzle.team), utilizing **both MySQL and PostgreSQL** databases, and [PlanetScale](https://planetscale.com)/[Neon](https://neon.tech)/[Vercel](https://vercel.com)/[Railway](https://railway.app) services. +- [x] Successfully configured `next.config.mjs` with i18n and MDX support. +- [x] Strived for thorough documentation and a beginner-friendly approach throughout the project. +- [x] Skillfully configured and commented on `middleware.ts` for i18n and next-auth. +- [x] Set upped the Content-Security-Policy header as a security measure to prevent XSS attacks. +- [x] Provided exemplary VSCode settings and recommended extensions. +- [x] Optimized the [Next.js Metadata API](https://nextjs.org/docs/app/building-your-application/optimizing/metadata) for SEO, integrating file-system handlers. +- [x] Integrated a TailwindCSS screen size indicator for local project runs. +- [x] Established a user subscription and checkout system using [Stripe](hhttps://github.com/stripe/stripe-node#readme). +- [x] Ensured type-safety validations for project schemas and UI fields using [Zod](https://zod.dev). +- [x] Employed [EsLint](https://eslint.org) and [Prettier](https://prettier.io) to ensure the code is safe and readable. +- [x] Elegantly executed the font system, utilizing [Inter](https://rsms.me/inter) and additional typefaces. +- [x] Developed a storefront, incorporating product, category, and subcategory functionality. +- [x] Designed a modern, cleanly composed UI using [Radix](https://radix-ui.com), with attractive UI components from [shadcn/ui](https://ui.shadcn.com). +- [x] Composed a comprehensive, beginner-friendly `README.md`, including descriptions of [environment variables](https://nextjs.org/docs/basic-features/environment-variables). +- [x] Blog functionality realized through the use of MDX files. +- [x] Implemented [tRPC](https://trpc.io) and [TanStack Query](https://tanstack.com/query) for server and client data fetching. -## v0.0.0-v.1.0.0 Commits +## v1.0.0-v1.2.0 Commits -- [🌱 feat(app): initial deploy](https://github.com/blefnk/relivator/commit/4099c7c7e444b3e5782487355a508fdfdb3a14cd) -- [💎 feat(app): initial update](https://github.com/blefnk/relivator/commit/67a68f4cb93f76937b307fc056ba99a9675ba700) -- [🌅 upd(app): global update](https://github.com/blefnk/relivator/commit/6247d5cda5a5dc5dea19940b64b39a5ab9aa6ce7) -- [🦫 feat(db): add drizzle config](https://github.com/blefnk/relivator/commit/4dbcf8d6682530955913ec088051c63798807d1e) -- [✅ feat(app): configure the app](https://github.com/blefnk/relivator/commit/fc941ef5061662a0dc8052641ab010cc45e66c60) -- [☘️ feat(app): improve env styling](https://github.com/blefnk/relivator/commit/e75ed0ec2413110b0fcd75f778d63eba9d88faea) -- [☘️ feat(store): init app store types](https://github.com/blefnk/relivator/commit/73b00c0ce0f3656bddbe9b71c19631c352ab89b2) -- [☘️ feat(store): add more store things](https://github.com/blefnk/relivator/commit/146f9c451544112a18a734b12622f913dd3c8298) -- [🧹 feat(app): temporary remove image](https://github.com/blefnk/relivator/commit/f3ce181f3d9844ba718a3aef7fadcd03776fdffe) -- [🌿 feat(app): improve header and footer](https://github.com/blefnk/relivator/commit/d178f653844cd259db5095022bfe4a1de9ebd070) -- [🌳 feat(app): add many new store things](https://github.com/blefnk/relivator/commit/b25ea4665975d055310a5f172d658464633d451e) -- [🌄 feat(app): add payments & store actions](https://github.com/blefnk/relivator/commit/639093c454bd758f0536215ce9830daabf466852) -- [💳 feat(store): add checkout & some updates](https://github.com/blefnk/relivator/commit/b61217d1afede932452190dfbbadd9bd86d22260) -- [✨ feat(app): improve the project file hierarchy](https://github.com/blefnk/relivator/commit/3a66fa83eede22a0a28082c37409a6546dca3a97) -- [🔴 feat(auth): deprecate clerk because i18n errors](https://github.com/blefnk/relivator/commit/2d4ff94d089548a30a9e65214c7731a68b6cae65) -- [📄 upd(app): upd islands, landing and other pages](https://github.com/blefnk/relivator/commit/7e5abae355cfc4790f65bce0d6d2ddbb24b2a524) -- [🍭 add(analytics): integrate vercel web analytics](https://github.com/blefnk/relivator/commit/5fb132ec4be5cb2c35e168bc9f1ad9844e3b73eb) -- [🎉 **feat(app): release relivator 1.0.0 version**](https://github.com/blefnk/relivator/commit/52dd52012441c975747b0331530428e8f7ae5825) +- 19. [🟢 feat(app): add a large number of updates](https://github.com/blefnk/relivator/commit/0bcee920b482e63c67dbe030fe12784429d6c8fc) +- 20. [🛡️ feat(app): improve stability and security](https://github.com/blefnk/relivator/releases/tag/1.2.0) + +## v0.0.0-v1.0.0 Commits + +- 1. [🌱 feat(app): initial deploy](https://github.com/blefnk/relivator/commit/4099c7c7e444b3e5782487355a508fdfdb3a14cd) +- 2. [💎 feat(app): initial update](https://github.com/blefnk/relivator/commit/67a68f4cb93f76937b307fc056ba99a9675ba700) +- 3. [🌅 upd(app): global update](https://github.com/blefnk/relivator/commit/6247d5cda5a5dc5dea19940b64b39a5ab9aa6ce7) +- 4. [🦫 feat(db): add drizzle config](https://github.com/blefnk/relivator/commit/4dbcf8d6682530955913ec088051c63798807d1e) +- 5. [✅ feat(app): configure the app](https://github.com/blefnk/relivator/commit/fc941ef5061662a0dc8052641ab010cc45e66c60) +- 6. [☘️ feat(app): improve env styling](https://github.com/blefnk/relivator/commit/e75ed0ec2413110b0fcd75f778d63eba9d88faea) +- 7. [☘️ feat(store): init app store types](https://github.com/blefnk/relivator/commit/73b00c0ce0f3656bddbe9b71c19631c352ab89b2) +- 8. [☘️ feat(store): add more store things](https://github.com/blefnk/relivator/commit/146f9c451544112a18a734b12622f913dd3c8298) +- 9. [🧹 feat(app): temporary remove image](https://github.com/blefnk/relivator/commit/f3ce181f3d9844ba718a3aef7fadcd03776fdffe) +- 10. [🌿 feat(app): improve header and footer](https://github.com/blefnk/relivator/commit/d178f653844cd259db5095022bfe4a1de9ebd070) +- 11. [🌳 feat(app): add many new store things](https://github.com/blefnk/relivator/commit/b25ea4665975d055310a5f172d658464633d451e) +- 12. [🌄 feat(app): add payments & store actions](https://github.com/blefnk/relivator/commit/639093c454bd758f0536215ce9830daabf466852) +- 13. [💳 feat(store): add checkout & some updates](https://github.com/blefnk/relivator/commit/b61217d1afede932452190dfbbadd9bd86d22260) +- 14. [✨ feat(app): improve the project file hierarchy](https://github.com/blefnk/relivator/commit/3a66fa83eede22a0a28082c37409a6546dca3a97) +- 15. [🔴 feat(auth): deprecate clerk because i18n errors](https://github.com/blefnk/relivator/commit/2d4ff94d089548a30a9e65214c7731a68b6cae65) +- 16. [📄 upd(app): upd islands, landing and other pages](https://github.com/blefnk/relivator/commit/7e5abae355cfc4790f65bce0d6d2ddbb24b2a524) +- 17. [🍭 add(analytics): integrate vercel web analytics](https://github.com/blefnk/relivator/commit/5fb132ec4be5cb2c35e168bc9f1ad9844e3b73eb) +- 18. [🎉 feat(app): release relivator 1.0.0 version](https://github.com/blefnk/relivator/commit/52dd52012441c975747b0331530428e8f7ae5825) diff --git a/code_of_conduct.md b/code_of_conduct.md index c60c2c0c..48c359a6 100644 --- a/code_of_conduct.md +++ b/code_of_conduct.md @@ -2,79 +2,76 @@ ## Our Pledge -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participating in our project and community a harassment-free experience for everyone, regardless of individual differences. -We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. +We commit to creating a friendly and respectful place for learning, teaching, and contributing. All participants in our community are expected to show respect and courtesy to others. ## Our Standards -Examples of behavior that contributes to a positive environment for our community include: +**Positive Behaviors to Encourage:** -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -- Focusing on what is best not just for us as individuals, but for the overall community +- Demonstrating empathy and kindness +- Being respectful of varying opinions and viewpoints +- Giving and receiving constructive feedback +- Owning up to our mistakes and learning from them +- Prioritizing community well-being and success -Examples of unacceptable behavior include: +**Unacceptable Behaviors Include:** -- The use of sexualized language or imagery, and sexual attention or advances of any kind -- Trolling, insulting or derogatory comments, and personal or political attacks +- Use of sexualized language or imagery, and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks - Public or private harassment -- Publishing others' private information, such as a physical or email address, without their explicit permission -- Contacting individual members, contributors, or leaders privately, outside designated community mechanisms, without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting +- Publishing private information without consent +- Inappropriate private contact without consent +- Other conduct deemed unprofessional in a community setting ## Enforcement Responsibilities -Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. +Our community leaders are tasked with clarifying these standards and enforcing them, taking fair and appropriate action to address any instances of unacceptable behavior. -Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. +Leaders have the authority to moderate comments, commits, code, and other contributions not in line with this Code of Conduct. ## Scope -This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. +This Code of Conduct applies within all project spaces, and also when an individual is representing the project or its community in public spaces. -## Enforcement +## Enforcement Process -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at . All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the reporter of any incident. +Inappropriate behavior can be reported to community leaders at [hello@bleverse.com](mailto:hello@bleverse.com). All complaints will be reviewed and investigated and will result in a response deemed necessary and appropriate to the circumstances. ## Enforcement Guidelines -Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: +Leaders will follow these guidelines in determining consequences: ### 1. Correction -**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. +**Impact**: Inappropriate language or behavior. -**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. +**Consequence**: Private warning and clarity on why the behavior was inappropriate. A public apology may be requested. ### 2. Warning -**Community Impact**: A violation through a single incident or series of actions. +**Impact**: A single or series of violations. -**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. +**Consequence**: A warning with consequences for continued behavior. No interaction with those involved for a set period, including community and external channels. Continued violation may lead to a ban. ### 3. Temporary Ban -**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. +**Impact**: Serious or sustained inappropriate behavior. -**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. +**Consequence**: Temporary ban from interaction or public communication with the community. No interaction with those involved is allowed. Further violation may lead to a permanent ban. ### 4. Permanent Ban -**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. +**Impact**: Pattern of serious violations. -**Consequence**: A permanent ban from any sort of public interaction within the community. +**Consequence**: Permanent ban from public interaction within the community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at . - -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). +This Code of Conduct is adapted from the Contributor Covenant and Mozilla's code of conduct enforcement ladder. -[homepage]: https://www.contributor-covenant.org +- [Contributor Covenant](https://contributor-covenant.org/version/2/0/code_of_conduct.html) +- [Mozilla's Enforcement Ladder](https://github.com/mozilla/diversity) -For answers to common questions about this code of conduct, see the FAQ at . Translations are available at . +For FAQs and translations, visit [Contributor Covenant FAQ](https://contributor-covenant.org/faq) and [Translations](https://contributor-covenant.org/translations). diff --git a/commitlint.config.cjs b/commitlint.config.cjs index 661d8952..f190b7e8 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -1,3 +1,19 @@ +/** + * @see https://github.com/logto-io/logto/blob/master/commitlint.config.cjs + * @see https://github.com/search?q=path%3Acommitlint.config.cjs&type=code + */ + +// const { rules } = require("@commitlint/config-conventional"); +// const isCi = process.env.CI === "true"; + +/** @type {import('@commitlint/types').UserConfig} **/ module.exports = { - extends: ["@commitlint/config-conventional"] + extends: ["@commitlint/config-conventional"], + rules: { + // "type-enum": [2, "always", [...rules["type-enum"][2], "api", "release"]], + // 'scope-enum': [2, 'always', ['connector', 'console', 'core', 'demo-app', 'test', 'phrases', 'schemas', 'shared', 'experience', 'deps', 'deps-dev', 'cli', 'toolkit', 'cloud', 'app-insights']], + // Slightly increase the tolerance to allow the appending PR number + // ...(isCi && { "header-max-length": [2, "always", 110] }), + // "body-max-line-length": [2, "always", 110], + }, }; diff --git a/components.json b/components.json index 52ec41ab..e3428e6b 100644 --- a/components.json +++ b/components.json @@ -11,6 +11,6 @@ }, "aliases": { "components": "~/islands", - "utils": "~/server/utils" + "utils": "~/utils" } } diff --git a/contributing.md b/contributing.md index 1f6aac29..b1f27240 100644 --- a/contributing.md +++ b/contributing.md @@ -1,130 +1,67 @@ -# Contributing +# Contributing to Relivator [![Join the Bleverse Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord] -Thank you for considering contributing to Bleverse Relivator. -As an open sourced project we only exist by contributions from users like you. +Thank you for your interest in contributing to Bleverse Relivator. Your involvement is fundamental to the success of this open-source project! -To contribute you will first need to fork the repo. To get the repository up and -running, please look at [README.md](/README.MD) for setup instructions. +## Getting Started -## Code of Conduct +- **Fork and Setup**: Begin by forking the repository. For setup instructions, see [README.md](/README.MD). +- **Code of Conduct**: Please read our [Code of Conduct](./CODE_OF_CONDUCT.md). We expect all participants to adhere to it. -This project and everyone participating in it is governed by the -[CONTRIBUTING.md Code of Conduct](blob/master/CODE_OF_CONDUCT.md). -By participating you are expected to uphold this code. -Please report unacceptable behavior to +## How to Contribute -## I Want to Contribute +### Legal Requirements -> ### Legal Notice -> -> When contributing to this project, you must agree that you have authored 100% -> of the content, that you have the necessary rights to the content and that the -> content you contribute may be provided under the project's license. +- **Authorship**: Ensure you have authored 100% of the content you contribute. +- **Rights**: Confirm that you have the necessary rights to your contributions. +- **License**: Contributions are provided under the project's license. -**NOTE:** For UI-based pull requests please use the -[UI Pull Request Template](.github/PULL_REQUEST_TEMPLATE/ui.md), and ensure that -you attach some screen shots to show any reviewers your changes. Reviewers are -not always able to pull down changes directly, and seeing the changes in -screenshots can serve as a good starting point for a reviewer to determine -whether or not the code needs to be pulled down and examined more closely. +### Pull Requests -For non-UI Pull Requests, please utilize the [Other](.github/PULL_REQUEST_TEMPLATE/other.md) template when creating your PR. Please be as thorough as possible. +- **UI Changes**: Use the [UI Pull Request Template](.github/issue_template/2.feature_request.yml). Attach screenshots for easier review. +- **Other Contributions**: For non-UI changes, use the [Other Template](.github/issue_template/2.feature_request.yml). Be thorough in your description. ### Reporting Bugs -#### Before Submitting a Bug Report +#### Before Submitting -A good bug report shouldn't leave others needing to chase you up for more -information. Therefore, we ask you to investigate carefully, collect -information, and describe the issue in detail _in your report_. Following the -bug issue template should prompt you for any information we may need, but feel -free to include any information you feel is relevant to the bug. +- **Research**: Ensure your bug hasn't already been reported. +- **Information**: Gather all relevant information to describe the issue comprehensively. -#### How do I Submit a Good Bug Report? +#### Submitting a Bug Report -> ### You must never report security related issues, vulnerabilities, or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead, sensitive bugs must be sent by email to [blefnk@gmail.com](mailto:blefnk@gmail.com) +- **Use GitHub Issues**: Report bugs via [GitHub Issues](/issues/new). +- **Describe**: Clearly explain the expected and actual behaviors, and provide steps to reproduce. +- **Privacy**: Do not report security vulnerabilities here. Email [blefnk@gmail.com](mailto:blefnk@gmail.com) for sensitive issues. -We use GitHub issues to track bugs and errors. If you run into an issue with the -project: - -- Open an [Issue](/issues/new). -- Explain the behavior you would expect and the actual behavior. -- Please provide as much context as possible and describe the _reproduction - steps_ that someone else can follow to recreate the issue on their own. This - usually includes your code. For good bug reports you should isolate the - problem and create a reduced test case. -- Provide the information you collected in the previous section. +### Suggesting Enhancements -Once it is filed: +#### Before Suggesting -- The project team will label that issue accordingly. -- A team member will try to reproduce the issue with your provided steps. If - there are no reproduction steps or no obvious way to reproduce the issue, the - team will ask you for those steps and mark the issue as `needs-repro`. Bugs - with the `needs-repro` tag will not be addressed until they are reproduced. -- If the team is able to reproduce the issue, it will be marked as `needs-fix`, - as well as possibly other tags (such as `critical`), and the issue will be - left to be [implemented by someone](#your-first-code-contribution) +- **Latest Version**: Verify you're using the most recent version. +- **Search**: Check if the enhancement has been previously suggested in [GitHub Issues](/issues) or our [Suggestions Channel on Discord](https://discord.com/channels/796594544980000808/1143947327892103188). +- **Relevance**: Ensure your suggestion aligns with the project's goals. -### Suggesting Enhancements +#### Submitting an Enhancement -This section guides you through submitting an enhancement suggestion for -CONTRIBUTING.md **including completely new features and minor improvements to -existing functionality**. Following these guidelines will help maintainers and -the community to understand your suggestion and find related suggestions. - -#### Before Submitting an Enhancement - -- Make sure that you are using the latest version. -- Perform a search in [GitHub](/issues), or the - [Suggestions Channel](https://discord.com/channels/796594544980000808/1143947327892103188) - on Discord to see if the enhancement has already been suggested. If it has, - add a comment to the existing issue instead of opening a new one. -- Find out whether your idea fits with the scope and aims of the project. It's - up to you to make a strong case to convince the project's developers of the - merits of this feature. Keep in mind that we want features that will be useful - to the majority of our users and not just a small subset. - -#### How Do I Submit a Good Enhancement Suggestion? - -Enhancement suggestions are tracked as [GitHub issues](/issues). - -- Use a **clear and descriptive title** for the issue to identify the - suggestion. -- Provide a **step-by-step description of the suggested enhancement** in as much - detail as possible. -- **Describe the current behavior** and **explain which behavior you expected to - see instead** and why. At this point, you can also tell which alternatives do - not work for you. -- You may want to include **screenshots** which help you demonstrate the steps - or point out the part which the suggestion is related to. -- Explain why this enhancement would be useful to most CONTRIBUTING.md users. - You may also want to point out the other projects which have solved a similar - issues. +- **Title**: Use a clear, descriptive title. +- **Details**: Provide a step-by-step description of the enhancement. +- **Rationale**: Explain why this enhancement would be beneficial. ### Your First Code Contribution -1. Choose an issue from the [GitHub issues](/issues), ask a member of the team - to assign the issue to you. -2. Fork the repository -3. Create a branch on your fork. You should either add in the GitHub issue - number to the branch name, e.g. `382_adds-in-new-thing` or ensure that the - issue is referenced in the Pull Request or commit message. -4. We do not enforce a commit style like - [Conventional Commits](https://conventionalcommits.org), but you are - welcome to use one so long as the summary line accurately describes the - overall purpose of the work and the ticket is referenced either in the PR or the - body of the commit message. See [Commits](#commit-examples) for example commits. -5. When ready, put up a PR that links from your fork. - -## References +1. **Select an Issue**: Pick an issue from [GitHub issues](/issues) and get it assigned to you. +2. **Fork and Branch**: Fork the repo and create a branch. Include the issue number in the branch name. +3. **Commit**: Follow a clear commit style, referencing the issue in the PR or commit message. +4. **Pull Request**: Submit a PR from your forked repository. + +## Helpful Resources ### Commit Examples -| ✅ Good | ❌ Bad | -| :---------------------------------------------------- | :--------------- | +| ✅ Good Example | ❌ Poor Example | +| ----------------------------------------------------- | ---------------- | | 🌐 add(i18n): add internationalization support to rsc | YOOOOOO | | 🛒 fix(uiux): move the cart to right for user habits | fixing the thing | | 📚 upd(docs): improve some typos in the readme file | Trust me bro | diff --git a/cspell.json b/cspell.json index 48c8f97f..95763d19 100644 --- a/cspell.json +++ b/cspell.json @@ -8,17 +8,20 @@ "@cspell/dict-npm/cspell-ext.json", "@cspell/dict-de-de/cspell-ext.json", "@cspell/dict-es-es/cspell-ext.json", + "@cspell/dict-fa-ir/cspell-ext.json", "@cspell/dict-fr-fr/cspell-ext.json", "@cspell/dict-it-it/cspell-ext.json", "@cspell/dict-pl_pl/cspell-ext.json", "@cspell/dict-tr-tr/cspell-ext.json", "@cspell/dict-uk-ua/cspell-ext.json" ], - "language": "de,en,es,fr,it,pl,tr,uk", + "language": "de,en,es,fa,fr,it,pl,tr,uk", "dictionaries": [], "ignoreWords": [], "ignorePaths": [ + "src/data/other/countries.json", "src/data/i18n/hi-in.json", + ".thing/hooks/*.json", "pnpm-lock.yaml", "**/*.txt", ".next", @@ -28,8 +31,11 @@ ], "words": [ "abcabcabc", + "airbnb", "Anasayfa", "Anasayfaya", + "antfu", + "Antipatterns", "Apestein", "appts", "Authed", @@ -37,27 +43,36 @@ "AUTHJS", "autoincrement", "Avansai", + "baiduspider", + "bingbot", + "biomejs", "birşey", + "bitbucket", "blefnk", "blefonix", "bleverse", "browserconfig", + "bufbuild", "Bytest", "caesar", "callees", "callout", "calsans", + "camelcase", "Çevrimiçi", "classname", + "clerkjs", "CLIENTVAR", "cloners", "cloudinary", "Cloudinary", "clsx", "cmdk", + "codebases", "codelist", "commitlint", "conection", + "contentful", "contentlayer", "Contentlayer", "corepack", @@ -70,38 +85,56 @@ "Delba", "dicebear", "discordapp", + "divs", + "domexception", "dotjs", "draftjs", + "dropbox", + "duckduckbot", "ecommerce", "embla", "envinfo", "esbenp", "esnext", + "estree", + "exabot", "facebook", + "facebookexternalhit", "Favs", "Fdashboard", + "firefox", "Fiverr", + "flashowania", "formatjs", + "frameworku", + "frontendu", "Fsettings", "fullpath", "funktionsreichsten", "geist", "github", + "gitlab", "globalsten", + "googlebot", "Googlebot", "googleusercontent", "griptape", + "gsap", + "GSAP", "Gtkq", "hookform", + "hyperscript", "ianvs", "icónico", "idempotency", + "iframeable", "ikonik", "imgur", "İnceleme", "İncelemesi", "İndir", "isadmin", + "jdoe", "Kârlı", "Kbwps", "knip", @@ -111,17 +144,28 @@ "lastlogintime", "lemonsqueezy", "libsql", + "limegrass", + "linebreak", + "linkedin", + "lintingu", + "liveblocks", "livemode", "localematcher", "loglib", "LOGLIB", "lucide", + "magiclink", "maxage", + "maxsize", + "mediapartners", "Meslo", "mfpiano", "mfpianotutorial", "Millis", "mjml", + "multilines", + "mysql", + "navita", "Nazarii", "neobrutalism", "neondatabase", @@ -132,24 +176,35 @@ "nextjs", "nextwrappers", "nocheck", - "Nomaders", + "nonblock", + "Noninteractive", + "normy", + "onsave", "openssl", "opentelemetry", "ossrepo", "otlp", "packagejson", + "pagespeed", + "pandacss", "paralleldrive", "Peresfer", "pgdb", "pgjs", "pgsql", "planetscale", + "plusplus", "postgres", "postgresjs", "postgresql", + "preact", "prettyful", + "proxying", "PSCALE", + "ratelimit", + "regexes", "registrationtime", + "rehype", "Relistore", "relivator", "Reliverse", @@ -157,42 +212,58 @@ "rmiz", "roadmap", "runtimes", + "saas", "serverful", "serverfull", "shadcn", + "shikiji", "shopify", "signin", "signout", "signup", + "sogou", + "sonarjs", "sqlite", "squeezy", "sslmod", "sslmode", + "stylelint", "superjson", "tailwindcss", "tanstack", + "teoma", "tform", "theming", + "tiktok", "titleize", "toastify", "totp", "TOTP", "trpc", - "tson", + "tsdoc", "Turbopack", "Turborepo", "turso", "twimg", + "Twoslash", "typecheck", + "typesafe", + "Typescipt", + "typestat", + "udecode", "uidotdev", "uiux", + "unocss", "unslugify", "unsplash", "uploadthing", "UPLOADTHING", + "upstash", + "UPSTASH", "URL'yi", "usehooks", "usequerystate", + "utapi", "utfs", "valibot", "Valibot", @@ -200,6 +271,11 @@ "varchar", "vaul", "vercel", + "vue", + "webhooka", + "webhooki", + "Webhooki", + "webhookthing", "webp", "whatsapp", "whsec", @@ -207,10 +283,29 @@ "xicon", "YOOOOOO", "youtube", + "zardoy", + "zustand", "zxcvbn", + "антипатернів", + "виринаючі", "дашборду", + "захоплюючим", + "конфіг", + "куків", + "лінтування", + "монорепо", + "непрацюючі", + "нестилізовані", "обліковки", "обліковок", - "продакшн" + "плаваючі", + "продакшн", + "типо", + "форк", + "фронтенд", + "фронтенді", + "фронтенду", + "Чеклист", + "юзабіліті" ] } diff --git a/drizzle.config.ts b/drizzle.config.ts index 9fd6242e..0073f00f 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,42 +1,75 @@ /** * [drizzle-orm-mono] Drizzle ORM Configuration * - * This script configures drizzle-orm with environment-specific settings, including database connection details. - * The configuration relies on environment variables for setting the database provider and connection string. + * This script configures drizzle-orm with environment-specific settings, + * including database connection details. The configuration relies on + * env vars for setting the database provider and connection string. * * @see https://github.com/bs-oss/drizzle-orm-mono * @see https://orm.drizzle.team/kit-docs/config-reference * @see https://discord.com/channels/1043890932593987624/1043890932593987627/1153940001885794304 */ -import { Config } from "drizzle-kit"; +import { addQueryParamIfMissed } from "~/utils"; +import type { Config } from "drizzle-kit"; import { env } from "./src/env.mjs"; -export type DbCredentials = { connectionString: string }; +// if (!env.NEXT_PUBLIC_DB_PROVIDER || !env.DATABASE_URL) +// throw new Error( +// "NEXT_PUBLIC_DB_PROVIDER or DATABASE_URL is not set in environment variables.", +// ); + +// Add the ssl query parameter if it's missing +const csMysql: string = addQueryParamIfMissed( + env.DATABASE_URL, + "ssl", + JSON.stringify({ rejectUnauthorized: true }), +); +const csPgsql: string = addQueryParamIfMissed( + env.DATABASE_URL, + "sslmode", + "require", +); + +// Connection strings for MySQL and PostgreSQL +// const csMysql = `${env.DATABASE_URL}?ssl={"rejectUnauthorized":true}`; +// const csPgsql = `${env.DATABASE_URL}?sslmode=require`; // Initialize configuration variables -let dbCredentials: DbCredentials; +type MysqlCredentials = { uri: string }; +type PgsqlCredentials = { connectionString: string }; +let dbCredentials: MysqlCredentials | PgsqlCredentials; let driver: "mysql2" | "pg"; let tablesFilter: string[]; let schema: string; let out: string; -export const csMysql = `${env.DATABASE_URL}?ssl={"rejectUnauthorized":true}`; -export const csPgsql = `${env.DATABASE_URL}?sslmode=require`; - /** * Configure this based on the database provider. * Feel free to add/remove/edit things if needed. */ try { - switch (env.NEXT_PUBLIC_DB_PROVIDER) { + // Set default DB provider based on DATABASE_URL + // if NEXT_PUBLIC_DB_PROVIDER is not specified + let dbProvider = env.NEXT_PUBLIC_DB_PROVIDER; + if (!dbProvider) { + const databaseUrl = process.env.DATABASE_URL; + if (databaseUrl?.startsWith("mysql://")) { + dbProvider = "planetscale"; + } else if (databaseUrl?.startsWith("postgres://")) { + dbProvider = "neon"; + } + } + + switch (dbProvider) { case "planetscale": driver = "mysql2"; out = "drizzle/mysql"; tablesFilter = ["acme_*"]; + dbCredentials = { uri: csMysql }; schema = "./src/data/db/schema/mysql.ts"; - dbCredentials = { connectionString: csMysql }; + // console.log("✓ MySQL triggered"); break; case "railway": case "vercel": @@ -44,12 +77,14 @@ try { driver = "pg"; out = "drizzle/pgsql"; tablesFilter = ["acme_*"]; - schema = "./src/data/db/schema/pgsql.ts"; dbCredentials = { connectionString: csPgsql }; + schema = "./src/data/db/schema/pgsql.ts"; + // console.log("✓ PostgreSQL triggered"); break; default: throw new Error( - `💡 Unsupported NEXT_PUBLIC_DB_PROVIDER '${env.NEXT_PUBLIC_DB_PROVIDER}'. Verify your environment configuration.`, + `❌ Unsupported NEXT_PUBLIC_DB_PROVIDER '${dbProvider}'.\ + Verify your environment configuration.`, ); } } catch (error) { @@ -87,7 +122,10 @@ export default { const drizzleDirPath = join(process.cwd(), out); if (!existsSync(drizzleDirPath)) { throw new Error( - "💡 The required files in `drizzle` directory do not exist. Please execute `pnpm mysql:generate` (PlanetScale provider), or `pnpm pg:generate` (Neon provider), to generate the necessary files. Afterward, you may retry your previous command.", + "💡 The required files in `drizzle` directory do not exist.\ + Please execute `pnpm mysql:generate` (PlanetScale provider),\ + or `pnpm pg:generate` (Neon provider), to generate the necessary\ + files. Afterward, you may retry your previous command.", ); } } catch (error) { @@ -124,19 +162,23 @@ if (NEXT_PUBLIC_DB_PROVIDER && env.DATABASE_URL) { if (expectedPrefix) { if (!env.DATABASE_URL.startsWith(expectedPrefix)) { console.error( - `💡 Connection error: The DATABASE_URL does not match the expected format for provider '${NEXT_PUBLIC_DB_PROVIDER}'. Please check your configuration.`, + `💡 Connection error: The DATABASE_URL does not match the\ + expected format for provider '${NEXT_PUBLIC_DB_PROVIDER}'.\ + Please check your configuration.`, ); process.exit(1); } } else { console.error( - `💡 Unknown NEXT_PUBLIC_DB_PROVIDER '${NEXT_PUBLIC_DB_PROVIDER}'. Please check your configuration.`, + `💡 Unknown NEXT_PUBLIC_DB_PROVIDER '${NEXT_PUBLIC_DB_PROVIDER}'.\ + Please check your configuration.`, ); process.exit(1); } } else { console.error( - "💡 Essential environment variables are missing. Ensure NEXT_PUBLIC_DB_PROVIDER and DATABASE_URL are set.", + "💡 Essential environment variables are missing. Ensure\ + NEXT_PUBLIC_DB_PROVIDER and DATABASE_URL are set.", ); process.exit(1); } */ diff --git a/drizzle/mysql/0001_futuristic_rhodey.sql b/drizzle/mysql/0001_futuristic_rhodey.sql new file mode 100644 index 00000000..7128935d --- /dev/null +++ b/drizzle/mysql/0001_futuristic_rhodey.sql @@ -0,0 +1,51 @@ +CREATE TABLE `acme_capabilities` ( + `id` serial AUTO_INCREMENT NOT NULL, + `userId` varchar(255) NOT NULL, + `promote_users` boolean NOT NULL DEFAULT false, + `remove_users` boolean NOT NULL DEFAULT false, + `createdAt` timestamp DEFAULT (now()), + `updatedAt` timestamp DEFAULT (now()), + CONSTRAINT `acme_capabilities_id` PRIMARY KEY(`id`) +); +--> statement-breakpoint +CREATE TABLE `acme_guest` ( + `id` varchar(255) NOT NULL, + `email` varchar(255), + `createdAt` timestamp DEFAULT (now()), + `updatedAt` timestamp DEFAULT (now()), + CONSTRAINT `acme_guest_id` PRIMARY KEY(`id`) +); +--> statement-breakpoint +ALTER TABLE `acme_account` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `acme_users_to_products` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `acme_verificationToken` DROP PRIMARY KEY;--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `line1` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `line2` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `city` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `state` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `postalCode` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_addresses` MODIFY COLUMN `country` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_carts` MODIFY COLUMN `paymentIntentId` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_carts` MODIFY COLUMN `clientSecret` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_emails` MODIFY COLUMN `userId` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_emails` MODIFY COLUMN `email` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_emails` MODIFY COLUMN `token` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_orders` MODIFY COLUMN `stripePaymentIntentId` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_orders` MODIFY COLUMN `stripePaymentIntentStatus` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_orders` MODIFY COLUMN `name` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_orders` MODIFY COLUMN `email` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_payments` MODIFY COLUMN `stripeAccountId` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_products` MODIFY COLUMN `name` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_products` MODIFY COLUMN `subcategory` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_products` MODIFY COLUMN `storeId` int NOT NULL DEFAULT 1;--> statement-breakpoint +ALTER TABLE `acme_stores` MODIFY COLUMN `userId` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_stores` MODIFY COLUMN `name` varchar(255) NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_stores` MODIFY COLUMN `stripeAccountId` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_account` ADD PRIMARY KEY(`provider`,`providerAccountId`);--> statement-breakpoint +ALTER TABLE `acme_users_to_products` ADD PRIMARY KEY(`user_id`,`product_id`);--> statement-breakpoint +ALTER TABLE `acme_verificationToken` ADD PRIMARY KEY(`identifier`,`token`);--> statement-breakpoint +ALTER TABLE `acme_carts` ADD `userId` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_carts` ADD `email` varchar(255);--> statement-breakpoint +ALTER TABLE `acme_user` ADD `role` enum('admin','user') DEFAULT 'user' NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_user` ADD `mode` enum('seller','buyer') DEFAULT 'buyer' NOT NULL;--> statement-breakpoint +ALTER TABLE `acme_user` ADD `currentCartId` varchar(255); \ No newline at end of file diff --git a/drizzle/mysql/meta/0001_snapshot.json b/drizzle/mysql/meta/0001_snapshot.json new file mode 100644 index 00000000..7db4d054 --- /dev/null +++ b/drizzle/mysql/meta/0001_snapshot.json @@ -0,0 +1,1186 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "32b6ef1e-3d60-4ec1-a627-401f7d50198f", + "prevId": "f8589ae4-b185-4070-8645-ff809114436c", + "tables": { + "acme_account": { + "name": "acme_account", + "columns": { + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "providerAccountId": { + "name": "providerAccountId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token_expires_in": { + "name": "refresh_token_expires_in", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": [ + "userId" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_account_provider_providerAccountId_pk": { + "name": "acme_account_provider_providerAccountId_pk", + "columns": [ + "provider", + "providerAccountId" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_addresses": { + "name": "acme_addresses", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "line1": { + "name": "line1", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "line2": { + "name": "line2", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "city": { + "name": "city", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "postalCode": { + "name": "postalCode", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "country": { + "name": "country", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_addresses_id": { + "name": "acme_addresses_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_capabilities": { + "name": "acme_capabilities", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "promote_users": { + "name": "promote_users", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "remove_users": { + "name": "remove_users", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_capabilities_id": { + "name": "acme_capabilities_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_carts": { + "name": "acme_carts", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "clientSecret": { + "name": "clientSecret", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paymentIntentId": { + "name": "paymentIntentId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "items": { + "name": "items", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "('null')" + }, + "closed": { + "name": "closed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_carts_id": { + "name": "acme_carts_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_emails": { + "name": "acme_emails", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "newsletter": { + "name": "newsletter", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "marketing": { + "name": "marketing", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "transactional": { + "name": "transactional", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_emails_id": { + "name": "acme_emails_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_guest": { + "name": "acme_guest", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_guest_id": { + "name": "acme_guest_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_orders": { + "name": "acme_orders", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "storeId": { + "name": "storeId", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "items": { + "name": "items", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "('null')" + }, + "quantity": { + "name": "quantity", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "decimal(10,2)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "stripePaymentIntentId": { + "name": "stripePaymentIntentId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stripePaymentIntentStatus": { + "name": "stripePaymentIntentStatus", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "addressId": { + "name": "addressId", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_orders_id": { + "name": "acme_orders_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_payments": { + "name": "acme_payments", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "storeId": { + "name": "storeId", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stripeAccountId": { + "name": "stripeAccountId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "stripeAccountCreatedAt": { + "name": "stripeAccountCreatedAt", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "stripeAccountExpiresAt": { + "name": "stripeAccountExpiresAt", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "detailsSubmitted": { + "name": "detailsSubmitted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_payments_id": { + "name": "acme_payments_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_products": { + "name": "acme_products", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "storeId": { + "name": "storeId", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "images": { + "name": "images", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "('null')" + }, + "category": { + "name": "category", + "type": "enum('accessories','furniture','clothing','tech')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'clothing'" + }, + "subcategory": { + "name": "subcategory", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "price": { + "name": "price", + "type": "decimal(10,2)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "inventory": { + "name": "inventory", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rating": { + "name": "rating", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "tags": { + "name": "tags", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "('null')" + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_products_id": { + "name": "acme_products_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_session": { + "name": "acme_session", + "columns": { + "sessionToken": { + "name": "sessionToken", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": [ + "userId" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_session_sessionToken": { + "name": "acme_session_sessionToken", + "columns": [ + "sessionToken" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_stores": { + "name": "acme_stores", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "userId": { + "name": "userId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "stripeAccountId": { + "name": "stripeAccountId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_stores_id": { + "name": "acme_stores_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_stripe": { + "name": "acme_stripe", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "account": { + "name": "account", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "api_version": { + "name": "api_version", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created": { + "name": "created", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "data": { + "name": "data", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "livemode": { + "name": "livemode", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "object": { + "name": "object", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "pending_webhooks": { + "name": "pending_webhooks", + "type": "real", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "request": { + "name": "request", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_stripe_id": { + "name": "acme_stripe_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_todo": { + "name": "acme_todo", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "position": { + "name": "position", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "done": { + "name": "done", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_todo_id": { + "name": "acme_todo_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_user": { + "name": "acme_user", + "columns": { + "id": { + "name": "id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "emailClerk": { + "name": "emailClerk", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "emailVerified": { + "name": "emailVerified", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3)" + }, + "image": { + "name": "image", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','user')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "mode": { + "name": "mode", + "type": "enum('seller','buyer')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'buyer'" + }, + "stripeCustomerId": { + "name": "stripeCustomerId", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "stripePriceId": { + "name": "stripePriceId", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "currentCartId": { + "name": "currentCartId", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "stripeCurrentPeriodEnd": { + "name": "stripeCurrentPeriodEnd", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "stripeSubscriptionId": { + "name": "stripeSubscriptionId", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "(now())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_user_id": { + "name": "acme_user_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_users_to_products": { + "name": "acme_users_to_products", + "columns": { + "user_id": { + "name": "user_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_id": { + "name": "product_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_users_to_products_user_id_product_id_pk": { + "name": "acme_users_to_products_user_id_product_id_pk", + "columns": [ + "user_id", + "product_id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_verificationToken": { + "name": "acme_verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_verificationToken_identifier_token_pk": { + "name": "acme_verificationToken_identifier_token_pk", + "columns": [ + "identifier", + "token" + ] + } + }, + "uniqueConstraints": {} + } + }, + "schemas": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} \ No newline at end of file diff --git a/drizzle/mysql/meta/_journal.json b/drizzle/mysql/meta/_journal.json index 759b7a3c..188c8fe9 100644 --- a/drizzle/mysql/meta/_journal.json +++ b/drizzle/mysql/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1699121730281, "tag": "0000_stormy_hercules", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1702956452239, + "tag": "0001_futuristic_rhodey", + "breakpoints": true } ] -} +} \ No newline at end of file diff --git a/drizzle/pgsql/0001_silly_pandemic.sql b/drizzle/pgsql/0001_silly_pandemic.sql new file mode 100644 index 00000000..659bebc7 --- /dev/null +++ b/drizzle/pgsql/0001_silly_pandemic.sql @@ -0,0 +1,41 @@ +DO $$ BEGIN + CREATE TYPE "mode" AS ENUM('buyer', 'seller'); +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + CREATE TYPE "role" AS ENUM('user', 'admin'); +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "acme_capabilities" ( + "id" serial PRIMARY KEY NOT NULL, + "userId" text NOT NULL, + "promote_users" boolean DEFAULT false NOT NULL, + "remove_users" boolean DEFAULT false NOT NULL, + "createdAt" timestamp DEFAULT now(), + "updatedAt" timestamp DEFAULT now() +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "acme_guest" ( + "id" text PRIMARY KEY NOT NULL, + "email" text, + "createdAt" timestamp DEFAULT now(), + "updatedAt" timestamp DEFAULT now() +); +--> statement-breakpoint +DROP INDEX IF EXISTS "userId_idx";--> statement-breakpoint +ALTER TABLE "acme_account" DROP CONSTRAINT "acme_account_provider_providerAccountId";--> statement-breakpoint +ALTER TABLE "acme_users_to_products" DROP CONSTRAINT "acme_users_to_products_user_id_product_id";--> statement-breakpoint +ALTER TABLE "acme_verificationToken" DROP CONSTRAINT "acme_verificationToken_identifier_token";--> statement-breakpoint +ALTER TABLE "acme_products" ALTER COLUMN "storeId" SET DEFAULT 1;--> statement-breakpoint +ALTER TABLE "acme_account" ADD CONSTRAINT "acme_account_provider_providerAccountId_pk" PRIMARY KEY("provider","providerAccountId");--> statement-breakpoint +ALTER TABLE "acme_users_to_products" ADD CONSTRAINT "acme_users_to_products_user_id_product_id_pk" PRIMARY KEY("user_id","product_id");--> statement-breakpoint +ALTER TABLE "acme_verificationToken" ADD CONSTRAINT "acme_verificationToken_identifier_token_pk" PRIMARY KEY("identifier","token");--> statement-breakpoint +ALTER TABLE "acme_carts" ADD COLUMN "userId" text;--> statement-breakpoint +ALTER TABLE "acme_carts" ADD COLUMN "email" text;--> statement-breakpoint +ALTER TABLE "acme_user" ADD COLUMN "role" "role" DEFAULT 'user' NOT NULL;--> statement-breakpoint +ALTER TABLE "acme_user" ADD COLUMN "mode" "mode" DEFAULT 'buyer' NOT NULL;--> statement-breakpoint +ALTER TABLE "acme_user" ADD COLUMN "currentCartId" text; \ No newline at end of file diff --git a/drizzle/pgsql/meta/0001_snapshot.json b/drizzle/pgsql/meta/0001_snapshot.json new file mode 100644 index 00000000..cbcfcf54 --- /dev/null +++ b/drizzle/pgsql/meta/0001_snapshot.json @@ -0,0 +1,1004 @@ +{ + "id": "feab8933-36df-46bc-a9cd-59f575d50e43", + "prevId": "b98a4919-fc42-45c5-85c8-6c9d8503cbcc", + "version": "5", + "dialect": "pg", + "tables": { + "acme_account": { + "name": "acme_account", + "schema": "", + "columns": { + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "providerAccountId": { + "name": "providerAccountId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token_expires_in": { + "name": "refresh_token_expires_in", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": [ + "userId" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_account_provider_providerAccountId_pk": { + "name": "acme_account_provider_providerAccountId_pk", + "columns": [ + "provider", + "providerAccountId" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_addresses": { + "name": "acme_addresses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "line1": { + "name": "line1", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "line2": { + "name": "line2", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postalCode": { + "name": "postalCode", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_capabilities": { + "name": "acme_capabilities", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "promote_users": { + "name": "promote_users", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "remove_users": { + "name": "remove_users", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_carts": { + "name": "acme_carts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "clientSecret": { + "name": "clientSecret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "paymentIntentId": { + "name": "paymentIntentId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "items": { + "name": "items", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'null'::json" + }, + "closed": { + "name": "closed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_emails": { + "name": "acme_emails", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "newsletter": { + "name": "newsletter", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "marketing": { + "name": "marketing", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "transactional": { + "name": "transactional", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_guest": { + "name": "acme_guest", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_orders": { + "name": "acme_orders", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "storeId": { + "name": "storeId", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "items": { + "name": "items", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'null'::json" + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "amount": { + "name": "amount", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "stripePaymentIntentId": { + "name": "stripePaymentIntentId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripePaymentIntentStatus": { + "name": "stripePaymentIntentStatus", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "addressId": { + "name": "addressId", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_payments": { + "name": "acme_payments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "storeId": { + "name": "storeId", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "stripeAccountId": { + "name": "stripeAccountId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripeAccountCreatedAt": { + "name": "stripeAccountCreatedAt", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "stripeAccountExpiresAt": { + "name": "stripeAccountExpiresAt", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "detailsSubmitted": { + "name": "detailsSubmitted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_products": { + "name": "acme_products", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "storeId": { + "name": "storeId", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "images": { + "name": "images", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'null'::json" + }, + "category": { + "name": "category", + "type": "category", + "primaryKey": false, + "notNull": true, + "default": "'clothing'" + }, + "subcategory": { + "name": "subcategory", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "price": { + "name": "price", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "inventory": { + "name": "inventory", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "rating": { + "name": "rating", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "tags": { + "name": "tags", + "type": "json", + "primaryKey": false, + "notNull": false, + "default": "'null'::json" + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_session": { + "name": "acme_session", + "schema": "", + "columns": { + "sessionToken": { + "name": "sessionToken", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_stores": { + "name": "acme_stores", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "stripeAccountId": { + "name": "stripeAccountId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_stripe": { + "name": "acme_stripe", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "account": { + "name": "account", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_version": { + "name": "api_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created": { + "name": "created", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "data": { + "name": "data", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "livemode": { + "name": "livemode", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "object": { + "name": "object", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pending_webhooks": { + "name": "pending_webhooks", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "request": { + "name": "request", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_todo": { + "name": "acme_todo", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "position": { + "name": "position", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "done": { + "name": "done", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "userId": { + "name": "userId", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_user": { + "name": "acme_user", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "emailClerk": { + "name": "emailClerk", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "emailVerified": { + "name": "emailVerified", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "role": { + "name": "role", + "type": "role", + "primaryKey": false, + "notNull": true, + "default": "'user'" + }, + "mode": { + "name": "mode", + "type": "mode", + "primaryKey": false, + "notNull": true, + "default": "'buyer'" + }, + "stripeCustomerId": { + "name": "stripeCustomerId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripePriceId": { + "name": "stripePriceId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "currentCartId": { + "name": "currentCartId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripeCurrentPeriodEnd": { + "name": "stripeCurrentPeriodEnd", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripeSubscriptionId": { + "name": "stripeSubscriptionId", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "acme_users_to_products": { + "name": "acme_users_to_products", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_users_to_products_user_id_product_id_pk": { + "name": "acme_users_to_products_user_id_product_id_pk", + "columns": [ + "user_id", + "product_id" + ] + } + }, + "uniqueConstraints": {} + }, + "acme_verificationToken": { + "name": "acme_verificationToken", + "schema": "", + "columns": { + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acme_verificationToken_identifier_token_pk": { + "name": "acme_verificationToken_identifier_token_pk", + "columns": [ + "identifier", + "token" + ] + } + }, + "uniqueConstraints": {} + } + }, + "enums": { + "category": { + "name": "category", + "values": { + "accessories": "accessories", + "furniture": "furniture", + "clothing": "clothing", + "tech": "tech" + } + }, + "mode": { + "name": "mode", + "values": { + "buyer": "buyer", + "seller": "seller" + } + }, + "role": { + "name": "role", + "values": { + "user": "user", + "admin": "admin" + } + } + }, + "schemas": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} \ No newline at end of file diff --git a/drizzle/pgsql/meta/_journal.json b/drizzle/pgsql/meta/_journal.json index e2a206ac..cfb19cc1 100644 --- a/drizzle/pgsql/meta/_journal.json +++ b/drizzle/pgsql/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1699121837081, "tag": "0000_spotty_queen_noir", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1702956362470, + "tag": "0001_silly_pandemic", + "breakpoints": true } ] -} +} \ No newline at end of file diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 00000000..1e0865d5 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,578 @@ +/** + * Blefnk's ESLint Configuration for Relivator 1.2.0 + * ================================================= + * + * Remember to run `>ESLint: Restart ESLint Server` + * command after making changes and the file saving. + * Tip: Open `>Keyboard Shortcuts` and bind restart. + * + * When using ESLint VSCode extension, make sure you + * have `Use Flat Config` option enabled in settings. + * Bonus tip: When using Relivator, use `pnpm appts`. + * + * Note: antfu already includes the following plugins: + * typescript, stylistic, perfectionist, jsonc, react, + * unicorn, unocss, vue, yaml, toml, jsdoc, markdown. + * Go to `export default antfu` to see actual config. + * + * @see https://github.com/antfu/eslint-config#antfueslint-config + * @see https://github.com/blefnk/relivator#readme <== get config updates + * @see https://eslint.org/docs/latest/use/configure/configuration-files-new + */ + +import antfu from "@antfu/eslint-config"; +import { FlatCompat } from "@eslint/eslintrc"; +import eslintJsPlugin from "@eslint/js"; +import importAliasPlugin from "@limegrass/eslint-plugin-import-alias"; +import nextPlugin from "@next/eslint-plugin-next"; +import tanstackQueryPlugin from "@tanstack/eslint-plugin-query"; +import tsEslintPlugin from "@typescript-eslint/eslint-plugin"; +import tsEslintParser from "@typescript-eslint/parser"; +import { Linter } from "eslint"; +import * as airbnbBestPracticesConfig from "eslint-config-airbnb-base/rules/best-practices"; +import * as airbnbErrorsConfig from "eslint-config-airbnb-base/rules/errors"; +import * as airbnbES6Config from "eslint-config-airbnb-base/rules/es6"; +import * as airbnbNodeConfig from "eslint-config-airbnb-base/rules/node"; +import * as airbnbStyleConfig from "eslint-config-airbnb-base/rules/style"; +import * as airbnbVariablesConfig from "eslint-config-airbnb-base/rules/variables"; +import prettierConfigPlugin from "eslint-config-prettier"; +import deprecationPlugin from "eslint-plugin-deprecation"; +import drizzlePlugin from "eslint-plugin-drizzle"; +import commentsPlugin from "eslint-plugin-eslint-comments"; +import formatPlugin from "eslint-plugin-format"; +import functionalPlugin from "eslint-plugin-functional"; +import importPlugin from "eslint-plugin-import"; +import jestPlugin from "eslint-plugin-jest"; +import jestExtendedPlugin from "eslint-plugin-jest-extended"; +import jestFormattingPlugin from "eslint-plugin-jest-formatting"; +import jsdocPlugin from "eslint-plugin-jsdoc"; +import jsoncPlugin from "eslint-plugin-jsonc"; +import jsxA11yPlugin from "eslint-plugin-jsx-a11y"; +import nodePlugin from "eslint-plugin-n"; +import noBarrelFilesPlugin from "eslint-plugin-no-barrel-files"; +import noSecretsPlugin from "eslint-plugin-no-secrets"; +import promisePlugin from "eslint-plugin-promise"; +import reactPlugin from "eslint-plugin-react"; +import reactHooksPlugin from "eslint-plugin-react-hooks"; +import reactRefreshPlugin from "eslint-plugin-react-refresh"; +import reactPluginConfigsRecommended from "eslint-plugin-react/configs/recommended"; +import redundantUndefinedPlugin from "eslint-plugin-redundant-undefined"; +import sonarjsPlugin from "eslint-plugin-sonarjs"; +import tailwindcssPlugin from "eslint-plugin-tailwindcss"; +import tsdocPlugin from "eslint-plugin-tsdoc"; +import unicornPlugin from "eslint-plugin-unicorn"; +import writeGoodCommentsPlugin from "eslint-plugin-write-good-comments"; +import xssPlugin from "eslint-plugin-xss"; +import jsoncParser from "jsonc-eslint-parser"; + +const compat = new FlatCompat(); + +export default antfu( + { + ignores: ["./.next", "./build", "./drizzle"], + typescript: { tsconfigPath: "tsconfig.json" }, + stylistic: { quotes: "double", semi: true }, + settings: { react: { version: "detect" } }, + formatters: { css: true }, + react: true, + vue: false, + plugins: { + "redundant-undefined": redundantUndefinedPlugin, + "write-good-comments": writeGoodCommentsPlugin, + "eslint-comments": commentsPlugin, + "no-secrets": noSecretsPlugin, + "jsx-a11y": jsxA11yPlugin, + "jsdoc": jsdocPlugin, + "xss": xssPlugin, + "react": reactPlugin, + "@next/next": nextPlugin, + "promise": promisePlugin, + "unicorn": unicornPlugin, + "functional": functionalPlugin, + "react-hooks": reactHooksPlugin, + "tailwindcss": tailwindcssPlugin, + "prettier": prettierConfigPlugin, + }, + rules: { + ...nextPlugin.configs.recommended.rules, + ...reactPluginConfigsRecommended.rules, + ...promisePlugin.configs.recommended.rules, + ...eslintJsPlugin.configs.recommended.rules, + ...tailwindcssPlugin.configs.recommended.rules, + ...reactHooksPlugin.configs.recommended.rules, + ...unicornPlugin.configs.recommended.rules, + ...jsdocPlugin.configs.recommended.rules, + ...xssPlugin.configs.recommended.rules, + ...airbnbBestPracticesConfig.rules, + ...airbnbVariablesConfig.rules, + ...airbnbErrorsConfig.rules, + ...airbnbStyleConfig.rules, + ...airbnbNodeConfig.rules, + ...airbnbES6Config.rules, + "computed-property-spacing": [ + "off", + "never", + { "enforceForClassMembers": true }, + ], + "sort-imports": [ + "off", + { "ignoreCase": true, "ignoreDeclarationSort": false }, + ], + "space-before-function-paren": [ + "off", + { "anonymous": "always", "named": "never", "asyncArrow": "always" }, + ], + "unicorn/numeric-separators-style": [ + "off", + { "onlyIfContainsSeparator": true }, + ], + "jsdoc/require-jsdoc": [ + "off", + { + publicOnly: true, + require: { + FunctionDeclaration: true, + FunctionExpression: true, + ArrowFunctionExpression: true, + ClassDeclaration: true, + ClassExpression: true, + MethodDefinition: true, + }, + contexts: [ + "VariableDeclaration", + "TSTypeAliasDeclaration", + "TSPropertySignature", + ], + enableFixer: true, + }, + ], + "react/jsx-key": [ + "off", + { + checkFragmentShorthand: true, + checkKeyMustBeforeSpread: true, + warnOnDuplicates: true, + }, + ], + "no-multiple-empty-lines": [ + "off", + { "max": 1, "maxBOF": 0, "maxEOF": 1 }, + ], + "antfu/consistent-list-newline": "off", + "antfu/if-newline": "off", + "antfu/top-level-function": "off", + "array-bracket-newline": ["off", "consistent"], + "array-bracket-spacing": ["off", "never"], + "arrow-body-style": ["off", "always"], + "arrow-parens": "off", + "arrow-spacing": "off", + "block-scoped-var": "off", + "block-spacing": ["off", "always"], + "brace-style": ["off", "1tbs", { "allowSingleLine": true }], + "camelcase": "off", + "comma-dangle": ["off", "only-multiline"], + "comma-spacing": ["off", { "before": false, "after": true }], + "comma-style": ["off", "last"], + "consistent-return": "off", + "curly": "off", + "default-case-last": "off", + "default-case": "off", + "default-param-last": ["off"], + "dot-location": ["off", "property"], + "eol-last": ["off", "always"], + "eqeqeq": ["off", "always"], + "eslint-plugin-jsx-a11y/blob": "off", + "func-call-spacing": ["off", "never"], + "func-names": "off", + "func-style": ["off", "declaration"], + "function-call-argument-newline": ["off", "consistent"], + "function-paren-newline": ["off", "consistent"], + "global-require": "off", + "import/no-absolute-path": "off", + "import/no-cycle": "off", + "import/no-duplicates": "off", + "import/no-dynamic-require": "off", + "import/no-extraneous-dependencies": "off", + "import/no-mutable-exports": "off", + "import/no-named-as-default": "off", + "import/order": ["off"], + "import/prefer-default-export": "off", + "indent": ["off", 2], + "jsdoc/check-access": "off", + "jsdoc/check-alignment": "off", + "jsdoc/check-indentation": "off", + "jsdoc/check-syntax": "off", + "jsdoc/check-tag-names": "off", + "jsdoc/no-blank-blocks": "off", + "jsdoc/no-types": "off", + "jsdoc/no-undefined-types": "off", + "jsdoc/require-asterisk-prefix": "off", + "jsdoc/require-description": "off", + "jsdoc/require-hyphen-before-param-description": "off", + "jsdoc/require-param-type": "off", + "jsdoc/require-param": ["off", { checkDestructuredRoots: false }], + "jsdoc/require-returns-type": "off", + "jsdoc/require-returns": "off", + "jsdoc/require-throws": "off", + "jsdoc/sort-tags": "off", + "jsdoc/tag-lines": ["off", "never", { startLines: 1 }], + "jsonc/sort-keys": "off", + "jsx-a11y/anchor-has-content": "off", + "jsx-a11y/anchor-is-valid": "off", + "jsx-a11y/heading-has-content": "off", + "key-spacing": "off", + "keyword-spacing": "off", + "linebreak-style": "off", + "lines-around-directive": "off", + "lines-between-class-members": ["off", "always"], + "new-cap": "off", + "new-parens": "off", + "max-len": "off", + "dot-notation": "off", + "implicit-arrow-linebreak": "off", + "no-trailing-spaces": "off", + "no-unused-expressions": "off", + "no-use-before-define": "off", + "nonblock-statement-body-position": "off", + "react/no-unknown-property": "off", + "style/no-trailing-spaces": "off", + "style/spaced-comment": "off", + "unused-imports/no-unused-imports": "off", + "yaml/plain-scalar": "off", + "no-alert": "off", + "no-array-constructor": "off", + "no-await-in-loop": "off", + "no-bitwise": "off", + "no-case-declarations": "off", + "no-confusing-arrow": "off", + "no-console": "off", + "jsx-a11y/no-autofocus": "off", + "style/eol-last": "off", + "style/jsx-closing-tag-location": "off", + "style/no-multiple-empty-lines": "off", + "yaml/block-sequence": "off", + "no-constant-condition": "off", + "no-else-return": "off", + "no-eval": "off", + "no-extra-semi": "off", + "no-lonely-if": "off", + "no-multi-assign": "off", + "no-multi-spaces": ["off", { "ignoreEOLComments": true }], + "no-multi-str": "off", + "no-nested-ternary": "off", + "no-param-reassign": "off", + "no-plusplus": "off", + "no-promise-executor-return": "off", + "no-redeclare": "off", + "no-restricted-globals": "off", + "no-restricted-properties": "off", + "no-restricted-syntax": "off", + "no-return-assign": "off", + "no-return-await": "off", + "no-shadow": "off", + "no-tabs": "off", + "no-template-curly-in-string": "off", + "no-undef": "off", + "no-unneeded-ternary": "off", + "no-unused-vars": "off", + "no-useless-return": "off", + "no-var": "off", + "no-void": "off", + "no-warning-comments": "off", + "no-whitespace-before-property": "off", + "node/prefer-global/process": "off", + "object-curly-newline": ["off", { "consistent": true }], + "object-curly-spacing": ["off", "always"], + "object-shorthand": "off", + "one-var": "off", + "operator-assignment": "off", + "operator-linebreak": "off", + "perfectionist/sort-array-includes": "off", + "perfectionist/sort-imports": "off", + "perfectionist/sort-interfaces": "off", + "perfectionist/sort-jsx-props": "off", + "perfectionist/sort-named-exports": "off", + "perfectionist/sort-named-imports": "off", + "perfectionist/sort-object-types": "off", + "perfectionist/sort-objects": "off", + "perfectionist/sort-union-types": "off", + "prefer-arrow-callback": "off", + "prefer-const": "off", + "prefer-destructuring": "off", + "prefer-exponentiation-operator": "off", + "prefer-rest-params": "off", + "prefer-spread": "off", + "prefer-template": "off", + "promise/always-return": "off", + "promise/catch-or-return": "off", + "quote-props": "off", + "quotes": ["off", "single", { "allowTemplateLiterals": true }], + "radix": "off", + "react-hooks/exhaustive-deps": "off", + "react-hooks/rules-of-hooks": "off", + "react/button-has-type": "off", + "react/destructuring-assignment": "off", + "react/display-name": "off", + "react/function-component-definition": "off", + "react/jsx-boolean-value": "off", + "react/jsx-curly-brace-presence": "off", + "react/jsx-fragments": "off", + "react/jsx-max-depth": ["off", { max: 5 }], + "react/jsx-no-bind": "off", + "react/jsx-no-constructed-context-values": "off", + "react/jsx-no-leaked-render": ["off", { validStrategies: ["ternary"] }], + "react/jsx-no-script-url": "off", + "react/jsx-no-useless-fragment": "off", + "react/jsx-one-expression-per-line": "off", + "react/jsx-pascal-case": "off", + "react/jsx-props-no-spreading": "off", + "react/jsx-sort-props": "off", + "react/jsx-uses-react": "off", + "react/jsx-uses-vars": "off", + "react/no-array-index-key": "off", + "react/no-children-prop": "off", + "react/no-danger-with-children": "off", + "react/no-danger": "off", + "react/no-typos": "off", + "react/no-unescaped-entities": "off", + "react/no-unstable-nested-components": "off", + "react/no-unused-prop-types": "off", + "react/prefer-stateless-function": "off", + "react/prop-types": "off", + "react/react-in-jsx-scope": "off", + "react/require-default-props": "off", + "react/self-closing-comp": "off", + "rest-spread-spacing": ["off", "never"], + "rules/anchor-is-valid": "off", + "semi-spacing": "off", + "semi-style": ["off", "last"], + "semi": "off", + "sonarjs/cognitive-complexity": "off", + "sonarjs/no-all-duplicated-branches": "off", + "sonarjs/no-duplicate-string": "off", + "sonarjs/no-nested-template-literals": "off", + "sonarjs/prefer-immediate-return": "off", + "space-before-blocks": "off", + "space-in-parens": ["off", "never"], + "space-infix-ops": "off", + "space-unary-ops": "off", + "spaced-comment": "off", + "style/arrow-parens": "off", + "style/brace-style": "off", + "style/indent-binary-ops": "off", + "style/indent": "off", + "style/jsx-curly-newline": "off", + "style/jsx-indent": "off", + "style/jsx-one-expression-per-line": "off", + "style/jsx-wrap-multilines": "off", + "style/member-delimiter-style": "off", + "style/multiline-ternary": "off", + "style/operator-linebreak": "off", + "style/quote-props": "off", + "switch-colon-spacing": "off", + "tailwindcss/no-custom-classname": "off", + "template-curly-spacing": ["off", "never"], + "unicorn/better-regex": "off", + "unicorn/catch-error-name": ["off", { "name": "e" }], + "unicorn/consistent-destructuring": "off", + "unicorn/consistent-function-scoping": "off", + "unicorn/explicit-length-check": "off", + "unicorn/filename-case": "off", + "unicorn/no-array-for-each": "off", + "unicorn/no-array-reduce": "off", + "unicorn/no-await-expression-member": "off", + "unicorn/no-empty-file": "off", + "unicorn/no-negated-condition": "off", + "unicorn/no-nested-ternary": "off", + "unicorn/no-null": ["off"], + "unicorn/no-object-as-default-parameter": "off", + "unicorn/no-process-exit": "off", + "unicorn/no-typeof-undefined": "off", + "unicorn/no-useless-switch-case": "off", + "unicorn/prefer-array-flat-map": "off", + "unicorn/prefer-array-some": "off", + "unicorn/prefer-code-point": "off", + "unicorn/prefer-date-now": "off", + "unicorn/prefer-export-from": "off", + "unicorn/prefer-logical-operator-over-ternary": "off", + "unicorn/prefer-math-trunc": "off", + "unicorn/prefer-module": "off", + "unicorn/prefer-native-coercion-functions": "off", + "unicorn/prefer-node-protocol": "off", + "unicorn/prefer-number-properties": "off", + "unicorn/prefer-optional-catch-binding": "off", + "unicorn/prefer-set-has": "off", + "unicorn/prefer-string-replace-all": "off", + "unicorn/prefer-string-slice": "off", + "unicorn/prefer-switch": "off", + "unicorn/prefer-ternary": "off", + "unicorn/prefer-top-level-await": "off", + "unicorn/prevent-abbreviations": ["off"], + "unicorn/switch-case-braces": ["off", "avoid"], + "unused-imports/no-unused-vars": "off", + "write-good-comments/write-good-comments": "off", + "xss/no-location-href-assign": "off", + "xss/no-mixed-html": "off", + }, + }, + ...compat.config({ + plugins: [ + "@limegrass/import-alias", + "no-barrel-files", + "no-secrets", + "jsx-a11y", + "drizzle", + "sonarjs", + "react-refresh", + "@tanstack/query", + ], + extends: [ + "plugin:@tanstack/eslint-plugin-query/recommended", + "plugin:deprecation/recommended", + "plugin:jsx-a11y/recommended", + "plugin:drizzle/recommended", + "plugin:sonarjs/recommended", + ], + rules: { + "@limegrass/import-alias/import-alias": "off", + "@tanstack/query/exhaustive-deps": "error", + "@tanstack/query/no-rest-destructuring": "error", + "@tanstack/query/stable-query-client": "error", + "deprecation/deprecation": "off", + "drizzle/enforce-delete-with-where": "off", + "drizzle/enforce-update-with-where": "off", + "no-barrel-files/no-barrel-files": "off", + "no-secrets/no-secrets": "off", + "react-refresh/only-export-components": "off", + }, + }), + { + files: ["**/*.?(*)ts?(x)", ".test.ts(x)"], + plugins: { + "eslint-plugin-tsdoc": tsdocPlugin, + "eslint-plugin-jest": jestPlugin, + }, + rules: { + "ts/space-before-function-paren": [ + "off", + { + "asyncArrow": "always", + "anonymous": "always", + "named": "never", + }, + ], + "ts/prefer-literal-enum-member": [ + "off", + { "allowBitwiseExpressions": true }, + ], + // ========= dup + "jsx-a11y/no-autofocus": "off", + "jsx-a11y/heading-has-content": "off", + "sonarjs/cognitive-complexity": "off", + "sonarjs/no-all-duplicated-branches": "off", + "sonarjs/no-duplicate-string": "off", + "sonarjs/no-nested-template-literals": "off", + "sonarjs/prefer-immediate-return": "off", + // ========= dup + "test/consistent-test-it": "error", + "ts/array-type": ["off", { "default": "array" }], + "ts/ban-ts-comment": "off", + "ts/brace-style": ["off", "1tbs", { "allowSingleLine": true }], + "ts/comma-dangle": ["off", "only-multiline"], + "ts/comma-spacing": ["off", { "before": false, "after": true }], + "ts/consistent-indexed-object-style": "off", + "ts/consistent-type-assertions": ["off"], + "ts/consistent-type-definitions": ["off", "interface"], + "ts/consistent-type-imports": ["off"], + "ts/default-param-last": ["off"], + "ts/dot-notation": "off", + "ts/explicit-function-return-type": ["off"], + "ts/explicit-member-accessibility": ["off"], + "ts/explicit-module-boundary-types": ["off"], + "ts/func-call-spacing": ["off", "never"], + "ts/indent": ["off", 2], + "ts/keyword-spacing": ["off"], + "ts/lines-between-class-members": ["off"], + "ts/member-delimiter-style": ["off"], + "ts/method-signature-style": ["off", "method"], + "ts/naming-convention": "off", + "ts/no-array-constructor": ["off"], + "ts/no-confusing-non-null-assertion": ["off"], + "ts/no-confusing-void-expression": ["off"], + "ts/no-dynamic-delete": ["off"], + "ts/no-empty-function": "off", + "ts/no-empty-interface": "off", + "ts/no-explicit-any": ["off"], + "ts/no-extra-semi": ["off"], + "ts/no-floating-promises": "off", + "ts/no-import-type-side-effects": ["off"], + "ts/no-invalid-void-type": ["off"], + "ts/no-meaningless-void-operator": ["off", { "checkNever": true }], + "ts/no-misused-promises": "off", + "ts/no-non-null-asserted-nullish-coalescing": ["off"], + "ts/no-non-null-assertion": ["off"], + "ts/no-redeclare": "off", + "ts/no-redundant-type-constituents": "off", + "ts/no-require-imports": ["off"], + "ts/no-shadow": ["off"], + "ts/no-type-alias": ["off"], + "ts/no-unnecessary-condition": ["off"], + "ts/no-unnecessary-qualifier": ["off"], + "ts/no-unnecessary-type-arguments": ["off"], + "ts/no-unnecessary-type-assertion": "off", + "ts/no-unnecessary-type-constraint": ["off"], + "ts/no-unsafe-argument": "off", + "ts/no-unsafe-assignment": "off", + "ts/no-unsafe-call": "off", + "ts/no-unsafe-enum-comparison": "off", + "ts/no-unsafe-member-access": "off", + "ts/no-unsafe-return": "off", + "ts/no-unused-expressions": "off", + "ts/no-unused-vars": ["off"], + "ts/no-use-before-define": "off", + "ts/non-nullable-type-assertion-style": "off", + "ts/object-curly-spacing": ["off", "always"], + "ts/prefer-for-of": ["off"], + "ts/prefer-includes": ["off"], + "ts/prefer-nullish-coalescing": ["off"], + "ts/prefer-optional-chain": ["off"], + "ts/prefer-readonly": ["off"], + "ts/prefer-reduce-type-parameter": ["off"], + "ts/prefer-regexp-exec": ["off"], + "ts/prefer-string-starts-ends-with": ["off"], + "ts/prefer-ts-expect-error": ["off"], + "ts/promise-function-async": ["off"], + "ts/quotes": ["off", "single", { "allowTemplateLiterals": true }], + "ts/require-array-sort-compare": ["off"], + "ts/require-await": "off", + "ts/restrict-plus-operands": "off", + "ts/restrict-template-expressions": "off", + "ts/return-await": "off", + "ts/semi": ["off"], + "ts/space-infix-ops": ["off", { "int32Hint": false }], + "ts/switch-exhaustiveness-check": ["off"], + "ts/type-annotation-spacing": ["off"], + "ts/unified-signatures": ["off"], + "tsdoc/syntax": "off", + }, + }, +); + +/** + * Resources and Inspirations + * ========================== + * @see https://typescript-eslint.io typescript + * @see https://eslint.org/docs/latest/rules eslint + * @see https://github.com/blefnk/relivator#readme relivator + * @see https://github.com/import-js/eslint-plugin-import#rules import + * @see https://github.com/antfu/eslint-ts-patch/#readme eslint-ts-patch + * @see https://github.com/sindresorhus/eslint-plugin-unicorn#rules unicorn + * @see https://github.com/ArnaudBarre/eslint-plugin-react-refresh react-refresh + * @see https://github.com/art0rz/eslint-plugin-no-barrel-files#rules no-barrel-files + * @see https://github.com/Anparasan3/core-js/blob/master/eslint.config.js inspirations + * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules eslint-comments + * @see https://github.com/Limegrass/eslint-plugin-import-alias#configuration import-alias + * @see https://github.com/nirv-ai/tinkerbuntune/blob/develop/eslint.config.js inspirations + * @see https://github.com/eslint-functional/eslint-plugin-functional#supported-rules functional + * @see https://github.com/a-tarasyuk/eslint-plugin-redundant-undefined#usage redundant-undefined + */ diff --git a/jest.config.js b/jest.config.js index 4dad08d4..d1335e00 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,22 +1,33 @@ +/** + * Jest Testing Configuration + * ========================== + * + * @see https://nextjs.org/docs/architecture/nextjs-compiler#jest + * @see https://jest-extended.jestcommunity.dev/docs/getting-started/setup + * @see https://github.com/MichalLytek/type-graphql/blob/master/jest.config.ts + */ + const nextJest = require("next/jest"); -const createJestConfig = nextJest({ - // Provide the path to your Next.js app to load next.config.js and .env files in the test environment - dir: "./", -}); +const createJestConfig = nextJest({ dir: "./" }); -// Add any custom config to be passed to Jest -/** @type {import('jest').Config} */ const customJestConfig = { - // Add more setup options before each test is run + rootDir: "./", + verbose: false, + preset: "ts-jest", + collectCoverage: false, + testEnvironment: "node", + extensionsToTreatAsEsm: [".ts"], + coverageDirectory: "/coverage", setupFilesAfterEnv: ["/jest.setup.ts"], - // if using TypeScript with a baseUrl set to the root directory then you need the below for alias' to work + moduleNameMapper: { "^~/(.*)$": "/$1" }, moduleDirectories: ["node_modules", "/"], - moduleNameMapper: { - "^~/(.*)$": "/$1", - }, - testEnvironment: "jest-environment-jsdom", + roots: ["/src", "/src/tests/jest"], + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], + collectCoverageFrom: ["/src/**/*.ts", "!/src/**/*.d.ts"], + transform: { "^.+\\.tsx?$": ["ts-jest", { tsconfig: "./tsconfig.json" }] }, }; -// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async +// createJestConfig is exported this way to ensure that +// next/jest can load the nextjs config which is async module.exports = createJestConfig(customJestConfig); diff --git a/jest.setup.ts b/jest.setup.ts index 378b5bed..da6820ce 100644 --- a/jest.setup.ts +++ b/jest.setup.ts @@ -1,4 +1,10 @@ -/** @see https://jest-extended.jestcommunity.dev/docs/getting-started/setup */ +/** + * Jest Setup Configuration + * ========================== + * + * @see https://nextjs.org/docs/architecture/nextjs-compiler#jest + * @see https://jest-extended.jestcommunity.dev/docs/getting-started/setup + */ import "@testing-library/jest-dom"; diff --git a/next.config.mjs b/next.config.mjs index 54a9dba3..2cf1e6ce 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -4,10 +4,13 @@ */ import createMDX from "@next/mdx"; +import million from "million/compiler"; import nextIntlPlugin from "next-intl/plugin"; import { createSecureHeaders } from "next-secure-headers"; import remarkGfm from "remark-gfm"; +import ContentSecurityPolicy from "./src/core/cors/csp.mjs"; + /** * If you need, you can very dangerously run build or dev with SKIP_ENV_VALIDATION. * It skips environment vars validation. This is especially useful for Docker builds. @@ -20,65 +23,120 @@ await import("./src/env.mjs"); * that are allowed to show media. */ const hostnames = [ - "avatars.githubusercontent.com", - "lh3.googleusercontent.com", + "*.githubusercontent.com", + "*.googleusercontent.com", + "api.dicebear.com", + "cdn.discordapp.com", + "discordapp.com", "githubusercontent.com", "googleusercontent.com", + "i.imgur.com", "images.unsplash.com", - "cdn.discordapp.com", - "res.cloudinary.com", - "www.gravatar.com", - "api.dicebear.com", "img.youtube.com", - "discordapp.com", "pbs.twimg.com", - "i.imgur.com", + "res.cloudinary.com", "utfs.io", + "www.gravatar.com", ]; /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, swcMinify: true, - /** - * Toggle experimental features. - */ experimental: { serverComponentsExternalPackages: ["mysql2"], mdxRs: true, }, - /** - * Configuration for next/image. - */ images: { formats: ["image/avif", "image/webp"], remotePatterns: hostnames.map((hostname) => ({ protocol: "https", hostname, })), + contentSecurityPolicy: + process.env.NEXT_PUBLIC_CSP_XSS === "true" + ? `default-src 'self'; frame-src 'none'; img-src 'https://*.googleusercontent.com'; font-src 'self', ${process.env.NEXT_PUBLIC_APP_URL}; sandbox;` + : undefined, }, - /** - * Set custom website headers with next-secure-headers. - * @see https://github.com/jagaapple/next-secure-headers - */ async headers() { - return [ - { - /** - * Set security headers to all routes. - */ + // todo: Please note: it is still experimental, so + // todo: NEXT_PUBLIC_CSP_XSS is "false" by default + if (process.env.NEXT_PUBLIC_CSP_XSS === "true") { + const headers = []; + + // Prevent search engines from indexing the site if it is not live + // This is useful for staging environments before they are ready to go live + // To allow robots to crawl the site, use the NEXT_PUBLIC_IS_LIVE env variable + // You may want to also use this variable to conditionally render any tracking scripts + // @see https://github.com/payloadcms/payload/blob/main/templates/ecommerce/next.config.js + if (process.env.NEXT_PUBLIC_IS_LIVE === "false") { + headers.push({ + headers: [ + { + key: "X-Robots-Tag", + value: "noindex", + }, + ], + source: "/:path*", + }); + } + + // Set the Content-Security-Policy header as a security measure to prevent XSS attacks + // It works by explicitly whitelisting trusted sources of content for your website + // This will block all inline scripts and styles except for those that are allowed + // todo: @see src/core/cors/csp.mjs for more details | work in progress | not fully tested + // todo: make it more stable | currently too much things are allowed than needed + headers.push({ source: "/(.*)", - headers: createSecureHeaders(), - }, - ]; + headers: [ + { + key: "Content-Security-Policy", + // todo: looks like we need to specify some policies + // todo: here & some in images.contentSecurityPolicy + value: ContentSecurityPolicy, + }, + { + key: "Access-Control-Allow-Credentials", + value: "true", + }, + { + key: "Access-Control-Allow-Origin", + value: "*", + }, + { + key: "Access-Control-Allow-Methods", + value: "GET,DELETE,PATCH,POST,PUT", + }, + { + key: "Access-Control-Allow-Headers", + value: + "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version", + }, + ], + }); + + // Note: to apply CSP changes while dev runtime, + // CTRL+S this file, to reload Next.js' server. + return headers; + } else { + // @see https://github.com/jagaapple/next-secure-headers + // default option: using next-secure-headers csp library + return [ + { + source: "/(.*)", + headers: createSecureHeaders(), + }, + ]; + } }, /** * Dangerously allow builds to successfully complete * even if your project has the types/eslint errors. * + * [Good to know if you want to toggle because `next build` errors]: * Next.js has built-in support for TypeScript, using its own plugin. * But while you use `pnpm build`, it stops on the first type errors. - * So you can use `pnpm bv` to check all type warns and errors at once. + * So you can use `pnpm typecheck` to check all type warns/errors at once. */ typescript: { ignoreBuildErrors: false }, eslint: { ignoreDuringBuilds: false }, @@ -94,9 +152,34 @@ const withMDX = createMDX({ options: { remarkPlugins: [remarkGfm] } }); * Create configuration wrapper required for using next-intl with React Server Components. * @see https://next-intl-docs.vercel.app/docs/getting-started/app-router-server-components */ -const withNextIntl = nextIntlPlugin("./src/i18n.ts"); +const withNextIntl = nextIntlPlugin( + // Specify a custom next-intl path + "./src/i18n.ts", +); + +/** + * Send merged Next.js config to server. + * @see https://million.dev/docs/install + */ +export default million.next(withNextIntl(withMDX(nextConfig)), { + auto: { rsc: true }, +}); + +/* ========================================================== */ +// For the Future Consideration +/* ========================================================== */ + +/** + * Navita: Atomic CSS-in-JS with zero runtime + * pnpm add @navita/css @navita/next-plugin + * @see https://navita.style + */ +// import { createNavitaStylePlugin } from "@navita/next-plugin"; +// export default withNavita(withMDX(withNextIntl(nextConfig))); +// const withNavita = createNavitaStylePlugin({}); /** - * Send the config to server while build or lint. + * Panda: Type-Safe CSS-in-JS + * pnpm add -D @pandacss/dev + * @see https://panda-css.com */ -export default withNextIntl(withMDX(nextConfig)); diff --git a/package.json b/package.json index 0fcbbdb4..bf22e8da 100644 --- a/package.json +++ b/package.json @@ -1,86 +1,108 @@ { "name": "relivator", - "version": "1.1.0", + "version": "1.2.0", "private": true, - "homepage": "https://relivator.bleverse.com", - "repository": { - "type": "git", - "url": "https://github.com/blefnk/relivator" - }, "author": { "name": "Nazarii Korniienko", - "email": "blefnk@gmail.com" + "email": "blefnk@gmail.com", + "url": "https://github.com/blefnk/relivator" }, "scripts": { - "appts": "run-s typecheck lint format build", + "appts": "run-s test format typecheck lint build", "build": "next build", - "check:knip": "dotenv pnpm knip", + "check:knip": "pnpm knip", "check:npm": "pnpm npm-check", "db": "drizzle-kit --help", - "db:drop": "dotenv drizzle-kit drop", - "db:generate": "dotenv tsx src/plugins/utils/db/warn-gen.ts", - "db:migrate": "dotenv tsx src/plugins/utils/db/migrate.ts", - "db:push": "dotenv tsx src/plugins/utils/db/warn-push.ts", - "db:seed": "dotenv tsx src/plugins/utils/db/seed-db.ts", - "db:studio": "dotenv drizzle-kit studio", - "dev": "next dev", + "db:drop": "drizzle-kit drop", + "db:generate": "tsx src/plugins/utils/db/warn-gen.ts", + "db:migrate": "tsx src/plugins/utils/db/migrate.ts", + "db:push": "tsx src/plugins/utils/db/warn-push.ts", + "db:seed": "tsx src/plugins/utils/db/seed-db.ts", + "db:studio": "drizzle-kit studio", + "db:studio-v": "drizzle-kit studio --verbose", + "dev": "next dev --turbo", "dev:email": "email dev", - "dev:turbo": "next dev --turbo", + "dev:no-turbo": "next dev", "email": "email dev --dir src/data/mail -p 3001", - "format": "pnpm format:write", - "format:check": "prettier --check \"**/*.{js,ts,tsx,md,mdx,json}\" --cache", - "format:write": "prettier --write \"**/*.{js,ts,tsx,md,mdx,json}\" --cache", - "latest": "pnpm update --latest && pnpm add next-intl@3.0.0-rc.7 @tanstack/react-query@^4.18.0", - "latest:canary": "pnpm latest && pnpm add next@canary react@canary react-dom@canary", - "lint": "next lint", - "lint:fix": "next lint --fix", - "lint:i18n": "eslint --fix --ext .json --format node_modules/eslint-plugin-i18n-json/formatter.js messages", - "mysql:check": "dotenv drizzle-kit check:mysql", - "mysql:generate": "dotenv drizzle-kit generate:mysql", - "mysql:push": "dotenv drizzle-kit push:mysql", - "pg:check": "dotenv drizzle-kit check:pg", - "pg:generate": "dotenv drizzle-kit generate:pg", - "pg:push": "dotenv drizzle-kit push:pg", - "shadcn": "pnpm dlx shadcn-ui@latest add", + "fix:ts": "typestat --config typestat.json", + "format": "prettier --write --check \"**/*.{js,ts,tsx,md,mdx,json}\" --cache --experimental-ternaries", + "format:check": "prettier --check \"**/*.{js,ts,tsx,md,mdx,json}\" --cache --experimental-ternaries", + "format:old": "run-s format:write format:check", + "format:write": "prettier --write \"**/*.{js,ts,tsx,md,mdx,json}\" --cache --experimental-ternaries", + "latest": "pnpm update --latest && pnpm up-trpc:next && pnpm add storybook@next @storybook/nextjs@next", + "lint": "eslint-ts . && pnpm stylelint src/**/*.css", + "lint:fix": "eslint-ts . --fix && pnpm stylelint --fix src/**/*.css", + "lint:standard": "pnpm standard && pnpm ts-standard", + "lint:standard-fix": "pnpm standard --fix && pnpm ts-standard --fix", + "lint:xo": "pnpm xo --plugin=react src", + "lint:xo-fix": "pnpm xo --plugin=react src --fix", + "mysql:check": "drizzle-kit check:mysql", + "mysql:generate": "drizzle-kit generate:mysql", + "mysql:push": "drizzle-kit push:mysql", + "pg:check": "drizzle-kit check:pg", + "pg:generate": "drizzle-kit generate:pg", + "pg:push": "drizzle-kit push:pg", + "shadcn": "pnpx shadcn-ui@latest add", "start": "next start", "stripe:listen": "stripe listen --forward-to localhost:3000/api/webhooks/stripe --latest", - "test:jp": "pnpm jest --passWithNoTests && pnpm playwright test", - "trpc:latest": "pnpm latest && pnpm add @trpc/client@latest @trpc/react-query@latest @trpc/server@latest", - "trpc:next": "pnpm latest:canary && pnpm add @trpc/client@next @trpc/react-query@next @trpc/server@next @tanstack/react-query@latest", - "typecheck": "dotenv tsc --noEmit", - "typecheck:watch": "dotenv tsc -w" - }, - "jest": { - "setupFilesAfterEnv": [ - "./jest.setup.ts" - ] + "test": "pnpm test:jest", + "test:ava": "pnpm ava", + "test:ava-tsx": "cross-env NODE_OPTIONS=\"--import=tsx\" ava", + "test:jest": "pnpm jest --passWithNoTests", + "test:pw": "pnpm playwright test", + "typecheck": "tsc --noEmit", + "typecheck:watch": "tsc -w", + "ui:eslint": "pnpx eslint-flat-config-viewer", + "up-clerk:alpha": "pnpm add @clerk/nextjs@alpha-v5 @clerk/clerk-react@alpha-v5 @clerk/themes@alpha-v5 @clerk/types@alpha-v5 @clerk/localizations@latest", + "up-next:canary": "pnpm add next@canary react@canary react-dom@canary", + "up-trpc:next": "pnpm add @trpc/client@next @trpc/react-query@next @trpc/server@next", + "wt": "pnpx webhookthing@latest --use-pnpm" }, + "browserslist": [ + "chrome 64", + "edge 79", + "firefox 67", + "opera 51", + "safari 12", + "ios 12" + ], "dependencies": { - "@auth/core": "^0.18.0", - "@auth/drizzle-adapter": "^0.3.5", - "@clerk/localizations": "^1.26.8", - "@clerk/nextjs": "^4.26.2", - "@clerk/themes": "^1.7.9", - "@clerk/types": "^3.57.1", - "@cspell/dict-companies": "^3.0.27", - "@cspell/dict-de-de": "^3.1.1", - "@cspell/dict-es-es": "^2.2.7", + "@auth/core": "^0.19.0", + "@auth/drizzle-adapter": "^0.3.12", + "@clerk/clerk-react": "4.30.2", + "@clerk/localizations": "^1.26.13", + "@clerk/nextjs": "4.29.1", + "@clerk/themes": "1.7.9", + "@clerk/types": "3.60.0", + "@cspell/dict-companies": "^3.0.29", + "@cspell/dict-de-de": "^3.2.0", + "@cspell/dict-es-es": "^2.3.1", "@cspell/dict-fr-fr": "^2.2.2", "@cspell/dict-fullstack": "^3.1.5", - "@cspell/dict-it-it": "^3.0.1", + "@cspell/dict-it-it": "^3.1.0", "@cspell/dict-markdown": "^2.0.1", - "@cspell/dict-npm": "^5.0.12", + "@cspell/dict-npm": "^5.0.14", "@cspell/dict-pl_pl": "^3.0.1", "@cspell/dict-tr-tr": "^3.0.0", "@cspell/dict-typescript": "^3.1.2", - "@faker-js/faker": "^8.2.0", - "@hookform/resolvers": "^3.3.2", + "@faire/mjml-react": "^3.3.0", + "@faker-js/faker": "^8.3.1", + "@formatjs/intl-localematcher": "^0.5.2", + "@gsap/react": "^2.0.2", + "@hookform/resolvers": "^3.3.3", + "@inquirer/prompts": "^3.3.0", + "@lemonsqueezy/lemonsqueezy.js": "^1.2.4", + "@liveblocks/client": "^1.9.1", + "@liveblocks/react": "^1.9.1", "@loglib/tracker": "^0.8.0", "@mdx-js/loader": "^3.0.0", "@mdx-js/react": "^3.0.0", - "@neondatabase/serverless": "^0.6.0", - "@next/mdx": "^14.0.1", - "@planetscale/database": "^1.11.0", + "@neondatabase/serverless": "^0.6.1", + "@next/mdx": "^14.0.4", + "@normy/react-query": "^0.13.0", + "@planetscale/database": "^1.13.0", + "@preact/signals-core": "^1.5.1", + "@preact/signals-react": "^2.0.0", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-aspect-ratio": "^1.0.3", @@ -102,111 +124,245 @@ "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-tooltip": "^1.0.7", - "@stripe/react-stripe-js": "^2.3.1", - "@stripe/stripe-js": "^2.1.11", + "@react-rxjs/core": "^0.10.7", + "@react-rxjs/utils": "^0.9.7", + "@redux-devtools/extension": "^3.3.0", + "@storybook/nextjs": "8.0.0-alpha.5", + "@stripe/react-stripe-js": "^2.4.0", + "@stripe/stripe-js": "^2.2.2", "@t3-oss/env-nextjs": "^0.7.1", - "@tanstack/react-query": "^4.18.0", - "@tanstack/react-table": "^8.10.7", - "@trpc/client": "10.43.1", - "@trpc/react-query": "10.43.1", - "@trpc/server": "10.43.1", - "@types/js-cookie": "^3.0.5", - "@types/mdx": "^2.0.9", - "@uploadthing/react": "^5.7.0", + "@tanstack/react-query": "^5.15.0", + "@tanstack/react-query-devtools": "^5.15.0", + "@tanstack/react-query-next-experimental": "^5.15.0", + "@tanstack/react-table": "^8.11.2", + "@trpc/client": "11.0.0-next-alpha.147", + "@trpc/react-query": "11.0.0-next-alpha.147", + "@trpc/server": "11.0.0-next-alpha.147", + "@types/mdx": "^2.0.10", + "@udecode/cn": "^29.0.0", + "@udecode/plate-autoformat": "^29.0.0", + "@udecode/plate-basic-marks": "^29.0.0", + "@udecode/plate-block-quote": "^29.0.0", + "@udecode/plate-break": "^29.0.0", + "@udecode/plate-code-block": "^29.0.0", + "@udecode/plate-common": "^29.0.0", + "@udecode/plate-heading": "^29.0.0", + "@udecode/plate-highlight": "^29.0.0", + "@udecode/plate-horizontal-rule": "^29.0.0", + "@udecode/plate-indent-list": "^29.0.0", + "@udecode/plate-link": "^29.0.0", + "@udecode/plate-list": "^29.0.0", + "@udecode/plate-media": "^29.0.0", + "@udecode/plate-node-id": "^29.0.0", + "@udecode/plate-normalizers": "^29.0.0", + "@udecode/plate-paragraph": "^29.0.0", + "@udecode/plate-reset-node": "^29.0.0", + "@udecode/plate-select": "^29.0.0", + "@udecode/plate-table": "^29.0.0", + "@udecode/plate-trailing-block": "^29.0.0", + "@uploadthing/react": "^6.0.2", + "@upstash/ratelimit": "^1.0.0", + "@upstash/redis": "^1.27.1", "@vercel/analytics": "^1.1.1", - "axios": "^1.6.0", + "axios": "^1.6.3", + "browserslist": "^4.22.2", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", "cmdk": "^0.2.0", + "cookies-next": "^4.1.0", "cropperjs": "^1.6.1", + "dat.gui": "^0.7.9", "dayjs": "^1.11.10", - "drizzle-orm": "^0.28.6", + "drizzle-orm": "^0.29.2", "drizzle-zod": "^0.5.1", - "embla-carousel-react": "8.0.0-rc14", - "eslint-config-next": "^14.0.1", - "flag-icons": "^6.12.0", + "embla-carousel-react": "8.0.0-rc17", + "eslint-config-next": "^14.0.4", + "eslint-plugin-drizzle": "^0.2.3", + "flag-icons": "^7.1.0", + "fuse": "^0.9.1", + "graphql": "^16.8.1", + "graphql-scalars": "^1.22.4", + "gsap": "^3.12.4", + "healthier": "^7.0.0", "international-types": "^0.8.1", - "js-cookie": "^3.0.5", "lodash": "^4.17.21", - "lucide-react": "^0.292.0", + "lucide-react": "^0.302.0", "mdx": "^0.3.1", "micro": "^10.0.1", - "next": "14.0.2-canary.12", - "next-auth": "4.24.4", - "next-international": "^1.1.3", - "next-intl": "3.0.0-rc.7", + "million": "^2.6.4", + "negotiator": "^0.6.3", + "next": "14.0.4", + "next-auth": "4.24.5", + "next-international": "^1.1.4", + "next-intl": "3.4.0", + "next-safe-action": "^5.2.3", "next-themes": "^0.2.1", + "next-usequerystate": "^1.13.2", "nextjs-google-analytics": "^2.3.3", "nodemailer": "^6.9.7", "pg": "^8.11.3", "postgres": "^3.4.3", - "react": "18.3.0-canary-ce2bc58a9-20231102", + "react": "18.2.0", + "react-aria-components": "^1.0.0", "react-cropper": "^2.3.3", - "react-day-picker": "^8.9.1", - "react-dom": "18.3.0-canary-ce2bc58a9-20231102", + "react-day-picker": "^8.10.0", + "react-dom": "18.2.0", "react-dropzone": "^14.2.3", - "react-hook-form": "^7.48.1", + "react-hook-form": "^7.49.2", "react-hot-toast": "^2.4.1", - "react-icons": "^4.11.0", - "react-medium-image-zoom": "^5.1.8", + "react-icons": "^4.12.0", + "react-lag-radar": "^1.0.0", + "react-medium-image-zoom": "^5.1.9", "react-wrap-balancer": "^1.1.0", + "reflect-metadata": "^0.2.1", "remark-gfm": "^4.0.0", "request-ip": "^3.3.0", - "stripe": "^14.3.0", - "superjson": "^2.2.0", - "tailwind-variants": "^0.1.18", + "resend": "^2.1.0", + "rooks": "^7.14.1", + "rxjs": "^7.8.1", + "slate": "^0.101.5", + "slate-history": "^0.100.0", + "slate-hyperscript": "^0.100.0", + "slate-react": "^0.101.5", + "storybook": "8.0.0-alpha.5", + "string-ts": "^2.0.0", + "stripe": "^14.10.0", + "superjson": "^2.2.1", + "tailwind-variants": "^0.1.19", "tailwindcss-animate": "^1.0.7", "ts-deepmerge": "^6.2.0", - "uploadthing": "^5.7.4", - "vaul": "^0.7.7", - "zod": "^3.22.4" + "type-fest": "^4.9.0", + "type-graphql": "^1.1.1", + "uploadthing": "^6.1.0", + "vaul": "^0.8.0", + "winston": "^3.11.0", + "zod": "^3.22.4", + "zustand": "^4.4.7" }, "devDependencies": { - "@cspell/dict-uk-ua": "^3.0.0", + "@0no-co/graphqlsp": "^0.13.0", + "@antfu/eslint-config": "^2.6.1", + "@ava/typescript": "^4.1.0", + "@biomejs/biome": "^1.4.1", + "@bufbuild/jest-environment-jsdom": "^0.1.1", + "@commitlint/cli": "^18.4.3", + "@commitlint/config-conventional": "^18.4.3", + "@commitlint/types": "^18.4.3", + "@cspell/dict-fa-ir": "^4.0.0", + "@cspell/dict-uk-ua": "^4.0.0", + "@graphql-typed-document-node/core": "^3.2.0", "@ianvs/prettier-plugin-sort-imports": "^4.1.1", - "@playwright/test": "^1.39.0", + "@limegrass/eslint-plugin-import-alias": "^1.1.0", + "@next/eslint-plugin-next": "^14.0.4", + "@playwright/test": "^1.40.1", "@tailwindcss/typography": "^0.5.10", - "@tanstack/eslint-plugin-query": "^5.6.0", - "@testing-library/jest-dom": "^6.1.4", - "@types/jest": "^29.5.7", - "@types/lodash": "^4.14.200", - "@types/node": "20.8.10", - "@types/pg": "^8.10.7", - "@types/react": "18.2.34", - "@types/react-dom": "18.2.14", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", + "@tanstack/eslint-plugin-query": "^5.14.6", + "@testing-library/jest-dom": "^6.1.6", + "@total-typescript/ts-reset": "^0.5.1", + "@types/jest": "^29.5.11", + "@types/lodash": "^4.14.202", + "@types/negotiator": "^0.6.3", + "@types/node": "20.10.5", + "@types/pg": "^8.10.9", + "@types/react": "18.2.45", + "@types/react-dom": "18.2.18", + "@typescript-eslint/eslint-plugin": "^6.16.0", + "@typescript-eslint/parser": "^6.16.0", "autoprefixer": "10.4.16", - "cspell": "^7.3.8", + "ava": "^6.0.1", + "cross-env": "^7.0.3", + "cspell": "^8.2.3", "dotenv-cli": "^7.3.0", - "drizzle-kit": "^0.19.13", - "eslint": "8.53.0", - "eslint-config-prettier": "^9.0.0", + "drizzle-kit": "^0.20.9", + "eslint": "npm:eslint-ts-patch@8.56.0-0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-interactive": "^10.8.0", - "eslint-plugin-i18n-json": "^4.0.0", + "eslint-plugin-deprecation": "^2.0.0", + "eslint-plugin-format": "^0.1.0", + "eslint-plugin-functional": "^6.0.0", + "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1", "eslint-plugin-jest": "^27.6.0", "eslint-plugin-jest-extended": "^2.0.0", + "eslint-plugin-jest-formatting": "^3.1.0", + "eslint-plugin-jsdoc": "^46.9.1", + "eslint-plugin-jsonc": "^2.11.2", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-no-barrel-files": "^1.1.0", + "eslint-plugin-no-secrets": "^0.8.9", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "eslint-plugin-redundant-undefined": "^1.0.0", + "eslint-plugin-sonarjs": "^0.23.0", "eslint-plugin-tailwindcss": "^3.13.0", + "eslint-plugin-tsdoc": "^0.2.17", + "eslint-plugin-unicorn": "^50.0.1", + "eslint-plugin-write-good-comments": "^0.2.0", + "eslint-plugin-xss": "^0.1.12", + "eslint-ts-patch": "8.56.0-0", + "husky": "^8.0.3", "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "jest-extended": "^4.0.2", - "knip": "^2.39.0", - "mysql2": "^3.6.3", + "jsonc-eslint-parser": "^2.4.0", + "knip": "3.9.0", + "lemonsqueezy.ts": "^0.1.7", + "lint-staged": "^15.2.0", + "markdown-it-shikiji": "^0.9.12", + "mysql2": "^3.6.5", "next-secure-headers": "^2.2.0", "npm-check": "^6.0.1", "npm-run-all2": "^6.1.1", - "postcss": "8.4.31", - "prettier": "^3.0.3", - "prettier-plugin-packagejson": "^2.4.6", - "prettier-plugin-tailwindcss": "^0.5.6", - "tailwind-merge": "^2.0.0", - "tailwindcss": "3.3.5", - "tsx": "^3.14.0", - "typescript": "5.2.2" + "postcss": "8.4.32", + "postcss-load-config": "^5.0.2", + "prettier": "^3.1.1", + "prettier-plugin-packagejson": "^2.4.8", + "prettier-plugin-tailwindcss": "^0.5.9", + "rehype-shikiji": "^0.9.12", + "shikiji": "^0.9.12", + "standard": "^17.1.0", + "stylelint": "^16.1.0", + "stylelint-config-css-modules": "^4.4.0", + "stylelint-config-standard": "^36.0.0", + "stylelint-config-standard-scss": "^12.0.0", + "stylelint-scss": "^6.0.0", + "tailwind-merge": "^2.2.0", + "tailwindcss": "3.4.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.9.2", + "ts-standard": "^12.0.2", + "tslib": "^2.6.2", + "tsx": "^4.7.0", + "typescript": "5.3.3", + "xo": "^0.56.0" }, - "packageManager": "pnpm@8.10.0", + "packageManager": "pnpm@8.13.1", "volta": { - "node": "18.18.0", - "pnpm": "8.10.0" + "node": "20.10.0", + "pnpm": "8.13.1" + }, + "pnpm": { + "overrides": { + "graphql": "$graphql" + }, + "allowedDeprecatedVersions": { + "@babel/plugin-proposal-nullish-coalescing-operator": "*", + "@babel/plugin-proposal-async-generator-functions": "*", + "@babel/plugin-proposal-optional-catch-binding": "*", + "@babel/plugin-proposal-export-namespace-from": "*", + "@babel/plugin-proposal-object-rest-spread": "*", + "@babel/plugin-proposal-numeric-separator": "*", + "@babel/plugin-proposal-optional-chaining": "*", + "@babel/plugin-proposal-class-properties": "*", + "rollup-plugin-inject": "*", + "@npmcli/move-file": "*", + "sourcemap-codec": "*", + "domexception": "*", + "abab": "*", + "uuid": "*" + } } } diff --git a/playwright.config.ts b/playwright.config.ts index 2e1efc34..d111ea45 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,11 +1,12 @@ import type { PlaywrightTestConfig } from "@playwright/test"; import { devices } from "@playwright/test"; -// Use a distinct port on CI to avoid conflicts during concurrent tests +// use a distinct port on CI to avoid +// conflicts during concurrent tests const PORT = process.env.CI ? 3002 : 3000; const config: PlaywrightTestConfig = { - testDir: "./src/plugins/tests", + testDir: "./src/tests/pw", projects: [ { name: "chromium", @@ -14,8 +15,8 @@ const config: PlaywrightTestConfig = { ], webServer: { command: `PORT=${PORT} pnpm start`, - port: PORT, reuseExistingServer: true, + port: PORT, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e13156b7..c0a12f77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,34 +4,40 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + graphql: ^16.8.1 + dependencies: '@auth/core': - specifier: ^0.18.0 - version: 0.18.0(nodemailer@6.9.7) + specifier: ^0.19.0 + version: 0.19.0(nodemailer@6.9.7) '@auth/drizzle-adapter': - specifier: ^0.3.5 - version: 0.3.5(nodemailer@6.9.7) + specifier: ^0.3.12 + version: 0.3.12(nodemailer@6.9.7) + '@clerk/clerk-react': + specifier: 4.30.2 + version: 4.30.2(react@18.2.0) '@clerk/localizations': - specifier: ^1.26.8 - version: 1.26.8(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^1.26.13 + version: 1.26.13(react@18.2.0) '@clerk/nextjs': - specifier: ^4.26.2 - version: 4.26.2(next@14.0.2-canary.12)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 4.29.1 + version: 4.29.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) '@clerk/themes': - specifier: ^1.7.9 - version: 1.7.9(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 1.7.9 + version: 1.7.9(react@18.2.0) '@clerk/types': - specifier: ^3.57.1 - version: 3.57.1 + specifier: 3.60.0 + version: 3.60.0 '@cspell/dict-companies': - specifier: ^3.0.27 - version: 3.0.27 + specifier: ^3.0.29 + version: 3.0.29 '@cspell/dict-de-de': - specifier: ^3.1.1 - version: 3.1.1 + specifier: ^3.2.0 + version: 3.2.0 '@cspell/dict-es-es': - specifier: ^2.2.7 - version: 2.2.7 + specifier: ^2.3.1 + version: 2.3.1 '@cspell/dict-fr-fr': specifier: ^2.2.2 version: 2.2.2 @@ -39,14 +45,14 @@ dependencies: specifier: ^3.1.5 version: 3.1.5 '@cspell/dict-it-it': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.1.0 + version: 3.1.0 '@cspell/dict-markdown': specifier: ^2.0.1 version: 2.0.1 '@cspell/dict-npm': - specifier: ^5.0.12 - version: 5.0.12 + specifier: ^5.0.14 + version: 5.0.14 '@cspell/dict-pl_pl': specifier: ^3.0.1 version: 3.0.1 @@ -56,132 +62,249 @@ dependencies: '@cspell/dict-typescript': specifier: ^3.1.2 version: 3.1.2 + '@faire/mjml-react': + specifier: ^3.3.0 + version: 3.3.0(mjml@4.14.1)(react-dom@18.2.0)(react@18.2.0) '@faker-js/faker': - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.3.1 + version: 8.3.1 + '@formatjs/intl-localematcher': + specifier: ^0.5.2 + version: 0.5.2 + '@gsap/react': + specifier: ^2.0.2 + version: 2.0.2(react@18.2.0) '@hookform/resolvers': - specifier: ^3.3.2 - version: 3.3.2(react-hook-form@7.48.1) + specifier: ^3.3.3 + version: 3.3.3(react-hook-form@7.49.2) + '@inquirer/prompts': + specifier: ^3.3.0 + version: 3.3.0 + '@lemonsqueezy/lemonsqueezy.js': + specifier: ^1.2.4 + version: 1.2.4 + '@liveblocks/client': + specifier: ^1.9.1 + version: 1.9.1 + '@liveblocks/react': + specifier: ^1.9.1 + version: 1.9.1(react@18.2.0) '@loglib/tracker': specifier: ^0.8.0 - version: 0.8.0(react@18.3.0-canary-ce2bc58a9-20231102) + version: 0.8.0(react@18.2.0) '@mdx-js/loader': specifier: ^3.0.0 version: 3.0.0(webpack@5.89.0) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 3.0.0(@types/react@18.2.45)(react@18.2.0) '@neondatabase/serverless': - specifier: ^0.6.0 - version: 0.6.0 + specifier: ^0.6.1 + version: 0.6.1 '@next/mdx': - specifier: ^14.0.1 - version: 14.0.1(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0) + specifier: ^14.0.4 + version: 14.0.4(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0) + '@normy/react-query': + specifier: ^0.13.0 + version: 0.13.0(@tanstack/react-query@5.15.0) '@planetscale/database': - specifier: ^1.11.0 - version: 1.11.0 + specifier: ^1.13.0 + version: 1.13.0 + '@preact/signals-core': + specifier: ^1.5.1 + version: 1.5.1 + '@preact/signals-react': + specifier: ^2.0.0 + version: 2.0.0(react@18.2.0) '@radix-ui/react-accordion': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-alert-dialog': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-aspect-ratio': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-avatar': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-checkbox': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dropdown-menu': specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-icons': specifier: ^1.3.0 - version: 1.3.0(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.3.0(react@18.2.0) '@radix-ui/react-label': specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.0.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-menubar': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-navigation-menu': specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.1.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-popover': specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-scroll-area': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-select': specifier: ^2.0.0 - version: 2.0.0(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-separator': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slider': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.2(@types/react@18.2.45)(react@18.2.0) '@radix-ui/react-switch': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tabs': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toast': specifier: ^1.1.5 - version: 1.1.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.1.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@react-rxjs/core': + specifier: ^0.10.7 + version: 0.10.7(react@18.2.0)(rxjs@7.8.1) + '@react-rxjs/utils': + specifier: ^0.9.7 + version: 0.9.7(@react-rxjs/core@0.10.7)(react@18.2.0)(rxjs@7.8.1) + '@redux-devtools/extension': + specifier: ^3.3.0 + version: 3.3.0(redux@5.0.1) + '@storybook/nextjs': + specifier: 8.0.0-alpha.5 + version: 8.0.0-alpha.5(@swc/core@1.3.101)(esbuild@0.18.20)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0) '@stripe/react-stripe-js': - specifier: ^2.3.1 - version: 2.3.1(@stripe/stripe-js@2.1.11)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^2.4.0 + version: 2.4.0(@stripe/stripe-js@2.2.2)(react-dom@18.2.0)(react@18.2.0) '@stripe/stripe-js': - specifier: ^2.1.11 - version: 2.1.11 + specifier: ^2.2.2 + version: 2.2.2 '@t3-oss/env-nextjs': specifier: ^0.7.1 - version: 0.7.1(typescript@5.2.2)(zod@3.22.4) + version: 0.7.1(typescript@5.3.3)(zod@3.22.4) '@tanstack/react-query': - specifier: ^4.18.0 - version: 4.18.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^5.15.0 + version: 5.15.0(react@18.2.0) + '@tanstack/react-query-devtools': + specifier: ^5.15.0 + version: 5.15.0(@tanstack/react-query@5.15.0)(react@18.2.0) + '@tanstack/react-query-next-experimental': + specifier: ^5.15.0 + version: 5.15.0(@tanstack/react-query@5.15.0)(next@14.0.4)(react@18.2.0) '@tanstack/react-table': - specifier: ^8.10.7 - version: 8.10.7(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^8.11.2 + version: 8.11.2(react-dom@18.2.0)(react@18.2.0) '@trpc/client': - specifier: 10.43.1 - version: 10.43.1(@trpc/server@10.43.1) + specifier: 11.0.0-next-alpha.147 + version: 11.0.0-next-alpha.147(@trpc/server@11.0.0-next-alpha.147) '@trpc/react-query': - specifier: 10.43.1 - version: 10.43.1(@tanstack/react-query@4.18.0)(@trpc/client@10.43.1)(@trpc/server@10.43.1)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 11.0.0-next-alpha.147 + version: 11.0.0-next-alpha.147(@tanstack/react-query@5.15.0)(@trpc/client@11.0.0-next-alpha.147)(@trpc/server@11.0.0-next-alpha.147)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': - specifier: 10.43.1 - version: 10.43.1 - '@types/js-cookie': - specifier: ^3.0.5 - version: 3.0.5 + specifier: 11.0.0-next-alpha.147 + version: 11.0.0-next-alpha.147 '@types/mdx': - specifier: ^2.0.9 - version: 2.0.9 + specifier: ^2.0.10 + version: 2.0.10 + '@udecode/cn': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(class-variance-authority@0.7.0)(react-dom@18.2.0)(react@18.2.0)(tailwind-merge@2.2.0) + '@udecode/plate-autoformat': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-basic-marks': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-block-quote': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-break': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-code-block': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-common': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-heading': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-highlight': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-horizontal-rule': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-indent-list': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-link': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-list': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-media': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-node-id': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-normalizers': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-paragraph': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-reset-node': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-select': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-table': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-trailing-block': + specifier: ^29.0.0 + version: 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) '@uploadthing/react': - specifier: ^5.7.0 - version: 5.7.0(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102)(uploadthing@5.7.4) + specifier: ^6.0.2 + version: 6.0.2(next@14.0.4)(react@18.2.0)(uploadthing@6.1.0) + '@upstash/ratelimit': + specifier: ^1.0.0 + version: 1.0.0 + '@upstash/redis': + specifier: ^1.27.1 + version: 1.27.1 '@vercel/analytics': specifier: ^1.1.1 version: 1.1.1 axios: - specifier: ^1.6.0 - version: 1.6.0 + specifier: ^1.6.3 + version: 1.6.3 + browserslist: + specifier: ^4.22.2 + version: 4.22.2 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -190,64 +313,97 @@ dependencies: version: 2.0.0 cmdk: specifier: ^0.2.0 - version: 0.2.0(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 0.2.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + cookies-next: + specifier: ^4.1.0 + version: 4.1.0 cropperjs: specifier: ^1.6.1 version: 1.6.1 + dat.gui: + specifier: ^0.7.9 + version: 0.7.9 dayjs: specifier: ^1.11.10 version: 1.11.10 drizzle-orm: - specifier: ^0.28.6 - version: 0.28.6(@neondatabase/serverless@0.6.0)(@planetscale/database@1.11.0)(@types/pg@8.10.7)(mysql2@3.6.3)(pg@8.11.3)(postgres@3.4.3) + specifier: ^0.29.2 + version: 0.29.2(@neondatabase/serverless@0.6.1)(@planetscale/database@1.13.0)(@types/pg@8.10.9)(@types/react@18.2.45)(expo-sqlite@13.2.0)(mysql2@3.6.5)(pg@8.11.3)(postgres@3.4.3)(react@18.2.0) drizzle-zod: specifier: ^0.5.1 - version: 0.5.1(drizzle-orm@0.28.6)(zod@3.22.4) + version: 0.5.1(drizzle-orm@0.29.2)(zod@3.22.4) embla-carousel-react: - specifier: 8.0.0-rc14 - version: 8.0.0-rc14(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 8.0.0-rc17 + version: 8.0.0-rc17(react@18.2.0) eslint-config-next: - specifier: ^14.0.1 - version: 14.0.1(eslint@8.53.0)(typescript@5.2.2) + specifier: ^14.0.4 + version: 14.0.4(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-drizzle: + specifier: ^0.2.3 + version: 0.2.3(eslint-ts-patch@8.56.0-0) flag-icons: - specifier: ^6.12.0 - version: 6.12.0 + specifier: ^7.1.0 + version: 7.1.0 + fuse: + specifier: ^0.9.1 + version: 0.9.1(@types/node@20.10.5)(next@14.0.4)(react@18.2.0)(typescript@5.3.3) + graphql: + specifier: ^16.8.1 + version: 16.8.1 + graphql-scalars: + specifier: ^1.22.4 + version: 1.22.4(graphql@16.8.1) + gsap: + specifier: ^3.12.4 + version: 3.12.4 + healthier: + specifier: ^7.0.0 + version: 7.0.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1) international-types: specifier: ^0.8.1 version: 0.8.1 - js-cookie: - specifier: ^3.0.5 - version: 3.0.5 lodash: specifier: ^4.17.21 version: 4.17.21 lucide-react: - specifier: ^0.292.0 - version: 0.292.0(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^0.302.0 + version: 0.302.0(react@18.2.0) mdx: specifier: ^0.3.1 version: 0.3.1 micro: specifier: ^10.0.1 version: 10.0.1 + million: + specifier: ^2.6.4 + version: 2.6.4 + negotiator: + specifier: ^0.6.3 + version: 0.6.3 next: - specifier: 14.0.2-canary.12 - version: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 14.0.4 + version: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) next-auth: - specifier: 4.24.4 - version: 4.24.4(next@14.0.2-canary.12)(nodemailer@6.9.7)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 4.24.5 + version: 4.24.5(next@14.0.4)(nodemailer@6.9.7)(react-dom@18.2.0)(react@18.2.0) next-international: - specifier: ^1.1.3 - version: 1.1.3 + specifier: ^1.1.4 + version: 1.1.4 next-intl: - specifier: 3.0.0-rc.7 - version: 3.0.0-rc.7(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 3.4.0 + version: 3.4.0(next@14.0.4)(react@18.2.0) + next-safe-action: + specifier: ^5.2.3 + version: 5.2.3(next@14.0.4)(react@18.2.0)(zod@3.22.4) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@14.0.2-canary.12)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0) + next-usequerystate: + specifier: ^1.13.2 + version: 1.13.2(next@14.0.4) nextjs-google-analytics: specifier: ^2.3.3 - version: 2.3.3(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.3.3(next@14.0.4)(react@18.2.0) nodemailer: specifier: ^6.9.7 version: 6.9.7 @@ -258,157 +414,334 @@ dependencies: specifier: ^3.4.3 version: 3.4.3 react: - specifier: 18.3.0-canary-ce2bc58a9-20231102 - version: 18.3.0-canary-ce2bc58a9-20231102 + specifier: 18.2.0 + version: 18.2.0 + react-aria-components: + specifier: ^1.0.0 + version: 1.0.0(react-dom@18.2.0)(react@18.2.0) react-cropper: specifier: ^2.3.3 - version: 2.3.3(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.3.3(react@18.2.0) react-day-picker: - specifier: ^8.9.1 - version: 8.9.1(date-fns@2.30.0)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^8.10.0 + version: 8.10.0(date-fns@3.0.6)(react@18.2.0) react-dom: - specifier: 18.3.0-canary-ce2bc58a9-20231102 - version: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) react-dropzone: specifier: ^14.2.3 - version: 14.2.3(react@18.3.0-canary-ce2bc58a9-20231102) + version: 14.2.3(react@18.2.0) react-hook-form: - specifier: ^7.48.1 - version: 7.48.1(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^7.49.2 + version: 7.49.2(react@18.2.0) react-hot-toast: specifier: ^2.4.1 - version: 2.4.1(csstype@3.1.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + version: 2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0) react-icons: - specifier: ^4.11.0 - version: 4.11.0(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^4.12.0 + version: 4.12.0(react@18.2.0) + react-lag-radar: + specifier: ^1.0.0 + version: 1.0.0(react@18.2.0) react-medium-image-zoom: - specifier: ^5.1.8 - version: 5.1.8(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^5.1.9 + version: 5.1.9(react-dom@18.2.0)(react@18.2.0) react-wrap-balancer: specifier: ^1.1.0 - version: 1.1.0(react@18.3.0-canary-ce2bc58a9-20231102) + version: 1.1.0(react@18.2.0) + reflect-metadata: + specifier: ^0.2.1 + version: 0.2.1 remark-gfm: specifier: ^4.0.0 version: 4.0.0 request-ip: specifier: ^3.3.0 version: 3.3.0 + resend: + specifier: ^2.1.0 + version: 2.1.0 + rooks: + specifier: ^7.14.1 + version: 7.14.1(react-dom@18.2.0)(react@18.2.0) + rxjs: + specifier: ^7.8.1 + version: 7.8.1 + slate: + specifier: ^0.101.5 + version: 0.101.5 + slate-history: + specifier: ^0.100.0 + version: 0.100.0(slate@0.101.5) + slate-hyperscript: + specifier: ^0.100.0 + version: 0.100.0(slate@0.101.5) + slate-react: + specifier: ^0.101.5 + version: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + storybook: + specifier: 8.0.0-alpha.5 + version: 8.0.0-alpha.5 + string-ts: + specifier: ^2.0.0 + version: 2.0.0 stripe: - specifier: ^14.3.0 - version: 14.3.0 + specifier: ^14.10.0 + version: 14.10.0 superjson: - specifier: ^2.2.0 - version: 2.2.0 + specifier: ^2.2.1 + version: 2.2.1 tailwind-variants: - specifier: ^0.1.18 - version: 0.1.18(tailwindcss@3.3.5) + specifier: ^0.1.19 + version: 0.1.19(tailwindcss@3.4.0) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.3.5) + version: 1.0.7(tailwindcss@3.4.0) ts-deepmerge: specifier: ^6.2.0 version: 6.2.0 + type-fest: + specifier: ^4.9.0 + version: 4.9.0 + type-graphql: + specifier: ^1.1.1 + version: 1.1.1(class-validator@0.14.0)(graphql@16.8.1) uploadthing: - specifier: ^5.7.4 - version: 5.7.4 + specifier: ^6.1.0 + version: 6.1.0 vaul: - specifier: ^0.7.7 - version: 0.7.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + specifier: ^0.8.0 + version: 0.8.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + winston: + specifier: ^3.11.0 + version: 3.11.0 zod: specifier: ^3.22.4 version: 3.22.4 + zustand: + specifier: ^4.4.7 + version: 4.4.7(@types/react@18.2.45)(react@18.2.0) devDependencies: + '@0no-co/graphqlsp': + specifier: ^0.13.0 + version: 0.13.0(graphql@16.8.1) + '@antfu/eslint-config': + specifier: ^2.6.1 + version: 2.6.1(@vue/compiler-sfc@3.3.13)(eslint-import-resolver-typescript@3.6.1)(eslint-plugin-format@0.1.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react-refresh@0.4.5)(eslint-plugin-react@7.33.2)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@ava/typescript': + specifier: ^4.1.0 + version: 4.1.0 + '@biomejs/biome': + specifier: ^1.4.1 + version: 1.4.1 + '@bufbuild/jest-environment-jsdom': + specifier: ^0.1.1 + version: 0.1.1(jest-environment-jsdom@29.7.0) + '@commitlint/cli': + specifier: ^18.4.3 + version: 18.4.3(typescript@5.3.3) + '@commitlint/config-conventional': + specifier: ^18.4.3 + version: 18.4.3 + '@commitlint/types': + specifier: ^18.4.3 + version: 18.4.3 + '@cspell/dict-fa-ir': + specifier: ^4.0.0 + version: 4.0.0 '@cspell/dict-uk-ua': - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^4.0.0 + version: 4.0.0 + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@16.8.1) '@ianvs/prettier-plugin-sort-imports': specifier: ^4.1.1 - version: 4.1.1(prettier@3.0.3) + version: 4.1.1(@vue/compiler-sfc@3.3.13)(prettier@3.1.1) + '@limegrass/eslint-plugin-import-alias': + specifier: ^1.1.0 + version: 1.1.0(eslint-ts-patch@8.56.0-0) + '@next/eslint-plugin-next': + specifier: ^14.0.4 + version: 14.0.4 '@playwright/test': - specifier: ^1.39.0 - version: 1.39.0 + specifier: ^1.40.1 + version: 1.40.1 '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.3.5) + version: 0.5.10(tailwindcss@3.4.0) '@tanstack/eslint-plugin-query': - specifier: ^5.6.0 - version: 5.6.0(eslint@8.53.0)(typescript@5.2.2) + specifier: ^5.14.6 + version: 5.14.6(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) '@testing-library/jest-dom': - specifier: ^6.1.4 - version: 6.1.4(@types/jest@29.5.7)(jest@29.7.0) + specifier: ^6.1.6 + version: 6.1.6(@types/jest@29.5.11)(jest@29.7.0) + '@total-typescript/ts-reset': + specifier: ^0.5.1 + version: 0.5.1 '@types/jest': - specifier: ^29.5.7 - version: 29.5.7 + specifier: ^29.5.11 + version: 29.5.11 '@types/lodash': - specifier: ^4.14.200 - version: 4.14.200 + specifier: ^4.14.202 + version: 4.14.202 + '@types/negotiator': + specifier: ^0.6.3 + version: 0.6.3 '@types/node': - specifier: 20.8.10 - version: 20.8.10 + specifier: 20.10.5 + version: 20.10.5 '@types/pg': - specifier: ^8.10.7 - version: 8.10.7 + specifier: ^8.10.9 + version: 8.10.9 '@types/react': - specifier: 18.2.34 - version: 18.2.34 + specifier: 18.2.45 + version: 18.2.45 '@types/react-dom': - specifier: 18.2.14 - version: 18.2.14 + specifier: 18.2.18 + version: 18.2.18 '@typescript-eslint/eslint-plugin': - specifier: ^6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.53.0)(typescript@5.2.2) + specifier: ^6.16.0 + version: 6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.9.1 - version: 6.9.1(eslint@8.53.0)(typescript@5.2.2) + specifier: ^6.16.0 + version: 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) autoprefixer: specifier: 10.4.16 - version: 10.4.16(postcss@8.4.31) + version: 10.4.16(postcss@8.4.32) + ava: + specifier: ^6.0.1 + version: 6.0.1(@ava/typescript@4.1.0) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 cspell: - specifier: ^7.3.8 - version: 7.3.8 + specifier: ^8.2.3 + version: 8.2.3 dotenv-cli: specifier: ^7.3.0 version: 7.3.0 drizzle-kit: - specifier: ^0.19.13 - version: 0.19.13 + specifier: ^0.20.9 + version: 0.20.9 eslint: - specifier: 8.53.0 - version: 8.53.0 + specifier: npm:eslint-ts-patch@8.56.0-0 + version: /eslint-ts-patch@8.56.0-0 + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-i@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint-ts-patch@8.56.0-0) eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.53.0) + specifier: ^9.1.0 + version: 9.1.0(eslint-ts-patch@8.56.0-0) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0) + version: 3.6.1(@typescript-eslint/parser@6.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) eslint-interactive: specifier: ^10.8.0 - version: 10.8.0(eslint@8.53.0) - eslint-plugin-i18n-json: - specifier: ^4.0.0 - version: 4.0.0(eslint@8.53.0) + version: 10.8.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-deprecation: + specifier: ^2.0.0 + version: 2.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-format: + specifier: ^0.1.0 + version: 0.1.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-functional: + specifier: ^6.0.0 + version: 6.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-import: + specifier: npm:eslint-plugin-i@^2.29.1 + version: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) eslint-plugin-jest: specifier: ^27.6.0 - version: 27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.53.0)(jest@29.7.0)(typescript@5.2.2) + version: 27.6.0(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0)(jest@29.7.0)(typescript@5.3.3) eslint-plugin-jest-extended: specifier: ^2.0.0 - version: 2.0.0(eslint@8.53.0)(typescript@5.2.2) + version: 2.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-jest-formatting: + specifier: ^3.1.0 + version: 3.1.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsdoc: + specifier: ^46.9.1 + version: 46.9.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsonc: + specifier: ^2.11.2 + version: 2.11.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-no-barrel-files: + specifier: ^1.1.0 + version: 1.1.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-no-secrets: + specifier: ^0.8.9 + version: 0.8.9(eslint-ts-patch@8.56.0-0) + eslint-plugin-promise: + specifier: ^6.1.1 + version: 6.1.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.33.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-refresh: + specifier: ^0.4.5 + version: 0.4.5(eslint-ts-patch@8.56.0-0) + eslint-plugin-redundant-undefined: + specifier: ^1.0.0 + version: 1.0.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-sonarjs: + specifier: ^0.23.0 + version: 0.23.0(eslint-ts-patch@8.56.0-0) eslint-plugin-tailwindcss: specifier: ^3.13.0 - version: 3.13.0(tailwindcss@3.3.5) + version: 3.13.0(tailwindcss@3.4.0) + eslint-plugin-tsdoc: + specifier: ^0.2.17 + version: 0.2.17 + eslint-plugin-unicorn: + specifier: ^50.0.1 + version: 50.0.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-write-good-comments: + specifier: ^0.2.0 + version: 0.2.0 + eslint-plugin-xss: + specifier: ^0.1.12 + version: 0.1.12 + eslint-ts-patch: + specifier: 8.56.0-0 + version: 8.56.0-0 + husky: + specifier: ^8.0.3 + version: 8.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.8.10) + version: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 jest-extended: specifier: ^4.0.2 version: 4.0.2(jest@29.7.0) + jsonc-eslint-parser: + specifier: ^2.4.0 + version: 2.4.0 knip: - specifier: ^2.39.0 - version: 2.39.0 + specifier: 3.9.0 + version: 3.9.0(@types/node@20.10.5)(typescript@5.3.3) + lemonsqueezy.ts: + specifier: ^0.1.7 + version: 0.1.7 + lint-staged: + specifier: ^15.2.0 + version: 15.2.0 + markdown-it-shikiji: + specifier: ^0.9.12 + version: 0.9.12 mysql2: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.6.5 + version: 3.6.5 next-secure-headers: specifier: ^2.2.0 version: 2.2.0 @@ -419,38 +752,110 @@ devDependencies: specifier: ^6.1.1 version: 6.1.1 postcss: - specifier: 8.4.31 - version: 8.4.31 + specifier: 8.4.32 + version: 8.4.32 + postcss-load-config: + specifier: ^5.0.2 + version: 5.0.2(postcss@8.4.32) prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.1.1 + version: 3.1.1 prettier-plugin-packagejson: - specifier: ^2.4.6 - version: 2.4.6(prettier@3.0.3) + specifier: ^2.4.8 + version: 2.4.8(prettier@3.1.1) prettier-plugin-tailwindcss: - specifier: ^0.5.6 - version: 0.5.6(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.0.3) + specifier: ^0.5.9 + version: 0.5.9(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.1.1) + rehype-shikiji: + specifier: ^0.9.12 + version: 0.9.12 + shikiji: + specifier: ^0.9.12 + version: 0.9.12 + standard: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1) + stylelint: + specifier: ^16.1.0 + version: 16.1.0(typescript@5.3.3) + stylelint-config-css-modules: + specifier: ^4.4.0 + version: 4.4.0(stylelint@16.1.0) + stylelint-config-standard: + specifier: ^36.0.0 + version: 36.0.0(stylelint@16.1.0) + stylelint-config-standard-scss: + specifier: ^12.0.0 + version: 12.0.0(postcss@8.4.32)(stylelint@16.1.0) + stylelint-scss: + specifier: ^6.0.0 + version: 6.0.0(stylelint@16.1.0) tailwind-merge: - specifier: ^2.0.0 - version: 2.0.0 + specifier: ^2.2.0 + version: 2.2.0 tailwindcss: - specifier: 3.3.5 - version: 3.3.5 + specifier: 3.4.0 + version: 3.4.0(ts-node@10.9.2) + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.23.6)(esbuild@0.18.20)(jest@29.7.0)(typescript@5.3.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.3.101)(@types/node@20.10.5)(typescript@5.3.3) + ts-standard: + specifier: ^12.0.2 + version: 12.0.2(eslint-import-resolver-typescript@3.6.1)(typescript@5.3.3) + tslib: + specifier: ^2.6.2 + version: 2.6.2 tsx: - specifier: ^3.14.0 - version: 3.14.0 + specifier: ^4.7.0 + version: 4.7.0 typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: 5.3.3 + version: 5.3.3 + xo: + specifier: ^0.56.0 + version: 0.56.0(eslint-import-resolver-typescript@3.6.1)(webpack@5.89.0) packages: + /@0no-co/graphql.web@1.0.4(graphql@16.8.1): + resolution: {integrity: sha512-W3ezhHGfO0MS1PtGloaTpg0PbaT8aZSmmaerL7idtU5F7oCI+uu25k+MsMS31BVFlp4aMkHSrNRxiD72IlK8TA==} + peerDependencies: + graphql: ^16.8.1 + peerDependenciesMeta: + graphql: + optional: true + dependencies: + graphql: 16.8.1 + dev: false + + /@0no-co/graphqlsp@0.13.0(graphql@16.8.1): + resolution: {integrity: sha512-OUQmMkDhIgsbZxLwMw+7lDYZtE8cR3609aCrOarjEAK22ySjFEhOXvESpY7kfuvAlkx7xV2y7KxM9eM3c31m3A==} + dependencies: + '@graphql-codegen/add': 5.0.0(graphql@16.8.1) + '@graphql-codegen/core': 4.0.0(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 4.0.1(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@sindresorhus/fnv1a': 2.0.1 + graphql-language-service: 5.2.0(graphql@16.8.1) + lru-cache: 10.1.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + - graphql + - supports-color + dev: true + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - /@adobe/css-tools@4.3.1: - resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} + /@adobe/css-tools@4.3.2: + resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} dev: true /@alloc/quick-lru@5.2.0: @@ -464,8 +869,145 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - /@auth/core@0.18.0(nodemailer@6.9.7): - resolution: {integrity: sha512-Xb41H3FIv4PlTZmwoFvntaNlVTwIqFxIg7i0/ieHOOxf/7H8EJpGTWoNrqKhwMyZEPU6fHp+VcUiqdX3vFrWSg==} + /@antfu/eslint-config@2.6.1(@vue/compiler-sfc@3.3.13)(eslint-import-resolver-typescript@3.6.1)(eslint-plugin-format@0.1.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react-refresh@0.4.5)(eslint-plugin-react@7.33.2)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-hj7TTLXLLyk4YHp6SC0G3NTpGyn+5v9EHX3K8JMwz8qIQZnOSzpU8xQ4PcJW3wD3qePVoGDa1Q9QvYCKplIStQ==} + hasBin: true + peerDependencies: + '@unocss/eslint-plugin': '>=0.50.0' + eslint: '>=8.40.0' + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react: ^7.33.2 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-svelte: ^2.34.1 + svelte-eslint-parser: ^0.33.1 + peerDependenciesMeta: + '@unocss/eslint-plugin': + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-svelte: + optional: true + svelte-eslint-parser: + optional: true + dependencies: + '@antfu/eslint-define-config': 1.23.0-2 + '@antfu/install-pkg': 0.3.1 + '@eslint-types/jsdoc': 46.8.2-1 + '@eslint-types/typescript-eslint': 6.16.0 + '@eslint-types/unicorn': 50.0.1 + '@stylistic/eslint-plugin': 1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + eslint-config-flat-gitignore: 0.1.2 + eslint-merge-processors: 0.1.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-antfu: 2.1.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-eslint-comments: 3.2.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-format: 0.1.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-i: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsdoc: 46.9.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsonc: 2.11.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-markdown: 3.0.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-n: 16.5.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-perfectionist: 2.5.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3)(vue-eslint-parser@9.3.2) + eslint-plugin-react: 7.33.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-hooks: 4.6.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-refresh: 0.4.5(eslint-ts-patch@8.56.0-0) + eslint-plugin-toml: 0.8.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-unicorn: 50.0.1(eslint-ts-patch@8.56.0-0) + eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0) + eslint-plugin-vitest: 0.3.20(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint-plugin-vue: 9.19.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-yml: 1.11.0(eslint-ts-patch@8.56.0-0) + eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.3.13)(eslint-ts-patch@8.56.0-0) + globals: 13.24.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.0 + parse-gitignore: 2.0.0 + picocolors: 1.0.0 + prompts: 2.4.2 + toml-eslint-parser: 0.9.3 + vue-eslint-parser: 9.3.2(eslint-ts-patch@8.56.0-0) + yaml-eslint-parser: 1.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@vue/compiler-sfc' + - astro-eslint-parser + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - svelte + - typescript + - vitest + dev: true + + /@antfu/eslint-define-config@1.23.0-2: + resolution: {integrity: sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} + dev: true + + /@antfu/install-pkg@0.3.1: + resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==} + dependencies: + execa: 8.0.1 + dev: true + + /@ardatan/relay-compiler@12.0.0(graphql@16.8.1): + resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} + hasBin: true + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/runtime': 7.23.6 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + babel-preset-fbjs: 3.4.0(@babel/core@7.23.6) + chalk: 4.1.2 + fb-watchman: 2.0.2 + fbjs: 3.0.5 + glob: 7.2.3 + graphql: 16.8.1 + immutable: 3.7.6 + invariant: 2.2.4 + nullthrows: 1.1.1 + relay-runtime: 12.0.0 + signedsource: 1.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - encoding + - supports-color + + /@ardatan/sync-fetch@0.0.1: + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /@atomist/yaml-updater@1.0.2: + resolution: {integrity: sha512-wdOMvqPZWP3ObzpwjrT4ODGnQYukC/bnzmVqWKwUQFMjIzRTMu9lv9MZxU5mtWgQ+l2i736XhmNt7guXzfuJcQ==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + dependencies: + '@types/js-yaml': 3.12.10 + fast-deep-equal: 2.0.1 + js-yaml: 3.14.1 + dev: false + + /@auth/core@0.19.0(nodemailer@6.9.7): + resolution: {integrity: sha512-BkFg2SoNftMN6A2Sn2g1lLFLTO74qMtFKsZmSCEF9d1csqSaEXIv50k6OrfniODWi5tZP8bcfSxGodv75khlOA==} peerDependencies: nodemailer: ^6.8.0 peerDependenciesMeta: @@ -473,53 +1015,75 @@ packages: optional: true dependencies: '@panva/hkdf': 1.1.1 - cookie: 0.5.0 - jose: 4.15.4 + '@types/cookie': 0.6.0 + cookie: 0.6.0 + jose: 5.2.0 nodemailer: 6.9.7 - oauth4webapi: 2.3.0 + oauth4webapi: 2.4.0 preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) dev: false - /@auth/drizzle-adapter@0.3.5(nodemailer@6.9.7): - resolution: {integrity: sha512-pZCnZ8vrqUD+C4uc4MiRj+Ox7NLXze6yzWHdtAgK1QMj9PgvUtBsJu02mAYJCyCchWVzdvPG25e9+B6L2mLRBg==} + /@auth/drizzle-adapter@0.3.12(nodemailer@6.9.7): + resolution: {integrity: sha512-6+XCHrDXglKPWKRmHuUA6f27WM40v3+MQyUFf2d+JsA0tuBuwOw6IPp1ycxvOODM6milHyKcjowUfqWW9F9f9Q==} dependencies: - '@auth/core': 0.18.0(nodemailer@6.9.7) + '@auth/core': 0.19.0(nodemailer@6.9.7) transitivePeerDependencies: - nodemailer dev: false + /@ava/typescript@4.1.0: + resolution: {integrity: sha512-1iWZQ/nr9iflhLK9VN8H+1oDZqe93qxNnyYUz+jTzkYPAHc5fdZXBrqmNIgIfFhWYXK5OaQ5YtC7OmLeTNhVEg==} + engines: {node: ^14.19 || ^16.15 || ^18 || ^20} + dependencies: + escape-string-regexp: 5.0.0 + execa: 7.2.0 + dev: true + + /@aw-web-design/x-default-browser@1.4.126: + resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} + hasBin: true + dependencies: + default-browser-id: 3.0.0 + dev: false + + /@babel/code-frame@7.10.4: + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + dependencies: + '@babel/highlight': 7.23.4 + dev: false + /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: - '@babel/highlight': 7.22.20 + '@babel/highlight': 7.23.4 dev: true - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.20 + '@babel/highlight': 7.23.4 chalk: 2.4.2 - /@babel/compat-data@7.23.2: - resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.2: - resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 + '@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.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -528,25 +1092,82 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.0: - resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.2 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.1 + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.6): + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -556,9225 +1177,21793 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 /@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.0 + '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: false + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 /@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.0 + '@babel/types': 7.23.6 - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: false - /@babel/helpers@7.23.2: - resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.23.0: - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + dev: false - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - dev: true + dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.6): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + /@babel/plugin-proposal-decorators@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.23.6): + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.6): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.6): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + dev: false - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 + dev: false + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - regenerator-runtime: 0.14.0 + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/traverse@7.23.2: - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 - '@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.0 - '@babel/types': 7.23.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@babel/types@7.23.0: - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@clerk/backend@0.33.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-bhUJn4hrgQOGcn9Baxuk8pcbXROYXmsuua1Juolxp+1mAVwImx4JDh4Y/pweYTgZGCT86MnJX1HJS9bncdP3Eg==} - engines: {node: '>=14'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@clerk/shared': 1.0.2(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/types': 3.57.1 - '@peculiar/webcrypto': 1.4.1 - '@types/node': 16.18.6 - cookie: 0.5.0 - deepmerge: 4.2.2 - node-fetch-native: 1.0.1 - snakecase-keys: 5.4.4 - tslib: 2.4.1 - transitivePeerDependencies: - - react + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@clerk/clerk-react@4.27.2(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-f2Q59jO+wW0b8k5/oubVzAkLofSvgA1pvhq1LHxd4pYr6NGPFdwUUIUz/aDaK3loR6UQwCbnweJKd/MtmC8yrw==} - engines: {node: '>=14'} + /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + engines: {node: '>=6.9.0'} peerDependencies: - react: '>=16' + '@babel/core': ^7.0.0-0 dependencies: - '@clerk/shared': 1.0.2(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/types': 3.57.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - tslib: 2.4.1 + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@clerk/clerk-sdk-node@4.12.19(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-gJD8xcvBmhjNFnRNstHByIn7u1gKHpFTtPKzC3kPS/Hb1OEUogfLtI36E449EvG069WaJ2TwD02KWBUWzMK0zQ==} - engines: {node: '>=14'} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@clerk/backend': 0.33.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/shared': 1.0.2(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/types': 3.57.1 - '@types/cookies': 0.7.7 - '@types/express': 4.17.14 - '@types/node-fetch': 2.6.2 - camelcase-keys: 6.2.2 - snakecase-keys: 3.2.1 - tslib: 2.4.1 - transitivePeerDependencies: - - react + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@clerk/localizations@1.26.8(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-o+VeKi4AoXJ9yic+eC7fh4uz6pg794qNgMDq46UiDuKZpQEHpj7IvSEqZ61A45820nF0nBTQ9XzTQ2sC0KXaYQ==} - engines: {node: '>=14'} + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: '>=16' + '@babel/core': ^7.0.0-0 dependencies: - '@clerk/types': 3.57.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@clerk/nextjs@4.26.2(next@14.0.2-canary.12)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-L2tEG1RfzOqkh99+U4+AK/yn2JfOkauRacDyUcXRFQl5tnV99n+XqIt84cgDNm++8DBFUhsGPO7OF3xtxygoPg==} - engines: {node: '>=14'} + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} peerDependencies: - next: '>=10' - react: ^17.0.2 || ^18.0.0-0 - react-dom: ^17.0.2 || ^18.0.0-0 + '@babel/core': ^7.0.0-0 dependencies: - '@clerk/backend': 0.33.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/clerk-react': 4.27.2(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/clerk-sdk-node': 4.12.19(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/shared': 1.0.2(react@18.3.0-canary-ce2bc58a9-20231102) - '@clerk/types': 3.57.1 - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - path-to-regexp: 6.2.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - tslib: 2.4.1 + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@clerk/shared@1.0.2(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Mf7F9lk43FC65jacqDsyxDvTmV4PI/aC7lGWyCQS+9RDvZ58ElELQ0ILVC/89cQQPL+nOWr+sa499O/U+fA6Gw==} + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: '>=16' - peerDependenciesMeta: - react: - optional: true + '@babel/core': ^7.0.0-0 dependencies: - glob-to-regexp: 0.4.1 - js-cookie: 3.0.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - swr: 2.2.0(react@18.3.0-canary-ce2bc58a9-20231102) + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@clerk/themes@1.7.9(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-9hXxgoPuUSlZ7sH9diJEK1rTWEnk0zGKBYw4Tqaqp0RA1dtB+OHE02DK5pnTypZTnreBJYac3VmxFVTxVV35xg==} - engines: {node: '>=14'} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: - react: '>=16' + '@babel/core': ^7.0.0-0 dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@clerk/types@3.57.1: - resolution: {integrity: sha512-x7eIEwEf3S/vvhBPt6gyojtiKInpM5EF03OUUib3eDwDvuSxAjf55K553yZkclbJ+LOLmIdonuSDaOrKvyhwKw==} - engines: {node: '>=14'} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - csstype: 3.1.1 - dev: false + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-bundled-dicts@7.3.8: - resolution: {integrity: sha512-Dj8iSGQyfgIsCjmXk9D/SjV7EpbpQSogeaGcBM66H33pd0GyGmLhn3biRN+vqi/vqWmsp75rT3kd5MKa8X5W9Q==} - engines: {node: '>=16'} + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@cspell/dict-ada': 4.0.2 - '@cspell/dict-aws': 4.0.0 - '@cspell/dict-bash': 4.1.2 - '@cspell/dict-companies': 3.0.27 - '@cspell/dict-cpp': 5.0.9 - '@cspell/dict-cryptocurrencies': 4.0.0 - '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.12 - '@cspell/dict-dart': 2.0.3 - '@cspell/dict-django': 4.1.0 - '@cspell/dict-docker': 1.1.7 - '@cspell/dict-dotnet': 5.0.0 - '@cspell/dict-elixir': 4.0.3 - '@cspell/dict-en-common-misspellings': 1.0.2 - '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.11 - '@cspell/dict-filetypes': 3.0.2 - '@cspell/dict-fonts': 4.0.0 - '@cspell/dict-fsharp': 1.0.1 - '@cspell/dict-fullstack': 3.1.5 - '@cspell/dict-gaming-terms': 1.0.4 - '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 6.0.4 - '@cspell/dict-haskell': 4.0.1 - '@cspell/dict-html': 4.0.5 - '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.6 - '@cspell/dict-k8s': 1.0.2 - '@cspell/dict-latex': 4.0.0 - '@cspell/dict-lorem-ipsum': 4.0.0 - '@cspell/dict-lua': 4.0.2 - '@cspell/dict-node': 4.0.3 - '@cspell/dict-npm': 5.0.12 - '@cspell/dict-php': 4.0.4 - '@cspell/dict-powershell': 5.0.2 - '@cspell/dict-public-licenses': 2.0.5 - '@cspell/dict-python': 4.1.10 - '@cspell/dict-r': 2.0.1 - '@cspell/dict-ruby': 5.0.1 - '@cspell/dict-rust': 4.0.1 - '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.3.9 - '@cspell/dict-sql': 2.1.2 - '@cspell/dict-svelte': 1.0.2 - '@cspell/dict-swift': 2.0.1 - '@cspell/dict-typescript': 3.1.2 - '@cspell/dict-vue': 3.0.0 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-json-reporter@7.3.8: - resolution: {integrity: sha512-FxYJWtDgxIQYxdP0RWwRV8nzLfxVx8D8D5L2sbbP/0NFczDbq/zWYep4nSAHJT10aUJrogsVUYwNwdkr562wKA==} - engines: {node: '>=16'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@cspell/cspell-types': 7.3.8 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-pipe@7.3.8: - resolution: {integrity: sha512-/vKPfiHM5bJUkNX12w9j533Lm2JvvSMKUCChM2AxYjy6vL8prc/7ei++4g2xAWwRxLZPg2OfpDJS5EirZNBJdA==} - engines: {node: '>=16'} - dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-resolver@7.3.8: - resolution: {integrity: sha512-CeyQmhqZI5a+T7a6oiVN90TFlzU3qVVYqCaZ9grFrVOsmzY9ipH5gmqfgMavaBOqb0di/+VZS8d02suMOXcKLQ==} - engines: {node: '>=16'} + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - global-dirs: 3.0.1 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-service-bus@7.3.8: - resolution: {integrity: sha512-3E7gwY6QILrZH83p69i9CERbRBEqeBiKCIKnAd7U2PbxfFqG/P47fqpnarzSWFwFpU92oyGsYry+wC8TEGISRQ==} - engines: {node: '>=16'} - dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/cspell-types@7.3.8: - resolution: {integrity: sha512-hsOtaULDnawEL4pU0fga941GhvE8mbTbywrJBx+eGX3fnJsaUr8XQzCtnLsW2ko7WCLWFItNEhSSTPQHBFRLsw==} - engines: {node: '>=16'} - dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-ada@4.0.2: - resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} - dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-aws@4.0.0: - resolution: {integrity: sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==} - dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-bash@4.1.2: - resolution: {integrity: sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==} - dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-companies@3.0.27: - resolution: {integrity: sha512-gaPR/luf+4oKGyxvW4GbxGGPdHiC5kj/QefnmQqrLFrLiCSXMZg5/NL+Lr4E5lcHsd35meX61svITQAvsT7lyQ==} + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-cpp@5.0.9: - resolution: {integrity: sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==} - dev: true + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-cryptocurrencies@4.0.0: - resolution: {integrity: sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==} - dev: true + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-csharp@4.0.2: - resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} - dev: true + /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + dev: false - /@cspell/dict-css@4.0.12: - resolution: {integrity: sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==} - dev: true + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + dev: false - /@cspell/dict-dart@2.0.3: - resolution: {integrity: sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==} - dev: true + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-data-science@1.0.11: - resolution: {integrity: sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==} - dev: true + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-de-de@3.1.1: - resolution: {integrity: sha512-neZPqMfOi1PvmM7TTIsViicZ/s/cGbyoy0mzmmjfF6XnbwhGNx+DigtKTIxSBNJryqC1dJbF9oZBl/qsfJExWg==} + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@cspell/dict-django@4.1.0: - resolution: {integrity: sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==} - dev: true - - /@cspell/dict-docker@1.1.7: - resolution: {integrity: sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==} - dev: true + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + dev: false - /@cspell/dict-dotnet@5.0.0: - resolution: {integrity: sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==} - dev: true - - /@cspell/dict-elixir@4.0.3: - resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} - dev: true - - /@cspell/dict-en-common-misspellings@1.0.2: - resolution: {integrity: sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==} - dev: true + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.6): + resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 - /@cspell/dict-en-gb@1.1.33: - resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} - dev: true + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 - /@cspell/dict-en_us@4.3.11: - resolution: {integrity: sha512-GhdavZFlS2YbUNcRtPbgJ9j6aUyq116LmDQ2/Q5SpQxJ5/6vVs8Yj5WxV1JD+Zh/Zim1NJDcneTOuLsUGi+Czw==} - dev: true + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-es-es@2.2.7: - resolution: {integrity: sha512-7zzFh2AFLkt44VR/kl0N/RjFJ4AUxk40AqLGUPL74BrOxKsYLSkN0l6JR1+y8leLQpJcAsIu4zEg69v+qsXppA==} + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@cspell/dict-filetypes@3.0.2: - resolution: {integrity: sha512-StoC0wPmFNav6F6P8/FYFN1BpZfPgOmktb8gQ9wTauelWofPeBW+A0t5ncZt9hXHtnbGDA98v4ukacV+ucbnUg==} - dev: true + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-fonts@4.0.0: - resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} - dev: true + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + dev: false - /@cspell/dict-fr-fr@2.2.2: - resolution: {integrity: sha512-4P8qDcA3Z2IHuH5s0rUr0+D+BXIxOmSe9JIy3lKR/PNQX8holybkbtQGUAdSrgmN+4SNjKkuauiG8Wb0BfUvOw==} + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@cspell/dict-fsharp@1.0.1: - resolution: {integrity: sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==} - dev: true + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + dev: false - /@cspell/dict-fullstack@3.1.5: - resolution: {integrity: sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==} + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.6) - /@cspell/dict-gaming-terms@1.0.4: - resolution: {integrity: sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==} - dev: true + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@cspell/dict-git@2.0.0: - resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} - dev: true + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-golang@6.0.4: - resolution: {integrity: sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==} - dev: true + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + dev: false - /@cspell/dict-haskell@4.0.1: - resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} - dev: true + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-html-symbol-entities@4.0.0: - resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} - dev: true + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + dev: false - /@cspell/dict-html@4.0.5: - resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} - dev: true + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-it-it@3.0.1: - resolution: {integrity: sha512-aODszttCS7ZZ+0Qt+rmby8fwERJi5aSPDqUa6ItoXv/OXAy161c3JdE+bfKvVpnZikeACdHXHc7Lvz/Pke78fw==} + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@cspell/dict-java@5.0.6: - resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} - dev: true + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 - /@cspell/dict-k8s@1.0.2: - resolution: {integrity: sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==} - dev: true + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: false - /@cspell/dict-latex@4.0.0: - resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} - dev: true + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-lorem-ipsum@4.0.0: - resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} - dev: true + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-lua@4.0.2: - resolution: {integrity: sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==} - dev: true + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-markdown@2.0.1: - resolution: {integrity: sha512-9j3t1UXsy3M1B8+LN8wPO73KzX7v94GBfefWKSMJDpBvDUnOjwxabnj9ICBOVErBPwURS+LkjJbgVXkvr1OiPQ==} + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) dev: false - /@cspell/dict-node@4.0.3: - resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} - dev: true + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + dev: false - /@cspell/dict-npm@5.0.12: - resolution: {integrity: sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==} + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + dev: false - /@cspell/dict-php@4.0.4: - resolution: {integrity: sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==} - dev: true + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) - /@cspell/dict-pl_pl@3.0.1: - resolution: {integrity: sha512-olzfqH38h/hD5AclQB1w6h4AlOjXnUuKWQtc5OgCIOCjfjfaKWcPuXuONIaI5R/6HJdkPGTsfSHztPJhIwkfsg==} + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) dev: false - /@cspell/dict-powershell@5.0.2: - resolution: {integrity: sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==} - dev: true - - /@cspell/dict-public-licenses@2.0.5: - resolution: {integrity: sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==} - dev: true + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + dev: false - /@cspell/dict-python@4.1.10: - resolution: {integrity: sha512-ErF/Ohcu6Xk4QVNzFgo8p7CxkxvAKAmFszvso41qOOhu8CVpB35ikBRpGVDw9gsCUtZzi15Yl0izi4do6WcLkA==} + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@cspell/dict-data-science': 1.0.11 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-r@2.0.1: - resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} - dev: true + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-ruby@5.0.1: - resolution: {integrity: sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==} - dev: true + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + dev: false - /@cspell/dict-rust@4.0.1: - resolution: {integrity: sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==} - dev: true + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-scala@5.0.0: - resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} - dev: true + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/dict-software-terms@3.3.9: - resolution: {integrity: sha512-/O3EWe0SIznx18S7J3GAXPDe7sexn3uTsf4IlnGYK9WY6ZRuEywkXCB+5/USLTGf4+QC05pkHofphdvVSifDyA==} - dev: true + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + dev: false - /@cspell/dict-sql@2.1.2: - resolution: {integrity: sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==} - dev: true + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-svelte@1.0.2: - resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==} - dev: true + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-swift@2.0.1: - resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} - dev: true + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 - /@cspell/dict-tr-tr@3.0.0: - resolution: {integrity: sha512-Wa/qsztyZm7HzxRLG8Gqc8KOOa7ifq2EqiLbrMV/o8vmectQ39IYvZGQ9vkOzpoZp5N+0Xu0PnI6Qb8WlHblVg==} + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: false - /@cspell/dict-typescript@3.1.2: - resolution: {integrity: sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==} + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: false - /@cspell/dict-uk-ua@3.0.0: - resolution: {integrity: sha512-1tg1vmUP4bsfn3du9u3fH2cT4XDSu+Yc2EHS2JNb510qjU8h+LHiZZx9r7zX3TXAz49P19/dcLfpDaqWEj/5wg==} - dev: true + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@cspell/dict-vue@3.0.0: - resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} - dev: true + /@babel/plugin-transform-runtime@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - /@cspell/dynamic-import@7.3.8: - resolution: {integrity: sha512-s8x7dH/ScfW0pFEIvNFo4JOR7YmvM2wZSHOykmWTJCQ8k2EQ/+uECPp6ZxkoJoukTz8sj+3KzF0fRl5mKxPd6g==} - engines: {node: '>=16'} + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - import-meta-resolve: 3.1.1 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@cspell/strong-weak-map@7.3.8: - resolution: {integrity: sha512-qNnt2wG45wb8JP54mENarnQgxfSYKPp3zlYID/2przbMNmVJRqUlcIBOdLI6plCgGeNkzJTl3T9T1ATbnN+LLw==} - engines: {node: '>=16'} - dev: true + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@devexpress/error-stack-parser@2.0.6: - resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - stackframe: 1.3.4 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@drizzle-team/studio@0.0.5: - resolution: {integrity: sha512-ps5qF0tMxWRVu+V5gvCRrQNqlY92aTnIKdq27gm9LZMSdaKYZt6AVvSK1dlUMzs6Rt0Jm80b+eWct6xShBKhIw==} - dev: true + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 - /@ericcornelissen/bash-parser@0.5.2: - resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} - engines: {node: '>=4'} + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - array-last: 1.3.0 - babylon: 6.18.0 - compose-function: 3.0.3 - deep-freeze: 0.0.1 - filter-iterator: 0.0.1 - filter-obj: 1.1.0 - has-own-property: 0.1.0 - identity-function: 1.0.0 - is-iterable: 1.1.1 - iterable-lookahead: 1.0.0 - lodash.curry: 4.1.1 - magic-string: 0.16.0 - map-obj: 2.0.0 - object-pairs: 0.1.0 - object-values: 1.0.0 - reverse-arguments: 1.0.0 - shell-quote-word: 1.0.1 - to-pascal-case: 1.0.0 - unescape-js: 1.1.4 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@esbuild-kit/core-utils@3.3.2: - resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - esbuild: 0.18.20 - source-map-support: 0.5.21 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + dev: false - /@esbuild-kit/esm-loader@2.6.5: - resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.7.2 - dev: true + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true + /@babel/preset-env@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) + core-js-compat: 3.34.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true + /@babel/preset-flow@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.6) + dev: false - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.6 + esutils: 2.0.3 + dev: false - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true + /@babel/preset-react@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.6) + dev: false - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true + /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + dev: false - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true + /@babel/register@7.22.15(@babel/core@7.23.6): + resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + dev: false - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true + /@babel/runtime@7.23.6: + resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true + /@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 - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@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 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + 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 - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] + /@base2/pretty-print-object@1.0.1: + resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + dev: false + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@biomejs/biome@1.4.1: + resolution: {integrity: sha512-JccVAwPbhi37pdxbAGmaOBjUTKEwEjWAhl7rKkVVuXHo4MLASXJ5HR8BTgrImi4/7rTBsGz1tgVD1Kwv1CHGRg==} + engines: {node: '>=14.*'} + hasBin: true requiresBuild: true - optional: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.4.1 + '@biomejs/cli-darwin-x64': 1.4.1 + '@biomejs/cli-linux-arm64': 1.4.1 + '@biomejs/cli-linux-x64': 1.4.1 + '@biomejs/cli-win32-arm64': 1.4.1 + '@biomejs/cli-win32-x64': 1.4.1 + dev: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] + /@biomejs/cli-darwin-arm64@1.4.1: + resolution: {integrity: sha512-PZWy2Idndqux38p6AXSDQM2ldRAWi32bvb7bMbTN0ALzpWYMYnxd71ornatumSSJYoNhKmxzDLq+jct7nZJ79w==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] requiresBuild: true + dev: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} + /@biomejs/cli-darwin-x64@1.4.1: + resolution: {integrity: sha512-soj3BWhnsM1M2JlzR09cibUzG1owJqetwj/Oo7yg0foijo9lNH9XWXZfJBYDKgW/6Fomn+CC2EcUS+hisQzt9g==} + engines: {node: '>=14.*'} cpu: [x64] - os: [netbsd] + os: [darwin] requiresBuild: true + dev: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] + /@biomejs/cli-linux-arm64@1.4.1: + resolution: {integrity: sha512-YIZqfJUg4F+fPsBTXxgD7EU2E5OAYbmYSl/snf4PevwfQCWE/omOFZv+NnIQmjYj9I7ParDgcJvanoA3/kO0JQ==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] requiresBuild: true + dev: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} + /@biomejs/cli-linux-x64@1.4.1: + resolution: {integrity: sha512-9YOZw3qBd/KUj63A6Hn2zZgzGb2nbESM0qNmeMXgmqinVKM//uc4OgY5TuKITuGjMSvcVxxd4dX1IzYjV9qvNQ==} + engines: {node: '>=14.*'} cpu: [x64] - os: [sunos] + os: [linux] requiresBuild: true + dev: true optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} + /@biomejs/cli-win32-arm64@1.4.1: + resolution: {integrity: sha512-nWQbvkNKxYn/kCQ0yVF8kCaS3VzaGvtFSmItXiMknU4521LDjJ7tNWH12Gol+pIslrCbd4E1LhJa0a3ThRsBVg==} + engines: {node: '>=14.*'} cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} + /@biomejs/cli-win32-x64@1.4.1: + resolution: {integrity: sha512-88fR2CQxQ4YLs2BUDuywWYQpUKgU3A3sTezANFc/4LGKQFFLV2yX+F7QAdZVkMHfA+RD9Xg178HomM/6mnTNPA==} + engines: {node: '>=14.*'} cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@bufbuild/jest-environment-jsdom@0.1.1(jest-environment-jsdom@29.7.0): + resolution: {integrity: sha512-lO4dke+l/LQAUT8CLmh0SKtY37gmax63eD7YSBQu48sqwAx4hgu1hRmoheRysaqR4bO6Vudhf6+nkBm0TbctvA==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + jest-environment-jsdom: ^29.5.0 dependencies: - eslint: 8.53.0 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + jest-environment-jsdom: 29.7.0 + dev: true - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@clerk/backend@0.37.0(react@18.2.0): + resolution: {integrity: sha512-ngBokqd5WaupUi5+xUaZNGCdrVMJFo+Sjiin7gxoXPVq/qdgA3phiEooEZmVAc9Io0MfAqheuiQ1XcCZj4kvdg==} + engines: {node: '>=14'} dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + '@clerk/shared': 1.3.0(react@18.2.0) + '@clerk/types': 3.60.0 + '@peculiar/webcrypto': 1.4.1 + '@types/node': 16.18.6 + cookie: 0.5.0 + deepmerge: 4.2.2 + node-fetch-native: 1.0.1 + snakecase-keys: 5.4.4 + tslib: 2.4.1 transitivePeerDependencies: - - supports-color - - /@eslint/js@8.53.0: - resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /@faker-js/faker@8.2.0: - resolution: {integrity: sha512-VacmzZqVxdWdf9y64lDOMZNDMM/FQdtM9IsaOPKOm2suYwEatb8VkdHqOzXcDnZbk7YDE2BmsJmy/2Hmkn563g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + - react dev: false - /@floating-ui/core@1.5.0: - resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + /@clerk/clerk-react@4.30.2(react@18.2.0): + resolution: {integrity: sha512-Cr11vJj/0e75JV1WfR1UFtqJfjFOWRffl8AqcKk+QDOY7AgPd1V4Nvc7umIfhyoGYrJH+5tpga3QW2MlsekdsA==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16' dependencies: - '@floating-ui/utils': 0.1.6 + '@clerk/shared': 1.3.0(react@18.2.0) + '@clerk/types': 3.60.0 + react: 18.2.0 + tslib: 2.4.1 dev: false - /@floating-ui/dom@1.5.3: - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + /@clerk/clerk-sdk-node@4.13.4(react@18.2.0): + resolution: {integrity: sha512-pcg99eCjutPdVOhv4yXS2THV1NJhmA1gih127zW01RV8EkxeVF7K9aALqR7Hyi2ptnIsh3VF/UiYa1pvJ2R3Uw==} + engines: {node: '>=14'} dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/utils': 0.1.6 + '@clerk/backend': 0.37.0(react@18.2.0) + '@clerk/shared': 1.3.0(react@18.2.0) + '@clerk/types': 3.60.0 + '@types/cookies': 0.7.7 + '@types/express': 4.17.14 + '@types/node-fetch': 2.6.2 + camelcase-keys: 6.2.2 + snakecase-keys: 3.2.1 + tslib: 2.4.1 + transitivePeerDependencies: + - react dev: false - /@floating-ui/react-dom@2.0.2(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} + /@clerk/localizations@1.26.13(react@18.2.0): + resolution: {integrity: sha512-YsH9WVqkZYJ3ffCP1wce3KWrQo8C3BUS5b7grOpwt/H15sK0Y3KyeS3py1QqcfMcYj+gqjcbW9Az8MpdUeP8Rg==} + engines: {node: '>=14'} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: '>=16' dependencies: - '@floating-ui/dom': 1.5.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + '@clerk/types': 3.60.0 + react: 18.2.0 dev: false - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + /@clerk/nextjs@4.29.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hJiHtGOWzQszL0FQ4FkDRLebR+2K3pc70Z7NJnAhS3tZqxZA6Dz03LUC88Ul6OUBi8ysekk5QqhDUbyxPSsrtA==} + engines: {node: '>=14'} + peerDependencies: + next: '>=10' + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + dependencies: + '@clerk/backend': 0.37.0(react@18.2.0) + '@clerk/clerk-react': 4.30.2(react@18.2.0) + '@clerk/clerk-sdk-node': 4.13.4(react@18.2.0) + '@clerk/shared': 1.3.0(react@18.2.0) + '@clerk/types': 3.60.0 + next: 14.0.4(@babel/core@7.23.6)(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) + tslib: 2.4.1 dev: false - /@formatjs/ecma402-abstract@1.11.4: - resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} + /@clerk/shared@1.3.0(react@18.2.0): + resolution: {integrity: sha512-blqXI4P2FIB2kjXhYe8d5jNIbKSmpSetcT/81xcBr2RVy234cV3oVX41Ypx10M36ev5v5cUqA4FfCSQ782EIUw==} + peerDependencies: + react: '>=16' + peerDependenciesMeta: + react: + optional: true dependencies: - '@formatjs/intl-localematcher': 0.2.25 - tslib: 2.6.2 + glob-to-regexp: 0.4.1 + js-cookie: 3.0.1 + react: 18.2.0 + swr: 2.2.0(react@18.2.0) dev: false - /@formatjs/ecma402-abstract@1.17.2: - resolution: {integrity: sha512-k2mTh0m+IV1HRdU0xXM617tSQTi53tVR2muvYOsBeYcUgEAyxV1FOC7Qj279th3fBVQ+Dj6muvNJZcHSPNdbKg==} + /@clerk/themes@1.7.9(react@18.2.0): + resolution: {integrity: sha512-9hXxgoPuUSlZ7sH9diJEK1rTWEnk0zGKBYw4Tqaqp0RA1dtB+OHE02DK5pnTypZTnreBJYac3VmxFVTxVV35xg==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16' dependencies: - '@formatjs/intl-localematcher': 0.4.2 - tslib: 2.6.2 + react: 18.2.0 + dev: false - /@formatjs/fast-memoize@1.2.1: - resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} + /@clerk/types@3.60.0: + resolution: {integrity: sha512-f1A16wFh5MtikxEo7o6vAVX7FxpqC1YmzA6c4ugwq5MH8J2mvIM/LwNVIHgNpZkn/s/G+BUhBcJJmUXqajDK2Q==} + engines: {node: '>=14'} dependencies: - tslib: 2.6.2 + csstype: 3.1.1 dev: false - /@formatjs/icu-messageformat-parser@2.1.0: - resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/icu-skeleton-parser': 1.3.6 - tslib: 2.6.2 + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: false + optional: true + + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} dev: false - /@formatjs/icu-messageformat-parser@2.7.0: - resolution: {integrity: sha512-7uqC4C2RqOaBQtcjqXsSpGRYVn+ckjhNga5T/otFh6MgxRrCJQqvjfbrGLpX1Lcbxdm5WH3Z2WZqt1+Tm/cn/Q==} + /@commitlint/cli@18.4.3(typescript@5.3.3): + resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} + engines: {node: '>=v18'} + hasBin: true dependencies: - '@formatjs/ecma402-abstract': 1.17.2 - '@formatjs/icu-skeleton-parser': 1.6.2 - tslib: 2.6.2 + '@commitlint/format': 18.4.3 + '@commitlint/lint': 18.4.3 + '@commitlint/load': 18.4.3(typescript@5.3.3) + '@commitlint/read': 18.4.3 + '@commitlint/types': 18.4.3 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - typescript dev: true - /@formatjs/icu-skeleton-parser@1.3.6: - resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} + /@commitlint/config-conventional@18.4.3: + resolution: {integrity: sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==} + engines: {node: '>=v18'} dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - tslib: 2.6.2 - dev: false + conventional-changelog-conventionalcommits: 7.0.2 + dev: true - /@formatjs/icu-skeleton-parser@1.6.2: - resolution: {integrity: sha512-VtB9Slo4ZL6QgtDFJ8Injvscf0xiDd4bIV93SOJTBjUF4xe2nAWOoSjLEtqIG+hlIs1sNrVKAaFo3nuTI4r5ZA==} + /@commitlint/config-validator@18.4.3: + resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} + engines: {node: '>=v18'} dependencies: - '@formatjs/ecma402-abstract': 1.17.2 - tslib: 2.6.2 + '@commitlint/types': 18.4.3 + ajv: 8.12.0 dev: true - /@formatjs/intl-localematcher@0.2.25: - resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} + /@commitlint/ensure@18.4.3: + resolution: {integrity: sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==} + engines: {node: '>=v18'} dependencies: - tslib: 2.6.2 - dev: false + '@commitlint/types': 18.4.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + dev: true - /@formatjs/intl-localematcher@0.2.32: - resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} - dependencies: - tslib: 2.6.2 - dev: false + /@commitlint/execute-rule@18.4.3: + resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} + engines: {node: '>=v18'} + dev: true - /@formatjs/intl-localematcher@0.4.2: - resolution: {integrity: sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA==} + /@commitlint/format@18.4.3: + resolution: {integrity: sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==} + engines: {node: '>=v18'} dependencies: - tslib: 2.6.2 + '@commitlint/types': 18.4.3 + chalk: 4.1.2 + dev: true - /@hookform/resolvers@3.3.2(react-hook-form@7.48.1): - resolution: {integrity: sha512-Tw+GGPnBp+5DOsSg4ek3LCPgkBOuOgS5DsDV7qsWNH9LZc433kgsWICjlsh2J9p04H2K66hsXPPb9qn9ILdUtA==} - peerDependencies: - react-hook-form: ^7.0.0 + /@commitlint/is-ignored@18.4.3: + resolution: {integrity: sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==} + engines: {node: '>=v18'} dependencies: - react-hook-form: 7.48.1(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + '@commitlint/types': 18.4.3 + semver: 7.5.4 + dev: true - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} + /@commitlint/lint@18.4.3: + resolution: {integrity: sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==} + engines: {node: '>=v18'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + '@commitlint/is-ignored': 18.4.3 + '@commitlint/parse': 18.4.3 + '@commitlint/rules': 18.4.3 + '@commitlint/types': 18.4.3 + dev: true - /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.0.3): - resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} - peerDependencies: - '@vue/compiler-sfc': '>=3.0.0' - prettier: 2 || 3 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true + /@commitlint/load@18.4.3(typescript@5.3.3): + resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} + engines: {node: '>=v18'} dependencies: - '@babel/core': 7.23.2 - '@babel/generator': 7.23.0 - '@babel/parser': 7.23.0 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 - prettier: 3.0.3 - semver: 7.5.4 + '@commitlint/config-validator': 18.4.3 + '@commitlint/execute-rule': 18.4.3 + '@commitlint/resolve-extends': 18.4.3 + '@commitlint/types': 18.4.3 + '@types/node': 18.19.3 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.3.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 transitivePeerDependencies: - - supports-color + - typescript dev: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + /@commitlint/message@18.4.3: + resolution: {integrity: sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==} + engines: {node: '>=v18'} dev: true - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@commitlint/parse@18.4.3: + resolution: {integrity: sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==} + engines: {node: '>=v18'} dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 + '@commitlint/types': 18.4.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 dev: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@commitlint/read@18.4.3: + resolution: {integrity: sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/top-level': 18.4.3 + '@commitlint/types': 18.4.3 + fs-extra: 11.2.0 + git-raw-commits: 2.0.11 + minimist: 1.2.8 dev: true - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@commitlint/resolve-extends@18.4.3: + resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} + engines: {node: '>=v18'} dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 + '@commitlint/config-validator': 18.4.3 + '@commitlint/types': 18.4.3 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 dev: true - /@jest/core@29.7.0: - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /@commitlint/rules@18.4.3: + resolution: {integrity: sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==} + engines: {node: '>=v18'} dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.10) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node + '@commitlint/ensure': 18.4.3 + '@commitlint/message': 18.4.3 + '@commitlint/to-lines': 18.4.3 + '@commitlint/types': 18.4.3 + execa: 5.1.1 dev: true - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - jest-mock: 29.7.0 + /@commitlint/to-lines@18.4.3: + resolution: {integrity: sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==} + engines: {node: '>=v18'} dev: true - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@commitlint/top-level@18.4.3: + resolution: {integrity: sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==} + engines: {node: '>=v18'} dependencies: - jest-get-type: 29.6.3 + find-up: 5.0.0 dev: true - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@commitlint/types@18.4.3: + resolution: {integrity: sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==} + engines: {node: '>=v18'} dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + chalk: 4.1.2 dev: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@cspell/cspell-bundled-dicts@8.2.3: + resolution: {integrity: sha512-AmKr/laSnmuTlECsIkf71N8FPd/ualJx13OdIJNIvUjIE741x/EACITIWLnTK9qFbsefOYp7bUeo9Xtbdw5JSA==} + engines: {node: '>=18'} dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.8.10 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + '@cspell/dict-ada': 4.0.2 + '@cspell/dict-aws': 4.0.1 + '@cspell/dict-bash': 4.1.3 + '@cspell/dict-companies': 3.0.29 + '@cspell/dict-cpp': 5.0.10 + '@cspell/dict-cryptocurrencies': 4.0.0 + '@cspell/dict-csharp': 4.0.2 + '@cspell/dict-css': 4.0.12 + '@cspell/dict-dart': 2.0.3 + '@cspell/dict-django': 4.1.0 + '@cspell/dict-docker': 1.1.7 + '@cspell/dict-dotnet': 5.0.0 + '@cspell/dict-elixir': 4.0.3 + '@cspell/dict-en-common-misspellings': 1.0.2 + '@cspell/dict-en-gb': 1.1.33 + '@cspell/dict-en_us': 4.3.12 + '@cspell/dict-filetypes': 3.0.3 + '@cspell/dict-fonts': 4.0.0 + '@cspell/dict-fsharp': 1.0.1 + '@cspell/dict-fullstack': 3.1.5 + '@cspell/dict-gaming-terms': 1.0.4 + '@cspell/dict-git': 2.0.0 + '@cspell/dict-golang': 6.0.5 + '@cspell/dict-haskell': 4.0.1 + '@cspell/dict-html': 4.0.5 + '@cspell/dict-html-symbol-entities': 4.0.0 + '@cspell/dict-java': 5.0.6 + '@cspell/dict-k8s': 1.0.2 + '@cspell/dict-latex': 4.0.0 + '@cspell/dict-lorem-ipsum': 4.0.0 + '@cspell/dict-lua': 4.0.3 + '@cspell/dict-makefile': 1.0.0 + '@cspell/dict-node': 4.0.3 + '@cspell/dict-npm': 5.0.14 + '@cspell/dict-php': 4.0.5 + '@cspell/dict-powershell': 5.0.3 + '@cspell/dict-public-licenses': 2.0.5 + '@cspell/dict-python': 4.1.11 + '@cspell/dict-r': 2.0.1 + '@cspell/dict-ruby': 5.0.2 + '@cspell/dict-rust': 4.0.1 + '@cspell/dict-scala': 5.0.0 + '@cspell/dict-software-terms': 3.3.15 + '@cspell/dict-sql': 2.1.3 + '@cspell/dict-svelte': 1.0.2 + '@cspell/dict-swift': 2.0.1 + '@cspell/dict-typescript': 3.1.2 + '@cspell/dict-vue': 3.0.0 dev: true - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@cspell/cspell-json-reporter@8.2.3: + resolution: {integrity: sha512-603qzkEQZueKauvzCeAMKZqcTBEEJEfs3yBsDKx1jYqyMPuTXnh3vmxkPy0paiJuE625BjzlCuvok225u6x9Qw==} + engines: {node: '>=18'} dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color + '@cspell/cspell-types': 8.2.3 dev: true - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.8.10 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.3 - transitivePeerDependencies: - - supports-color + /@cspell/cspell-pipe@8.2.3: + resolution: {integrity: sha512-ga39z+K2ZaSQczaRayNUTrz10z7umEdFiK7AdWOQpGmym5JTtTK0ntnKvKKsdSJ9F5I7TZVxgZH6r4CCEPlEEg==} + engines: {node: '>=18'} dev: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@cspell/cspell-resolver@8.2.3: + resolution: {integrity: sha512-H0855Lg0DxWDcT0FtJyqLvUqOJuE1qSg9X3ENs/ltZntQeaU8wZc+B34bXJrGpJVMuiiqHp4w6rcNN3lsOcshQ==} + engines: {node: '>=18'} dependencies: - '@sinclair/typebox': 0.27.8 + global-directory: 4.0.1 dev: true - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.20 - callsites: 3.1.0 - graceful-fs: 4.2.11 + /@cspell/cspell-service-bus@8.2.3: + resolution: {integrity: sha512-hMLEzE2MkFir3kii046RecR1JAAfA6RQhLddjwQTq1c8YCWJ4lQEKUdM5x7nr/UpJtsMj8eYZ7CtbbnxQyn7Zg==} + engines: {node: '>=18'} dev: true - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.5 - collect-v8-coverage: 1.0.2 + /@cspell/cspell-types@8.2.3: + resolution: {integrity: sha512-AZIC1n7veQSylp9ZAcVDvIaY+oS/vpzFNJ77rzuhEy/B6X/9jzeI8wg/+vWkmhO59q4iF/ZlswWK3UXfeSnUFg==} + engines: {node: '>=18'} dev: true - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 + /@cspell/dict-ada@4.0.2: + resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} dev: true - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.23.2 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color + /@cspell/dict-aws@4.0.1: + resolution: {integrity: sha512-NXO+kTPQGqaaJKa4kO92NAXoqS+i99dQzf3/L1BxxWVSBS3/k1f3uhmqIh7Crb/n22W793lOm0D9x952BFga3Q==} dev: true - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.5 - '@types/istanbul-reports': 3.0.3 - '@types/node': 20.8.10 - '@types/yargs': 17.0.29 - chalk: 4.1.2 + /@cspell/dict-bash@4.1.3: + resolution: {integrity: sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==} dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + /@cspell/dict-companies@3.0.29: + resolution: {integrity: sha512-F/8XnkqjU7jmSDAcD3LSSX+WxCVUWPssqlO4lzGMIK3MNIUt+d48eSIt3pFAIB/Z9y0ojoLHUtWX9HJ1ZtGrXQ==} - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} + /@cspell/dict-cpp@5.0.10: + resolution: {integrity: sha512-WCRuDrkFdpmeIR6uXQYKU9loMQKNFS4bUhtHdv5fu4qVyJSh3k/kgmtTm1h1BDTj8EwPRc/RGxS+9Z3b2mnabA==} + dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + /@cspell/dict-cryptocurrencies@4.0.0: + resolution: {integrity: sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==} + dev: true - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: false + /@cspell/dict-csharp@4.0.2: + resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} + dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@cspell/dict-css@4.0.12: + resolution: {integrity: sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==} + dev: true - /@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 + /@cspell/dict-dart@2.0.3: + resolution: {integrity: sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==} + dev: true - /@loglib/tracker@0.8.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-WShEN7s4fcmWaWgBNmx4sDNaoLPudvfmopHxeJpWTAb4SEpypRsk4Kx143UQQEvFHE+jPQi/P3m8ennpVqFWAg==} - peerDependencies: - react: ^16.8||^17||^18 - dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 - web-vitals: 3.5.0 - dev: false + /@cspell/dict-data-science@1.0.11: + resolution: {integrity: sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==} + dev: true - /@mdx-js/loader@3.0.0(webpack@5.89.0): - resolution: {integrity: sha512-9kLv83YtgxpoXVYHaf0ygx1dmhCffo0MQCv6KtNG67jy/JlBK/2Q0dSWfuuyStP3jnZKABHfbjv8zsiT1buu6A==} - peerDependencies: - webpack: '>=5' - dependencies: - '@mdx-js/mdx': 3.0.0 - source-map: 0.7.4 - webpack: 5.89.0(esbuild@0.18.20) - transitivePeerDependencies: - - supports-color + /@cspell/dict-de-de@3.2.0: + resolution: {integrity: sha512-Fqw3kojY+GEOfjSp0JnW9C6bwezDQiiIcrnQuenzb7/xKVy4EkKlHzUVQJTf4kfXm/5eNQLR9sYHcCDN/1Or8w==} dev: false - /@mdx-js/mdx@3.0.0: - resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} - dependencies: - '@types/estree': 1.0.4 - '@types/estree-jsx': 1.0.2 - '@types/hast': 3.0.2 - '@types/mdx': 2.0.9 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-build-jsx: 3.0.1 - estree-util-is-identifier-name: 3.0.0 - estree-util-to-js: 2.0.0 - estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.2.0 - markdown-extensions: 2.0.0 - periscopic: 3.1.0 - remark-mdx: 3.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.0.0 - source-map: 0.7.4 - unified: 11.0.4 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: false + /@cspell/dict-django@4.1.0: + resolution: {integrity: sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==} + dev: true - /@mdx-js/react@3.0.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - dependencies: - '@types/mdx': 2.0.9 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + /@cspell/dict-docker@1.1.7: + resolution: {integrity: sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==} + dev: true - /@neondatabase/serverless@0.6.0: - resolution: {integrity: sha512-qXxBRYN0m2v8kVQBfMxbzNGn2xFAhTXFibzQlE++NfJ56Shz3m7+MyBBtXDlEH+3Wfa6lToDXf1MElocY4sJ3w==} - dependencies: - '@types/pg': 8.6.6 - dev: false + /@cspell/dict-dotnet@5.0.0: + resolution: {integrity: sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==} + dev: true - /@next/env@14.0.2-canary.12: - resolution: {integrity: sha512-bu+G7vfcTANGAmZErOYIneUfwsIXvPAnJpLK0vw5O1CDMw3v2LnLRrziO04LUYF55PDHWz8bimlzGYiAPY5iIQ==} - dev: false + /@cspell/dict-elixir@4.0.3: + resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} + dev: true - /@next/eslint-plugin-next@14.0.1: - resolution: {integrity: sha512-bLjJMwXdzvhnQOnxvHoTTUh/+PYk6FF/DCgHi4BXwXCINer+o1ZYfL9aVeezj/oI7wqGJOqwGIXrlBvPbAId3w==} - dependencies: - glob: 7.1.7 - dev: false + /@cspell/dict-en-common-misspellings@1.0.2: + resolution: {integrity: sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==} + dev: true - /@next/mdx@14.0.1(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0): - resolution: {integrity: sha512-9hikFxx1XQOReOp5SBO1o3fGs1Z1GT1flKm1wrjFOwOTNI0M4x9CuQsUx5KJwvbt0FejCS5bsuNGXqxHchcMCQ==} - peerDependencies: - '@mdx-js/loader': '>=0.15.0' - '@mdx-js/react': '>=0.15.0' - peerDependenciesMeta: - '@mdx-js/loader': - optional: true - '@mdx-js/react': - optional: true - dependencies: - '@mdx-js/loader': 3.0.0(webpack@5.89.0) - '@mdx-js/react': 3.0.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - source-map: 0.7.4 - dev: false + /@cspell/dict-en-gb@1.1.33: + resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} + dev: true - /@next/swc-darwin-arm64@14.0.2-canary.12: - resolution: {integrity: sha512-JpNLsUGNIlcSlbxGjKTsr7PM3VQFp2mn5OigEfvBNn4WMfWxffn+vbftLq2J/Ahs797/ObIxpoTqkmTai8+lfA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-en_us@4.3.12: + resolution: {integrity: sha512-1bsUxFjgxF30FTzcU5uvmCvH3lyqVKR9dbwsJhomBlUM97f0edrd6590SiYBXDm7ruE68m3lJd4vs0Ev2D6FtQ==} + dev: true - /@next/swc-darwin-x64@14.0.2-canary.12: - resolution: {integrity: sha512-ijos/dQpfaZzX+KltQjU8CqfGroRYTtVL71EW69ugkQzrSBGG0jwGErHXOsFYUJyW0ghTrhAMwl2Y/dMcEc39w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@cspell/dict-es-es@2.3.1: + resolution: {integrity: sha512-F3gYzmCE9RRmu7J2rlIChArNpVFtiG6iFAhYkl6WvMYm/23Qy9wfWgywWkIgE3Ua1yGZtEqGbViV/ZPKPCF6hw==} dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.0.2-canary.12: - resolution: {integrity: sha512-u32tl7X+XgAZeqlsGm2AvsKP1UrYaYSdg37PdyqnAyumIbqoNPJyWidZX16Ru+uF/ew/T49WMzBUTV6jItzidA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-fa-ir@4.0.0: + resolution: {integrity: sha512-eWDNgo+/mUZyIhbkR6XhCPKdYymjEjJTZFnyOzUy37aGeyLckBWB7SOiWVPts32gPgYto/Jn2fJAwgYtyF+i7A==} + dev: true - /@next/swc-linux-arm64-musl@14.0.2-canary.12: - resolution: {integrity: sha512-yisKp/OQ9hjkVXZVnwBv5TUirMsGClh/Fj79GCDo36oP/7d7xhC47/FZ1x1mryeT0WXFzclNlg6NSwljrX0W6A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-filetypes@3.0.3: + resolution: {integrity: sha512-J9UP+qwwBLfOQ8Qg9tAsKtSY/WWmjj21uj6zXTI9hRLD1eG1uUOLcfVovAmtmVqUWziPSKMr87F6SXI3xmJXgw==} + dev: true - /@next/swc-linux-x64-gnu@14.0.2-canary.12: - resolution: {integrity: sha512-0vl3O+MFGiY0GWG8u1jX0EhnrM9kRVm+sX5a+G55wdTpOGSGtj8Nfq6eyf0MtfvX79irCIoW/qzPa36ugQ7F6w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-fonts@4.0.0: + resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} + dev: true - /@next/swc-linux-x64-musl@14.0.2-canary.12: - resolution: {integrity: sha512-3TiAxo6CbMGS3hZ7wGHq8oon22JYRG0nyGmJrVZsUihIHpPkl4XxsQfyMY/5rdF6M5xXZY3cPJO7AdMj+jnPpw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true + /@cspell/dict-fr-fr@2.2.2: + resolution: {integrity: sha512-4P8qDcA3Z2IHuH5s0rUr0+D+BXIxOmSe9JIy3lKR/PNQX8holybkbtQGUAdSrgmN+4SNjKkuauiG8Wb0BfUvOw==} dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.0.2-canary.12: - resolution: {integrity: sha512-meaJ0v4TErVLdl9uHL1X4oHFtE/32mP3fKnzPP15xwaiVHq+TnXQGu6/6/QqMHGYDECxoOa2Qonz1DwnOy6Cyw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-fsharp@1.0.1: + resolution: {integrity: sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==} + dev: true - /@next/swc-win32-ia32-msvc@14.0.2-canary.12: - resolution: {integrity: sha512-3pDLwdYPkne19RLKB5RF5Dn+DlftBN1431UTrCH2Txm7ZUcYLCnuTfwKsEcorVbYijXA2y7ZhHfx5lCQLVi4aA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-fullstack@3.1.5: + resolution: {integrity: sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==} - /@next/swc-win32-x64-msvc@14.0.2-canary.12: - resolution: {integrity: sha512-mh++5Av0GGxuPehh27GlrsDtKIC8aigmrVnHA20yOdw/zcQHnPUGqrc2gPiVK28QMUEJVc52PWC/Jsp3zWyZlQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true + /@cspell/dict-gaming-terms@1.0.4: + resolution: {integrity: sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==} + dev: true - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + /@cspell/dict-git@2.0.0: + resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} + dev: true - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + /@cspell/dict-golang@6.0.5: + resolution: {integrity: sha512-w4mEqGz4/wV+BBljLxduFNkMrd3rstBNDXmoX5kD4UTzIb4Sy0QybWCtg2iVT+R0KWiRRA56QKOvBsgXiddksA==} + dev: true - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + /@cspell/dict-haskell@4.0.1: + resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} + dev: true - /@npmcli/map-workspaces@3.0.4: - resolution: {integrity: sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 10.3.10 - minimatch: 9.0.3 - read-package-json-fast: 3.0.2 + /@cspell/dict-html-symbol-entities@4.0.0: + resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@npmcli/name-from-folder@2.0.0: - resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /@cspell/dict-html@4.0.5: + resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} dev: true - /@panva/hkdf@1.1.1: - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + /@cspell/dict-it-it@3.1.0: + resolution: {integrity: sha512-n+Z3qn9/yrYD8tFXeTm2999rKN/ELFPQI2A469nUTo8I/tGnIWj71ndZZxOgG85b0CTsf17i1HejpMIeAGFeZQ==} dev: false - /@peculiar/asn1-schema@2.3.8: - resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.6.2 - dev: false + /@cspell/dict-java@5.0.6: + resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} + dev: true - /@peculiar/json-schema@1.1.12: - resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} - engines: {node: '>=8.0.0'} - dependencies: - tslib: 2.6.2 - dev: false + /@cspell/dict-k8s@1.0.2: + resolution: {integrity: sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==} + dev: true - /@peculiar/webcrypto@1.4.1: - resolution: {integrity: sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==} - engines: {node: '>=10.12.0'} - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.3.5 - tslib: 2.6.2 - webcrypto-core: 1.7.7 + /@cspell/dict-latex@4.0.0: + resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} + dev: true + + /@cspell/dict-lorem-ipsum@4.0.0: + resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} + dev: true + + /@cspell/dict-lua@4.0.3: + resolution: {integrity: sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==} + dev: true + + /@cspell/dict-makefile@1.0.0: + resolution: {integrity: sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==} + dev: true + + /@cspell/dict-markdown@2.0.1: + resolution: {integrity: sha512-9j3t1UXsy3M1B8+LN8wPO73KzX7v94GBfefWKSMJDpBvDUnOjwxabnj9ICBOVErBPwURS+LkjJbgVXkvr1OiPQ==} dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + /@cspell/dict-node@4.0.3: + resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} dev: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.1 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 + /@cspell/dict-npm@5.0.14: + resolution: {integrity: sha512-k0kC7/W2qG5YII+SW6s+JtvKrkZg651vizi5dv/5G2HmJaeLNgDqBVeeDk/uV+ntBorM66XG4BPMjSxoaIlC5w==} + + /@cspell/dict-php@4.0.5: + resolution: {integrity: sha512-9r8ao7Z/mH9Z8pSB7yLtyvcCJWw+/MnQpj7xGVYzIV7V2ZWDRjXZAMgteHMJ37m8oYz64q5d4tiipD300QSetQ==} dev: true - /@planetscale/database@1.11.0: - resolution: {integrity: sha512-aWbU+D/IRHoDE9975y+Q4c+EwwAWxCPwFId+N1AhQVFXzbeJMkj6KN2iQtoi03elcLMRdfT+V3i9Z4WRw+/oIA==} - engines: {node: '>=16'} + /@cspell/dict-pl_pl@3.0.1: + resolution: {integrity: sha512-olzfqH38h/hD5AclQB1w6h4AlOjXnUuKWQtc5OgCIOCjfjfaKWcPuXuONIaI5R/6HJdkPGTsfSHztPJhIwkfsg==} dev: false - /@playwright/test@1.39.0: - resolution: {integrity: sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==} - engines: {node: '>=16'} - hasBin: true - dependencies: - playwright: 1.39.0 + /@cspell/dict-powershell@5.0.3: + resolution: {integrity: sha512-lEdzrcyau6mgzu1ie98GjOEegwVHvoaWtzQnm1ie4DyZgMr+N6D0Iyj1lzvtmt0snvsDFa5F2bsYzf3IMKcpcA==} dev: true - /@pnpm/constants@7.1.1: - resolution: {integrity: sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==} - engines: {node: '>=16.14'} + /@cspell/dict-public-licenses@2.0.5: + resolution: {integrity: sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==} dev: true - /@pnpm/core-loggers@9.0.4(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-P5IiCwLbYy/vlCDTxEMReB67NVs1Y4ip6iIEM3Y1fbxm0JbPMWTUMKGf2fy7eqGDF3/Vuxk5H7o/A4II6SWzMA==} - engines: {node: '>=16.14'} - peerDependencies: - '@pnpm/logger': ^5.0.0 + /@cspell/dict-python@4.1.11: + resolution: {integrity: sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg==} dependencies: - '@pnpm/logger': 5.0.0 - '@pnpm/types': 9.4.0 + '@cspell/dict-data-science': 1.0.11 dev: true - /@pnpm/error@5.0.2: - resolution: {integrity: sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==} - engines: {node: '>=16.14'} - dependencies: - '@pnpm/constants': 7.1.1 + /@cspell/dict-r@2.0.1: + resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} dev: true - /@pnpm/fetching-types@5.0.0: - resolution: {integrity: sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q==} - engines: {node: '>=16.14'} - dependencies: - '@zkochan/retry': 0.2.0 - node-fetch: 3.0.0-beta.9 - transitivePeerDependencies: - - domexception + /@cspell/dict-ruby@5.0.2: + resolution: {integrity: sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==} dev: true - /@pnpm/graceful-fs@3.2.0: - resolution: {integrity: sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA==} - engines: {node: '>=16.14'} - dependencies: - graceful-fs: 4.2.11 + /@cspell/dict-rust@4.0.1: + resolution: {integrity: sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==} dev: true - /@pnpm/logger@5.0.0: - resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} - engines: {node: '>=12.17'} - dependencies: - bole: 5.0.9 - ndjson: 2.0.0 + /@cspell/dict-scala@5.0.0: + resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@pnpm/npm-package-arg@1.0.0: - resolution: {integrity: sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw==} - engines: {node: '>=14.6'} - dependencies: - hosted-git-info: 4.1.0 - semver: 7.5.4 - validate-npm-package-name: 4.0.0 + /@cspell/dict-software-terms@3.3.15: + resolution: {integrity: sha512-1qqMGFi1TUNq9gQj4FTLPTlqVzQLXrj80MsKoXVpysr+823kMWesQAjqHiPg+MYsQ3DlTcpGWcjq/EbYonqueQ==} dev: true - /@pnpm/npm-resolver@17.0.0(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-XCeFga+Am3rsTO+8IIuIPb6VsZ+iCiv5QJW61YDl4XuiqoyCFzNyGgGfv05n45lIfK0Gg1jA2ewlo0LpGelCUw==} - engines: {node: '>=16.14'} - peerDependencies: - '@pnpm/logger': ^5.0.0 - dependencies: - '@pnpm/core-loggers': 9.0.4(@pnpm/logger@5.0.0) - '@pnpm/error': 5.0.2 - '@pnpm/fetching-types': 5.0.0 - '@pnpm/graceful-fs': 3.2.0 - '@pnpm/logger': 5.0.0 - '@pnpm/resolve-workspace-range': 5.0.1 - '@pnpm/resolver-base': 11.0.0 - '@pnpm/types': 9.4.0 - '@zkochan/retry': 0.2.0 - encode-registry: 3.0.1 - load-json-file: 6.2.0 - lru-cache: 10.0.1 - normalize-path: 3.0.0 - p-limit: 3.1.0 - p-memoize: 4.0.1 - parse-npm-tarball-url: 3.0.0 - path-temp: 2.1.0 - ramda: /@pnpm/ramda@0.28.1 - rename-overwrite: 4.0.3 - semver: 7.5.4 - ssri: 10.0.5 - version-selector-type: 3.0.0 - transitivePeerDependencies: - - domexception + /@cspell/dict-sql@2.1.3: + resolution: {integrity: sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==} dev: true - /@pnpm/ramda@0.28.1: - resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} + /@cspell/dict-svelte@1.0.2: + resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==} dev: true - /@pnpm/resolve-workspace-range@5.0.1: - resolution: {integrity: sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg==} - engines: {node: '>=16.14'} + /@cspell/dict-swift@2.0.1: + resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} + dev: true + + /@cspell/dict-tr-tr@3.0.0: + resolution: {integrity: sha512-Wa/qsztyZm7HzxRLG8Gqc8KOOa7ifq2EqiLbrMV/o8vmectQ39IYvZGQ9vkOzpoZp5N+0Xu0PnI6Qb8WlHblVg==} + dev: false + + /@cspell/dict-typescript@3.1.2: + resolution: {integrity: sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==} + + /@cspell/dict-uk-ua@4.0.0: + resolution: {integrity: sha512-8sKNr86bg0XpxuuD0V7qX8XGMwntyS/qDI9eNr5f01HfrKaUh2GRLfiRIjVpj6ljnoMYyOcDcOyjKwKhfTReSg==} + dev: true + + /@cspell/dict-vue@3.0.0: + resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} + dev: true + + /@cspell/dynamic-import@8.2.3: + resolution: {integrity: sha512-udJF+88F4UMH2eVKe3Utsh4X1PyNwqPJclIeD3/MDMFWm16lLkFYMqqrdr51tNLKVi4cXceGrUEapmGwf87l/w==} + engines: {node: '>=18.0'} dependencies: - semver: 7.5.4 + import-meta-resolve: 4.0.0 dev: true - /@pnpm/resolver-base@11.0.0: - resolution: {integrity: sha512-oxfjO8Ie6aBQPXSqOWGJP9s0xj9Z4cbRI7fK63WKhjwmNH4CTrSfikRL2o4FoXo2APAbJEUp2lCxx+86dq2tUg==} - engines: {node: '>=16.14'} + /@cspell/strong-weak-map@8.2.3: + resolution: {integrity: sha512-/0gQZw87MqGX8f28E+LhFfrsWdRdQEL8EEQeMXrrzSoPnfSz+ItHMhhrwPF+bMePPjaaUNYoRXvX7hxiDsGm0w==} + engines: {node: '>=18'} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + /@csstools/css-parser-algorithms@2.4.0(@csstools/css-tokenizer@2.2.2): + resolution: {integrity: sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.2.2 dependencies: - '@pnpm/types': 9.4.0 + '@csstools/css-tokenizer': 2.2.2 dev: true - /@pnpm/types@9.4.0: - resolution: {integrity: sha512-IRDuIuNobLRQe0UyY2gbrrTzYS46tTNvOEfL6fOf0Qa8NyxUzeXz946v7fQuQE3LSBf8ENBC5SXhRmDl+mBEqA==} - engines: {node: '>=16.14'} + /@csstools/css-tokenizer@2.2.2: + resolution: {integrity: sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==} + engines: {node: ^14 || ^16 || >=18} dev: true - /@pnpm/workspace.pkgs-graph@2.0.10(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-iGZZ23li6Ya68kHx3oaWPCN4JMzJ0njmmmWDRxUcHkc+nxtxTwpEM/FRl7yG1nBo39YwX2XTtou22h2nKipHnw==} - engines: {node: '>=16.14'} + /@csstools/media-query-list-parser@2.1.6(@csstools/css-parser-algorithms@2.4.0)(@csstools/css-tokenizer@2.2.2): + resolution: {integrity: sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.4.0 + '@csstools/css-tokenizer': ^2.2.2 dependencies: - '@pnpm/npm-package-arg': 1.0.0 - '@pnpm/npm-resolver': 17.0.0(@pnpm/logger@5.0.0) - '@pnpm/resolve-workspace-range': 5.0.1 - ramda: /@pnpm/ramda@0.28.1 - transitivePeerDependencies: - - '@pnpm/logger' - - domexception + '@csstools/css-parser-algorithms': 2.4.0(@csstools/css-tokenizer@2.2.2) + '@csstools/css-tokenizer': 2.2.2 dev: true - /@radix-ui/number@1.0.1: - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + /@csstools/selector-specificity@3.0.1(postcss-selector-parser@6.0.14): + resolution: {integrity: sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 dependencies: - '@babel/runtime': 7.23.2 - dev: false + postcss-selector-parser: 6.0.14 + dev: true - /@radix-ui/primitive@1.0.0: - resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + /@dabh/diagnostics@2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} dependencies: - '@babel/runtime': 7.23.2 + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 dev: false - /@radix-ui/primitive@1.0.1: - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + /@devexpress/error-stack-parser@2.0.6: + resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} dependencies: - '@babel/runtime': 7.23.2 + stackframe: 1.3.4 + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} dev: false - /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@dprint/formatter@0.2.1: + resolution: {integrity: sha512-GCzgRt2o4mhZLy8L47k2A+q9EMG/jWhzZebE29EqKsxmjDrSfv2VisEj/Q+39OOf04jTkEfB/TRO+IZSyxHdYg==} + dev: true + + /@dprint/markdown@0.16.3: + resolution: {integrity: sha512-KvwUrCdHR1spFk0EcdW33KEGFLfkcdx6hJN8mwipGBw0b40sl5oPtVUTgRiH70eV7VUhPfycDfIsDutWNHb17w==} + dev: true + + /@dprint/toml@0.5.4: + resolution: {integrity: sha512-d+5GwwzztZD0QixmOBhaO6nWVLsAeYsJ1HJYNxDoDRbASFCpza9BBVshG5ctBRXCkkIHhD9BO1SnbOoRQltUQw==} + dev: true + + /@drizzle-team/studio@0.0.37: + resolution: {integrity: sha512-LZyAPGJBX43jsrVZh7+w1Jig/BC6PJx63ReHUYK+GRQYNY9UJNlPXmn1uC/LMRX+A7JwYM4Sr4Fg/hnJSqlfgA==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + superjson: 2.2.1 + dev: true + + /@envelop/core@4.0.3: + resolution: {integrity: sha512-O0Vz8E0TObT6ijAob8jYFVJavcGywKThM3UAsxUIBBVPYZTMiqI9lo2gmAnbMUnrDcAYkUTZEW9FDYPRdF5l6g==} + engines: {node: '>=16.0.0'} + requiresBuild: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@envelop/types': 4.0.1 + tslib: 2.6.2 + dev: false + optional: true + + /@envelop/core@5.0.0: + resolution: {integrity: sha512-aJdnH/ptv+cvwfvciCBe7TSvccBwo9g0S5f6u35TBVzRVqIGkK03lFlIL+x1cnfZgN9EfR2b1PH2galrT1CdCQ==} + engines: {node: '>=18.0.0'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + '@envelop/types': 5.0.0 + tslib: 2.6.2 dev: false - /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@envelop/types@4.0.1: + resolution: {integrity: sha512-ULo27/doEsP7uUhm2iTnElx13qTO6I5FKvmLoX41cpfuw8x6e0NUFknoqhEsLzAbgz8xVS5mjwcxGCXh4lDYzg==} + engines: {node: '>=16.0.0'} + requiresBuild: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + tslib: 2.6.2 dev: false + optional: true - /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@envelop/types@5.0.0: + resolution: {integrity: sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA==} + engines: {node: '>=18.0.0'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + tslib: 2.6.2 dev: false - /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@ericcornelissen/bash-parser@0.5.2: + resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} + engines: {node: '>=4'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} - peerDependencies: + array-last: 1.3.0 + babylon: 6.18.0 + compose-function: 3.0.3 + deep-freeze: 0.0.1 + filter-iterator: 0.0.1 + filter-obj: 1.1.0 + has-own-property: 0.1.0 + identity-function: 1.0.0 + is-iterable: 1.1.1 + iterable-lookahead: 1.0.0 + lodash.curry: 4.1.1 + magic-string: 0.16.0 + map-obj: 2.0.0 + object-pairs: 0.1.0 + object-values: 1.0.0 + reverse-arguments: 1.0.0 + shell-quote-word: 1.0.1 + to-pascal-case: 1.0.0 + unescape-js: 1.1.4 + dev: true + + /@es-joy/jsdoccomment@0.41.0: + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} + engines: {node: '>=16'} + dependencies: + comment-parser: 1.4.1 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + + /@esbuild-kit/core-utils@3.3.2: + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader@2.6.5: + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.2 + dev: true + + /@esbuild/aix-ppc64@0.19.10: + resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm64@0.19.10: + resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.19.10: + resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.19.10: + resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.19.10: + resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.19.10: + resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.19.10: + resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-x64@0.19.10: + resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm64@0.19.10: + resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm@0.19.10: + resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.19.10: + resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64@0.19.10: + resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-mips64el@0.19.10: + resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ppc64@0.19.10: + resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-riscv64@0.19.10: + resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-s390x@0.19.10: + resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-x64@0.19.10: + resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/netbsd-x64@0.19.10: + resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-x64@0.19.10: + resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /@esbuild/sunos-x64@0.19.10: + resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-arm64@0.19.10: + resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.19.10: + resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.19.10: + resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@escape.tech/graphql-armor-block-field-suggestions@2.1.0: + resolution: {integrity: sha512-Sna+jK02oUDJMWSfA7ica69HdtBroP3VakeMUK0+QgWlAEBEphT+SzKGDX5vn6sS7sAsEoY50gUAIgtTG+2qVw==} + engines: {node: '>=16.0.0'} + dependencies: + graphql: 16.8.1 + optionalDependencies: + '@envelop/core': 4.0.3 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint-types/jsdoc@46.8.2-1: + resolution: {integrity: sha512-FwD7V0xX0jyaqj8Ul5ZY+TAAPohDfVqtbuXJNHb+OIv1aTIqZi5+Zn3F2UwQ5O3BnQd2mTduyK0+HjGx3/AMFg==} + dev: true + + /@eslint-types/typescript-eslint@6.16.0: + resolution: {integrity: sha512-gLmHCSeeNtHfWJtAO5pBr4hD0aV60GyPDKJQm2JxlBJBoytJoKezan4Ak7FE9BsewaB+W3JQwsllspirHbHKLw==} + dev: true + + /@eslint-types/unicorn@50.0.1: + resolution: {integrity: sha512-nuJuipTNcg9f+oxZ+3QZw4tuDLmir4RJOPfM/oujgToiy1s+tePDZhwg5jUGc3q8OzTtPbVpsFSYX7QApjO3EA==} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@expo/bunyan@4.0.0: + resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==} + engines: {'0': node >=0.10.0} + dependencies: + uuid: 8.3.2 + optionalDependencies: + mv: 2.1.1 + safe-json-stringify: 1.2.0 + dev: false + + /@expo/cli@0.10.16(expo-modules-autolinking@1.5.1): + resolution: {integrity: sha512-EwgnRN5AMElg0JJjFLJTPk5hYkVXxnNMLIvZBiTfGoCq+rDw6u7Mg5l2Bbm/geSHOoplaHyPZ/Wr23FAuZWehA==} + hasBin: true + dependencies: + '@babel/runtime': 7.23.6 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 8.1.2 + '@expo/config-plugins': 7.2.5 + '@expo/dev-server': 0.5.5 + '@expo/devcert': 1.1.0 + '@expo/env': 0.0.5 + '@expo/json-file': 8.2.37 + '@expo/metro-config': 0.10.7 + '@expo/osascript': 2.0.33 + '@expo/package-manager': 1.1.2 + '@expo/plist': 0.0.20 + '@expo/prebuild-config': 6.2.6(expo-modules-autolinking@1.5.1) + '@expo/rudder-sdk-node': 1.1.1 + '@expo/spawn-async': 1.5.0 + '@expo/xcpretty': 4.3.0 + '@urql/core': 2.3.6(graphql@16.8.1) + '@urql/exchange-retry': 0.3.0(graphql@16.8.1) + accepts: 1.3.8 + arg: 4.1.0 + better-opn: 3.0.2 + bplist-parser: 0.3.2 + cacache: 15.3.0 + chalk: 4.1.2 + ci-info: 3.9.0 + debug: 4.3.4 + env-editor: 0.4.2 + form-data: 3.0.1 + freeport-async: 2.0.0 + fs-extra: 8.1.0 + getenv: 1.0.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + https-proxy-agent: 5.0.1 + internal-ip: 4.3.0 + js-yaml: 3.14.1 + json-schema-deref-sync: 0.13.0 + md5-file: 3.2.3 + md5hex: 1.0.0 + minipass: 3.1.6 + node-fetch: 2.7.0 + node-forge: 1.3.1 + npm-package-arg: 7.0.0 + ora: 3.4.0 + pretty-bytes: 5.6.0 + progress: 2.0.3 + prompts: 2.4.2 + qrcode-terminal: 0.11.0 + require-from-string: 2.0.2 + requireg: 0.2.2 + resolve-from: 5.0.0 + semver: 7.5.4 + send: 0.18.0 + slugify: 1.6.6 + structured-headers: 0.4.1 + tar: 6.2.0 + tempy: 0.7.1 + terminal-link: 2.1.1 + text-table: 0.2.0 + url-join: 4.0.0 + wrap-ansi: 7.0.0 + ws: 8.16.0 + transitivePeerDependencies: + - bluebird + - bufferutil + - encoding + - expo-modules-autolinking + - supports-color + - utf-8-validate + dev: false + + /@expo/code-signing-certificates@0.0.5: + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} + dependencies: + node-forge: 1.3.1 + nullthrows: 1.1.1 + dev: false + + /@expo/config-plugins@7.2.5: + resolution: {integrity: sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==} + dependencies: + '@expo/config-types': 49.0.0 + '@expo/json-file': 8.2.37 + '@expo/plist': 0.0.20 + '@expo/sdk-runtime-versions': 1.0.0 + '@react-native/normalize-color': 2.1.0 + chalk: 4.1.2 + debug: 4.3.4 + find-up: 5.0.0 + getenv: 1.0.0 + glob: 7.1.6 + resolve-from: 5.0.0 + semver: 7.5.4 + slash: 3.0.0 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@expo/config-types@49.0.0: + resolution: {integrity: sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==} + dev: false + + /@expo/config@8.1.2: + resolution: {integrity: sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==} + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 7.2.5 + '@expo/config-types': 49.0.0 + '@expo/json-file': 8.2.37 + getenv: 1.0.0 + glob: 7.1.6 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + semver: 7.5.3 + slugify: 1.6.6 + sucrase: 3.35.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@expo/dev-server@0.5.5: + resolution: {integrity: sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==} + dependencies: + '@expo/bunyan': 4.0.0 + '@expo/metro-config': 0.10.7 + '@expo/osascript': 2.0.33 + '@expo/spawn-async': 1.5.0 + body-parser: 1.20.2 + chalk: 4.1.2 + connect: 3.7.0 + fs-extra: 9.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + node-fetch: 2.7.0 + open: 8.4.2 + resolve-from: 5.0.0 + serialize-error: 6.0.0 + temp-dir: 2.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@expo/devcert@1.1.0: + resolution: {integrity: sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==} + dependencies: + application-config-path: 0.1.1 + command-exists: 1.2.9 + debug: 3.2.7 + eol: 0.9.1 + get-port: 3.2.0 + glob: 7.2.3 + lodash: 4.17.21 + mkdirp: 0.5.6 + password-prompt: 1.1.3 + rimraf: 2.7.1 + sudo-prompt: 8.2.5 + tmp: 0.0.33 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@expo/env@0.0.5: + resolution: {integrity: sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==} + dependencies: + chalk: 4.1.2 + debug: 4.3.4 + dotenv: 16.0.3 + dotenv-expand: 10.0.0 + getenv: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@expo/image-utils@0.3.22: + resolution: {integrity: sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==} + dependencies: + '@expo/spawn-async': 1.5.0 + chalk: 4.1.2 + fs-extra: 9.0.0 + getenv: 1.0.0 + jimp-compact: 0.16.1 + mime: 2.6.0 + node-fetch: 2.7.0 + parse-png: 2.1.0 + resolve-from: 5.0.0 + semver: 7.3.2 + tempy: 0.3.0 + transitivePeerDependencies: + - encoding + dev: false + + /@expo/json-file@8.2.37: + resolution: {integrity: sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==} + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 + write-file-atomic: 2.4.3 + dev: false + + /@expo/metro-config@0.10.7: + resolution: {integrity: sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==} + dependencies: + '@expo/config': 8.1.2 + '@expo/env': 0.0.5 + '@expo/json-file': 8.2.37 + chalk: 4.1.2 + debug: 4.3.4 + find-yarn-workspace-root: 2.0.0 + getenv: 1.0.0 + jsc-safe-url: 0.2.4 + lightningcss: 1.19.0 + postcss: 8.4.32 + resolve-from: 5.0.0 + sucrase: 3.35.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@expo/osascript@2.0.33: + resolution: {integrity: sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==} + engines: {node: '>=12'} + dependencies: + '@expo/spawn-async': 1.5.0 + exec-async: 2.2.0 + dev: false + + /@expo/package-manager@1.1.2: + resolution: {integrity: sha512-JI9XzrxB0QVXysyuJ996FPCJGDCYRkbUvgG4QmMTTMFA1T+mv8YzazC3T9C1pHQUAAveVCre1+Pqv0nZXN24Xg==} + dependencies: + '@expo/json-file': 8.2.37 + '@expo/spawn-async': 1.5.0 + ansi-regex: 5.0.1 + chalk: 4.1.2 + find-up: 5.0.0 + find-yarn-workspace-root: 2.0.0 + js-yaml: 3.14.1 + micromatch: 4.0.5 + npm-package-arg: 7.0.0 + split: 1.0.1 + sudo-prompt: 9.1.1 + dev: false + + /@expo/plist@0.0.20: + resolution: {integrity: sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==} + dependencies: + '@xmldom/xmldom': 0.7.13 + base64-js: 1.5.1 + xmlbuilder: 14.0.0 + dev: false + + /@expo/prebuild-config@6.2.6(expo-modules-autolinking@1.5.1): + resolution: {integrity: sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==} + peerDependencies: + expo-modules-autolinking: '>=0.8.1' + dependencies: + '@expo/config': 8.1.2 + '@expo/config-plugins': 7.2.5 + '@expo/config-types': 49.0.0 + '@expo/image-utils': 0.3.22 + '@expo/json-file': 8.2.37 + debug: 4.3.4 + expo-modules-autolinking: 1.5.1 + fs-extra: 9.1.0 + resolve-from: 5.0.0 + semver: 7.5.3 + xml2js: 0.6.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@expo/rudder-sdk-node@1.1.1: + resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} + engines: {node: '>=12'} + dependencies: + '@expo/bunyan': 4.0.0 + '@segment/loosely-validate-event': 2.0.0 + fetch-retry: 4.1.1 + md5: 2.3.0 + node-fetch: 2.7.0 + remove-trailing-slash: 0.1.1 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + dev: false + + /@expo/sdk-runtime-versions@1.0.0: + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + dev: false + + /@expo/spawn-async@1.5.0: + resolution: {integrity: sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 6.0.5 + dev: false + + /@expo/vector-icons@13.0.0: + resolution: {integrity: sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==} + dev: false + + /@expo/websql@1.0.1: + resolution: {integrity: sha512-H9/t1V7XXyKC343FJz/LwaVBfDhs6IqhDtSYWpt8LNSQDVjf5NvVJLc5wp+KCpRidZx8+0+YeHJN45HOXmqjFA==} + dependencies: + argsarray: 0.0.1 + immediate: 3.3.0 + noop-fn: 1.0.0 + pouchdb-collections: 1.0.1 + tiny-queue: 0.2.1 + dev: false + + /@expo/xcpretty@4.3.0: + resolution: {integrity: sha512-whBbvHZ2Q10T5TNmN0z5NbO6C9ZDw+XUTu8h6vVMnMzQrbGexc9oaCCZfz+L3Q7TEL5vfr+9L86nY62c3Bsm+g==} + hasBin: true + dependencies: + '@babel/code-frame': 7.10.4 + chalk: 4.1.2 + find-up: 5.0.0 + js-yaml: 4.1.0 + dev: false + + /@faire/mjml-react@3.3.0(mjml@4.14.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Z+PFAMEWrxn/93El9+APabz42GxC21V7Hh6phMa3pBC9Dn21TsukGXi0Gd7Rzs31Rg0o9Nzojq3UE86QZvcBFQ==} + peerDependencies: + mjml: ^4.13.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash.kebabcase: 4.1.1 + mjml: 4.14.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@faker-js/faker@8.3.1: + resolution: {integrity: sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + dev: false + + /@fal-works/esbuild-plugin-global-externals@2.1.2: + resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} + dev: false + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + + /@floating-ui/core@1.5.2: + resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@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.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.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@floating-ui/react@0.22.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RlF+7yU3/abTZcUez44IHoEH89yDHHonkYzZocynTWbl6J6MiMINMbyZSmSKdRKdadrC+MwQLdEexu++irvZhQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tabbable: 6.2.0 + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + + /@formatjs/ecma402-abstract@1.11.4: + resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} + dependencies: + '@formatjs/intl-localematcher': 0.2.25 + tslib: 2.6.2 + dev: false + + /@formatjs/ecma402-abstract@1.18.0: + resolution: {integrity: sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==} + dependencies: + '@formatjs/intl-localematcher': 0.5.2 + tslib: 2.6.2 + dev: false + + /@formatjs/fast-memoize@1.2.1: + resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/icu-messageformat-parser@2.1.0: + resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/icu-skeleton-parser': 1.3.6 + tslib: 2.6.2 + dev: false + + /@formatjs/icu-messageformat-parser@2.7.3: + resolution: {integrity: sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==} + dependencies: + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/icu-skeleton-parser': 1.7.0 + tslib: 2.6.2 + dev: false + + /@formatjs/icu-skeleton-parser@1.3.6: + resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + tslib: 2.6.2 + dev: false + + /@formatjs/icu-skeleton-parser@1.7.0: + resolution: {integrity: sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==} + dependencies: + '@formatjs/ecma402-abstract': 1.18.0 + tslib: 2.6.2 + dev: false + + /@formatjs/intl-localematcher@0.2.25: + resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/intl-localematcher@0.2.32: + resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/intl-localematcher@0.5.2: + resolution: {integrity: sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@gaearon/lag-radar@0.1.0: + resolution: {integrity: sha512-gRBjSuEG6HuyoXhy+yedPXlcGKyUNMlNpgKTncgfXwIi6ejt/0KuqOzck/geYqy8z02fuJrz1VjkF4EwH2Oq8g==} + dev: false + + /@gar/promisify@1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: false + + /@graphql-codegen/add@5.0.0(graphql@16.8.1): + resolution: {integrity: sha512-ynWDOsK2yxtFHwcJTB9shoSkUd7YXd6ZE57f0nk7W5cu/nAgxZZpEsnTPEpZB/Mjf14YRGe2uJHQ7AfElHjqUQ==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + + /@graphql-codegen/cli@5.0.0(@parcel/watcher@2.3.0)(@types/node@20.10.5)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + graphql: ^16.8.1 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + dependencies: + '@babel/generator': 7.23.6 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@graphql-codegen/core': 4.0.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/code-file-loader': 8.0.3(graphql@16.8.1) + '@graphql-tools/git-loader': 8.0.3(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/load': 8.0.1(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@parcel/watcher': 2.3.0 + '@whatwg-node/fetch': 0.8.8 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.3.3) + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.8.1 + graphql-config: 5.0.3(@types/node@20.10.5)(graphql@16.8.1)(typescript@5.3.3) + inquirer: 8.2.6 + is-glob: 4.0.3 + jiti: 1.21.0 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + micromatch: 4.0.5 + shell-quote: 1.8.1 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + tslib: 2.6.2 + yaml: 2.3.4 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - enquirer + - supports-color + - typescript + - utf-8-validate + dev: false + + /@graphql-codegen/client-preset@4.1.0(graphql@16.8.1): + resolution: {integrity: sha512-/3Ymb/fjxIF1+HGmaI1YwSZbWsrZAWMSQjh3dU425eBjctjsVQ6gzGRr+l/gE5F1mtmCf+vlbTAT03heAc/QIw==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + '@graphql-codegen/add': 5.0.0(graphql@16.8.1) + '@graphql-codegen/gql-tag-operations': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 4.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-tools/documents': 1.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@graphql-codegen/core@4.0.0(graphql@16.8.1): + resolution: {integrity: sha512-JAGRn49lEtSsZVxeIlFVIRxts2lWObR+OQo7V2LHDJ7ohYYw3ilv7nJ8pf8P4GTg/w6ptcYdSdVVdkI8kUHB/Q==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + + /@graphql-codegen/gql-tag-operations@4.0.1(graphql@16.8.1): + resolution: {integrity: sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + auto-bind: 4.0.0 + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.8.1): + resolution: {integrity: sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + change-case-all: 1.0.15 + common-tags: 1.8.2 + graphql: 16.8.1 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.5.3 + + /@graphql-codegen/schema-ast@4.0.0(graphql@16.8.1): + resolution: {integrity: sha512-WIzkJFa9Gz28FITAPILbt+7A8+yzOyd1NxgwFh7ie+EmO9a5zQK6UQ3U/BviirguXCYnn+AR4dXsoDrSrtRA1g==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + + /@graphql-codegen/typed-document-node@5.0.1(graphql@16.8.1): + resolution: {integrity: sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-codegen/typescript-operations@4.0.1(graphql@16.8.1): + resolution: {integrity: sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + auto-bind: 4.0.0 + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-codegen/typescript@4.0.1(graphql@16.8.1): + resolution: {integrity: sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/schema-ast': 4.0.0(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + auto-bind: 4.0.0 + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.8.1): + resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) + '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + parse-filepath: 1.0.2 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-tools/apollo-engine-loader@8.0.0(graphql@16.8.1): + resolution: {integrity: sha512-axQTbN5+Yxs1rJ6cWQBOfw3AEeC+fvIuZSfJLPLLvFJLj4pUm9fhxey/g6oQZAAQJqKPfw+tLDUQvnfvRK8Kmg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.14 + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + dev: false + + /@graphql-tools/batch-execute@9.0.2(graphql@16.8.1): + resolution: {integrity: sha512-Y2uwdZI6ZnatopD/SYfZ1eGuQFI7OU2KGZ2/B/7G9ISmgMl5K+ZZWz/PfIEXeiHirIDhyk54s4uka5rj2xwKqQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + dataloader: 2.2.2 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: false + + /@graphql-tools/code-file-loader@8.0.3(graphql@16.8.1): + resolution: {integrity: sha512-gVnnlWs0Ua+5FkuHHEriFUOI3OIbHv6DS1utxf28n6NkfGMJldC4j0xlJRY0LS6dWK34IGYgD4HelKYz2l8KiA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@graphql-tools/delegate@10.0.3(graphql@16.8.1): + resolution: {integrity: sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/batch-execute': 9.0.2(graphql@16.8.1) + '@graphql-tools/executor': 1.2.0(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + dataloader: 2.2.2 + graphql: 16.8.1 + tslib: 2.6.2 + dev: false + + /@graphql-tools/documents@1.0.0(graphql@16.8.1): + resolution: {integrity: sha512-rHGjX1vg/nZ2DKqRGfDPNC55CWZBMldEVcH+91BThRa6JeT80NqXknffLLEZLRUxyikCfkwMsk6xR3UNMqG0Rg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + lodash.sortby: 4.7.0 + tslib: 2.6.2 + dev: false + + /@graphql-tools/executor-graphql-ws@1.1.0(graphql@16.8.1): + resolution: {integrity: sha512-yM67SzwE8rYRpm4z4AuGtABlOp9mXXVy6sxXnTJRoYIdZrmDbKVfIY+CpZUJCqS0FX3xf2+GoHlsj7Qswaxgcg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@types/ws': 8.5.10 + graphql: 16.8.1 + graphql-ws: 5.14.3(graphql@16.8.1) + isomorphic-ws: 5.0.0(ws@8.16.0) + tslib: 2.6.2 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@graphql-tools/executor-http@1.0.5(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-roQyDLOAywyaCTPOhwXiT/WDr0bfuVhqOXjECsnrIl/1TMPDUYjiT2sW6Gz6pqnYMmokdhyvlV6D5d7WtIrKsA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + '@whatwg-node/fetch': 0.9.14 + extract-files: 11.0.0 + graphql: 16.8.1 + meros: 1.3.0(@types/node@20.10.5) + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: false + + /@graphql-tools/executor-legacy-ws@1.0.5(graphql@16.8.1): + resolution: {integrity: sha512-w54AZ7zkNuvpyV09FH+eGHnnAmaxhBVHg4Yh2ICcsMfRg0brkLt77PlbjBuxZ4HY8XZnKJaYWf+tKazQZtkQtg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@types/ws': 8.5.10 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.16.0) + tslib: 2.6.2 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@graphql-tools/executor@1.2.0(graphql@16.8.1): + resolution: {integrity: sha512-SKlIcMA71Dha5JnEWlw4XxcaJ+YupuXg0QCZgl2TOLFz4SkGCwU/geAsJvUJFwK2RbVLpQv/UMq67lOaBuwDtg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: false + + /@graphql-tools/git-loader@8.0.3(graphql@16.8.1): + resolution: {integrity: sha512-Iz9KbRUAkuOe8JGTS0qssyJ+D5Snle17W+z9anwWrLFrkBhHrRFUy5AdjZqgJuhls0x30QkZBnnCtnHDBdQ4nA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + is-glob: 4.0.3 + micromatch: 4.0.5 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@graphql-tools/github-loader@8.0.0(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/executor-http': 1.0.5(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.14 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + - encoding + - supports-color + dev: false + + /@graphql-tools/graphql-file-loader@8.0.0(graphql@16.8.1): + resolution: {integrity: sha512-wRXj9Z1IFL3+zJG1HWEY0S4TXal7+s1vVhbZva96MSp0kbb/3JBF7j0cnJ44Eq0ClccMgGCDFqPFXty4JlpaPg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/import': 7.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + dev: false + + /@graphql-tools/graphql-tag-pluck@8.1.0(graphql@16.8.1): + resolution: {integrity: sha512-kt5l6H/7QxQcIaewInTcune6NpATojdFEW98/8xWcgmy7dgXx5vU9e0AicFZIH+ewGyZzTpwFqO2RI03roxj2w==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@graphql-tools/import@7.0.0(graphql@16.8.1): + resolution: {integrity: sha512-NVZiTO8o1GZs6OXzNfjB+5CtQtqsZZpQOq+Uu0w57kdUkT4RlQKlwhT8T81arEsbV55KpzkpFsOZP7J1wdmhBw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + resolve-from: 5.0.0 + tslib: 2.6.2 + dev: false + + /@graphql-tools/json-file-loader@8.0.0(graphql@16.8.1): + resolution: {integrity: sha512-ki6EF/mobBWJjAAC84xNrFMhNfnUFD6Y0rQMGXekrUgY0NdeYXHU0ZUgHzC9O5+55FslqUmAUHABePDHTyZsLg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + dev: false + + /@graphql-tools/load@8.0.1(graphql@16.8.1): + resolution: {integrity: sha512-qSMsKngJhDqRbuWyo3NvakEFqFL6+eSjy8ooJ1o5qYD26N7dqXkKzIMycQsX7rBK19hOuINAUSaRcVWH6hTccw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + p-limit: 3.1.0 + tslib: 2.6.2 + dev: false + + /@graphql-tools/merge@9.0.1(graphql@16.8.1): + resolution: {integrity: sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + + /@graphql-tools/optimize@2.0.0(graphql@16.8.1): + resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + tslib: 2.6.2 + + /@graphql-tools/prisma-loader@8.0.2(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-8d28bIB0bZ9Bj0UOz9sHagVPW+6AHeqvGljjERtwCnWl8OCQw2c2pNboYXISLYUG5ub76r4lDciLLTU+Ks7Q0w==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/url-loader': 8.0.1(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@types/js-yaml': 4.0.9 + '@types/json-stable-stringify': 1.0.36 + '@whatwg-node/fetch': 0.9.14 + chalk: 4.1.2 + debug: 4.3.4 + dotenv: 16.3.1 + graphql: 16.8.1 + graphql-request: 6.1.0(graphql@16.8.1) + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + jose: 5.2.0 + js-yaml: 4.1.0 + json-stable-stringify: 1.1.0 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.6.2 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@graphql-tools/relay-operation-optimizer@7.0.0(graphql@16.8.1): + resolution: {integrity: sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@ardatan/relay-compiler': 12.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-tools/schema@10.0.2(graphql@16.8.1): + resolution: {integrity: sha512-TbPsIZnWyDCLhgPGnDjt4hosiNU2mF/rNtSk5BVaXWnZqvKJ6gzJV4fcHcvhRIwtscDMW2/YTnK6dLVnk8pc4w==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/merge': 9.0.1(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + + /@graphql-tools/url-loader@8.0.1(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) + '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.5(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/executor-legacy-ws': 1.0.5(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.9.14 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.16.0) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.16.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@graphql-tools/utils@10.0.12(graphql@16.8.1): + resolution: {integrity: sha512-+yS1qlFwXlwU3Gv8ek/h2aJ95quog4yF22haC11M0zReMSTddbGJZ5yXKkE3sXoY2BcL1utilSFjylJ9uXpSNQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-inspect: 1.0.0 + dset: 3.1.3 + graphql: 16.8.1 + tslib: 2.6.2 + + /@graphql-tools/wrap@10.0.1(graphql@16.8.1): + resolution: {integrity: sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: false + + /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + + /@graphql-yoga/logger@2.0.0: + resolution: {integrity: sha512-Mg8psdkAp+YTG1OGmvU+xa6xpsAmSir0hhr3yFYPyLNwzUj95DdIwsMpKadDj9xDpYgJcH3Hp/4JMal9DhQimA==} + engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@graphql-yoga/plugin-defer-stream@3.1.0(graphql-yoga@5.1.0)(graphql@16.8.1): + resolution: {integrity: sha512-WplE4CPRsFbkBLQUOnth8g3NdXoWDeY5XUquoxd2YPd+kaHPaa7cZQZ3adg5J7tSTh8REo9EO5P1OPqXm+MEcg==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^16.8.1 + graphql-yoga: ^5.1.0 + dependencies: + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + graphql: 16.8.1 + graphql-yoga: 5.1.0(graphql@16.8.1) + dev: false + + /@graphql-yoga/plugin-disable-introspection@2.1.0(graphql-yoga@5.1.0)(graphql@16.8.1): + resolution: {integrity: sha512-7HCXgxYgyd+JlIfG6K8fIRtFCox8CvbadENtg6RG7K5cb0TRwxeP9JtiTScl7W3eSS0IEbaXvqjPS5WT22iOMw==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^16.8.1 + graphql-yoga: ^5.1.0 + dependencies: + graphql: 16.8.1 + graphql-yoga: 5.1.0(graphql@16.8.1) + dev: false + + /@graphql-yoga/subscription@5.0.0: + resolution: {integrity: sha512-Ri7sK8hmxd/kwaEa0YT8uqQUb2wOLsmBMxI90QDyf96lzOMJRgBuNYoEkU1pSgsgmW2glceZ96sRYfaXqwVxUw==} + engines: {node: '>=18.0.0'} + dependencies: + '@graphql-yoga/typed-event-target': 3.0.0 + '@repeaterjs/repeater': 3.0.5 + '@whatwg-node/events': 0.1.1 + tslib: 2.6.2 + dev: false + + /@graphql-yoga/typed-event-target@3.0.0: + resolution: {integrity: sha512-w+liuBySifrstuHbFrHoHAEyVnDFVib+073q8AeAJ/qqJfvFvAwUPLLtNohR/WDVRgSasfXtl3dcNuVJWN+rjg==} + engines: {node: '>=18.0.0'} + dependencies: + '@repeaterjs/repeater': 3.0.5 + tslib: 2.6.2 + dev: false + + /@gsap/react@2.0.2(react@18.2.0): + resolution: {integrity: sha512-Uo2lOBlGcwmkIE9EcPdsyDfg+DRAoboVvuWgvVIrsJ2tIZHcpFab82YNV0iWj9CNfTzIqGP44ziXqsCMkc8OEw==} + peerDependencies: + react: '>=16' + dependencies: + react: 18.2.0 + dev: false + + /@hookform/resolvers@3.3.3(react-hook-form@7.49.2): + resolution: {integrity: sha512-bOMxKkSD3zWcS11TKoUQ8O0ZqKslFohvUsPKSrdCHiuEuMjRo/u3cq9YRJD/+xtNGYup++XD2LkjhegP5XENiw==} + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.49.2(react@18.2.0) + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + + /@ianvs/prettier-plugin-sort-imports@4.1.1(@vue/compiler-sfc@3.3.13)(prettier@3.1.1): + resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} + peerDependencies: + '@vue/compiler-sfc': '>=3.0.0' + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + '@vue/compiler-sfc': 3.3.13 + prettier: 3.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@inquirer/checkbox@1.5.0: + resolution: {integrity: sha512-3cKJkW1vIZAs4NaS0reFsnpAjP0azffYII4I2R7PTI7ZTMg5Y1at4vzXccOH3762b2c2L4drBhpJpf9uiaGNxA==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/confirm@2.0.15: + resolution: {integrity: sha512-hj8Q/z7sQXsF0DSpLQZVDhWYGN6KLM/gNjjqGkpKwBzljbQofGjn0ueHADy4HUY+OqDHmXuwk/bY+tZyIuuB0w==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + chalk: 4.1.2 + dev: false + + /@inquirer/core@5.1.1: + resolution: {integrity: sha512-IuJyZQUg75+L5AmopgnzxYrgcU6PJKL0hoIs332G1Gv55CnmZrhG6BzNOeZ5sOsTi1YCGOopw4rYICv74ejMFg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/type': 1.1.5 + '@types/mute-stream': 0.0.4 + '@types/node': 20.10.5 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + figures: 3.2.0 + mute-stream: 1.0.0 + run-async: 3.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /@inquirer/editor@1.2.13: + resolution: {integrity: sha512-gBxjqt0B9GLN0j6M/tkEcmcIvB2fo9Cw0f5NRqDTkYyB9AaCzj7qvgG0onQ3GVPbMyMbbP4tWYxrBOaOdKpzNA==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + chalk: 4.1.2 + external-editor: 3.1.0 + dev: false + + /@inquirer/expand@1.1.14: + resolution: {integrity: sha512-yS6fJ8jZYAsxdxuw2c8XTFMTvMR1NxZAw3LxDaFnqh7BZ++wTQ6rSp/2gGJhMacdZ85osb+tHxjVgx7F+ilv5g==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/input@1.2.14: + resolution: {integrity: sha512-tISLGpUKXixIQue7jypNEShrdzJoLvEvZOJ4QRsw5XTfrIYfoWFqAjMQLerGs9CzR86yAI89JR6snHmKwnNddw==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + chalk: 4.1.2 + dev: false + + /@inquirer/password@1.1.14: + resolution: {integrity: sha512-vL2BFxfMo8EvuGuZYlryiyAB3XsgtbxOcFs4H9WI9szAS/VZCAwdVqs8rqEeaAf/GV/eZOghIOYxvD91IsRWSg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/input': 1.2.14 + '@inquirer/type': 1.1.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + dev: false + + /@inquirer/prompts@3.3.0: + resolution: {integrity: sha512-BBCqdSnhNs+WziSIo4f/RNDu6HAj4R/Q5nMgJb5MNPFX8sJGCvj9BoALdmR0HTWXyDS7TO8euKj6W6vtqCQG7A==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/checkbox': 1.5.0 + '@inquirer/confirm': 2.0.15 + '@inquirer/core': 5.1.1 + '@inquirer/editor': 1.2.13 + '@inquirer/expand': 1.1.14 + '@inquirer/input': 1.2.14 + '@inquirer/password': 1.1.14 + '@inquirer/rawlist': 1.2.14 + '@inquirer/select': 1.3.1 + dev: false + + /@inquirer/rawlist@1.2.14: + resolution: {integrity: sha512-xIYmDpYgfz2XGCKubSDLKEvadkIZAKbehHdWF082AyC2I4eHK44RUfXaoOAqnbqItZq4KHXS6jDJ78F2BmQvxg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + chalk: 4.1.2 + dev: false + + /@inquirer/select@1.3.1: + resolution: {integrity: sha512-EgOPHv7XOHEqiBwBJTyiMg9r57ySyW4oyYCumGp+pGyOaXQaLb2kTnccWI6NFd9HSi5kDJhF7YjA+3RfMQJ2JQ==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.1.1 + '@inquirer/type': 1.1.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/type@1.1.5: + resolution: {integrity: sha512-wmwHvHozpPo4IZkkNtbYenem/0wnfI6hvOcGKmPEa0DwuaH5XUQzFqy6OpEpjEegZMhYIk8HDYITI16BPLtrRA==} + engines: {node: '>=14.18.0'} + dev: false + + /@internationalized/date@3.5.1: + resolution: {integrity: sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/message@3.1.1: + resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} + dependencies: + '@swc/helpers': 0.5.3 + intl-messageformat: 10.5.8 + dev: false + + /@internationalized/number@3.5.0: + resolution: {integrity: sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/string@3.2.0: + resolution: {integrity: sha512-Xx3Sy3f2c9ctT+vh8c7euEaEHQZltp0euZ3Hy4UfT3E13r6lxpUS3kgKyumEjboJZSnaZv7JhqWz3D75v+IxQg==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.10.5 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.10.5 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.10.5 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + dev: false + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.10.5 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@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.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + + /@kamilkisiela/fast-url-parser@1.1.4: + resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} + dev: false + + /@lemonsqueezy/lemonsqueezy.js@1.2.4: + resolution: {integrity: sha512-WR/pEUvMssFVDJ4TJnbQaI0BcXtFgIBheDdwnBF4UzGyheodzx/ufYrSmd/7m1aaXLjYnLJ97bEmM0T8/DsLBA==} + dev: false + + /@limegrass/eslint-plugin-import-alias@1.1.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-nC7fz4c+HXYoE+ZP7KxSURl8nEdcvsu0mQsp6oJ8DrBu9KV1NlhCyjqBTLB1TaaMtDqU0xYKoUrge6i+SHgyVQ==} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 + find-up: 5.0.0 + fs-extra: 10.1.0 + micromatch: 4.0.5 + slash: 3.0.0 + tsconfig-paths: 3.15.0 + dev: true + + /@liveblocks/client@1.9.1: + resolution: {integrity: sha512-v7s9mCcd7i/CNSF0cUlyj3wWJWwwRbNlIv15k6I67Wf7JquMkOm0n+WQUbB1VLsSew415i3AJjnAvp6Z4GJMVg==} + dependencies: + '@liveblocks/core': 1.9.1 + dev: false + + /@liveblocks/core@1.9.1: + resolution: {integrity: sha512-D44JLvkxIJYg52WbrfB0pum15FZQ1QtwNHSAsmmJ8QioANjLMsXxYkYTn0GWL1oIDYHp8xbZlSXeYfsmnMtR9A==} + dev: false + + /@liveblocks/react@1.9.1(react@18.2.0): + resolution: {integrity: sha512-ZkfeF7HNvKxFqQ5k/WTsQ9oI/LHXBfcAHxfo37ESzdRzLDGgZIFMsvrmkX8Ksak3Q+UQA8gVpdAI5LBZjD5H/w==} + peerDependencies: + react: ^16.14.0 || ^17 || ^18 + dependencies: + '@liveblocks/client': 1.9.1 + '@liveblocks/core': 1.9.1 + nanoid: 3.3.7 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /@loglib/tracker@0.8.0(react@18.2.0): + resolution: {integrity: sha512-WShEN7s4fcmWaWgBNmx4sDNaoLPudvfmopHxeJpWTAb4SEpypRsk4Kx143UQQEvFHE+jPQi/P3m8ennpVqFWAg==} + peerDependencies: + react: ^16.8||^17||^18 + dependencies: + react: 18.2.0 + web-vitals: 3.5.0 + dev: false + + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@mdx-js/loader@3.0.0(webpack@5.89.0): + resolution: {integrity: sha512-9kLv83YtgxpoXVYHaf0ygx1dmhCffo0MQCv6KtNG67jy/JlBK/2Q0dSWfuuyStP3jnZKABHfbjv8zsiT1buu6A==} + peerDependencies: + webpack: '>=5' + dependencies: + '@mdx-js/mdx': 3.0.0 + source-map: 0.7.4 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/mdx@3.0.0: + resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdx': 2.0.10 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.0.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/mdx': 2.0.10 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + + /@ndelangen/get-tarball@3.0.9: + resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} + dependencies: + gunzip-maybe: 1.4.2 + pump: 3.0.0 + tar-fs: 2.1.1 + dev: false + + /@neondatabase/serverless@0.6.1: + resolution: {integrity: sha512-rZIyWf27WxH4eW0ZRDQT2PxUJH3AphNVEnO4x1AGjBW6XrguH3ChLokup0gNGrX8cxDbP0UyduI7qdy4OLos+A==} + dependencies: + '@types/pg': 8.6.6 + dev: false + + /@next/env@14.0.4: + resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} + dev: false + + /@next/eslint-plugin-next@14.0.4: + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + dependencies: + glob: 7.1.7 + + /@next/mdx@14.0.4(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0): + resolution: {integrity: sha512-w0b+A2LRdlqqTIzmaeqPOaafid2cYYYjETA+G+3ZFwkNbBQjvZp57P1waOexF3MGHzcCEoXEnhYpAc+FO6S0Rg==} + peerDependencies: + '@mdx-js/loader': '>=0.15.0' + '@mdx-js/react': '>=0.15.0' + peerDependenciesMeta: + '@mdx-js/loader': + optional: true + '@mdx-js/react': + optional: true + dependencies: + '@mdx-js/loader': 3.0.0(webpack@5.89.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) + source-map: 0.7.4 + dev: false + + /@next/swc-darwin-arm64@14.0.4: + resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.0.4: + resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.0.4: + resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.0.4: + resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.0.4: + resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.0.4: + resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.0.4: + resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.0.4: + resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.0.4: + resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + + /@normy/core@0.9.0: + resolution: {integrity: sha512-aw4igbkL9eMwegRDvQE2QdqNKTZnFbf7Nz1PgaTwt/SVWe/dKZGuqiJFLeHfcHGDcI7vGyI8ru/BPpnIcOiHPw==} + dependencies: + '@babel/runtime': 7.23.6 + deepmerge: 4.0.0 + dev: false + + /@normy/react-query@0.13.0(@tanstack/react-query@5.15.0): + resolution: {integrity: sha512-CVzEWA2FdQni0XXD2ZR5UjmQ59HQnH69Mf54nTYc9woVuExtHLJCu+Rae1ipDFOOqu/4KjQAG7v+74trg7sxKA==} + peerDependencies: + '@tanstack/react-query': '>=5.4.3' + dependencies: + '@normy/core': 0.9.0 + '@tanstack/react-query': 5.15.0(react@18.2.0) + dev: false + + /@npmcli/fs@1.1.1: + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.5.4 + dev: false + + /@npmcli/git@5.0.3: + resolution: {integrity: sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.0 + lru-cache: 10.1.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/map-workspaces@3.0.4: + resolution: {integrity: sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.3.10 + minimatch: 9.0.3 + read-package-json-fast: 3.0.2 + dev: true + + /@npmcli/move-file@1.1.2: + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: false + + /@npmcli/name-from-folder@2.0.0: + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.3 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@7.0.0: + resolution: {integrity: sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: true + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false + + /@panva/hkdf@1.1.1: + resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + dev: false + + /@parcel/watcher-android-arm64@2.3.0: + resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-arm64@2.3.0: + resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-x64@2.3.0: + resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-freebsd-x64@2.3.0: + resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm-glibc@2.3.0: + resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.3.0: + resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-musl@2.3.0: + resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-glibc@2.3.0: + resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-musl@2.3.0: + resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-arm64@2.3.0: + resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-ia32@2.3.0: + resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-x64@2.3.0: + resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher@2.3.0: + resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.0.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.3.0 + '@parcel/watcher-darwin-arm64': 2.3.0 + '@parcel/watcher-darwin-x64': 2.3.0 + '@parcel/watcher-freebsd-x64': 2.3.0 + '@parcel/watcher-linux-arm-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-musl': 2.3.0 + '@parcel/watcher-linux-x64-glibc': 2.3.0 + '@parcel/watcher-linux-x64-musl': 2.3.0 + '@parcel/watcher-win32-arm64': 2.3.0 + '@parcel/watcher-win32-ia32': 2.3.0 + '@parcel/watcher-win32-x64': 2.3.0 + dev: false + + /@peculiar/asn1-schema@2.3.8: + resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: false + + /@peculiar/json-schema@1.1.12: + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@peculiar/webcrypto@1.4.1: + resolution: {integrity: sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.6.2 + webcrypto-core: 1.7.7 + dev: false + + /@peculiar/webcrypto@1.4.3: + resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.6.2 + webcrypto-core: 1.7.7 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + + /@pkgr/core@0.1.0: + resolution: {integrity: sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@planetscale/database@1.13.0: + resolution: {integrity: sha512-sb9tUoF+Po55o+3PRHZVeH8XzUIABKBKcnq6oBUa+p/2uau/E2EXhnUPXmkC/x7oB6ILBqmqTL6dPP5Dn6d6iA==} + engines: {node: '>=16'} + dev: false + + /@playwright/test@1.40.1: + resolution: {integrity: sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright: 1.40.1 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@4.9.0)(webpack@5.89.0): + resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.34.0 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.4.0 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.3.0 + source-map: 0.7.4 + type-fest: 4.9.0 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /@pnpm/constants@7.1.1: + resolution: {integrity: sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/core-loggers@9.0.6(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-iK67SGbp+06bA/elpg51wygPFjNA7JKHtKkpLxqXXHw+AjFFBC3f2OznJsCIuDK6HdGi5UhHLYqo5QxJ2gMqJQ==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/logger': 5.0.0 + '@pnpm/types': 9.4.2 + dev: true + + /@pnpm/error@5.0.2: + resolution: {integrity: sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/constants': 7.1.1 + dev: true + + /@pnpm/fetching-types@5.0.0: + resolution: {integrity: sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q==} + engines: {node: '>=16.14'} + dependencies: + '@zkochan/retry': 0.2.0 + node-fetch: 3.0.0-beta.9 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/graceful-fs@3.2.0: + resolution: {integrity: sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA==} + engines: {node: '>=16.14'} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /@pnpm/logger@5.0.0: + resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} + engines: {node: '>=12.17'} + dependencies: + bole: 5.0.9 + ndjson: 2.0.0 + dev: true + + /@pnpm/npm-package-arg@1.0.0: + resolution: {integrity: sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw==} + engines: {node: '>=14.6'} + dependencies: + hosted-git-info: 4.1.0 + semver: 7.5.4 + validate-npm-package-name: 4.0.0 + dev: true + + /@pnpm/npm-resolver@18.0.2(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-YfjSHpaFgYvqMomKNLMa49pVabGvaSeEBX3J9j1v7FGtzad7SPZ+BH7ObPLHkIm4rA9K5zvuTJ8gBwMiGQJcQg==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/core-loggers': 9.0.6(@pnpm/logger@5.0.0) + '@pnpm/error': 5.0.2 + '@pnpm/fetching-types': 5.0.0 + '@pnpm/graceful-fs': 3.2.0 + '@pnpm/logger': 5.0.0 + '@pnpm/resolve-workspace-range': 5.0.1 + '@pnpm/resolver-base': 11.0.2 + '@pnpm/types': 9.4.2 + '@zkochan/retry': 0.2.0 + encode-registry: 3.0.1 + load-json-file: 6.2.0 + lru-cache: 10.1.0 + normalize-path: 3.0.0 + p-limit: 3.1.0 + p-memoize: 4.0.1 + parse-npm-tarball-url: 3.0.0 + path-temp: 2.1.0 + ramda: /@pnpm/ramda@0.28.1 + rename-overwrite: 5.0.0 + semver: 7.5.4 + ssri: 10.0.5 + version-selector-type: 3.0.0 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/ramda@0.28.1: + resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} + dev: true + + /@pnpm/resolve-workspace-range@5.0.1: + resolution: {integrity: sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg==} + engines: {node: '>=16.14'} + dependencies: + semver: 7.5.4 + dev: true + + /@pnpm/resolver-base@11.0.2: + resolution: {integrity: sha512-g6VXB/LK7DugXiCPG62qmYtuypVt44nnwyXYkTv86FKudI5d5Wy1FLkYAYKCj+No9h1GG3eSSwGH1NL0y4IbYg==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/types': 9.4.2 + dev: true + + /@pnpm/types@9.4.2: + resolution: {integrity: sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/workspace.pkgs-graph@2.0.13(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-XwpApD7dGCxL0xAwNANakxq4Ou91WMWZDF/IkMDnVGS1I3Xxh9tpQExpfpuxFPd//WofPJnxOi6AlXQS4D9bFA==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/npm-package-arg': 1.0.0 + '@pnpm/npm-resolver': 18.0.2(@pnpm/logger@5.0.0) + '@pnpm/resolve-workspace-range': 5.0.1 + ramda: /@pnpm/ramda@0.28.1 + transitivePeerDependencies: + - '@pnpm/logger' + - domexception + dev: true + + /@pothos/core@3.41.0(graphql@16.8.1): + resolution: {integrity: sha512-Nb7uPDTXVjdrWqHs5aoD1r6JEdQ9FnJYlf7gv47o1b/bb8rVDAZQaviVvaChal7YQcyFGgCFb0/YNNHLNBEjNw==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + dev: false + + /@pothos/plugin-dataloader@3.17.2(@pothos/core@3.41.0)(dataloader@2.2.2)(graphql@16.8.1): + resolution: {integrity: sha512-7naAr0th6O8iDfKV2Y4mj3hftLvoj/LnZ1qJTlZNhxGozh5Dt4ft6qz2zaP1YBN7KsvcNhMyn2eThwvHhsh5pA==} + peerDependencies: + '@pothos/core': '*' + dataloader: '2' + graphql: ^16.8.1 + dependencies: + '@pothos/core': 3.41.0(graphql@16.8.1) + dataloader: 2.2.2 + graphql: 16.8.1 + dev: false + + /@pothos/plugin-relay@3.45.1(@pothos/core@3.41.0)(graphql@16.8.1): + resolution: {integrity: sha512-rumqbqd69wAP49XffhcI+ZdXLzu18IVrN4CWSX9mFqHQEwivnltUl9aCfdSTd63oVqPi8p5pTi63Dm+YkWpK4w==} + peerDependencies: + '@pothos/core': '*' + graphql: ^16.8.1 + dependencies: + '@pothos/core': 3.41.0(graphql@16.8.1) + graphql: 16.8.1 + dev: false + + /@preact/signals-core@1.5.1: + resolution: {integrity: sha512-dE6f+WCX5ZUDwXzUIWNMhhglmuLpqJhuy3X3xHrhZYI0Hm2LyQwOu0l9mdPiWrVNsE+Q7txOnJPgtIqHCYoBVA==} + dev: false + + /@preact/signals-react@2.0.0(react@18.2.0): + resolution: {integrity: sha512-tMVi2SXFXlojaiPNWa8dlYaidR/XvEgMSp+iymKJgMssBM/QVtUQrodKZek1BJju+dkVHiyeuQHmkuLOI9oyNw==} + peerDependencies: + react: ^16.14.0 || 17.x || 18.x + dependencies: + '@preact/signals-core': 1.5.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /@radix-ui/number@1.0.1: + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /@radix-ui/primitive@1.0.0: + resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(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.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + dev: false + + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-context@1.0.0(react@18.2.0): + resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + dev: false + + /@radix-ui/react-context@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-dialog@1.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@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) + '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.0(react@18.2.0) + '@radix-ui/react-portal': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.0(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0) + dev: false + + /@radix-ui/react-direction@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@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) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.0(react@18.2.0): + resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + dev: false + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@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) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-icons@1.3.0(react@18.2.0): + resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x + dependencies: + react: 18.2.0 + dev: false + + /@radix-ui/react-id@1.0.0(react@18.2.0): + resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-id@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0) + dev: false + + /@radix-ui/react-menubar@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bHgUo9gayKZfaQcWSSLr++LyS0rgh+MvD89DE4fJ6TkGHvjHgPaBZf44hdka7ogOxIOdj9163J+5xL2Dn4qzzg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0) + dev: false + + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@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.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@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) + dev: false + + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@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 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-slot': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@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.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0) + dev: false + + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-slider@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@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.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-slot@1.0.0(react@18.2.0): + resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-slot@1.0.2(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0): + resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): + resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0): + resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): + resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: '@types/react': '*' '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: - '@types/react': + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /@react-aria/breadcrumbs@3.5.9(react@18.2.0): + resolution: {integrity: sha512-asbXTL5NjeHl1+YIF0K70y8tNHk8Lb6VneYH8yOkpLO49ejyNDYBK0tp0jtI9IZAQiTa2qkhYq58c9LloTwebQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/link': 3.6.3(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/breadcrumbs': 3.7.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/button@3.9.1(react@18.2.0): + resolution: {integrity: sha512-nAnLMUAnwIVcRkKzS1G2IU6LZSkIWPJGu9amz/g7Y02cGUwFp3lk5bEw2LdoaXiSDJNSX8g0SZFU8FROg57jfQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/calendar@3.5.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-8k7khgea5kwfWriZJWCADNB0R2d7g5A6tTjUEktK4FFZcTb0RCubFejts4hRyzKlF9XHUro2dfh6sbZrzfMKDQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/calendar': 3.4.3(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/checkbox@3.13.0(react@18.2.0): + resolution: {integrity: sha512-eylJwtADIPKJ1Y5rITNJm/8JD8sXG2nhiZBIg1ko44Szxrpu+Le53NoGtg8nlrfh9vbUrXVvuFtf2jxbPXR5Jw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/toggle': 3.10.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/checkbox': 3.6.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/combobox@3.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0Zsy91WC2uhnIjtProL1E5qRjBtRVdsNgpr8T9QCQht4i2sHd8L/srrOx7b6vRIngUMZq7GofOpQcKVdxx4kEA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/combobox': 3.8.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/combobox': 3.10.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/datepicker@3.9.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bdlY2H/zwe3hQf64Lp1oGTf7Va8ennDyAv4Ffowb+BOoL8+FB9smtGyONKe87zXu7VJL2M5xYAi4n7c004PM+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/number': 3.5.0 + '@internationalized/string': 3.2.0 + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/datepicker': 3.9.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/datepicker': 3.7.1(react@18.2.0) + '@react-types/dialog': 3.5.7(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dialog@3.5.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Eg5pFJN3b5NitKL60nf30iPpQGCyOcU4YakUVn5+GWKLBlm8ryE8jyoIIO0e0LCM65K+fL+gGHGK01GCZyKrpQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/dialog': 3.5.7(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dnd@3.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7OPGePdle+xNYHAIAUOvIETRMfnkRt7h/C0bCkxUR2GYefEbTzfraso4ppNH2JZ7fCRd0K/Qe+jvQklwusHAKA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/string': 3.2.0 + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/dnd': 3.2.7(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/focus@3.16.0(react@18.2.0): + resolution: {integrity: sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + + /@react-aria/form@3.0.1(react@18.2.0): + resolution: {integrity: sha512-6586oODMDR4/ciGRwXjpvEAg7tWGSDrXE//waK0n5e5sMuzlPOo1DHc5SpPTvz0XdJsu6VDt2rHdVWVIC9LEyw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/grid@3.8.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JlQDkdm5heG1FfRyy5KnB8b6s/hRqSI6Xt2xN2AccLX5kcbfFr2/d5KVxyf6ahfa4Gfd46alN6477ju5eTWJew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/grid': 3.8.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/virtualizer': 3.6.6(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/gridlist@3.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rkkepYM7xJiebR0g3uC4zzkdR7a8z0fLaM+sg9lSTbdElHMLAlrebS2ytEyZnhiu9nbOnw13GN1OC4/ZenzbHQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/i18n@3.10.0(react@18.2.0): + resolution: {integrity: sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/message': 3.1.1 + '@internationalized/number': 3.5.0 + '@internationalized/string': 3.2.0 + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/interactions@3.20.1(react@18.2.0): + resolution: {integrity: sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/label@3.7.4(react@18.2.0): + resolution: {integrity: sha512-3Y0yyrqpLzZdzHw+TOyzwuyx5wa2ujU5DGfKuL5GFnU9Ii4DtdwBGSYS7Yu7qadU+eQmG4OGhAgFVswbIgIwJw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/link@3.6.3(react@18.2.0): + resolution: {integrity: sha512-8kPWc4u/lDow3Ll0LDxeMgaxt9Y3sl8UldKLGli8tzRSltYFugNh/n+i9sCnmo4Qv9Tp9kYv+yxBK50Uk9sINw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/link': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/listbox@3.11.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PBrnldmyEYUUJvfDeljW8ITvZyBTfGpLNf0b5kfBPK3TDgRH4niEH2vYEcaZvSqb0FrpdvcunuTRXcOpfb+gCQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/listbox': 3.4.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/live-announcer@3.3.1: + resolution: {integrity: sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@react-aria/menu@3.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Nsujv3b61WR0gybDKnBjAeyxDVJOfPLMggRUf9SQDfPWnrPXEsAFxaPaVcAkzlfI4HiQs1IxNwsKFNpc3PPZTQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/menu': 3.6.0(react@18.2.0) + '@react-stately/tree': 3.7.5(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/menu': 3.9.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/meter@3.4.9(react@18.2.0): + resolution: {integrity: sha512-1/FHFmFmSyfQBJ2oH152lp4nps76v1UdhnFbIsmRIH+0g0IfMv1yDT2M9dIZ/b9DgVZSx527FmWOXm0eHGKD6w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/progress': 3.4.9(react@18.2.0) + '@react-types/meter': 3.3.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/numberfield@3.10.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9rt+O63UL3zKR99c+8njbtBeVoEhitzzSCFWsqbtStyoUEV5tJQDgD9kSlozFLAzYftq2pJ7uazlptMEXyS13g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/numberfield': 3.8.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/numberfield': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/overlays@3.20.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/progress@3.4.9(react@18.2.0): + resolution: {integrity: sha512-CME1ZLsJHOmSgK8IAPOC/+vYO5Oc614mkEw5MluT/yclw5rMyjAkK1XsHLjEXy81uwPeiRyoQQIMPKG2/sMxFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/progress': 3.5.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/radio@3.10.0(react@18.2.0): + resolution: {integrity: sha512-6NaKzdGymdcVWLYgHT0cHsVmNzPOp89o8r41w29OPBQWu8w2c9mxg4366OiIZn/uXIBS4abhQ4nL4toBRLgBrg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/radio': 3.10.1(react@18.2.0) + '@react-types/radio': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/searchfield@3.7.0(react@18.2.0): + resolution: {integrity: sha512-btBbkIwsExXWv5av62gINEbm4QFmDDT7r+d5TAKin5tvKqU8zrsM9fm7KCDEhIGcpUW+q2AUS589iw19z9uCcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/searchfield': 3.5.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/searchfield': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/select@3.14.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pAy/+Xbj11Lx6bi/O1hWH0NSIDRxFb6V7N0ry2L8x7MALljh516VbpnAc5RgvbjbuKq0cHUAcdINOzOzpYWm4A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/select': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/selection@3.17.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xl2sgeGH61ngQeE05WOWWPVpGRTPMjQEFmsAWEprArFi4Z7ihSZgpGX22l1w7uSmtXM/eN/v0W8hUYUju5iXlQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/separator@3.3.9(react@18.2.0): + resolution: {integrity: sha512-1wEXiaSJjq2+DR5TC0RKnUBsfZN+YXTzyI7XMzjQoc3YlclumX8wQtzPAOGOEjHB1JKUgo1Gw70FtupVXz58QQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/slider@3.7.4(react@18.2.0): + resolution: {integrity: sha512-OFJWeGSL2duVDFs/kcjlWsY6bqCVKZgM0aFn2QN4wmID+vfBvBnqGHAgWv3BCePTAPS3+GBjMN002TrftorjwQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/slider': 3.5.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/slider': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/spinbutton@3.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-u5GuOP3k4Zis055iY0fZJNHU7dUNCoSfUq5LKwJ1iNaCqDcavdstAnAg+X1a7rhpp5zCnJmAMseo3Qmzi9P+Ew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/ssr@3.9.1(react@18.2.0): + resolution: {integrity: sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/switch@3.6.0(react@18.2.0): + resolution: {integrity: sha512-YNWc5fGLNXE4XlmDAKyqAdllRiClGR7ki4KGFY7nL+xR5jxzjCGU3S3ToMK5Op3QSMGZLxY/aYmC4O+MvcoADQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/toggle': 3.10.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/switch': 3.5.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/table@3.13.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AzmETpyxwNqISTzwHJPs85x9gujG40IIsSOBUdp49oKhB85RbPLvMwhadp4wCVAoHw3erOC/TJxHtVc7o2K1LA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/table': 3.11.4(react@18.2.0) + '@react-stately/virtualizer': 3.6.6(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/table': 3.9.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tabs@3.8.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Plw0K/5Qv35vYq7pHZFfQB2BF5OClFx4Abzo9hLVx4oMy3qb7i5lxmLBVbt81yPX/MdjYeP4zO1EHGBl4zMRhA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/tabs': 3.6.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tabs': 3.3.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tag@3.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-w7d8sVZqxTo8VFfeg2ixLp5kawtrcguGznVY4mt5aE6K8LMJOeNVDqNNfolfyia80VjOWjeX+RpVdVJRdrv/GQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/textfield@3.14.0(react@18.2.0): + resolution: {integrity: sha512-LtHFcPK/N9m3KWSRM5KdmlIk7cUEk0OF+uBUrfKsGGc1bJKVToimdW7jQusChHmHhslHUR7WQ4KDjXyFjoLXOw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/textfield': 3.9.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/toggle@3.10.0(react@18.2.0): + resolution: {integrity: sha512-6cUf4V9TuG2J7AvXUdU/GspEPFCubUOID3mrselSe563RViy+mMZk0vUEOdyoNanDcEXl58W4dE3SGWxFn71vg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/toolbar@3.0.0-beta.1(react@18.2.0): + resolution: {integrity: sha512-GTQ76i0N8/BzWRJ/95RpOFGmbtv0lV3T2zd7CUis6xmP1zJCpSycs1V2jAUs6ggkVDedHLU2d0AOMkXorZLiUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/tooltip@3.7.0(react@18.2.0): + resolution: {integrity: sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/tooltip': 3.4.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tooltip': 3.4.6(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/utils@3.23.0(react@18.2.0): + resolution: {integrity: sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + + /@react-aria/visually-hidden@3.8.8(react@18.2.0): + resolution: {integrity: sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-email/render@0.0.9: + resolution: {integrity: sha512-nrim7wiACnaXsGtL7GF6jp3Qmml8J6vAjAH88jkC8lIbfNZaCyuPQHANjyYIXlvQeAbsWADQJFZgOHUqFqjh/A==} + engines: {node: '>=18.0.0'} + dependencies: + html-to-text: 9.0.5 + pretty: 2.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-native/normalize-color@2.1.0: + resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} + dev: false + + /@react-rxjs/core@0.10.7(react@18.2.0)(rxjs@7.8.1): + resolution: {integrity: sha512-dornp8pUs9OcdqFKKRh9+I2FVe21gWufNun6RYU1ddts7kUy9i4Thvl0iqcPFbGY61cJQMAJF7dxixWMSD/A/A==} + peerDependencies: + react: '>=16.8.0' + rxjs: '>=7' + dependencies: + '@rx-state/core': 0.1.4(rxjs@7.8.1) + react: 18.2.0 + rxjs: 7.8.1 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /@react-rxjs/utils@0.9.7(@react-rxjs/core@0.10.7)(react@18.2.0)(rxjs@7.8.1): + resolution: {integrity: sha512-m9CUTdRsglObvUAlYfB24QvN+QH4XqCGEKnCdSILIeOx7mMqSi9TTFp2zrj5XqtMiLnj4ReAdDxrXegLPB73bQ==} + peerDependencies: + '@react-rxjs/core': '>=0.1.0' + react: '>=16.8.0' + rxjs: '>=6' + dependencies: + '@react-rxjs/core': 0.10.7(react@18.2.0)(rxjs@7.8.1) + react: 18.2.0 + rxjs: 7.8.1 + dev: false + + /@react-stately/calendar@3.4.3(react@18.2.0): + resolution: {integrity: sha512-OrEcdskszDjnjVnFuSiDC2PVBJ6lWMCJROD5s6W1LUehUtBp8LX9wPavAGHV43LbhN9ldj560sxaQ4WCddrRCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/checkbox@3.6.1(react@18.2.0): + resolution: {integrity: sha512-rOjFeVBy32edYwhKiHj3ZLdLeO+xZ2fnBwxnOBjcygnw4Neygm8FJH/dB1J0hdYYR349yby86ED2x0wRc84zPw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/collections@3.10.4(react@18.2.0): + resolution: {integrity: sha512-OHhCrItGt4zB2bSrgObRo0H2SC7QlkH8ReGxo+NVIWchXRLRoiWBP7S+IwleewEo5gOqDVPY3hqA9n4iiI8twg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/combobox@3.8.1(react@18.2.0): + resolution: {integrity: sha512-FaWkqTXQdWg7ptaeU4iPcqF/kxbRg2ZNUcvW/hiL/enciV5tRCsddvfNqvDvy1L30z9AUwlp9MWqzm/DhBITCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/combobox': 3.10.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/data@3.11.0(react@18.2.0): + resolution: {integrity: sha512-0BlPT58WrAtUvpiEfUuyvIsGFTzp/9vA5y+pk53kGJhOdc5tqBGHi9cg40pYE/i1vdHJGMpyHGRD9nkQb8wN3Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/datepicker@3.9.1(react@18.2.0): + resolution: {integrity: sha512-o5xLvlZGJyAbTev2yruGlV2fzQyIDuYTgL19TTt0W0WCfjGGr/AAA9GjGXXmyoRA7sZMxqIPnnv7lNrdA38ofA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/string': 3.2.0 + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/datepicker': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/dnd@3.2.7(react@18.2.0): + resolution: {integrity: sha512-QqSCvE9Rhp+Mr8Mt/SrByze24BFX1cy7gmXbwoqAYgHNIx3gWCVdBLqxfpfgYIhZdF9H72EWS8lQkfkZla06Ng==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/flags@3.0.0: + resolution: {integrity: sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==} + dependencies: + '@swc/helpers': 0.4.36 + dev: false + + /@react-stately/form@3.0.0(react@18.2.0): + resolution: {integrity: sha512-C8wkfFmtx1escizibhdka5JvTy9/Vp173CS9cakjvWTmnjYYC1nOlzwp7BsYWTgerCFbRY/BU/Cf/bJDxPiUKQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/grid@3.8.4(react@18.2.0): + resolution: {integrity: sha512-rwqV1K4lVhaiaqJkt4TfYqdJoVIyqvSm98rKAYfCNzrKcivVpoiCMJ2EMt6WlYCjDVBdEOQ7fMV1I60IV0pntA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/list@3.10.2(react@18.2.0): + resolution: {integrity: sha512-INt+zofkIg2KN8B95xPi9pJG7ZFWAm30oIm/lCPBqM3K1Nm03/QaAbiQj2QeJcOsG3lb7oqI6D6iwTolwJkjIQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/menu@3.6.0(react@18.2.0): + resolution: {integrity: sha512-OB6CjNyfOkAuirqx1oTL8z8epS9WDzLyrXjmRnxdiCU9EgRXLGAQNECuO7VIpl58oDry8tgRJiJ8fn8FivWSQA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/menu': 3.9.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/numberfield@3.8.0(react@18.2.0): + resolution: {integrity: sha512-1XvB8tDOvZKcFnMM6qNLEaTVJcIc0jRFS/9jtS8MzalZvh8DbKi0Ucm1bGU7S5rkCx2QWqZ0rGOIm2h/RlcpkA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/number': 3.5.0 + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/numberfield': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/overlays@3.6.4(react@18.2.0): + resolution: {integrity: sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/radio@3.10.1(react@18.2.0): + resolution: {integrity: sha512-MsBYbcLCvjKsqTAKe43T681F2XwKMsS7PLG0eplZgWP9210AMY78GeY1XPYZKHPAau8XkbYiuJqbqTerIJ3DBw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/radio': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/searchfield@3.5.0(react@18.2.0): + resolution: {integrity: sha512-SStjChkn/33pEn40slKQPnBnmQYyxVazVwPjiBkdeVejC42lUVairUTrGJgF0PNoZTbxn0so2/XzjqTC9T8iCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/searchfield': 3.5.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/select@3.6.1(react@18.2.0): + resolution: {integrity: sha512-e5ixtLiYLlFWM8z1msDqXWhflF9esIRfroptZsltMn1lt2iImUlDRlOTZlMtPQzUrDWoiHXRX88sSKUM/jXjQQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/select': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/selection@3.14.2(react@18.2.0): + resolution: {integrity: sha512-mL7OoiUgVWaaF7ks5XSxgbXeShijYmD4G3bkBHhqkpugU600QH6BM2hloCq8KOUupk1y8oTljPtF9EmCv375DA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/slider@3.5.0(react@18.2.0): + resolution: {integrity: sha512-dOVpIxb7XKuiRxgpHt1bUSlsklciFki100tKIyBPR+Okar9iC/CwLYROYgVfLkGe77jEBNkor9tDLjDGEWcc1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/slider': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/table@3.11.4(react@18.2.0): + resolution: {integrity: sha512-dWINJIEOKQl4qq3moq+S8xCD3m+yJqBj0dahr+rOkS+t2uqORwzsusTM35D2T/ZHZi49S2GpE7QuDa+edCynPw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/grid': 3.8.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/table': 3.9.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tabs@3.6.3(react@18.2.0): + resolution: {integrity: sha512-Nj+Gacwa2SIzYIvHW40GsyX4Q6c8kF7GOuXESeQswbCjnwqhrSbDBp+ngPcUPUJxqFh6JhDCVwAS3wMhUoyUwA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tabs': 3.3.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/toggle@3.7.0(react@18.2.0): + resolution: {integrity: sha512-TRksHkCJk/Xogq4181g3CYgJf+EfsJCqX5UZDSw1Z1Kgpvonjmdf6FAfQfCh9QR2OuXUL6hOLUDVLte5OPI+5g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tooltip@3.4.6(react@18.2.0): + resolution: {integrity: sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/tooltip': 3.4.6(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tree@3.7.5(react@18.2.0): + resolution: {integrity: sha512-xTJVwvhAeY0N5rui4N/TxN7f8hjXdqApDuGDxMZeFAWoQz8Abf7LFKBVQ3OkT6qVr7P+23dgoisUDBhD5a45Hg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/utils@3.9.0(react@18.2.0): + resolution: {integrity: sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/virtualizer@3.6.6(react@18.2.0): + resolution: {integrity: sha512-9hWvfITdE/028q4YFve6FxlmA3PdSMkUwpYA+vfaGCXI/4DFZIssBMspUeu4PTRJoV+k+m0z1wYHPmufrq6a3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-types/breadcrumbs@3.7.2(react@18.2.0): + resolution: {integrity: sha512-esl6RucDW2CNMsApJxNYfMtDaUcfLlwKMPH/loYsOBbKxGl2HsgVLMcdpjEkTRs2HCTNCbBXWpeU8AY77t+bsw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/link': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/button@3.9.1(react@18.2.0): + resolution: {integrity: sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/calendar@3.4.3(react@18.2.0): + resolution: {integrity: sha512-96x57ctX5wNEl+8et3sc2NQm8neOJayEeqOQQpyPtI7jyvst/xBrKCwysf9W/dhgPlUC+KeBAYFWfjd5hFVHYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/checkbox@3.6.0(react@18.2.0): + resolution: {integrity: sha512-vgbuJzQpVCNT5AZWV0OozXCnihqrXxoZKfJFIw0xro47pT2sn3t5UC4RA9wfjDGMoK4frw1K/4HQLsQIOsPBkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/combobox@3.10.0(react@18.2.0): + resolution: {integrity: sha512-1IXSNS02TPbguyYopaW2snU6sZusbClHrEyVr4zPeexTV4kpUUBNXOzFQ+eSQRR0r2XW57Z0yRW4GJ6FGU0yCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/datepicker@3.7.1(react@18.2.0): + resolution: {integrity: sha512-5juVDULOytNzkotqX8j5mYKJckeIpkgbHqVSGkPgLw0++FceIaSZ6RH56cqLup0pO45paqIt9zHh+QXBYX+syg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/dialog@3.5.7(react@18.2.0): + resolution: {integrity: sha512-geYoqAyQaTLG43AaXdMUVqZXYgkSifrD9cF7lR2kPAT0uGFv0YREi6ieU+aui8XJ83EW0xcxP+EPWd2YkN4D4w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/form@3.7.0(react@18.2.0): + resolution: {integrity: sha512-IPmFCh3/psQqJ9X+64tpdHyRNGXDzKvsHfZq27WVxkEDN2KC0g3nnVvuwKXY6gdzYEl6B4RRcmAk8bmGoZpvqg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/grid@3.2.3(react@18.2.0): + resolution: {integrity: sha512-GQM4RDmYhstcYZ0Odjq+xUwh1fhLmRebG6qMM8OXHTPQ77nhl3wc1UTGRhZm6mzEionplSRx4GCpEMEHMJIU0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/link@3.5.2(react@18.2.0): + resolution: {integrity: sha512-/s51/WejmpLiyxOgP89s4txgxYoGaPe8pVDItVo1h4+BhU1Puyvgv/Jx8t9dPvo6LUXbraaN+SgKk/QDxaiirw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/listbox@3.4.6(react@18.2.0): + resolution: {integrity: sha512-XOQvrTqNh5WIPDvKiWiep8T07RAsMfjAXTjDbnjxVlKACUXkcwpts9kFaLnJ9LJRFt6DwItfP+WMkzvmx63/NQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/menu@3.9.6(react@18.2.0): + resolution: {integrity: sha512-w/RbFInOf4nNayQDv5c2L8IMJbcFOkBhsT3xvvpTy+CHvJcQdjggwaV1sRiw7eF/PwB81k2CwigmidUzHJhKDg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/meter@3.3.6(react@18.2.0): + resolution: {integrity: sha512-1XYp1fA9UU0lO6kjf3TwVE8mppOJa64mBKAcLWtTyq1e/cYIAbx5o6CsuUx0YDpXKF6gdtvIWvfmxeWsmqJ1jQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/progress': 3.5.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/numberfield@3.7.0(react@18.2.0): + resolution: {integrity: sha512-gaGi+vqm1Y8LCWRsWYUjcGftPIzl+8W2VOfkgKMLM8y76nnwTPtmAqs+Ap1cg7sEJSfsiKMq93e9yvP3udrC2w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/overlays@3.8.4(react@18.2.0): + resolution: {integrity: sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/progress@3.5.1(react@18.2.0): + resolution: {integrity: sha512-CqsUjczUK/SfuFzDcajBBaXRTW0D3G9S/yqLDj9e8E0ii+lGDLt1PHj24t1J7E88U2rVYqmM9VL4NHTt8o3IYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/radio@3.7.0(react@18.2.0): + resolution: {integrity: sha512-EcwGAXzSHjSqpFZha7xn3IUrhPiJLj+0yb1Ip0qPmhWz0VVw2DwrkY7q/jfaKroVvQhTo2TbfGhcsAQrt0fRqg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/searchfield@3.5.2(react@18.2.0): + resolution: {integrity: sha512-JAK2/Kg4Dr393FYfbRw0TlXKnJPX77sq1x/ZBxtO6p64+MuuIYKqw0i9PwDlo1PViw2QI5u8GFhKA2TgemY9uA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/textfield': 3.9.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/select@3.9.1(react@18.2.0): + resolution: {integrity: sha512-EpKSxrnh8HdZvOF9dHQkjivAcdIp1K81FaxmvosH8Lygqh0iYXxAdZGtKLMyBoPI8YFhA+rotIzTcOqgCCnqWA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/shared@3.22.0(react@18.2.0): + resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /@react-types/slider@3.7.0(react@18.2.0): + resolution: {integrity: sha512-uyQXUVFfqc9SPUW0LZLMan2n232F/OflRafiHXz9viLFa9tVOupVa7GhASRAoHojwkjoJ1LjFlPih7g5dOZ0/Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/switch@3.5.0(react@18.2.0): + resolution: {integrity: sha512-/wNmUGjk69bP6t5k2QkAdrNN5Eb9Rz4dOyp0pCPmoeE+5haW6sV5NmtkvWX1NSc4DQz1xL/a5b+A0vxPCP22Jw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/table@3.9.2(react@18.2.0): + resolution: {integrity: sha512-brw5JUANOzBa2rYNpN8AIl9nDZ9RwRZC6G/wTM/JhtirjC1S42oCtf8Ap5rWJBdmMG/5KOfcGNcAl/huyqb3gg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/tabs@3.3.4(react@18.2.0): + resolution: {integrity: sha512-4mCTtFrwMRypyGTZCvNYVT9CkknexO/UYvqwDm2jMYb8JgjRvxnomu776Yh7uyiYKWyql2upm20jqasEOm620w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/textfield@3.9.0(react@18.2.0): + resolution: {integrity: sha512-D/DiwzsfkwlAg3uv8hoIfwju+zhB/hWDEdTvxQbPkntDr0kmN/QfI17NMSzbOBCInC4ABX87ViXLGxr940ykGA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/tooltip@3.4.6(react@18.2.0): + resolution: {integrity: sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@redux-devtools/extension@3.3.0(redux@5.0.1): + resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==} + peerDependencies: + redux: ^3.1.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@babel/runtime': 7.23.6 + immutable: 4.3.4 + redux: 5.0.1 + dev: false + + /@repeaterjs/repeater@3.0.5: + resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} + dev: false + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rushstack/eslint-patch@1.6.1: + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + dev: false + + /@rx-state/core@0.1.4(rxjs@7.8.1): + resolution: {integrity: sha512-Z+3hjU2xh1HisLxt+W5hlYX/eGSDaXXP+ns82gq/PLZpkXLu0uwcNUh9RLY3Clq4zT+hSsA3vcpIGt6+UAb8rQ==} + peerDependencies: + rxjs: '>=7' + dependencies: + rxjs: 7.8.1 + dev: false + + /@segment/loosely-validate-event@2.0.0: + resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} + dependencies: + component-type: 1.2.2 + join-component: 1.1.0 + dev: false + + /@selderee/plugin-htmlparser2@0.11.0: + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/fnv1a@2.0.1: + resolution: {integrity: sha512-suq9tRQ6bkpMukTG5K5z0sPWB7t0zExMzZCdmYm6xTSSIm/yCKNm7VCL36wVeyTsFr597/UhU1OAYdHGMDiHrw==} + engines: {node: '>=10'} + dev: true + + /@sindresorhus/is@0.14.0: + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + dev: true + + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + + /@sindresorhus/slugify@1.1.2: + resolution: {integrity: sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==} + engines: {node: '>=10'} + dependencies: + '@sindresorhus/transliterate': 0.1.2 + escape-string-regexp: 4.0.0 + dev: false + + /@sindresorhus/transliterate@0.1.2: + resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + lodash.deburr: 4.1.0 + dev: false + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@snyk/github-codeowners@1.1.0: + resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} + engines: {node: '>=8.10'} + hasBin: true + dependencies: + commander: 4.1.1 + ignore: 5.3.0 + p-map: 4.0.0 + dev: true + + /@storybook/addon-actions@8.0.0-alpha.5: + resolution: {integrity: sha512-JwdAQ87m8GBF3WfNzbLb4xvscoU3FIQrSmuzu3Mypr8Bc5q3aukW7akncMGU9jHX3b3iKCBZjzNOErTUJaZc1Q==} + dependencies: + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.7 + dequal: 2.0.3 + polished: 4.2.2 + uuid: 9.0.1 + dev: false + + /@storybook/builder-manager@8.0.0-alpha.5: + resolution: {integrity: sha512-l36aIXN3mqAKFqZ7Ea3UcHxHhNeR5r6irjuJEa6ZnvwWVrsKXXL+bzoGi0RszEC+OZq8hK6wykhbN2NslgWrSQ==} + dependencies: + '@fal-works/esbuild-plugin-global-externals': 2.1.2 + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/manager': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@types/ejs': 3.1.5 + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) + browser-assert: 1.2.1 + ejs: 3.1.9 + esbuild: 0.18.20 + esbuild-plugin-alias: 0.2.1 + express: 4.18.2 + fs-extra: 11.2.0 + process: 0.11.10 + util: 0.12.5 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/builder-webpack5@8.0.0-alpha.5(esbuild@0.18.20)(typescript@5.3.3): + resolution: {integrity: sha512-KxSK/Fs9NUegY0XuWCLH7gQrtxP37eDdHDfR/BUrZN4qUQsNBYZJVeeF1LdP0KQc95sr2R0Hi8qUJi9+5T+oMA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@storybook/channels': 8.0.0-alpha.5 + '@storybook/client-logger': 8.0.0-alpha.5 + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/core-webpack': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/preview': 8.0.0-alpha.5 + '@storybook/preview-api': 8.0.0-alpha.5 + '@swc/core': 1.3.101 + '@types/node': 18.19.3 + '@types/semver': 7.5.6 + babel-loader: 9.1.3(@babel/core@7.23.6)(webpack@5.89.0) + browser-assert: 1.2.1 + case-sensitive-paths-webpack-plugin: 2.4.0 + constants-browserify: 1.0.0 + css-loader: 6.8.1(webpack@5.89.0) + es-module-lexer: 1.4.1 + express: 4.18.2 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.3.3)(webpack@5.89.0) + fs-extra: 11.2.0 + html-webpack-plugin: 5.6.0(webpack@5.89.0) + magic-string: 0.30.5 + path-browserify: 1.0.1 + process: 0.11.10 + semver: 7.5.4 + style-loader: 3.3.3(webpack@5.89.0) + swc-loader: 0.2.3(@swc/core@1.3.101)(webpack@5.89.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.101)(esbuild@0.18.20)(webpack@5.89.0) + ts-dedent: 2.2.0 + typescript: 5.3.3 + url: 0.11.3 + util: 0.12.5 + util-deprecate: 1.0.2 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + webpack-dev-middleware: 6.1.1(webpack@5.89.0) + webpack-hot-middleware: 2.26.0 + webpack-virtual-modules: 0.5.0 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/helpers' + - encoding + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + + /@storybook/channels@8.0.0-alpha.5: + resolution: {integrity: sha512-pKjGmy2ptMTqx8j83WVCTBCUwpf+uBPbSk2xVPK47YZspQjuFKWFEhPbJ9Epjvd56zgP/L9W9gaAfZAgLjG0tA==} + dependencies: + '@storybook/client-logger': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/global': 5.0.0 + qs: 6.11.2 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + dev: false + + /@storybook/cli@8.0.0-alpha.5: + resolution: {integrity: sha512-Y0PpvWHgxcxR6xEgdYiQ0x03CA+e3dVyD8kiXa/Juolil6lmBKlk1beYp1HPkIF4y1EWMZSGe3cTd3uem/nskA==} + hasBin: true + dependencies: + '@babel/core': 7.23.6 + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@ndelangen/get-tarball': 3.0.9 + '@storybook/codemod': 8.0.0-alpha.5 + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/core-server': 8.0.0-alpha.5 + '@storybook/csf-tools': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/telemetry': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/semver': 7.5.6 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.11.0 + execa: 5.1.1 + express: 4.18.2 + find-up: 5.0.0 + fs-extra: 11.2.0 + get-npm-tarball-url: 2.1.0 + get-port: 5.1.1 + giget: 1.2.1 + globby: 11.1.0 + jscodeshift: 0.15.1(@babel/preset-env@7.23.6) + leven: 3.1.0 + ora: 5.4.1 + prettier: 2.8.8 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.5.4 + simple-update-notifier: 2.0.0 + strip-json-comments: 3.1.1 + tempy: 1.0.1 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@storybook/client-logger@8.0.0-alpha.5: + resolution: {integrity: sha512-X+imMSJCvpknq7IgRGR2lUjMKSPB7pnEy74a8BsQy/6mzEMzps7VQ0wXsk+lIjakzgN48X+KWfX8OKTIePS4Kg==} + dependencies: + '@storybook/global': 5.0.0 + dev: false + + /@storybook/codemod@8.0.0-alpha.5: + resolution: {integrity: sha512-sd1EIvq8KW9hJ5e+/Q1C4la7YSsfUvxyVB51m3DTLq0E3rDAlD/XYCCsvzaqjlWh+GPY6i9XI/xKQZVel3nzWw==} + dependencies: + '@babel/core': 7.23.6 + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@storybook/csf': 0.1.2 + '@storybook/csf-tools': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/cross-spawn': 6.0.6 + cross-spawn: 7.0.3 + globby: 11.1.0 + jscodeshift: 0.15.1(@babel/preset-env@7.23.6) + lodash: 4.17.21 + prettier: 2.8.8 + recast: 0.23.4 + tiny-invariant: 1.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@storybook/core-common@8.0.0-alpha.5: + resolution: {integrity: sha512-JLPt95RBWlrRKFdxULvRKvR5MeLX/GAe5rt9BFmXL1J265Q1XM5WLZ85VJZq98qaj5Nsm0Jk6gxwNZ/FwoLB0g==} + dependencies: + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/find-cache-dir': 3.2.1 + '@types/node': 18.19.3 + '@types/node-fetch': 2.6.9 + '@types/pretty-hrtime': 1.0.3 + chalk: 4.1.2 + esbuild: 0.18.20 + esbuild-register: 3.5.0(esbuild@0.18.20) + file-system-cache: 2.3.0 + find-cache-dir: 3.3.2 + find-up: 5.0.0 + fs-extra: 11.2.0 + glob: 10.3.10 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.7.0 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/core-events@8.0.0-alpha.5: + resolution: {integrity: sha512-LofmGs/7U2ExGHGFBcx5CHiX0jEx0KUv4PLT5+t5bGeJRGYwUmHRcb4v/if03DtnmztgELYW3RP3+kMkWk3rEg==} + dependencies: + ts-dedent: 2.2.0 + dev: false + + /@storybook/core-server@8.0.0-alpha.5: + resolution: {integrity: sha512-L1jOiDuuqLT1XiUIDssoCXGxkOwfaZ1fohJs43amwOXojw2Ut6KMVPf/nfgLTYi0rNWoA5ZDNlUfgpEUSuY3KA==} + dependencies: + '@aw-web-design/x-default-browser': 1.4.126 + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-manager': 8.0.0-alpha.5 + '@storybook/channels': 8.0.0-alpha.5 + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/csf': 0.1.2 + '@storybook/csf-tools': 8.0.0-alpha.5 + '@storybook/docs-mdx': 0.1.0 + '@storybook/global': 5.0.0 + '@storybook/manager': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/preview-api': 8.0.0-alpha.5 + '@storybook/telemetry': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/detect-port': 1.3.5 + '@types/node': 18.19.3 + '@types/pretty-hrtime': 1.0.3 + '@types/semver': 7.5.6 + better-opn: 3.0.2 + chalk: 4.1.2 + cli-table3: 0.6.3 + compression: 1.7.4 + detect-port: 1.5.1 + express: 4.18.2 + fs-extra: 11.2.0 + globby: 11.1.0 + ip: 2.0.0 + lodash: 4.17.21 + open: 8.4.2 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.5.4 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 + util: 0.12.5 + util-deprecate: 1.0.2 + watchpack: 2.4.0 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@storybook/core-webpack@8.0.0-alpha.5: + resolution: {integrity: sha512-iqNHToAId0pXLqKZBL4VrVOAZ4fSfCSV3Ny4zYH/q3AMNse1H+eG8W1Gx/97zytXS+aVgYFddUVLkHuoLSOGTw==} + dependencies: + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/node': 18.19.3 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/csf-tools@8.0.0-alpha.5: + resolution: {integrity: sha512-0LynmHDko/qi6TustGAdjg17HVpbHfUNUNqxW9gf1u6TbcPjQqY5J+iB5IZc5aVdkACW8T+jHpG75EKMVhPC9g==} + dependencies: + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + '@storybook/csf': 0.1.2 + '@storybook/types': 8.0.0-alpha.5 + fs-extra: 11.2.0 + recast: 0.23.4 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@storybook/csf@0.1.2: + resolution: {integrity: sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==} + dependencies: + type-fest: 2.19.0 + dev: false + + /@storybook/docs-mdx@0.1.0: + resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} + dev: false + + /@storybook/docs-tools@8.0.0-alpha.5: + resolution: {integrity: sha512-CazndZjQGsfUaWkcmEs+7eBNZMG7+kh1uceQSUvxmqD3g+cQLW1Y4KPlHs+Lai86TqXElNR0SGSWUtcOuMtetQ==} + dependencies: + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/preview-api': 8.0.0-alpha.5 + '@storybook/types': 8.0.0-alpha.5 + '@types/doctrine': 0.0.3 + assert: 2.1.0 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/global@5.0.0: + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + dev: false + + /@storybook/manager@8.0.0-alpha.5: + resolution: {integrity: sha512-OZhfQyW++h69tzZOe/UpseZzO7TTqgBEqDNv8QyhPJY+NHBz9+F9obcXf4MP9/gwyBRzwKkYzrT0GEDcKErcRw==} + dev: false + + /@storybook/nextjs@8.0.0-alpha.5(@swc/core@1.3.101)(esbuild@0.18.20)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-WqT51jgiCec2Y/kI6gB8RhTAgaLTOp2ZQpGLHXm72c0IDM8rsOyEVSN9I2YD/wFY5QKcyf0KOj7xpz5r/AJrYA==} + engines: {node: '>=16.0.0'} + peerDependencies: + next: ^13.5.0 || ^14.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/preset-react': 7.23.3(@babel/core@7.23.6) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/runtime': 7.23.6 + '@storybook/addon-actions': 8.0.0-alpha.5 + '@storybook/builder-webpack5': 8.0.0-alpha.5(esbuild@0.18.20)(typescript@5.3.3) + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/preset-react-webpack': 8.0.0-alpha.5(@babel/core@7.23.6)(@swc/core@1.3.101)(esbuild@0.18.20)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3) + '@storybook/preview-api': 8.0.0-alpha.5 + '@storybook/react': 8.0.0-alpha.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@types/node': 18.19.3 + '@types/semver': 7.5.6 + css-loader: 6.8.1(webpack@5.89.0) + find-up: 5.0.0 + fs-extra: 11.2.0 + image-size: 1.0.2 + loader-utils: 3.2.1 + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.89.0) + pnp-webpack-plugin: 1.7.0(typescript@5.3.3) + postcss: 8.4.32 + postcss-loader: 7.3.4(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resolve-url-loader: 5.0.0 + sass-loader: 12.6.0(webpack@5.89.0) + semver: 7.5.4 + sharp: 0.32.6 + style-loader: 3.3.3(webpack@5.89.0) + styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) + ts-dedent: 2.2.0 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.3.3 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - '@swc/helpers' + - '@types/webpack' + - babel-plugin-macros + - encoding + - esbuild + - fibers + - node-sass + - sass + - sass-embedded + - sockjs-client + - supports-color + - type-fest + - uglify-js + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /@storybook/node-logger@8.0.0-alpha.5: + resolution: {integrity: sha512-sN2cKJ4JYSEFwj8KZx1bzPpBFx0+6b/exM+ecJVRQJUWs5lilQrjDWfojTmjLzwoGKAxI98iqCu0VqmIVL0bXA==} + dev: false + + /@storybook/preset-react-webpack@8.0.0-alpha.5(@babel/core@7.23.6)(@swc/core@1.3.101)(esbuild@0.18.20)(react-dom@18.2.0)(react@18.2.0)(type-fest@4.9.0)(typescript@5.3.3): + resolution: {integrity: sha512-FfKiLknNJ5kLl9gLbDggvV/gQcgBXzacRclH62b8cvmtWlwlw0WWHYDOiOvNEBTxF0HQSP5gdMGb/q1WeWXwaA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@babel/core': ^7.22.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + '@babel/core': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@babel/preset-flow': 7.23.3(@babel/core@7.23.6) + '@babel/preset-react': 7.23.3(@babel/core@7.23.6) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@4.9.0)(webpack@5.89.0) + '@storybook/core-webpack': 8.0.0-alpha.5 + '@storybook/docs-tools': 8.0.0-alpha.5 + '@storybook/node-logger': 8.0.0-alpha.5 + '@storybook/react': 8.0.0-alpha.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.3.3)(webpack@5.89.0) + '@types/node': 18.19.3 + '@types/semver': 7.5.6 + babel-plugin-add-react-displayname: 0.0.5 + fs-extra: 11.2.0 + magic-string: 0.30.5 + react: 18.2.0 + react-docgen: 7.0.1 + react-dom: 18.2.0(react@18.2.0) + react-refresh: 0.14.0 + semver: 7.5.4 + typescript: 5.3.3 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - '@swc/core' + - '@types/webpack' + - encoding + - esbuild + - sockjs-client + - supports-color + - type-fest + - uglify-js + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /@storybook/preview-api@8.0.0-alpha.5: + resolution: {integrity: sha512-dFaOOjYtkXsbdyzXD3dTadPp3PZ/h5esS0Q5DH+CmwWdLMhZ2dkYgvsEF000iS5cqhhMk7AUgNHiOvIIkhJvlQ==} + dependencies: + '@storybook/channels': 8.0.0-alpha.5 + '@storybook/client-logger': 8.0.0-alpha.5 + '@storybook/core-events': 8.0.0-alpha.5 + '@storybook/csf': 0.1.2 + '@storybook/global': 5.0.0 + '@storybook/types': 8.0.0-alpha.5 + '@types/qs': 6.9.11 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.2 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: false + + /@storybook/preview@8.0.0-alpha.5: + resolution: {integrity: sha512-2Ax0j6MiVKeVhQSCS0m4SOx4nyDLJCpNYRDzJVI8TVLF/jdF/gurgU8bo7YGNcSrQ+eik56SNtPpuf6wYvNqLw==} + dev: false + + /@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} + peerDependencies: + typescript: '>= 4.x' + webpack: '>= 4' + dependencies: + debug: 4.3.4 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.5 + react-docgen-typescript: 2.2.2(typescript@5.3.3) + tslib: 2.6.2 + typescript: 5.3.3 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - supports-color + dev: false + + /@storybook/react-dom-shim@8.0.0-alpha.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aTWpLEQny3XZcEMaFns2kq7BFDCSCrzH4AGMITCZgWFAIAw3pOgcdGcwobc8YRZ28pAdn8gjvmUlt91zMYvLvw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@storybook/react@8.0.0-alpha.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-w2xVgWh67EqYdwNvjgR0fUwWx0sr8EjGa12Hf76j4VLoR1CEc8qzn05g3d4wy3QxXEeyTDt/m06qci29QKr5hA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/client-logger': 8.0.0-alpha.5 + '@storybook/docs-tools': 8.0.0-alpha.5 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 8.0.0-alpha.5 + '@storybook/react-dom-shim': 8.0.0-alpha.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 8.0.0-alpha.5 + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 18.19.3 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) + ts-dedent: 2.2.0 + type-fest: 2.19.0 + typescript: 5.3.3 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/telemetry@8.0.0-alpha.5: + resolution: {integrity: sha512-qdS2pel4yVRyLkYVPQ7n3v4u57oKv124ZXciQKNviCcSCic9fAOmlLFG3tsLJax6bnpzDhV8znkUQLRScyyESw==} + dependencies: + '@storybook/client-logger': 8.0.0-alpha.5 + '@storybook/core-common': 8.0.0-alpha.5 + '@storybook/csf-tools': 8.0.0-alpha.5 + chalk: 4.1.2 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.6 + fs-extra: 11.2.0 + read-pkg-up: 7.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@storybook/types@8.0.0-alpha.5: + resolution: {integrity: sha512-flLvDh2RezBivPCK9jfipWwvNRmX/er+wiyttPsXjaFZ2wc0sXJSKFWmhKdYcdQmAOAWj3O0sfXP3doqJBlMpA==} + dependencies: + '@storybook/channels': 8.0.0-alpha.5 + '@types/babel__core': 7.20.5 + '@types/express': 4.17.21 + file-system-cache: 2.3.0 + dev: false + + /@stripe/react-stripe-js@2.4.0(@stripe/stripe-js@2.2.2)(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.2.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@stripe/stripe-js@2.2.2: + resolution: {integrity: sha512-LvFZRZEBoMe6vXC6RoOAIbXWo/0JDdndq43ekL9M6affcM7PtF5KALmwt91BazW7q49sbSl0l7TunWhhSwEW4w==} + dev: false + + /@stylistic/eslint-plugin-js@1.5.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-iZF0rF+uOhAmOJYOJx1Yvmm3CZ1uz9n0SRd9dpBYHA3QAvfABUORh9LADWwZCigjHJkp2QbCZelGFJGwGz7Siw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + acorn: 8.11.2 + escape-string-regexp: 4.0.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + dev: true + + /@stylistic/eslint-plugin-jsx@1.5.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-JuX+jsbVdpZ6EZXkbxYr9ERcGc0ndSMFgOuwEPHhOWPZ+7F8JP/nzpBjrRf7dUPMX7ezTYLZ2a3KRGRNme6rWQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.1(eslint-ts-patch@8.56.0-0) + eslint: /eslint-ts-patch@8.56.0-0 + estraverse: 5.3.0 + dev: true + + /@stylistic/eslint-plugin-plus@1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-yxkFHsUgoqEf/j1Og0FGkpEmeQoqx0CMmtgoyZGr34hka0ElCy9fRpsFkLcwx60SfiHXspbvs2YUMXiWIffnjg==} + peerDependencies: + eslint: '*' + dependencies: + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin-ts@1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-oXM1V7Jp8G9+udxQTy+Igo79LR2e5HXiWqlA/3v+/PAqWxniR9nJqJSBjtQKJTPsGplDqn/ASpHUOETP4EI/4A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.1(eslint-ts-patch@8.56.0-0) + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin@1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-y7ynUMh5Hq1MhYApAccl1iuQem5Sf2JSEIjV/qsBfmW1WfRDs74V+0kLkcOn1Y600W3t8orIFrrEuWmJSetAgw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.1(eslint-ts-patch@8.56.0-0) + '@stylistic/eslint-plugin-jsx': 1.5.1(eslint-ts-patch@8.56.0-0) + '@stylistic/eslint-plugin-plus': 1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@stylistic/eslint-plugin-ts': 1.5.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@swc/core-darwin-arm64@1.3.101: + resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@swc/core-darwin-x64@1.3.101: + resolution: {integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.101: + resolution: {integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.101: + resolution: {integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.101: + resolution: {integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.101: + resolution: {integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@swc/core-linux-x64-musl@1.3.101: + resolution: {integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.101: + resolution: {integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.101: + resolution: {integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.101: + resolution: {integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@swc/core@1.3.101: + resolution: {integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.2 + '@swc/types': 0.1.5 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.101 + '@swc/core-darwin-x64': 1.3.101 + '@swc/core-linux-arm-gnueabihf': 1.3.101 + '@swc/core-linux-arm64-gnu': 1.3.101 + '@swc/core-linux-arm64-musl': 1.3.101 + '@swc/core-linux-x64-gnu': 1.3.101 + '@swc/core-linux-x64-musl': 1.3.101 + '@swc/core-win32-arm64-msvc': 1.3.101 + '@swc/core-win32-ia32-msvc': 1.3.101 + '@swc/core-win32-x64-msvc': 1.3.101 + + /@swc/counter@0.1.2: + resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} + + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.4.36: + resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} + dependencies: + legacy-swc-helpers: /@swc/helpers@0.4.14 + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/types@0.1.5: + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + + /@szmarczak/http-timer@1.1.2: + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + dependencies: + defer-to-connect: 1.1.3 + dev: true + + /@t3-oss/env-core@0.7.1(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-3+SQt39OlmSaRLqYVFv8uRm1BpFepM5TIiMytRqO9cjH+wB77o6BIJdeyM5h5U4qLBMEzOJWCY4MBaU/rLwbYw==} + peerDependencies: + typescript: '>=4.7.2' + zod: ^3.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + zod: 3.22.4 + dev: false + + /@t3-oss/env-nextjs@0.7.1(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-tQDbNLGCOvKGi+JoGuJ/CJInJI7/kLWJqtgGppAKS7ZFLdVOqZYR/uRjxlXOWPnxmUKF8VswOAsq7fXUpNZDhA==} + peerDependencies: + typescript: '>=4.7.2' + zod: ^3.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@t3-oss/env-core': 0.7.1(typescript@5.3.3)(zod@3.22.4) + typescript: 5.3.3 + zod: 3.22.4 + dev: false + + /@tailwindcss/typography@0.5.10(tailwindcss@3.4.0): + resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.0(ts-node@10.9.2) + dev: true + + /@tanstack/eslint-plugin-query@5.14.6(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-vpowwoGoB9JgZy8fljf53ZTW2yYLRQ3Tjx4WQFKxiKugQOctxaTjQk7wlYzuqA/gjzfPL9qHfKW5DTT9CmIpkA==} + peerDependencies: + eslint: ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@tanstack/query-core@5.14.2: + resolution: {integrity: sha512-QmoJvC72sSWs3hgGis8JdmlDvqLfYGWUK4UG6OR9Q6t28JMN9m2FDwKPqoSJ9YVocELCSjMt/FGjEiLfk8000Q==} + dev: false + + /@tanstack/query-devtools@5.15.0: + resolution: {integrity: sha512-oz+xBIf+fanmAQ3CZrV4t+1VZiK2nyTcH3zY3G8ukzw+LwX2QGa04ZfF+OCOVF6tPZ2dn1cekMibUb4tevf/aw==} + dev: false + + /@tanstack/react-query-devtools@5.15.0(@tanstack/react-query@5.15.0)(react@18.2.0): + resolution: {integrity: sha512-wDF2I3eyVVzjaP7Jh8zW9pFbhg4T4cU8pltjoHE2aIY4oO+xnrhbI+curFVNJhczFZkTDLIc77hvlAN3Y8seyg==} + peerDependencies: + '@tanstack/react-query': ^5.15.0 + react: ^18.0.0 + dependencies: + '@tanstack/query-devtools': 5.15.0 + '@tanstack/react-query': 5.15.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@tanstack/react-query-next-experimental@5.15.0(@tanstack/react-query@5.15.0)(next@14.0.4)(react@18.2.0): + resolution: {integrity: sha512-3pIG6XjyV/IFm/WLMpF/83pEcizz2pHJAd5IFuHQ3d6mk1flhmjmWFJgCZkS3colIG7Aphr3IhJLd8387EopMw==} + peerDependencies: + '@tanstack/react-query': ^5.15.0 + next: ^13 || ^14 + react: ^18.0.0 + dependencies: + '@tanstack/react-query': 5.15.0(react@18.2.0) + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + dev: false + + /@tanstack/react-query@5.15.0(react@18.2.0): + resolution: {integrity: sha512-hWLuZ2Hg9HzmHJ3VtWzhvK+sTxPz+rIIujYUxzapPoU9PPXe7NCm8k8EaKpm+Sc65FM7Dljfk/Ov9yYMhwg9vw==} + peerDependencies: + react: ^18.0.0 + dependencies: + '@tanstack/query-core': 5.14.2 + react: 18.2.0 + dev: false + + /@tanstack/react-table@8.11.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ztLg2OpM3HZIWzkQYjQER1inZuhbt79fBwZxc9bPXzsvqY+7RYI3dCZLw3CynYd9s4YltdrTbmSyh4xQSHexDQ==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + '@tanstack/table-core': 8.11.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@tanstack/table-core@8.11.2: + resolution: {integrity: sha512-rR0VEQOtr0ARLvaNLaSQnt2BVwOp0OavOUA0LcZ3N45tLYXc4sXruNv8kJ7R7+5W1CrzGha217tzjBG83CpoMQ==} + engines: {node: '>=12'} + dev: false + + /@testing-library/jest-dom@6.1.6(@types/jest@29.5.11)(jest@29.7.0): + resolution: {integrity: sha512-YwuiOdYEcxhfC2u5iNKlvg2Q5MgbutovP6drq7J1HrCbvR+G58BbtoCoq+L/kNlrNFsu2Kt3jaFAviLVxYHJZg==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.2 + '@babel/runtime': 7.23.6 + '@types/jest': 29.5.11 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + jest: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + lodash: 4.17.21 + redent: 3.0.0 + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@total-typescript/ts-reset@0.5.1: + resolution: {integrity: sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==} + dev: true + + /@trpc/client@11.0.0-next-alpha.147(@trpc/server@11.0.0-next-alpha.147): + resolution: {integrity: sha512-faM8Kiufezm/fkFIZHyiOewBQbuPiRCmhZOU/xHAX1UEC2PmK9D5BmJuX3SAb6ZtCtBQH3eYqeQBrlHkcBhyfw==} + peerDependencies: + '@trpc/server': 11.0.0-next-alpha.147+8f1174c87 + dependencies: + '@trpc/server': 11.0.0-next-alpha.147 + dev: false + + /@trpc/react-query@11.0.0-next-alpha.147(@tanstack/react-query@5.15.0)(@trpc/client@11.0.0-next-alpha.147)(@trpc/server@11.0.0-next-alpha.147)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oMiUxEIRexbu8FBpC4bODl6IjnlqVMMudMywLGs0wB5271OamjRfIa3mbvvMFu0A2hqB9hfT4/YVVfv2inJvkg==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + '@trpc/client': 11.0.0-next-alpha.147+8f1174c87 + '@trpc/server': 11.0.0-next-alpha.147+8f1174c87 + react: '>=18.2.0' + react-dom: '>=18.2.0' + dependencies: + '@tanstack/react-query': 5.15.0(react@18.2.0) + '@trpc/client': 11.0.0-next-alpha.147(@trpc/server@11.0.0-next-alpha.147) + '@trpc/server': 11.0.0-next-alpha.147 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@trpc/server@11.0.0-next-alpha.147: + resolution: {integrity: sha512-XJ0N22d/lf7J06ecGUUvIpOSPVXV10VRVOJ0eN+nxF7ztQXTqMErAOA1pmJoVvrT9AzO7nGza+bhikpAB99+0A==} + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.23.6 + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.6 + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.10.5 + dev: false + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: false + + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: false + + /@types/cookies@0.7.7: + resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} + dependencies: + '@types/connect': 3.4.38 + '@types/express': 4.17.14 + '@types/keygrip': 1.0.6 + '@types/node': 20.10.5 + dev: false + + /@types/cross-spawn@6.0.6: + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: false + + /@types/detect-port@1.3.5: + resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} + dev: false + + /@types/doctrine@0.0.3: + resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} + dev: false + + /@types/doctrine@0.0.9: + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + dev: false + + /@types/ejs@3.1.5: + resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} + dev: false + + /@types/emscripten@1.39.10: + resolution: {integrity: sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==} + dev: false + + /@types/escodegen@0.0.6: + resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + dev: false + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.0 + '@types/estree': 1.0.5 + + /@types/eslint@8.56.0: + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + /@types/estree-jsx@1.0.3: + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree@0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + dev: false + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + /@types/express-serve-static-core@4.17.41: + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + dependencies: + '@types/node': 20.10.5 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: false + + /@types/express@4.17.14: + resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.41 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + dev: false + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.41 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + dev: false + + /@types/find-cache-dir@3.2.1: + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + dev: false + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.10.5 + dev: false + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 20.10.5 + dev: true + + /@types/hast@3.0.3: + resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} + dependencies: + '@types/unist': 3.0.2 + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: false + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: false + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/is-hotkey@0.1.10: + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} + dev: false + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + /@types/jest@29.5.11: + resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/js-yaml@3.12.10: + resolution: {integrity: sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==} + dev: false + + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + dev: false + + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 20.10.5 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + /@types/json-stable-stringify@1.0.36: + resolution: {integrity: sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw==} + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + /@types/keygrip@1.0.6: + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + dev: false + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.10.5 + dev: true + + /@types/lodash@4.14.202: + resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.10 + dev: true + + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/mdx@2.0.10: + resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} + dev: false + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: false + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: false + + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: false + + /@types/minimist@1.2.5: + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + dev: true + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: false + + /@types/mute-stream@0.0.4: + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/negotiator@0.6.3: + resolution: {integrity: sha512-JkXTOdKs5MF086b/pt8C3+yVp3iDUwG635L7oCH6HvJvvr6lSUU5oe/gLXnPEfYRROHjJIPgCV6cuAg8gGkntQ==} + dev: true + + /@types/node-fetch@2.6.2: + resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} + dependencies: + '@types/node': 20.10.5 + form-data: 3.0.1 + dev: false + + /@types/node-fetch@2.6.9: + resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} + dependencies: + '@types/node': 20.10.5 + form-data: 4.0.0 + dev: false + + /@types/node@16.18.6: + resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==} + dev: false + + /@types/node@16.18.68: + resolution: {integrity: sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==} + dev: false + + /@types/node@18.19.3: + resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + dependencies: + undici-types: 5.26.5 + + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + dependencies: + undici-types: 5.26.5 + + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + /@types/pg@8.10.9: + resolution: {integrity: sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==} + dependencies: + '@types/node': 20.10.5 + pg-protocol: 1.6.0 + pg-types: 4.0.1 + + /@types/pg@8.6.6: + resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} + dependencies: + '@types/node': 20.10.5 + pg-protocol: 1.6.0 + pg-types: 2.2.0 + dev: false + + /@types/pretty-hrtime@1.0.3: + resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} + dev: false + + /@types/prop-types@15.7.11: + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + dev: false + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: false + + /@types/react-dom@18.2.18: + resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} + dependencies: + '@types/react': 18.2.45 + + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + /@types/resolve@1.20.6: + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + dev: false + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.10.5 + dev: true + + /@types/scheduler@0.16.8: + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.10.5 + dev: false + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.10.5 + dev: false + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true + + /@types/triple-beam@1.3.5: + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + dev: false + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + + /@types/uuid@9.0.7: + resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + dev: false + + /@types/validator@13.11.7: + resolution: {integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==} + dev: false + + /@types/wrap-ansi@3.0.0: + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + dev: false + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: false + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/type-utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: /eslint-ts-patch@8.56.0-0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/type-utils': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: /eslint-ts-patch@8.56.0-0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/parser@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.16.0: + resolution: {integrity: sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/visitor-keys': 6.16.0 + + /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + debug: 4.3.4 + eslint: /eslint-ts-patch@8.56.0-0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.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) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.16.0: + resolution: {integrity: sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.16.0(typescript@5.3.3): + resolution: {integrity: sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/utils@5.62.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@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': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.56.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@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.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.16.0: + resolution: {integrity: sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.16.0 + eslint-visitor-keys: 3.4.3 + + /@udecode/cn@29.0.0(@types/react@18.2.45)(class-variance-authority@0.7.0)(react-dom@18.2.0)(react@18.2.0)(tailwind-merge@2.2.0): + resolution: {integrity: sha512-FofO9XJfXrgrT9jh49L05Mj2nZFHIPwWaQBKNHJge+/G/2zn9UU/jKXF48rMrGYe2d9mbTa+aU8Xs3S22Ednfg==} + peerDependencies: + class-variance-authority: '>=0.7.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + tailwind-merge: '>=2.2.0' + dependencies: + '@udecode/react-utils': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + class-variance-authority: 0.7.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tailwind-merge: 2.2.0 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@udecode/plate-autoformat@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-RizTYk1g6ppXih8Xmw2u1H18rolYZ7xfHlXpvHtzZDm555tZBb5/lzF5cwfnn59aIZE0y9WHOlV53QmfP2w85w==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-basic-marks@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-BXqfIYgg8Lns4hL22sGYLKnYvPSSeUD39tf9DdIHRNxGRZk6QiJVWKKABQ24WCakXcpONSLD3pkErG6s6TbOGQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-block-quote@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-PFntDO9tJV0Ic31vaYgIJoXKtj9X/mD95pInL3EZtDjeCYlkuyegKovSSNZUQmSYqE7kfzYbT/Nc1ETtsKZXAQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-break@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-fUASwwxpv3hWirLgPHEAXJsByi2qMaoMTt+5sXO7klqPCEmne/EXE533X1QFQg0GEcifRwqEzBmbMoUNmNWJ6g==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-code-block@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-uGD3Gl9MCFkquRNpBNhKi8R6iNOOtG+EDzDuDy5oZIidcOlfNNtGv5fVfkknryy+mAN91gI6NORFTiRkPfBKAg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + prismjs: 1.29.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-common@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-0srH1g4fkPMuV81SvRyMVdd5XoNhviR5qUFulZHbhz3jSVxgGHv1zTs2zi6gRJDkhP0//H3cVCQJpS5jO2zG7w==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-core': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-utils': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/react-utils': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/slate-react': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/utils': 24.3.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-core@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-U5EQBCXHt+3hy97/atvD7OEGN1JZB/HEYxycc2BMKht4Zld+JCO1GWuqoKZ/zh5DR9/+TTehlpsul96FdbguKQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/slate-react': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 + is-hotkey: 0.2.0 + jotai: 2.6.0(@types/react@18.2.45)(react@18.2.0) + jotai-x: 1.1.0(@types/react@18.2.45)(jotai@2.6.0)(react@18.2.0) + lodash: 4.17.21 + nanoid: 3.3.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-hotkeys-hook: 4.4.1(react-dom@18.2.0)(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + use-deep-compare: 1.2.1(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand-x: 3.0.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.4.7) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-floating@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-VJSGdcDDY1/m52sdk9FmBiMTeRg+fmru7rdX4302hDLvQ1Zxq0RYGp+eR9P8USsXACZFqO5rhDkAfqZWin8oiA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/react': 0.22.3(react-dom@18.2.0)(react@18.2.0) + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-heading@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-Mlh9Efk+hG5hx+gSD7Ei0mtf8NcAreaPx3Izt2WwTz2jimBgFk8pASrpNy6m8qSWR+f9vfIQomryW2F7ROt8PQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-highlight@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-YDVLlPq2ADiGWcZw4MIT2xoeF7ma+fKYT/A/4JSxhoJL2iCkzHBxJgYVJbcX95pd88k6M2cD9d4II/TaBZyuJw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-horizontal-rule@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-2d7BmIuS9WsKSmMQD+3E5zBxwU3v0hz9BRjWMEv0J2uNRPNFojqBrhgy5rRAf5QtlubRZWNFHNYEULNiO28r7g==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-indent-list@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-Uxo38SzPmCkb7nfs1kBIMUhPzxRyObZlHZ3Y8fISvUq1nZTz9RPDnQF1dMVshIPBni6O1B/FocBLLEWAyMubQg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-indent': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-list': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-indent@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-E13r1BqQay7apEqk0q4TV5FMx9fvW47zd3scWI1wIUpdw3QwpBzDUWDn+H6EAx8EFgPSYPDscJhMLzT+YC/4QQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-link@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-RR+GJkP4QOLooHVZBAAWjmYZNaQv+YtVLBuHMvK1nRxnoQx+E8mYRNKMOz1QW8wIlQSzzslRCqXlgVQK7pWs3Q==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-floating': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-normalizers': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-list@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-BD6VIo1WeWxpHj6CtqypRkxVdFE51UlwguLYAOJYPevEDQchJhYqjfSiXOq9bb6xWKo5glLL4R8msz/lexI/dA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-reset-node': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-media@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-BVAP+52AhqHpDY49Yy2eN8gwGx3USdt0WbcEollQ+zxIdn3HesO093F+HZwJ1r4FnoGaKbuFW4F6JThTDy7+8g==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + js-video-url-parser: 0.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-node-id@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-UNbehGgoprjXz1e5ew2TQLlwiaY3lEQ6Ws2PquW6lS46HiqhWj51Ojrng7neJXVDPP8XwscON3LZJDStY+ht5Q==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-normalizers@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-vHsW/hYpkGl691P3/LrBHWg7h6Nz7q25dGvXxfPvWSTd1kXdZ5eWvmcPXtSWRYi8U3Au4Sit94HacXE+VipaLQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-paragraph@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-T3r65apzUqTYCeHqeE9JNSUrpXT2PmVlCS/HZ/zLbcDHR6FZfPreDcFYf8LwcxIN6kXyjzNftivJ/DOf39YQpA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-reset-node@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-BGCwY5hpu4JKFXKvINZFEec22je3N6mOELA3nH/73Ero6UL0O4ToNKG/jrqfnsIl6Dr286rGFcJjw22H1Jmssg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-resizable@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-ac5kJ6gHPH4PCiFGEaNCm1Smh4aAn4blR7onSrvyEWQ+7oDd/y3nBMPVwA94/Gqh1Mt6O/793E79SQl4tNthOw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-select@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-LWIyQROCGq+XSbBA/wnwgUWcIiWorIL5bgA1XULQtT3nosKVlGZOqK0CkTZHOjBXzcogy0u7cfG/4p/BZAFGWg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-table@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-MNQY/zmGvVjL3UnSvs0BAe4KiVkOnuYrSTtRtzLWP6Mo/i0OQA6RmJapfe6cyXmntO/oVznNJHl+mxDpCGHsJQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/plate-resizable': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + - slate-hyperscript + dev: false + + /@udecode/plate-trailing-block@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-g23vUqKnjZs8fwhCzqF3c9DJGmfubT52LXpS6CUNMXoFJwhsg7+oLF82lpzeydfpNMPrLIAoYpSIZ4QSOIsLJg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-common': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/plate-utils@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-9rTkAG6FKE3HNSiKjwHjkkRQX7UcjyYsEDbwiwN5FQnKmuQjdUjO8qR2EZ2zMUMfH/qnLxS/zf66gEXmoCC0mw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-hyperscript: '>=0.66.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/plate-core': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/react-utils': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/slate-react': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.101.5)(slate@0.101.5) + '@udecode/slate-utils': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-hyperscript: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + dev: false + + /@udecode/react-utils@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ds49LWYodIPsg/DGEqDJlBuIYME2T1T+qoXUN5WTzsSUckUR6qYnrqljfWQLZzxhdV/l87NtIIDg55POyAW+Rg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@udecode/utils': 24.3.0 + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@udecode/slate-react@29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(slate-history@0.100.0)(slate-react@0.101.5)(slate@0.101.5): + resolution: {integrity: sha512-q3Zl6O9NyNT69DeRg4awKHh4O10SHN4hgm/dGXo8NNAj2GLwmUH0PRTYMNo/vNtwnsDCm/a2KGVkAiw6EXl98w==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.94.0' + slate-history: '>=0.93.0' + slate-react: '>=0.99.0' + dependencies: + '@udecode/react-utils': 29.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/utils': 24.3.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + slate-react: 0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@udecode/slate-utils@25.0.0(slate-history@0.100.0)(slate@0.101.5): + resolution: {integrity: sha512-H8dECl5Tu44Nt946rkSXCJ1yzsc2R9GXSoA9oNIBmcyNo3jTHZOyG/Ocn3RGgfzAK996A43GBD/keNabJEPtQg==} + peerDependencies: + slate: '>=0.94.0' + slate-history: '>=0.93.0' + dependencies: + '@udecode/slate': 25.0.0(slate-history@0.100.0)(slate@0.101.5) + '@udecode/utils': 24.3.0 + lodash: 4.17.21 + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + dev: false + + /@udecode/slate@25.0.0(slate-history@0.100.0)(slate@0.101.5): + resolution: {integrity: sha512-mGb9nMDwIygLqERwJ8kTOfo3wIxMQ0xLJEPKn09jrshEIxUCyO3mYj8y/5vOMcrzj6yexOsgQ6VNX8ylS3lnIQ==} + peerDependencies: + slate: '>=0.94.0' + slate-history: '>=0.93.0' + dependencies: + '@udecode/utils': 24.3.0 + slate: 0.101.5 + slate-history: 0.100.0(slate@0.101.5) + dev: false + + /@udecode/utils@24.3.0: + resolution: {integrity: sha512-/Y2lh/Ih1wx4zN35Ky2Z1G1/5f7cSAS7F6dkhrcbJUnDF0srTidoEIRabK+og/yIK/MCEFfOsQGetoV7Ert5hg==} + dev: false + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + /@uploadthing/mime-types@0.2.2: + resolution: {integrity: sha512-ZUo1JHOPPMZDsUw1mOhhVDIvJGlsjj6T0xJ/YJtulyJwL43S9B5pxg1cHcRuTEgjaxj7B55jiqQ6r9mDrrjH9A==} + dev: false + + /@uploadthing/react@6.0.2(next@14.0.4)(react@18.2.0)(uploadthing@6.1.0): + resolution: {integrity: sha512-gUJwNvSFs0bg4m0c6wlFo1Fe3uyGTmAp0BESkRZvqyN4hNhIcxMY0TxjqxCKsYkv1T0/y3dHgN/XU2BDAQQh7w==} + peerDependencies: + next: '*' + react: ^17.0.2 || ^18.0.0 + uploadthing: ^6.0.0 + peerDependenciesMeta: + next: + optional: true + dependencies: + '@uploadthing/shared': 6.0.2(@uploadthing/mime-types@0.2.2) + attr-accept: 2.2.2 + file-selector: 0.6.0 + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + tailwind-merge: 1.14.0 + uploadthing: 6.1.0 + transitivePeerDependencies: + - '@uploadthing/mime-types' + dev: false + + /@uploadthing/shared@6.0.2(@uploadthing/mime-types@0.2.2): + resolution: {integrity: sha512-yFOhvzBG8VB2qmEGWDuW/tV/ZcfRZ4a6rX7i9/ZS3IqHA0FO7CKa8yitltAl3yRdSI9it88iMEQg7Ah/ve8D4A==} + peerDependencies: + '@uploadthing/mime-types': ^0.2.2 + peerDependenciesMeta: + '@uploadthing/mime-types': + optional: true + dependencies: + '@uploadthing/mime-types': 0.2.2 + dev: false + + /@upstash/core-analytics@0.0.6: + resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==} + engines: {node: '>=16.0.0'} + dependencies: + '@upstash/redis': 1.27.1 + dev: false + + /@upstash/ratelimit@1.0.0: + resolution: {integrity: sha512-IUlc+UKuHJQqXGQi7E3UKV0CKfRZ0g6qeNnbSve940k3xLoM+X3H45MrSwDaH7meMWemztLs0Q4yjkd3ItddCw==} + dependencies: + '@upstash/core-analytics': 0.0.6 + dev: false + + /@upstash/redis@1.27.1: + resolution: {integrity: sha512-K9UgTBypJ4Dx65s2u5auoyf/5YoCQjaN91QtxlkNg+3g0rqXXy4ELtzACstk1v+bTa547Mm3rzTjotDX/s9+Zg==} + dependencies: + crypto-js: 4.2.0 + dev: false + + /@urql/core@2.3.6(graphql@16.8.1): + resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + graphql: 16.8.1 + wonka: 4.0.15 + dev: false + + /@urql/core@4.2.2(graphql@16.8.1): + resolution: {integrity: sha512-TP1kheq9bnrEdnVbJqh0g0ZY/wfdpPeAzjiiDK+Tm+Pbi0O1Xdu6+fUJ/wJo5QpHZzkIyya4/AecG63e6scFqQ==} + dependencies: + '@0no-co/graphql.web': 1.0.4(graphql@16.8.1) + wonka: 6.3.4 + transitivePeerDependencies: + - graphql + dev: false + + /@urql/exchange-retry@0.3.0(graphql@16.8.1): + resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@urql/core': 4.2.2(graphql@16.8.1) + graphql: 16.8.1 + wonka: 4.0.15 + dev: false + + /@urql/next@1.1.0(next@14.0.4)(react@18.2.0)(urql@4.0.6): + resolution: {integrity: sha512-yem5319hUn9cg+BIOMBRGb2Xt39Jusz4eu3Vdv0Fb5+mRLal644JxYpB98OBj0idBtMvl04zuJ69FGuHz4Aa6w==} + peerDependencies: + next: '>=13.0.0' + react: '>=18.0.0' + urql: ^4.0.0 + dependencies: + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + urql: 4.0.6(graphql@16.8.1)(react@18.2.0) + dev: false + + /@vercel/analytics@1.1.1: + resolution: {integrity: sha512-+NqgNmSabg3IFfxYhrWCfB/H+RCUOCR5ExRudNG2+pcRehq628DJB5e1u1xqwpLtn4pAYii4D98w7kofORAGQA==} + dependencies: + server-only: 0.0.1 + dev: false + + /@vercel/nft@0.24.4: + resolution: {integrity: sha512-KjYAZty7boH5fi5udp6p+lNu6nawgs++pHW+3koErMgbRkkHuToGX/FwjN5clV1FcaM3udfd4zW/sUapkMgpZw==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@rollup/pluginutils': 4.2.1 + acorn: 8.11.2 + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.7.1 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@vue/compiler-core@3.3.13: + resolution: {integrity: sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==} + dependencies: + '@babel/parser': 7.23.6 + '@vue/shared': 3.3.13 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + + /@vue/compiler-dom@3.3.13: + resolution: {integrity: sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==} + dependencies: + '@vue/compiler-core': 3.3.13 + '@vue/shared': 3.3.13 + dev: true + + /@vue/compiler-sfc@3.3.13: + resolution: {integrity: sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==} + dependencies: + '@babel/parser': 7.23.6 + '@vue/compiler-core': 3.3.13 + '@vue/compiler-dom': 3.3.13 + '@vue/compiler-ssr': 3.3.13 + '@vue/reactivity-transform': 3.3.13 + '@vue/shared': 3.3.13 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.32 + source-map-js: 1.0.2 + dev: true + + /@vue/compiler-ssr@3.3.13: + resolution: {integrity: sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==} + dependencies: + '@vue/compiler-dom': 3.3.13 + '@vue/shared': 3.3.13 + dev: true + + /@vue/reactivity-transform@3.3.13: + resolution: {integrity: sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==} + dependencies: + '@babel/parser': 7.23.6 + '@vue/compiler-core': 3.3.13 + '@vue/shared': 3.3.13 + estree-walker: 2.0.2 + magic-string: 0.30.5 + dev: true + + /@vue/shared@3.3.13: + resolution: {integrity: sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==} + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + + /@whatwg-node/events@0.0.3: + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + dev: false + + /@whatwg-node/events@0.1.1: + resolution: {integrity: sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==} + engines: {node: '>=16.0.0'} + dev: false + + /@whatwg-node/fetch@0.8.8: + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + dependencies: + '@peculiar/webcrypto': 1.4.3 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.2.1 + dev: false + + /@whatwg-node/fetch@0.9.14: + resolution: {integrity: sha512-wurZC82zzZwXRDSW0OS9l141DynaJQh7Yt0FD1xZ8niX7/Et/7RoiLiltbVU1fSF1RR9z6ndEaTUQBAmddTm1w==} + engines: {node: '>=16.0.0'} + dependencies: + '@whatwg-node/node-fetch': 0.5.3 + urlpattern-polyfill: 9.0.0 + dev: false + + /@whatwg-node/node-fetch@0.3.6: + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.6.2 + dev: false + + /@whatwg-node/node-fetch@0.5.3: + resolution: {integrity: sha512-toMC8N53RxgprcuU7Fc05KOrJhZV49njJCHPZvXBsjZMQBKrDm9o14Y56CsrUC85cvjQu862MaYOjd8rKgHdDw==} + engines: {node: '>=16.0.0'} + dependencies: + '@kamilkisiela/fast-url-parser': 1.1.4 + '@whatwg-node/events': 0.1.1 + busboy: 1.6.0 + fast-querystring: 1.1.2 + tslib: 2.6.2 + dev: false + + /@whatwg-node/server@0.9.22: + resolution: {integrity: sha512-DDzJtPnQj+HzxseHcSqA/u6TwqNCDB90chrabN1UznpIGOkeA4mpR1LF/zDzqcgjBA/TjFkSeHItwOyl+6FfWw==} + engines: {node: '>=16.0.0'} + dependencies: + '@whatwg-node/fetch': 0.9.14 + tslib: 2.6.2 + dev: false + + /@xmldom/xmldom@0.7.13: + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} + dev: false + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20): + resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} + engines: {node: '>=14.15.0'} + peerDependencies: + esbuild: '>=0.10.0' + dependencies: + esbuild: 0.18.20 + tslib: 2.6.2 + dev: false + + /@yarnpkg/fslib@2.10.3: + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + dependencies: + '@yarnpkg/libzip': 2.3.0 + tslib: 1.14.1 + dev: false + + /@yarnpkg/libzip@2.3.0: + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + dependencies: + '@types/emscripten': 1.39.10 + tslib: 1.14.1 + dev: false + + /@zkochan/retry@0.2.0: + resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} + engines: {node: '>=10'} + dev: true + + /@zkochan/rimraf@2.1.3: + resolution: {integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==} + engines: {node: '>=12.10'} + dependencies: + rimraf: 3.0.2 + dev: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.11.2 + acorn-walk: 8.3.1 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.2 + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + + /acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.2.11 + dev: false + + /adverb-where@0.2.6: + resolution: {integrity: sha512-uVazUDEPYpBSVRjEDTzO6hVXh9X/eQb+gobzDpqdzMiM1MkfGxfPtgN8YerBjAeDkoABZprsOwhSZnY4X3knnw==} + engines: {node: '>=6', npm: '>=5'} + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: false + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + dependencies: + type-fest: 3.13.1 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: false + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /app-root-dir@1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + dev: false + + /application-config-path@0.1.1: + resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} + dev: false + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: true + + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + + /are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: true + + /arg@4.1.0: + resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==} + dev: false + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /argsarray@0.0.1: + resolution: {integrity: sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg==} + dev: false + + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.2 + dev: false + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + + /arity-n@1.0.4: + resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + + /array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: true + + /array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + + /array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 4.0.0 + dev: true + + /array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array.prototype.find@2.2.2: + resolution: {integrity: sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + + /arrgv@1.0.2: + resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} + engines: {node: '>=8.0.0'} + dev: true + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /arrify@3.0.0: + resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + engines: {node: '>=12'} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + /asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: false + + /asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + dependencies: + pvtsutils: 1.3.5 + pvutils: 1.1.3 + tslib: 2.6.2 + dev: false + + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.5 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.5 + util: 0.12.5 + dev: false + + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: false + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + dev: false + + /async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + dev: true + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: false + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false + + /attr-accept@2.2.2: + resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} + engines: {node: '>=4'} + dev: false + + /auto-bind@4.0.0: + resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + engines: {node: '>=8'} + + /autoprefixer@10.4.16(postcss@8.4.32): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001571 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + dev: true + + /ava@6.0.1(@ava/typescript@4.1.0): + resolution: {integrity: sha512-9zR0wOwlcJdOWwHOKnpi0GrPRLTlxDFapGalP4rGD0oQRKxDVoucBBWvxVQ/2cPv10Hx1PkDXLJH5iUzhPn0/g==} + engines: {node: ^18.18 || ^20.8 || ^21} + hasBin: true + peerDependencies: + '@ava/typescript': '*' + peerDependenciesMeta: + '@ava/typescript': + optional: true + dependencies: + '@ava/typescript': 4.1.0 + '@vercel/nft': 0.24.4 + acorn: 8.11.2 + acorn-walk: 8.3.1 + ansi-styles: 6.2.1 + arrgv: 1.0.2 + arrify: 3.0.0 + callsites: 4.1.0 + cbor: 9.0.1 + chalk: 5.3.0 + chunkd: 2.0.1 + ci-info: 4.0.0 + ci-parallel-vars: 1.0.1 + cli-truncate: 4.0.0 + code-excerpt: 4.0.0 + common-path-prefix: 3.0.0 + concordance: 5.0.4 + currently-unhandled: 0.4.1 + debug: 4.3.4 + emittery: 1.0.1 + figures: 6.0.1 + globby: 14.0.0 + ignore-by-default: 2.1.0 + indent-string: 5.0.0 + is-plain-object: 5.0.0 + is-promise: 4.0.0 + matcher: 5.0.0 + memoize: 10.0.0 + ms: 2.1.3 + p-map: 6.0.0 + package-config: 5.0.0 + picomatch: 3.0.1 + plur: 5.1.0 + pretty-ms: 8.0.0 + resolve-cwd: 3.0.0 + stack-utils: 2.0.6 + strip-ansi: 7.1.0 + supertap: 3.0.1 + temp-dir: 3.0.0 + write-file-atomic: 5.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + + /axios@1.6.3: + resolution: {integrity: sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + + /babel-core@7.0.0-bridge.0(@babel/core@7.23.6): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + dev: false + + /babel-jest@29.7.0(@babel/core@7.23.6): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.6 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.6) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-loader@9.1.3(@babel/core@7.23.6)(webpack@5.89.0): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.23.6 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /babel-plugin-add-react-displayname@0.0.5: + resolution: {integrity: sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==} + dev: false + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.4 + dev: true + + /babel-plugin-module-resolver@5.0.0: + resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} + engines: {node: '>= 16'} + dependencies: + find-babel-config: 2.0.0 + glob: 8.1.0 + pkg-up: 3.1.0 + reselect: 4.1.8 + resolve: 1.22.8 + dev: false + + /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.6): + resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.6): + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + core-js-compat: 3.34.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.6): + resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-react-native-web@0.18.12: + resolution: {integrity: sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==} + dev: false + + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.6): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.6) + transitivePeerDependencies: + - '@babel/core' + dev: false + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + dev: true + + /babel-preset-expo@9.5.2(@babel/core@7.23.6): + resolution: {integrity: sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ==} + dependencies: + '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.23.6) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + babel-plugin-module-resolver: 5.0.0 + babel-plugin-react-native-web: 0.18.12 + metro-react-native-babel-preset: 0.76.8(@babel/core@7.23.6) + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: false + + /babel-preset-fbjs@3.4.0(@babel/core@7.23.6): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + + /babel-preset-jest@29.6.3(@babel/core@7.23.6): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + dev: true + + /babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + dev: true + + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + dependencies: + open: 8.4.2 + dev: false + + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + /bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /bole@5.0.9: + resolution: {integrity: sha512-35GeBG6T7GW9VmLDF2IoKAtFCqMjmmq1uICbsICI0pID7ZAyUKlf7dg1wpXmn9GcMKHtg0S19CPMU5yfY3tv+g==} + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: true + + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: true + + /bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + dependencies: + stream-buffers: 2.2.0 + dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: false + + /bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: false + + /bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false + + /browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + dev: false + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: false + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: false + + /browserify-sign@4.2.2: + resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} + engines: {node: '>= 4'} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + dependencies: + pako: 0.2.9 + dev: false + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: false + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: false + + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: false + + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: false + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: false + + /builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + dev: false + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /bytes@3.1.0: + resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} + engines: {node: '>= 0.8'} + dev: false + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + + /cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.0 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: false + + /cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + + /callsite-record@4.1.5: + resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} + dependencies: + '@devexpress/error-stack-parser': 2.0.6 + '@types/lodash': 4.14.202 + callsite: 1.0.0 + chalk: 2.4.2 + highlight-es: 1.0.3 + lodash: 4.17.21 + pinkie-promise: 2.0.1 + dev: true + + /callsite@1.0.0: + resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /callsites@4.1.0: + resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} + engines: {node: '>=12.20'} + dev: true + + /camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: false + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + /camelcase-keys@2.1.0: + resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + dev: false + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + /camelcase@2.1.1: + resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} + engines: {node: '>=0.10.0'} + dev: false + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + + /capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + + /case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + dev: false + + /cbor@9.0.1: + resolution: {integrity: sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==} + engines: {node: '>=16'} + dependencies: + nofilter: 3.1.0 + dev: true + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chalk-template@1.1.0: + resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} + engines: {node: '>=14.16'} + dependencies: + chalk: 5.3.0 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /change-case-all@1.0.15: + resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + + /change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.6.2 + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false + + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: false + + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /chunkd@2.0.1: + resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} + dev: true + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + + /ci-parallel-vars@1.0.1: + resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /citty@0.1.5: + resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + dependencies: + consola: 3.2.3 + dev: false + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /class-validator@0.14.0: + resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} + dependencies: + '@types/validator': 13.11.7 + libphonenumber-js: 1.10.53 + validator: 13.11.0 + dev: false + + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + dependencies: + clsx: 2.0.0 + dev: false + + /clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + dependencies: + source-map: 0.6.1 + dev: false + + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: false + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + /clear-module@4.1.2: + resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} + engines: {node: '>=8'} + dependencies: + parent-module: 2.0.0 + resolve-from: 5.0.0 + dev: true + + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: true + + /cli-color@2.0.3: + resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + memoizee: 0.4.15 + timers-ext: 0.1.7 + dev: true + + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + dependencies: + restore-cursor: 2.0.0 + dev: false + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: false + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: false + + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + dependencies: + slice-ansi: 5.0.0 + string-width: 7.0.0 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: false + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + requiresBuild: true + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: false + + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + + /cmdk@0.2.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + command-score: 0.1.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /code-excerpt@4.0.0: + resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + convert-to-spaces: 2.0.1 + dev: true + + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: false + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: true + + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + /colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /comlink@4.4.1: + resolution: {integrity: sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==} + dev: true + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: false + + /command-score@0.1.2: + resolution: {integrity: sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w==} + dev: false + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: false + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /comment-json@4.2.3: + resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} + engines: {node: '>= 6'} + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + dev: true + + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + dev: false + + /component-type@1.2.2: + resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} + dev: false + + /compose-function@3.0.3: + resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + dependencies: + arity-n: 1.0.4 + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /compute-scroll-into-view@3.1.0: + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concordance@5.0.4: + resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} + engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} + dependencies: + date-time: 3.1.0 + esutils: 2.0.3 + fast-diff: 1.3.0 + js-string-escape: 1.0.1 + lodash: 4.17.21 + md5-hex: 3.0.1 + semver: 7.5.4 + well-known-symbols: 2.0.0 + dev: true + + /condense-newlines@0.2.1: + resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-whitespace: 0.3.0 + kind-of: 3.2.2 + dev: false + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + + /configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + dev: true + + /configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + dev: true + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: false + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: false + + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: true + + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case: 2.0.2 + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: false + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /content-type@1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + dev: false + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + /convert-to-spaces@2.0.1: + resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: false + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: false + + /cookies-next@4.1.0: + resolution: {integrity: sha512-BREVc4TJT4NwXfyKjdjnYFXM6iRns+MYpCd34ClXuYqeisXnkPkbq7Ok9xaqi9mHmV6H2rwPE+p3EpMz4pF/kQ==} + dependencies: + '@types/cookie': 0.4.1 + '@types/node': 16.18.68 + cookie: 0.4.2 + dev: false + + /copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + + /core-js-compat@3.34.0: + resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} + dependencies: + browserslist: 4.22.2 + + /core-js-pure@3.34.0: + resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} + requiresBuild: true + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.3.3): + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + dependencies: + '@types/node': 18.19.3 + cosmiconfig: 8.3.6(typescript@5.3.3) + jiti: 1.21.0 + typescript: 5.3.3 + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.3.3 + + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.3.3 + dev: true + + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: false + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: false + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /create-jest@29.7.0(@types/node@20.10.5)(ts-node@10.9.2): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + /cropperjs@1.6.1: + resolution: {integrity: sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==} + dev: false + + /cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: true + + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + /cross-inspect@1.0.0: + resolution: {integrity: sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.2 + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: false + + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.2 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: false + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + + /crypto-random-string@1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + dev: false + + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /cspell-config-lib@8.2.3: + resolution: {integrity: sha512-ATbOR06GKBIFM5SPKMF4fgo5G2qmOfdV8TbpyzNtw1AGL7PoOgDNFiKSutEzO5EHyZuXE71ZFxH3rVr2gIV7Dw==} + engines: {node: '>=18'} + dependencies: + '@cspell/cspell-types': 8.2.3 + comment-json: 4.2.3 + yaml: 2.3.4 + dev: true + + /cspell-dictionary@8.2.3: + resolution: {integrity: sha512-M/idc3TLjYMpT4+8PlIg7kzoeGkR7o6h6pTwRfy/ZkBkEaV+U/35ZtVLO4qjxnuX6wrmawYmHhYqgzyKLEJIhw==} + engines: {node: '>=18'} + dependencies: + '@cspell/cspell-pipe': 8.2.3 + '@cspell/cspell-types': 8.2.3 + cspell-trie-lib: 8.2.3 + fast-equals: 5.0.1 + gensequence: 6.0.0 + dev: true + + /cspell-gitignore@8.2.3: + resolution: {integrity: sha512-tPUI+Aoq1b1shD04CLprrS8wEriiF4G1J+qBiCZK2KWOh6IcufuuDhP1Jtkzz9uONgGWFPF6jj/9TXRFlQexbQ==} + engines: {node: '>=18'} + hasBin: true + dependencies: + cspell-glob: 8.2.3 + find-up-simple: 1.0.0 + dev: true + + /cspell-glob@8.2.3: + resolution: {integrity: sha512-byP2kBblO5d9rZr73MPor+KfoFdry4uu/MQmwLiK5mxgmokZYv5GVDX2DrO16Ni4yJ6/2rBPWLfq+DfCXSWqyw==} + engines: {node: '>=18'} + dependencies: + micromatch: 4.0.5 + dev: true + + /cspell-grammar@8.2.3: + resolution: {integrity: sha512-z57Qyu24BsHHp/nZ9ftN377cSCgSJg+6oywIglau7ws7vRpUgYKVoKxn+ZJfOrIZpXfZUqgph5IwAGFI+aRN6w==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@cspell/cspell-pipe': 8.2.3 + '@cspell/cspell-types': 8.2.3 + dev: true + + /cspell-io@8.2.3: + resolution: {integrity: sha512-mPbLXiIje9chncy/Xb9C6AxqjJm9AFHz/nmIIP5bc6gd4w/yaGlQNyO8jjHF1u2JBVbIxPQSMjFgEuqasPy4Sg==} + engines: {node: '>=18'} + dependencies: + '@cspell/cspell-service-bus': 8.2.3 + dev: true + + /cspell-lib@8.2.3: + resolution: {integrity: sha512-NA4FsGomGPNp15TWbXx13bfknLGU8B66j0QlU3i4oDrWBj/t5m7O1nmiQqcaDSKd9s5HtdTHfxLc83hdzmmizg==} + engines: {node: '>=18'} + dependencies: + '@cspell/cspell-bundled-dicts': 8.2.3 + '@cspell/cspell-pipe': 8.2.3 + '@cspell/cspell-resolver': 8.2.3 + '@cspell/cspell-types': 8.2.3 + '@cspell/dynamic-import': 8.2.3 + '@cspell/strong-weak-map': 8.2.3 + clear-module: 4.1.2 + comment-json: 4.2.3 + configstore: 6.0.0 + cspell-config-lib: 8.2.3 + cspell-dictionary: 8.2.3 + cspell-glob: 8.2.3 + cspell-grammar: 8.2.3 + cspell-io: 8.2.3 + cspell-trie-lib: 8.2.3 + fast-equals: 5.0.1 + gensequence: 6.0.0 + import-fresh: 3.3.0 + resolve-from: 5.0.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /cspell-trie-lib@8.2.3: + resolution: {integrity: sha512-yN2PwceN9ViCjXUhhi3MTWfi15Rpc9CsSFFPV3A6cOWoB0qBnuTXk8hBSx+427UGYjtlXPP6EZKY8w8OK6PweA==} + engines: {node: '>=18'} + dependencies: + '@cspell/cspell-pipe': 8.2.3 + '@cspell/cspell-types': 8.2.3 + gensequence: 6.0.0 + dev: true + + /cspell@8.2.3: + resolution: {integrity: sha512-lJEIglmBINLW4Jwn+5W1k6Zb5EjyRFLnTvc1uQ268/9pcsB+GWUZruplIe5+erR3AxZ+N7Tqp7IY9j2Jf1+/Fg==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@cspell/cspell-json-reporter': 8.2.3 + '@cspell/cspell-pipe': 8.2.3 + '@cspell/cspell-types': 8.2.3 + '@cspell/dynamic-import': 8.2.3 + chalk: 5.3.0 + chalk-template: 1.1.0 + commander: 11.1.0 + cspell-gitignore: 8.2.3 + cspell-glob: 8.2.3 + cspell-io: 8.2.3 + cspell-lib: 8.2.3 + fast-glob: 3.3.2 + fast-json-stable-stringify: 2.1.0 + file-entry-cache: 8.0.0 + get-stdin: 9.0.0 + semver: 7.5.4 + strip-ansi: 7.1.0 + vscode-uri: 3.0.8 + dev: true + + /css-functions-list@3.2.1: + resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==} + engines: {node: '>=12 || >=16'} + dev: true + + /css-loader@6.8.1(webpack@5.89.0): + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) + postcss-modules-scope: 3.1.0(postcss@8.4.32) + postcss-modules-values: 4.0.0(postcss@8.4.32) + postcss-value-parser: 4.2.0 + semver: 7.5.4 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: false + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype@3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /currently-unhandled@0.4.1: + resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} + engines: {node: '>=0.10.0'} + dependencies: + array-find-index: 1.0.2 + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: true + + /dag-map@1.0.2: + resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + /dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + + /dat.gui@0.7.9: + resolution: {integrity: sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==} + dev: false + + /data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + dev: true + + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: false + + /date-fns@3.0.6: + resolution: {integrity: sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg==} + dev: false + + /date-time@3.1.0: + resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} + engines: {node: '>=6'} + dependencies: + time-zone: 1.0.0 + dev: true + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + + /decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + dependencies: + mimic-response: 1.0.1 + dev: true + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: false + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: false + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + /deep-freeze@0.0.1: + resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge-ts@5.1.0: + resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} + engines: {node: '>=16.0.0'} + dev: true + + /deepmerge@4.0.0: + resolution: {integrity: sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww==} + engines: {node: '>=0.10.0'} + dev: false + + /deepmerge@4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: false + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: false + + /default-gateway@4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + dev: false + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + requiresBuild: true + dependencies: + clone: 1.0.4 + + /defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + + /defu@6.1.3: + resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} + dev: false + + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true + + /denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + /depcheck@1.4.7: + resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.6 + '@vue/compiler-sfc': 3.3.13 + callsite: 1.0.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + debug: 4.3.4 + deps-regex: 0.2.0 + findup-sync: 5.0.0 + ignore: 5.3.0 + is-core-module: 2.13.1 + js-yaml: 3.14.1 + json5: 2.2.3 + lodash: 4.17.21 + minimatch: 7.4.6 + multimatch: 5.0.0 + please-upgrade-node: 3.2.0 + readdirp: 3.6.0 + require-package-name: 2.0.1 + resolve: 1.22.8 + resolve-from: 5.0.0 + semver: 7.5.4 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + + /deps-regex@0.2.0: + resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false + + /detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: false + + /detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + dev: true + + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + + /detect-node@2.0.4: + resolution: {integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==} + dev: false + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /detect-package-manager@2.0.1: + resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: false + + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: false + + /difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + dependencies: + heap: 0.2.7 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /direction@1.0.4: + resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} + hasBin: true + dev: false + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: false + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: false + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domain-browser@4.23.0: + resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} + engines: {node: '>=10'} + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: false + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-cli@7.3.0: + resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + dev: true + + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: false + + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + + /dreamopt@0.8.0: + resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} + engines: {node: '>=0.4.0'} + dependencies: + wordwrap: 1.0.0 + dev: true + + /drizzle-kit@0.20.9: + resolution: {integrity: sha512-5oIbPFdfEEfzVSOB3MWGt70VSHv6W7qMAWCJ5xc6W1BxgGASipxuAuyXD59fx9S6QYTNNnuSuQFoIdnNTRWY2A==} + hasBin: true + dependencies: + '@drizzle-team/studio': 0.0.37 + '@esbuild-kit/esm-loader': 2.6.5 + camelcase: 7.0.1 + chalk: 5.3.0 + commander: 9.5.0 + env-paths: 3.0.0 + esbuild: 0.19.10 + esbuild-register: 3.5.0(esbuild@0.19.10) + glob: 8.1.0 + hanji: 0.0.5 + json-diff: 0.9.0 + minimatch: 7.4.6 + semver: 7.5.4 + zod: 3.22.4 + transitivePeerDependencies: + - supports-color + dev: true + + /drizzle-orm@0.29.2(@neondatabase/serverless@0.6.1)(@planetscale/database@1.13.0)(@types/pg@8.10.9)(@types/react@18.2.45)(expo-sqlite@13.2.0)(mysql2@3.6.5)(pg@8.11.3)(postgres@3.4.3)(react@18.2.0): + resolution: {integrity: sha512-BhwCwuSQqUoLVc7wtgIkuWexY127Z9+yDbuXU7QWZbMC2XE48jecvAThW9apQaDoaxQmwQ+ObyPfPb4zL4Bgsw==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=13.2.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: optional: true - '@types/react-dom': + postgres: optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': + sql.js: optional: true - '@types/react-dom': + sqlite3: optional: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + '@neondatabase/serverless': 0.6.1 + '@planetscale/database': 1.13.0 + '@types/pg': 8.10.9 + '@types/react': 18.2.45 + expo-sqlite: 13.2.0(expo@49.0.21) + mysql2: 3.6.5 + pg: 8.11.3 + postgres: 3.4.3 + react: 18.2.0 dev: false - /@radix-ui/react-compose-refs@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + /drizzle-zod@0.5.1(drizzle-orm@0.29.2)(zod@3.22.4): + resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + drizzle-orm: '>=0.23.13' + zod: '*' dependencies: - '@babel/runtime': 7.23.2 - react: 18.3.0-canary-ce2bc58a9-20231102 + drizzle-orm: 0.29.2(@neondatabase/serverless@0.6.1)(@planetscale/database@1.13.0)(@types/pg@8.10.9)(@types/react@18.2.45)(expo-sqlite@13.2.0)(mysql2@3.6.5)(pg@8.11.3)(postgres@3.4.3)(react@18.2.0) + zod: 3.22.4 dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + + /duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + dev: true + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.1 dev: false - /@radix-ui/react-context@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /e-prime@0.10.4: + resolution: {integrity: sha512-tzBmM2mFSnAq5BuxPSyin6qXb3yMe1wufJN7L7ZPcEWS5S+jI2dhKQEoqHVEcSMMXo/j5lcWpX5jzA6wLSmX6w==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /easy-table@1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} dependencies: - '@babel/runtime': 7.23.2 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + dev: true - /@radix-ui/react-context@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 dev: false - /@radix-ui/react-dialog@1.0.0(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-guards': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - aria-hidden: 1.2.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - react-remove-scroll: 2.5.4(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - transitivePeerDependencies: - - '@types/react' + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - aria-hidden: 1.2.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - react-remove-scroll: 2.5.5(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + jake: 10.8.7 dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 dev: false - /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} + /embla-carousel-react@8.0.0-rc17(react@18.2.0): + resolution: {integrity: sha512-x4aFprwFB+PQO9EsHHZsrDxARb0uYNBYn9mr5oDFdBdPez4M8G1r5yidWbUcT9pNUc8AQXC9sGzlfauBfBxVOw==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8.0 || ^17.0.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + embla-carousel: 8.0.0-rc17 + embla-carousel-reactive-utils: 8.0.0-rc17(embla-carousel@8.0.0-rc17) + react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + /embla-carousel-reactive-utils@8.0.0-rc17(embla-carousel@8.0.0-rc17): + resolution: {integrity: sha512-eluEOK/u5HdjYaTLC4bUG3iTCnyX7RsYix3il0aH4ZECOKa5fS+pVK2vrM17Mgw6C5Hyjcr3r3lfJtGerVzVsQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + embla-carousel: 8.0.0-rc17 dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + embla-carousel: 8.0.0-rc17 dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-focus-guards@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.23.2 - react: 18.3.0-canary-ce2bc58a9-20231102 + /embla-carousel@8.0.0-rc17: + resolution: {integrity: sha512-evF49b88VOitvqFtlvhvKVSu96Y8A+QSFdhok87Bfm8R7OYuk95FT+o8+M1GQLi/EhGDUlT193HTVAR0Wt2neQ==} dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emittery@1.0.1: + resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} + engines: {node: '>=14.16'} + dev: true + + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} dev: false - /@radix-ui/react-focus-scope@1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + /enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /encode-registry@3.0.1: + resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} + engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + mem: 8.1.1 + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} dev: false - /@radix-ui/react-icons@1.3.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} - peerDependencies: - react: ^16.x || ^17.x || ^18.x + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + once: 1.4.0 - /@radix-ui/react-id@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /endent@2.1.0: + resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 + dedent: 0.7.0 + fast-json-parse: 1.0.3 + objectorarray: 1.0.5 dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /enhance-visitors@1.0.0: + resolution: {integrity: sha512-+29eJLiUixTEDRaZ35Vu8jP3gPLNcQQkQkOQjLp2X+6cZGGPDD/uasbFzvLsJKnGZnvmyZ0srxudwOtskHeIDA==} + engines: {node: '>=4.0.0'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + lodash: 4.17.21 + dev: true - /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /enhanced-resolve@0.9.1: + resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} + engines: {node: '>=0.6'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + graceful-fs: 4.2.11 + memory-fs: 0.2.0 + tapable: 0.1.10 + dev: true - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - aria-hidden: 1.2.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - react-remove-scroll: 2.5.5(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + dev: false + + /env-editor@1.1.0: + resolution: {integrity: sha512-7AXskzN6T7Q9TFcKAGJprUbpQa4i1VsAetO9rdBqbGMGlragTziBgWt4pVYJMBWHQlLoX0buy6WFikzPH4Qjpw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /envinfo@7.11.0: + resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} + engines: {node: '>=4'} + hasBin: true dev: false - /@radix-ui/react-menubar@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-bHgUo9gayKZfaQcWSSLr++LyS0rgh+MvD89DE4fJ6TkGHvjHgPaBZf44hdka7ogOxIOdj9163J+5xL2Dn4qzzg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - aria-hidden: 1.2.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - react-remove-scroll: 2.5.5(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + /eol@0.9.1: + resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: - '@babel/runtime': 7.23.2 - '@floating-ui/react-dom': 2.0.2(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + is-arrayish: 0.2.1 - /@radix-ui/react-portal@1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + stackframe: 1.3.4 dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + 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 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 - /@radix-ui/react-presence@1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 - /@radix-ui/react-primitive@1.0.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-slot': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + hasown: 2.0.0 - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: true + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: true + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - aria-hidden: 1.2.3 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - react-remove-scroll: 2.5.5(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + d: 1.0.1 + ext: 1.7.0 + dev: true - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: true + + /esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: false - /@radix-ui/react-slider@1.1.2(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-slot@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} + /esbuild-register@3.5.0(esbuild@0.18.20): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + esbuild: '>=0.12 <1' dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 + debug: 4.3.4 + esbuild: 0.18.20 + transitivePeerDependencies: + - supports-color dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + /esbuild-register@3.5.0(esbuild@0.19.10): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + esbuild: '>=0.12 <1' dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + debug: 4.3.4 + esbuild: 0.19.10 + transitivePeerDependencies: + - supports-color + dev: true + + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: false - /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@radix-ui/react-use-callback-ref@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.23.2 - react: 18.3.0-canary-ce2bc58a9-20231102 + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + /esbuild@0.19.10: + resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.10 + '@esbuild/android-arm': 0.19.10 + '@esbuild/android-arm64': 0.19.10 + '@esbuild/android-x64': 0.19.10 + '@esbuild/darwin-arm64': 0.19.10 + '@esbuild/darwin-x64': 0.19.10 + '@esbuild/freebsd-arm64': 0.19.10 + '@esbuild/freebsd-x64': 0.19.10 + '@esbuild/linux-arm': 0.19.10 + '@esbuild/linux-arm64': 0.19.10 + '@esbuild/linux-ia32': 0.19.10 + '@esbuild/linux-loong64': 0.19.10 + '@esbuild/linux-mips64el': 0.19.10 + '@esbuild/linux-ppc64': 0.19.10 + '@esbuild/linux-riscv64': 0.19.10 + '@esbuild/linux-s390x': 0.19.10 + '@esbuild/linux-x64': 0.19.10 + '@esbuild/netbsd-x64': 0.19.10 + '@esbuild/openbsd-x64': 0.19.10 + '@esbuild/sunos-x64': 0.19.10 + '@esbuild/win32-arm64': 0.19.10 + '@esbuild/win32-ia32': 0.19.10 + '@esbuild/win32-x64': 0.19.10 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + dev: true + + /escape-goat@3.0.0: + resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} + engines: {node: '>=10'} dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false - /@radix-ui/react-use-controllable-state@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + /eslint-compat-utils@0.1.2(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + eslint: '>=6.0.0' dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + eslint: /eslint-ts-patch@8.56.0-0 - /@radix-ui/react-use-escape-keydown@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} + /eslint-compat-utils@0.1.2(eslint@8.56.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + eslint: '>=6.0.0' dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + eslint: 8.56.0 + dev: true - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + /eslint-config-airbnb-base@15.0.0(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + confusing-browser-globals: 1.0.11 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + object.assign: 4.1.5 + object.entries: 1.1.7 + semver: 6.3.1 + dev: true - /@radix-ui/react-use-layout-effect@1.0.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + /eslint-config-airbnb@19.0.4(eslint-plugin-i@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsx-a11y: 6.8.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-react: 7.33.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-hooks: 4.6.0(eslint-ts-patch@8.56.0-0) + object.assign: 4.1.5 + object.entries: 1.1.7 + dev: true + + /eslint-config-flat-gitignore@0.1.2: + resolution: {integrity: sha512-PcBsqtd5QHEZH4ROvpnRN4EP0qcHh9voCCHgtyHxnJZHGspJREcZn7oPqRG/GfWt9m3C0fkC2l5CuBtMig2wXQ==} dependencies: - '@babel/runtime': 7.23.2 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + parse-gitignore: 2.0.0 + dev: true - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + /eslint-config-next@14.0.4(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' peerDependenciesMeta: - '@types/react': + typescript: optional: true dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + '@next/eslint-plugin-next': 14.0.4 + '@rushstack/eslint-patch': 1.6.1 + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-jsx-a11y: 6.8.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-react: 7.33.2(eslint-ts-patch@8.56.0-0) + eslint-plugin-react-hooks: 4.6.0(eslint-ts-patch@8.56.0-0) + typescript: 5.3.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + /eslint-config-prettier@8.10.0(eslint@8.56.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + eslint: '>=7.0.0' dependencies: - '@babel/runtime': 7.23.2 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + eslint: 8.56.0 + dev: true - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + /eslint-config-prettier@9.1.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + eslint: '>=7.0.0' dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + eslint: /eslint-ts-patch@8.56.0-0 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.56.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.33.2)(eslint@8.56.0): + resolution: {integrity: sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + eslint: ^8.8.0 + eslint-plugin-react: ^7.28.0 dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - dev: false + eslint: 8.56.0 + eslint-plugin-react: 7.33.2(eslint@8.56.0) - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + /eslint-config-standard-react@13.0.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0): + resolution: {integrity: sha512-HrVPGj8UncHfV+BsdJTuJpVsomn6AIrke3Af2Fh4XFvQQDU+iO6N2ZL+UsC+scExft4fU3uf7fJwj7PKWnXJDA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + eslint: ^8.8.0 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.6.0 dependencies: - '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@types/react': 18.2.34 - '@types/react-dom': 18.2.14 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + 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) dev: false - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + /eslint-config-standard-with-typescript@23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-iaaWifImn37Z1OXbNW1es7KI+S7D408F9ys0bpaQf2temeBWlvb0Nc5qHkOgYaRb5QxTZT32GGeN1gtswASOXA==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: ^15.0.0 + eslint-plugin-promise: ^6.0.0 + typescript: '*' dependencies: - '@babel/runtime': 7.23.2 - dev: false + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard: 17.0.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true - /@rushstack/eslint-patch@1.5.1: - resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} - dev: false + /eslint-config-standard@17.0.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): + resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: ^15.0.0 + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + dev: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) dev: true - /@sindresorhus/is@0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.5.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 16.5.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + dev: false + + /eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.16.0)(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-vPQssnRSUgBFOEfB/KY12CXwltwFSn4RSCfa+w7gjBC2PFQ7Yfgmyei+1XUZ3K+8LRGef2NMJUcxts7PldhDjg==} + engines: {node: '>=16'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>=6.0.0' + '@typescript-eslint/parser': '>=6.0.0' + eslint: '>=8.0.0' + typescript: '>=4.7' + dependencies: + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + typescript: 5.3.3 dev: true - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + /eslint-config-xo@0.43.1(eslint@8.56.0): + resolution: {integrity: sha512-azv1L2PysRA0NkZOgbndUpN+581L7wPqkgJOgxxw3hxwXAbJgD6Hqb/SjHRiACifXt/AvxCzE/jIKFAlI7XjvQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.27.0' dependencies: - type-detect: 4.0.8 + confusing-browser-globals: 1.0.11 + eslint: 8.56.0 dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + /eslint-formatter-codeframe@7.32.1: + resolution: {integrity: sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - '@sinonjs/commons': 3.0.0 + '@babel/code-frame': 7.12.11 + chalk: 4.1.2 dev: true - /@snyk/github-codeowners@1.1.0: - resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} - engines: {node: '>=8.10'} - hasBin: true + /eslint-formatter-pretty@5.0.0: + resolution: {integrity: sha512-Uick451FoL22/wXqyScX3inW8ZlD/GQO7eFXj3bqb6N/ZtuuF00/CwSNIKLbFCJPrX5V4EdQBSgJ/UVnmLRnug==} + engines: {node: '>=14.16'} dependencies: - commander: 4.1.1 - ignore: 5.2.4 - p-map: 4.0.0 + '@types/eslint': 8.56.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 dev: true - /@stripe/react-stripe-js@2.3.1(@stripe/stripe-js@2.1.11)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-vXiwcG2ZjAF4AezjP7DJ8jiwxfCWCen/X2rBhyXaKrfQ7+pwmXhsoUlKRa0eLWioY1oelOQOafauNUiwTwFHgQ==} + /eslint-formatting-reporter@0.0.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} 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 + eslint: '>=8.40.0' dependencies: - '@stripe/stripe-js': 2.1.11 - prop-types: 15.8.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + eslint: /eslint-ts-patch@8.56.0-0 + prettier-linter-helpers: 1.0.0 + dev: true - /@stripe/stripe-js@2.1.11: - resolution: {integrity: sha512-GRyInO+VPMjjgUzVPKpDtz+5s8JKssJ99uhWBGo09yxDQBb+bhkm6PxmVa8C+qsSd30JFO1Z+pgIJ0AMmmZJKg==} - dev: false + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' dependencies: - tslib: 2.6.2 + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color dev: false - /@szmarczak/http-timer@1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' dependencies: - defer-to-connect: 1.1.3 - dev: true + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color - /@t3-oss/env-core@0.7.1(typescript@5.2.2)(zod@3.22.4): - resolution: {integrity: sha512-3+SQt39OlmSaRLqYVFv8uRm1BpFepM5TIiMytRqO9cjH+wB77o6BIJdeyM5h5U4qLBMEzOJWCY4MBaU/rLwbYw==} + /eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.27.5)(webpack@5.89.0): + resolution: {integrity: sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA==} + engines: {node: '>= 6'} peerDependencies: - typescript: '>=4.7.2' - zod: ^3.0.0 - peerDependenciesMeta: - typescript: - optional: true + eslint-plugin-import: '>=1.4.0' + webpack: '>=1.11.0' dependencies: - typescript: 5.2.2 - zod: 3.22.4 - dev: false + array.prototype.find: 2.2.2 + debug: 3.2.7 + enhanced-resolve: 0.9.1 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.56.0) + find-root: 1.1.0 + hasown: 2.0.0 + interpret: 1.4.0 + is-core-module: 2.13.1 + is-regex: 1.1.4 + lodash: 4.17.21 + resolve: 2.0.0-next.5 + semver: 5.7.2 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - supports-color + dev: true - /@t3-oss/env-nextjs@0.7.1(typescript@5.2.2)(zod@3.22.4): - resolution: {integrity: sha512-tQDbNLGCOvKGi+JoGuJ/CJInJI7/kLWJqtgGppAKS7ZFLdVOqZYR/uRjxlXOWPnxmUKF8VswOAsq7fXUpNZDhA==} + /eslint-interactive@10.8.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-bsMSr0NVyxoSbKbA3Rn8so5+A9q+Zu8xExiIM18umPjrqfBAN8WcJfsWvfc9Myfiqn2WwLDM9mRglbx+Hp+z3Q==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true peerDependencies: - typescript: '>=4.7.2' - zod: ^3.0.0 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@t3-oss/env-core': 0.7.1(typescript@5.2.2)(zod@3.22.4) - typescript: 5.2.2 - zod: 3.22.4 - dev: false + boxen: 7.1.1 + chalk: 5.3.0 + comlink: 4.4.1 + enquirer: 2.4.1 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-formatter-codeframe: 7.32.1 + estraverse: 5.3.0 + find-cache-dir: 4.0.0 + is-installed-globally: 0.4.0 + ora: 6.3.1 + strip-ansi: 7.1.0 + table: 6.8.1 + terminal-link: 3.0.0 + yargs: 17.7.2 + dev: true - /@tailwindcss/typography@0.5.10(tailwindcss@3.3.5): - resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + /eslint-merge-processors@0.1.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + eslint: '*' dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.3.5 + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@tanstack/eslint-plugin-query@5.6.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-A0D8fXIh6fuHcT7e+VaL+QnlLhY9V5QmiaLOTLOIcyVKCpWVZLSHrLP6ghZV6CB+JLalHWCAUF0QW0UaEyyz7g==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.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: - eslint: ^8.0.0 + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) - eslint: 8.53.0 + '@typescript-eslint/parser': 5.62.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.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) transitivePeerDependencies: - supports-color - - typescript dev: true - /@tanstack/query-core@4.18.0: - resolution: {integrity: sha512-PP4mG8MD08sq64RZCqMfXMYfaj7+Oulwg7xZ/fJoEOdTZNcPIgaOkHajZvUBsNLbi/0ViMvJB4cFkL2Jg2WPbw==} - dev: false - - /@tanstack/react-query@4.18.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-s1kdbGMdVcfUIllzsHUqVUdktBT5uuIRgnvrqFNLjl9TSOXEoBSDrhjsGjao0INQZv8cMpQlgOh3YH9YtN6cKw==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.56.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' peerDependenciesMeta: - react-dom: + '@typescript-eslint/parser': optional: true - react-native: + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: optional: true dependencies: - '@tanstack/query-core': 4.18.0 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - use-sync-external-store: 1.2.0(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false + '@typescript-eslint/parser': 6.16.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.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.27.5)(webpack@5.89.0) + transitivePeerDependencies: + - supports-color + dev: true - /@tanstack/react-table@8.10.7(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-bXhjA7xsTcsW8JPTTYlUg/FuBpn8MNjiEPhkNhIGCUR6iRQM2+WEco4OBpvDeVcR9SE+bmWLzdfiY7bCbCSVuA==} - engines: {node: '>=12'} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: - react: '>=16' - react-dom: '>=16' + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - '@tanstack/table-core': 8.10.7 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@tanstack/table-core@8.10.7: - resolution: {integrity: sha512-KQk5OMg5OH6rmbHZxuNROvdI+hKDIUxANaHlV+dPlNN7ED3qYQ/WkpY2qlXww1SIdeMlkIhpN/2L00rof0fXFw==} - engines: {node: '>=12'} - dev: false + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + debug: 3.2.7 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) + transitivePeerDependencies: + - supports-color - /@testing-library/jest-dom@6.1.4(@types/jest@29.5.7)(jest@29.7.0): - resolution: {integrity: sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.16.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: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' peerDependenciesMeta: - '@jest/globals': + '@typescript-eslint/parser': optional: true - '@types/jest': + eslint: optional: true - jest: + eslint-import-resolver-node: optional: true - vitest: + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: optional: true dependencies: - '@adobe/css-tools': 4.3.1 - '@babel/runtime': 7.23.2 - '@types/jest': 29.5.7 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - jest: 29.7.0(@types/node@20.8.10) - lodash: 4.17.21 - redent: 3.0.0 - dev: true - - /@trpc/client@10.43.1(@trpc/server@10.43.1): - resolution: {integrity: sha512-pkPtbDS0ck/2WZo2cWaPV11NFMII2I/nzse1Ggs5Cr0YczsZk3Z0DM77Sfb9FTSjmccYfkEtumHqxfTj6fRbbg==} - peerDependencies: - '@trpc/server': 10.43.1 - dependencies: - '@trpc/server': 10.43.1 - dev: false - - /@trpc/react-query@10.43.1(@tanstack/react-query@4.18.0)(@trpc/client@10.43.1)(@trpc/server@10.43.1)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-H7icpfXRYdD8K7EFDozKxtTEkMyQNu4+KLHNiCHq5yan4le3dyhtDYJa+1ZR/0sZWV95siVa+CqcUQHs1Nwu+g==} - peerDependencies: - '@tanstack/react-query': ^4.18.0 - '@trpc/client': 10.43.1 - '@trpc/server': 10.43.1 - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@tanstack/react-query': 4.18.0(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - '@trpc/client': 10.43.1(@trpc/server@10.43.1) - '@trpc/server': 10.43.1 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - dev: false - - /@trpc/server@10.43.1: - resolution: {integrity: sha512-rKOSCpJOb1MdTyJFqdf3QNNESDfPkbP+yBOZBM2x6iIOS4VlCfJqxsaSrb3uLPR6s8Ni7DhTu+cu/q1r0xOGcw==} - engines: {node: '>=18.0.0'} - dev: false - - /@types/acorn@4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - dependencies: - '@types/estree': 1.0.4 - dev: false + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-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.16.0)(eslint-plugin-i@2.29.1)(eslint-ts-patch@8.56.0-0) + transitivePeerDependencies: + - supports-color - /@types/babel__core@7.20.3: - resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} - dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - '@types/babel__generator': 7.6.6 - '@types/babel__template': 7.4.3 - '@types/babel__traverse': 7.20.3 + /eslint-parser-plain@0.1.0: + resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} dev: true - /@types/babel__generator@7.6.6: - resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} + /eslint-plugin-antfu@2.1.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-HCPo3IP15/gOaruIb1ce6R4LUv/MKBZCmWzqYiLGDFW43WW4juPURnjaQIE3AgWNSoCURqD3wxerXYKzokKTgA==} + peerDependencies: + eslint: '*' dependencies: - '@babel/types': 7.23.0 + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@types/babel__template@7.4.3: - resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} + /eslint-plugin-ava@14.0.0(eslint@8.56.0): + resolution: {integrity: sha512-XmKT6hppaipwwnLVwwvQliSU6AF1QMHiNoLD5JQfzhUhf0jY7CO0O624fQrE+Y/fTb9vbW8r77nKf7M/oHulxw==} + engines: {node: '>=14.17 <15 || >=16.4'} + peerDependencies: + eslint: '>=8.26.0' dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + enhance-visitors: 1.0.0 + eslint: 8.56.0 + eslint-utils: 3.0.0(eslint@8.56.0) + espree: 9.6.1 + espurify: 2.1.1 + import-modules: 2.1.0 + micro-spelling-correcter: 1.1.1 + pkg-dir: 5.0.0 + resolve-from: 5.0.0 dev: true - /@types/babel__traverse@7.20.3: - resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} + /eslint-plugin-deprecation@2.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: ^4.2.4 || ^5.0.0 dependencies: - '@babel/types': 7.23.0 + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + tslib: 2.6.2 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color dev: true - /@types/body-parser@1.19.4: - resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} - dependencies: - '@types/connect': 3.4.37 - '@types/node': 20.8.10 - dev: false - - /@types/connect@3.4.37: - resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==} - dependencies: - '@types/node': 20.8.10 - dev: false - - /@types/cookies@0.7.7: - resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} - dependencies: - '@types/connect': 3.4.37 - '@types/express': 4.17.14 - '@types/keygrip': 1.0.4 - '@types/node': 20.8.10 - dev: false - - /@types/debug@4.1.10: - resolution: {integrity: sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA==} - dependencies: - '@types/ms': 0.7.33 - dev: false - - /@types/eslint-scope@3.7.6: - resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==} - dependencies: - '@types/eslint': 8.44.6 - '@types/estree': 1.0.4 - dev: false - - /@types/eslint@8.44.6: - resolution: {integrity: sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==} - dependencies: - '@types/estree': 1.0.4 - '@types/json-schema': 7.0.14 - dev: false - - /@types/estree-jsx@1.0.2: - resolution: {integrity: sha512-GNBWlGBMjiiiL5TSkvPtOteuXsiVitw5MYGY1UYlrAq0SKyczsls6sCD7TZ8fsjRsvCVxml7EbyjJezPb3DrSA==} - dependencies: - '@types/estree': 1.0.4 - dev: false - - /@types/estree@1.0.4: - resolution: {integrity: sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==} - dev: false - - /@types/express-serve-static-core@4.17.39: - resolution: {integrity: sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==} + /eslint-plugin-drizzle@0.2.3(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==} + peerDependencies: + eslint: '>=8.0.0' dependencies: - '@types/node': 20.8.10 - '@types/qs': 6.9.9 - '@types/range-parser': 1.2.6 - '@types/send': 0.17.3 + eslint: /eslint-ts-patch@8.56.0-0 dev: false - /@types/express@4.17.14: - resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} + /eslint-plugin-es-x@7.5.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' dependencies: - '@types/body-parser': 1.19.4 - '@types/express-serve-static-core': 4.17.39 - '@types/qs': 6.9.9 - '@types/serve-static': 1.15.4 - dev: false + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + '@eslint-community/regexpp': 4.10.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-compat-utils: 0.1.2(eslint-ts-patch@8.56.0-0) - /@types/graceful-fs@4.1.8: - resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==} + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' dependencies: - '@types/node': 20.8.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /@types/hast@3.0.2: - resolution: {integrity: sha512-B5hZHgHsXvfCoO3xgNJvBnX7N8p86TqQeGKXcokW4XXi+qY4vxxPSFYofytvVmpFxzPv7oxDQzjg5Un5m2/xiw==} + /eslint-plugin-es@4.1.0(eslint@8.56.0): + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: - '@types/unist': 3.0.1 - dev: false - - /@types/http-errors@2.0.3: - resolution: {integrity: sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==} - dev: false - - /@types/istanbul-lib-coverage@2.0.5: - resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==} + eslint: 8.56.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 dev: true - /@types/istanbul-lib-report@3.0.2: - resolution: {integrity: sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==} + /eslint-plugin-eslint-comments@3.2.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: - '@types/istanbul-lib-coverage': 2.0.5 + escape-string-regexp: 1.0.5 + eslint: /eslint-ts-patch@8.56.0-0 + ignore: 5.3.0 dev: true - /@types/istanbul-reports@3.0.3: - resolution: {integrity: sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==} + /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: - '@types/istanbul-lib-report': 3.0.2 + escape-string-regexp: 1.0.5 + eslint: 8.56.0 + ignore: 5.3.0 dev: true - /@types/jest@29.5.7: - resolution: {integrity: sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==} + /eslint-plugin-format@0.1.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-IgOu+GEH+PdKnpuPrFzY8q8QgnzAUijDZsNLhpp5jx0Lbu9u968/STcmEZGnIMVBw3zeTNN/FsU6d2Rdgcy6Aw==} + peerDependencies: + eslint: ^8.40.0 dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + '@dprint/formatter': 0.2.1 + '@dprint/markdown': 0.16.3 + '@dprint/toml': 0.5.4 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-formatting-reporter: 0.0.0(eslint-ts-patch@8.56.0-0) + eslint-parser-plain: 0.1.0 + prettier: 3.1.1 + synckit: 0.8.8 dev: true - /@types/js-cookie@3.0.5: - resolution: {integrity: sha512-dtLshqoiGRDHbHueIT9sjkd2F4tW1qPSX2xKAQK8p1e6pM+Z913GM1shv7dOqqasEMYbC5zEaClJomQe8OtQLA==} - dev: false - - /@types/json-schema@7.0.14: - resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - /@types/keygrip@1.0.4: - resolution: {integrity: sha512-/tjWYD8StMrINelsrHNmpXceo9s3/Y22AzePH1qCvXIgmz/aQp2YFFr6HqhNQVIOdcvaVyp5GS+yjHGuF7Rwsg==} - dev: false - - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + /eslint-plugin-functional@6.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-jOUHUMA9cN2CIpgPj93fW1vTI3c95ZYUHMPJxEJL4KAtFkJDcT/9/YlfyrLOBxHkAcwBhJ29HSmeC/CUnN0k3g==} + engines: {node: '>=16.10.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '>=4.3.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/node': 20.8.10 - dev: true - - /@types/lodash@4.14.200: - resolution: {integrity: sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==} + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + deepmerge-ts: 5.1.0 + escape-string-regexp: 4.0.0 + eslint: /eslint-ts-patch@8.56.0-0 + is-immutable-type: 2.0.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color dev: true - /@types/mdast@4.0.2: - resolution: {integrity: sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==} + /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: ^7.2.0 || ^8 dependencies: - '@types/unist': 3.0.1 - dev: false - - /@types/mdx@2.0.9: - resolution: {integrity: sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==} - dev: false - - /@types/mime@1.3.4: - resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} - dev: false - - /@types/mime@3.0.3: - resolution: {integrity: sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ==} - dev: false + debug: 4.3.4 + doctrine: 3.0.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + get-tsconfig: 4.7.2 + is-glob: 4.0.3 + minimatch: 3.1.2 + semver: 7.5.4 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.56.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + 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.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.56.0) + has: 1.0.4 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.7 + resolve: 1.22.8 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true - /@types/minimist@1.2.4: - resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.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 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.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 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true - /@types/ms@0.7.33: - resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==} - dev: false - - /@types/node-fetch@2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: - '@types/node': 20.8.10 - form-data: 3.0.1 + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint-ts-patch@8.56.0-0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: false - /@types/node@16.18.6: - resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==} - dev: false + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + 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.16.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 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color - /@types/node@20.8.10: - resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + /eslint-plugin-jest-extended@2.0.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-nMhVVsVcG/+Q6FMshql35WBxwx8xlBhxKgAG08WP3BYWfXrp28oxLpJVu9JSbMpfmfKGVrHwMYJGfPLRKlGB8w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - undici-types: 5.26.5 - - /@types/normalize-package-data@2.4.3: - resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} + '@typescript-eslint/utils': 5.62.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /@types/parse-json@4.0.1: - resolution: {integrity: sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==} + /eslint-plugin-jest-formatting@3.1.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=0.8.0' + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@types/pg@8.10.7: - resolution: {integrity: sha512-ksJqHipwYaSEHz9e1fr6H6erjoEdNNaOxwyJgPx9bNeaqOW3iWBQgVHfpwiSAoqGzchfc+ZyRLwEfeCcyYD3uQ==} + /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0)(jest@29.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true dependencies: - '@types/node': 20.8.10 - pg-protocol: 1.6.0 - pg-types: 4.0.1 + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + jest: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + transitivePeerDependencies: + - supports-color + - typescript + dev: true - /@types/pg@8.6.6: - resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} + /eslint-plugin-jsdoc@46.9.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-11Ox5LCl2wY7gGkp9UOyew70o9qvii1daAH+h/MFobRVRNcy7sVlH+jm0HQdgcvcru6285GvpjpUyoa051j03Q==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@types/node': 20.8.10 - pg-protocol: 1.6.0 - pg-types: 2.2.0 - dev: false - - /@types/prop-types@15.7.9: - resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} - - /@types/qs@6.9.9: - resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==} - dev: false - - /@types/range-parser@1.2.6: - resolution: {integrity: sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==} - dev: false + '@es-joy/jsdoccomment': 0.41.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.4 + escape-string-regexp: 4.0.0 + eslint: /eslint-ts-patch@8.56.0-0 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.5.4 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true - /@types/react-dom@18.2.14: - resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} + /eslint-plugin-jsonc@2.11.2(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' dependencies: - '@types/react': 18.2.34 + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + eslint: /eslint-ts-patch@8.56.0-0 + eslint-compat-utils: 0.1.2(eslint-ts-patch@8.56.0-0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + dev: true - /@types/react@18.2.34: - resolution: {integrity: sha512-U6eW/alrRk37FU/MS2RYMjx0Va2JGIVXELTODaTIYgvWGCV4Y4TfTUzG8DdmpDNIT0Xpj/R7GfyHOJJrDttcvg==} + /eslint-plugin-jsx-a11y@6.8.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@types/prop-types': 15.7.9 - '@types/scheduler': 0.16.5 - csstype: 3.1.2 + '@babel/runtime': 7.23.6 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 + eslint: /eslint-ts-patch@8.56.0-0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 - /@types/responselike@1.0.2: - resolution: {integrity: sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==} + /eslint-plugin-markdown@3.0.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/node': 20.8.10 + eslint: /eslint-ts-patch@8.56.0-0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color dev: true - /@types/scheduler@0.16.5: - resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} - - /@types/semver@7.5.4: - resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + /eslint-plugin-n@15.7.0(eslint@8.56.0): + resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + builtins: 5.0.1 + eslint: 8.56.0 + eslint-plugin-es: 4.1.0(eslint@8.56.0) + eslint-utils: 3.0.0(eslint@8.56.0) + ignore: 5.3.0 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 dev: true - /@types/send@0.17.3: - resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==} + /eslint-plugin-n@16.5.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-Hw02Bj1QrZIlKyj471Tb1jSReTl4ghIMHGuBGiMVmw+s0jOPbI4CBuYpGbZr+tdQ+VAvSK6FDSta3J4ib/SKHQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' dependencies: - '@types/mime': 1.3.4 - '@types/node': 20.8.10 - dev: false + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + builtins: 5.0.1 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-plugin-es-x: 7.5.0(eslint-ts-patch@8.56.0-0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 - /@types/serve-static@1.15.4: - resolution: {integrity: sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==} + /eslint-plugin-n@16.5.0(eslint@8.56.0): + resolution: {integrity: sha512-Hw02Bj1QrZIlKyj471Tb1jSReTl4ghIMHGuBGiMVmw+s0jOPbI4CBuYpGbZr+tdQ+VAvSK6FDSta3J4ib/SKHQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' dependencies: - '@types/http-errors': 2.0.3 - '@types/mime': 3.0.3 - '@types/node': 20.8.10 - dev: false - - /@types/stack-utils@2.0.2: - resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + builtins: 5.0.1 + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 dev: true - /@types/unist@2.0.9: - resolution: {integrity: sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==} - dev: false + /eslint-plugin-no-barrel-files@1.1.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-vC2393iJz2JCmRx+YjR5Y7Bh8L4naylAXRtuzgSRwseUwsWsqNcLvMAgD74AQFEFhVti9787UPb4DV/vL6Ktow==} + dependencies: + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: true - /@types/unist@3.0.1: - resolution: {integrity: sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==} - dev: false + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} + dev: true - /@types/yargs-parser@21.0.2: - resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} + /eslint-plugin-no-secrets@0.8.9(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-CqaBxXrImABCtxMWspAnm8d5UKkpNylC7zqVveb+fJHEvsSiNGJlSWzdSIvBUnW1XhJXkzifNIZQC08rEII5Ng==} + engines: {node: '>=10.0.0', npm: '>=6.9.0'} + peerDependencies: + eslint: '>=3.0.0' + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@types/yargs@17.0.29: - resolution: {integrity: sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==} + /eslint-plugin-no-use-extend-native@0.5.0: + resolution: {integrity: sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==} + engines: {node: '>=6.0.0'} dependencies: - '@types/yargs-parser': 21.0.2 + is-get-set-prop: 1.0.0 + is-js-type: 2.0.0 + is-obj-prop: 1.0.0 + is-proto-prop: 2.0.0 dev: true - /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-perfectionist@2.5.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3)(vue-eslint-parser@9.3.2): + resolution: {integrity: sha512-F6XXcq4mKKUe/SREoMGQqzgw6cgCgf3pFzkFfQVIGtqD1yXVpQjnhTepzhBeZfxZwgMzR9HO4yH4CUhIQ2WBcQ==} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' + astro-eslint-parser: ^0.16.0 + eslint: '>=8.0.0' + svelte: '>=3.0.0' + svelte-eslint-parser: ^0.33.0 + vue-eslint-parser: '>=9.0.0' peerDependenciesMeta: - typescript: + astro-eslint-parser: + optional: true + svelte: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: optional: true dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/type-utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 - debug: 4.3.4 - eslint: 8.53.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + minimatch: 9.0.3 + natural-compare-lite: 1.4.0 + vue-eslint-parser: 9.3.2(eslint-ts-patch@8.56.0-0) transitivePeerDependencies: - supports-color + - typescript dev: true - /@typescript-eslint/parser@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-prettier@5.1.2(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@3.1.1): + resolution: {integrity: sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' peerDependenciesMeta: - typescript: + '@types/eslint': + optional: true + eslint-config-prettier: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 - debug: 4.3.4 - eslint: 8.53.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + prettier: 3.1.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + /eslint-plugin-promise@6.1.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@typescript-eslint/scope-manager@6.9.1: - resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-promise@6.1.1(eslint@8.56.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + eslint: 8.56.0 - /@typescript-eslint/type-utils@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-react-hooks@4.6.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.53.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true + eslint: /eslint-ts-patch@8.56.0-0 - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.56.0 + dev: false + + /eslint-plugin-react-refresh@0.4.5(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 dev: true - /@typescript-eslint/types@6.9.1: - resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-react@7.33.2(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: /eslint-ts-patch@8.56.0-0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-react@7.33.2(eslint@8.56.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + + /eslint-plugin-redundant-undefined@1.0.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-7qdYTBD968jFqd/BSMERF/zNveCl+9xrqC8kRZ9YSKR6bHoufi6HwvZXJwD/Gih7prfsh9F5Q4STGDxpj6zSCg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.2.0 + eslint: ^8.46.0 + dependencies: + '@typescript-eslint/parser': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 transitivePeerDependencies: - supports-color + - typescript + dev: true + + /eslint-plugin-sonarjs@0.23.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-z44T3PBf9W7qQ/aR+NmofOTyg6HLhSEZOPD4zhStqBpLoMp8GYhFksuUBnCxbnf1nfISpKBVkQhiBLFI/F4Wlg==} + engines: {node: '>=14'} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: /eslint-ts-patch@8.56.0-0 + dev: true + + /eslint-plugin-tailwindcss@3.13.0(tailwindcss@3.4.0): + resolution: {integrity: sha512-Fcep4KDRLWaK3KmkQbdyKHG0P4GdXFmXdDaweTIPcgOP60OOuWFbh1++dufRT28Q4zpKTKaHwTsXPJ4O/EjU2Q==} + engines: {node: '>=12.13.0'} + peerDependencies: + tailwindcss: ^3.3.2 + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.32 + tailwindcss: 3.4.0(ts-node@10.9.2) dev: true - /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): - resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-toml@0.8.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-vNfoLQq60nK5FTr6x9F/SK3ZcbMsHzfgXsoDLhoCqgGtpzoAmsZrFB+efKEjjLT9wdIL6sKbz4taLKpB9sU8Hw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: '>=6.0.0' dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-compat-utils: 0.1.2(eslint-ts-patch@8.56.0-0) + lodash: 4.17.21 + toml-eslint-parser: 0.9.3 transitivePeerDependencies: - supports-color + dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-tsdoc@0.2.17: + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + dev: true + + /eslint-plugin-unicorn@48.0.1(eslint@8.56.0): + resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + engines: {node: '>=16'} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.14 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.53.0 - eslint-scope: 5.1.1 + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + ci-info: 3.9.0 + clean-regexp: 1.0.0 + eslint: 8.56.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript + strip-indent: 3.0.0 dev: true - /@typescript-eslint/utils@6.9.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} - engines: {node: ^16.0.0 || >=18.0.0} + /eslint-plugin-unicorn@50.0.1(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==} + engines: {node: '>=16'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: '>=8.56.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.14 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - eslint: 8.53.0 + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.34.0 + eslint: /eslint-ts-patch@8.56.0-0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 semver: 7.5.4 + strip-indent: 3.0.0 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.9.1: - resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.9.1 - eslint-visitor-keys: 3.4.3 - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - /@uploadthing/mime-types@0.2.2: - resolution: {integrity: sha512-ZUo1JHOPPMZDsUw1mOhhVDIvJGlsjj6T0xJ/YJtulyJwL43S9B5pxg1cHcRuTEgjaxj7B55jiqQ6r9mDrrjH9A==} - dev: false - - /@uploadthing/react@5.7.0(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102)(uploadthing@5.7.4): - resolution: {integrity: sha512-rSBzoC2eMRM2d6Mpis6RXfo1Y5JsV7oJanTmaVdltFLRxbO/4lwK1kvHM4qwDUvn01UpxBtcVayimMBXNJ0V8Q==} peerDependencies: - next: '*' - react: ^17.0.2 || ^18.0.0 - uploadthing: ^5.0.0 + '@typescript-eslint/eslint-plugin': ^6.0.0 + eslint: ^8.0.0 peerDependenciesMeta: - next: + '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@uploadthing/shared': 5.2.7(@uploadthing/mime-types@0.2.2) - attr-accept: 2.2.2 - file-selector: 0.6.0 - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - tailwind-merge: 1.14.0 - uploadthing: 5.7.4 - transitivePeerDependencies: - - '@uploadthing/mime-types' - dev: false + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + eslint-rule-composer: 0.3.0 + dev: true - /@uploadthing/shared@5.2.7(@uploadthing/mime-types@0.2.2): - resolution: {integrity: sha512-gc+i66m0vPQpy5PC783iq1koE8Fm9lFTd3uPrJAr7kXwpNRteJs4dnu6etDkY8EilTjMFA6w4js/AhW8AUDuQg==} + /eslint-plugin-vitest@0.3.20(@typescript-eslint/eslint-plugin@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-O05k4j9TGMOkkghj9dRgpeLDyOSiVIxQWgNDPfhYPm5ioJsehcYV/zkRLekQs+c8+RBCVXucSED3fYOyy2EoWA==} + engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: - '@uploadthing/mime-types': ^0.2.2 + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.0.0' + vitest: '*' peerDependenciesMeta: - '@uploadthing/mime-types': + '@typescript-eslint/eslint-plugin': + optional: true + vitest: optional: true dependencies: - '@uploadthing/mime-types': 0.2.2 - dev: false - - /@vercel/analytics@1.1.1: - resolution: {integrity: sha512-+NqgNmSabg3IFfxYhrWCfB/H+RCUOCR5ExRudNG2+pcRehq628DJB5e1u1xqwpLtn4pAYii4D98w7kofORAGQA==} - dependencies: - server-only: 0.0.1 - dev: false - - /@vue/compiler-core@3.3.7: - resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} - dependencies: - '@babel/parser': 7.23.0 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - source-map-js: 1.0.2 + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /@vue/compiler-dom@3.3.7: - resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} + /eslint-plugin-vue@9.19.2(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@vue/compiler-core': 3.3.7 - '@vue/shared': 3.3.7 + '@eslint-community/eslint-utils': 4.4.0(eslint-ts-patch@8.56.0-0) + eslint: /eslint-ts-patch@8.56.0-0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.14 + semver: 7.5.4 + vue-eslint-parser: 9.3.2(eslint-ts-patch@8.56.0-0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color dev: true - /@vue/compiler-sfc@3.3.7: - resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} + /eslint-plugin-write-good-comments@0.2.0: + resolution: {integrity: sha512-YuTGPicIAyORMFeKBdXAks0xRv5vTyOElctJWwm95Wl5R7dOR4Aq/4w6V4Zh2scEQQsY7d+un18fU+YoKCKiqQ==} + engines: {node: '>=0.10.0'} dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/compiler-dom': 3.3.7 - '@vue/compiler-ssr': 3.3.7 - '@vue/reactivity-transform': 3.3.7 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - magic-string: 0.30.5 - postcss: 8.4.31 - source-map-js: 1.0.2 + requireindex: 1.1.0 + write-good: 1.0.8 dev: true - /@vue/compiler-ssr@3.3.7: - resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} + /eslint-plugin-xss@0.1.12: + resolution: {integrity: sha512-L5oYaD//ZE7fKNtWUfVgYTRW19jrZlvaHe2swyFLxXQ5pwVQLivi5m92rtXd/ww8yqg4Drasqyi0hlBmhf9YQg==} + engines: {node: '>=0.10.0'} dependencies: - '@vue/compiler-dom': 3.3.7 - '@vue/shared': 3.3.7 + requireindex: 1.1.0 dev: true - /@vue/reactivity-transform@3.3.7: - resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} + /eslint-plugin-yml@1.11.0(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-NBZP1NDGy0u38pY5ieix75jxS9GNOJy9xd4gQa0rU4gWbfEsVhKDwuFaQ6RJpDbv6Lq5TtcAZS/YnAc0oeRw0w==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - magic-string: 0.30.5 - dev: true - - /@vue/shared@3.3.7: - resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} + debug: 4.3.4 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-compat-utils: 0.1.2(eslint-ts-patch@8.56.0-0) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: false - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: false - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: false - - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: false - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: false - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: false - - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - dev: false - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: false - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: false - - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: false - - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 - dev: false - - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: false - - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - dev: false - - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: false - - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /eslint-processor-vue-blocks@0.1.1(@vue/compiler-sfc@3.3.13)(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-9+dU5lU881log570oBwpelaJmOfOzSniben7IWEDRYQPPWwlvaV7NhOtsTuUWDqpYT+dtKKWPsgz4OkOi+aZnA==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 - dev: false - - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false + '@vue/compiler-sfc': 3.3.13 + eslint: /eslint-ts-patch@8.56.0-0 + dev: true - /@zkochan/retry@0.2.0: - resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} - engines: {node: '>=10'} + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} dev: true - /@zkochan/rimraf@2.1.3: - resolution: {integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==} - engines: {node: '>=12.10'} - dependencies: - rimraf: 3.0.2 + /eslint-rule-docs@1.1.235: + resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} dev: true - /acorn-import-assertions@1.9.0(acorn@8.11.2): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: - acorn: 8.11.2 - dev: false + esrecurse: 4.3.0 + estraverse: 4.3.0 - /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 + esrecurse: 4.3.0 + estraverse: 5.3.0 - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} - engines: {node: '>=0.4.0'} + /eslint-ts-patch@8.56.0-0: + resolution: {integrity: sha512-J9Efj9P1GBaC665MIeX6+kGje3vToaJ/Z3Ky5yI05Td+xiTCKHlG1cAd3IHgicf0bGYKV/Y/gWyp5/84MfsbOg==} hasBin: true + dependencies: + debug: 4.3.4 + eslint: 8.56.0 + jiti: 1.21.0 + transitivePeerDependencies: + - supports-color - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 + eslint-visitor-keys: 1.3.0 dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + /eslint-utils@3.0.0(eslint@8.56.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + eslint: '>=5' dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 + eslint: 8.56.0 + eslint-visitor-keys: 2.1.0 dev: true - /ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} dev: true - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: - type-fest: 0.21.3 - dev: true + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + /esm-utils@4.2.1: + resolution: {integrity: sha512-a7t8pDmZ5MeYfo2pM5EcqeU+BqKobUFKnWkM17JOhTlR88OSosLa9Ak4bgm+htoF15HRf7tfrXNR62UogmIODg==} dependencies: - type-fest: 1.4.0 + import-meta-resolve: 4.0.0 + url-or-path: 2.3.0 dev: true - /ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - dev: true + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + /espurify@2.1.1: + resolution: {integrity: sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: - color-convert: 1.9.3 + estraverse: 5.3.0 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: - color-convert: 2.0.1 - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true + estraverse: 5.3.0 - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - /arg@4.1.0: - resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==} + '@types/estree': 1.0.5 dev: false - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: - sprintf-js: 1.0.3 - dev: true + '@types/estree-jsx': 1.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: false - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: - tslib: 2.6.2 + '@types/estree-jsx': 1.0.3 + astring: 1.8.6 + source-map: 0.7.4 dev: false - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} dependencies: - dequal: 2.0.3 + '@types/estree-jsx': 1.0.3 + '@types/unist': 3.0.2 + dev: false - /arity-n@1.0.4: - resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 - - /array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: true + '@types/estree': 1.0.5 + dev: false - /array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: false - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false - /array-last@1.3.0: - resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} - engines: {node: '>=0.10.0'} + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} dependencies: - is-number: 4.0.0 - dev: true - - /array-timsort@1.0.3: - resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + d: 1.0.1 + es5-ext: 0.10.62 dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: false - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /exec-async@2.2.0: + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} + dev: false + + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 dev: false - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 dev: true - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} dev: true - /asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - dependencies: - pvtsutils: 1.3.5 - pvutils: 1.1.3 - tslib: 2.6.2 + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} dev: false - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: false + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 dev: true - /astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true + /expo-application@5.3.1(expo@49.0.21): + resolution: {integrity: sha512-HR2+K+Hm33vLw/TfbFaHrvUbRRNRco8R+3QaCKy7eJC2LFfT05kZ15ynGaKfB5DJ/oqPV3mxXVR/EfwmE++hoA==} + peerDependencies: + expo: '*' + dependencies: + expo: 49.0.21(@babel/core@7.23.6) dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + /expo-asset@8.10.1(expo@49.0.21): + resolution: {integrity: sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==} dependencies: - has-symbols: 1.0.3 + blueimp-md5: 2.19.0 + expo-constants: 14.4.2(expo@49.0.21) + expo-file-system: 15.4.5(expo@49.0.21) + invariant: 2.2.4 + md5-file: 3.2.3 + path-browserify: 1.0.1 + url-parse: 1.5.10 + transitivePeerDependencies: + - expo + - supports-color dev: false - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + /expo-constants@14.4.2(expo@49.0.21): + resolution: {integrity: sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w==} + peerDependencies: + expo: '*' + dependencies: + '@expo/config': 8.1.2 + expo: 49.0.21(@babel/core@7.23.6) + uuid: 3.4.0 + transitivePeerDependencies: + - supports-color dev: false - /attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} + /expo-file-system@15.4.5(expo@49.0.21): + resolution: {integrity: sha512-xy61KaTaDgXhT/dllwYDHm3ch026EyO8j4eC6wSVr/yE12MMMxAC09yGwy4f7kkOs6ztGVQF5j7ldRzNLN4l0Q==} + peerDependencies: + expo: '*' + dependencies: + expo: 49.0.21(@babel/core@7.23.6) + uuid: 3.4.0 dev: false - /autoprefixer@10.4.16(postcss@8.4.31): - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true + /expo-font@11.4.0(expo@49.0.21): + resolution: {integrity: sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w==} peerDependencies: - postcss: ^8.1.0 + expo: '*' dependencies: - browserslist: 4.22.1 - caniuse-lite: 1.0.30001561 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.31 - postcss-value-parser: 4.2.0 - dev: true - - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} + expo: 49.0.21(@babel/core@7.23.6) + fontfaceobserver: 2.3.0 + dev: false - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} + /expo-keep-awake@12.3.0(expo@49.0.21): + resolution: {integrity: sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==} + peerDependencies: + expo: '*' + dependencies: + expo: 49.0.21(@babel/core@7.23.6) dev: false - /axios@1.6.0: - resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==} + /expo-modules-autolinking@1.5.1: + resolution: {integrity: sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg==} + hasBin: true dependencies: - follow-redirects: 1.15.3 - form-data: 4.0.0 - proxy-from-env: 1.1.0 + '@expo/config': 8.1.2 + chalk: 4.1.2 + commander: 7.2.0 + fast-glob: 3.3.2 + find-up: 5.0.0 + fs-extra: 9.1.0 transitivePeerDependencies: - - debug + - supports-color dev: false - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + /expo-modules-core@1.5.12: + resolution: {integrity: sha512-mY4wTDU458dhwk7IVxLNkePlYXjs9BTgk4NQHBUXf0LapXsvr+i711qPZaFNO4egf5qq6fQV+Yfd/KUguHstnQ==} dependencies: - dequal: 2.0.3 + compare-versions: 3.6.0 + invariant: 2.2.4 dev: false - /babel-jest@29.7.0(@babel/core@7.23.2): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /expo-sqlite@13.2.0(expo@49.0.21): + resolution: {integrity: sha512-TYpX+a+2oJOxzChug8+TkIob0lipl7rluCRBGXbGKG68kG4Reb6OCruRiQTJTnbGiEgnN4S+B0cT8f4ZXPUxBg==} peerDependencies: - '@babel/core': ^7.8.0 + expo: '*' dependencies: - '@babel/core': 7.23.2 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.3 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.2) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 + '@expo/websql': 1.0.1 + expo: 49.0.21(@babel/core@7.23.6) + dev: false + + /expo@49.0.21(@babel/core@7.23.6): + resolution: {integrity: sha512-JpHL6V0yt8/fzsmkAdPdtsah+lU6Si4ac7MDklLYvzEil7HAFEsN/pf06wQ21ax4C+BL27hI6JJoD34tzXUCJA==} + hasBin: true + dependencies: + '@babel/runtime': 7.23.6 + '@expo/cli': 0.10.16(expo-modules-autolinking@1.5.1) + '@expo/config': 8.1.2 + '@expo/config-plugins': 7.2.5 + '@expo/vector-icons': 13.0.0 + babel-preset-expo: 9.5.2(@babel/core@7.23.6) + expo-application: 5.3.1(expo@49.0.21) + expo-asset: 8.10.1(expo@49.0.21) + expo-constants: 14.4.2(expo@49.0.21) + expo-file-system: 15.4.5(expo@49.0.21) + expo-font: 11.4.0(expo@49.0.21) + expo-keep-awake: 12.3.0(expo@49.0.21) + expo-modules-autolinking: 1.5.1 + expo-modules-core: 1.5.12 + fbemitter: 3.0.0 + invariant: 2.2.4 + md5-file: 3.2.3 + node-fetch: 2.7.0 + pretty-format: 26.6.2 + uuid: 3.4.0 transitivePeerDependencies: + - '@babel/core' + - bluebird + - bufferutil + - encoding - supports-color - dev: true + - utf-8-validate + dev: false - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} dependencies: - '@babel/helper-plugin-utils': 7.22.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true + dev: false - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.0 - '@types/babel__core': 7.20.3 - '@types/babel__traverse': 7.20.3 + type: 2.7.2 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.2): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} dependencies: - '@babel/core': 7.23.2 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) - dev: true - - /babylon@6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - dev: true - - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + is-extendable: 0.1.1 dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true + /extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: false - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true + /fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + dev: false - /bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /bole@5.0.9: - resolution: {integrity: sha512-35GeBG6T7GW9VmLDF2IoKAtFCqMjmmq1uICbsICI0pID7ZAyUKlf7dg1wpXmn9GcMKHtg0S19CPMU5yfY3tv+g==} - dependencies: - fast-safe-stringify: 2.1.1 - individual: 3.0.0 + /fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} dev: true - /boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: true + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 - /boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} + /fast-json-parse@1.0.3: + resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 + fast-decode-uri-component: 1.0.1 + dev: false + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: - big-integer: 1.6.51 + punycode: 1.4.1 + dev: false + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + reusify: 1.0.4 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: - balanced-match: 1.0.2 - dev: true + bser: 2.1.1 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + /fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} dependencies: - fill-range: 7.0.1 + fbjs: 3.0.5 + transitivePeerDependencies: + - encoding + dev: false - /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.30001561 - electron-to-chromium: 1.4.576 - node-releases: 2.0.13 - update-browserslist-db: 1.0.13(browserslist@4.22.1) + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} dependencies: - node-int64: 0.4.0 + cross-fetch: 3.1.8 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.37 + transitivePeerDependencies: + - encoding + + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + + /fetch-blob@2.1.2: + resolution: {integrity: sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==} + engines: {node: ^10.17.0 || >=12.3.0} + peerDependencies: + domexception: '*' + peerDependenciesMeta: + domexception: + optional: true dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /fetch-retry@4.1.1: + resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} + dev: false - /buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} + /fetch-retry@5.0.6: + resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} dev: false - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true + escape-string-regexp: 1.0.5 - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + /figures@6.0.1: + resolution: {integrity: sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==} + engines: {node: '>=18'} dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 + is-unicode-supported: 2.0.0 dev: true - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - semver: 7.5.4 - dev: true + flat-cache: 3.2.0 - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - run-applescript: 5.0.0 + flat-cache: 4.0.0 dev: true - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + /file-selector@0.6.0: + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} dependencies: - streamsearch: 1.1.0 + tslib: 2.6.2 dev: false - /bytes@3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} - engines: {node: '>= 0.8'} + /file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + dependencies: + fs-extra: 11.1.1 + ramda: 0.29.0 dev: false - /cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + minimatch: 5.1.6 + dev: false - /callsite-record@4.1.5: - resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: - '@devexpress/error-stack-parser': 2.0.6 - '@types/lodash': 4.14.200 - callsite: 1.0.0 - chalk: 2.4.2 - highlight-es: 1.0.3 - lodash: 4.17.21 - pinkie-promise: 2.0.1 - dev: true + to-regex-range: 5.0.1 - /callsite@1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + /filter-iterator@0.0.1: + resolution: {integrity: sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==} dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: true - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + /filter-obj@2.0.2: + resolution: {integrity: sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==} + engines: {node: '>=8'} + dev: false - /camelcase-keys@2.1.0: - resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} - engines: {node: '>=0.10.0'} + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} dependencies: - camelcase: 2.1.1 - map-obj: 1.0.1 + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: false - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false - /camelcase@2.1.1: - resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} - engines: {node: '>=0.10.0'} + /find-babel-config@2.0.0: + resolution: {integrity: sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw==} + engines: {node: '>=16.0.0'} + dependencies: + json5: 2.2.3 + path-exists: 4.0.0 dev: false - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: false - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: false - /camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + /find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} dev: true - /caniuse-lite@1.0.30001561: - resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==} + /find-up@1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 - /chalk-template@1.1.0: - resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} - engines: {node: '>=14.16'} + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: - chalk: 5.3.0 + micromatch: 4.0.5 + pkg-dir: 4.2.0 dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + /find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + micromatch: 4.0.5 + dev: false - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + /findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + resolve-dir: 1.0.1 dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + /flag-icons@7.1.0: + resolution: {integrity: sha512-AH4v++19bpC5P3Wh767top4wylJYJCWkFnvNiDqGHDxqSqdMZ49jpLXp8PWBHTTXaNQ+/A+QPrOwyiIGaiIhmw==} + dev: false + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + /flat-cache@4.0.0: + resolution: {integrity: sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==} + engines: {node: '>=16'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 5.0.5 dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + /flow-parser@0.225.1: + resolution: {integrity: sha512-50fjR6zbLQcpq5IFNkheUSY/AFPxVeeLiBM5B3NQBSKId2G0cUuExOlDDOguxc49dl9lnh8hI1xcYlPJWNp4KQ==} + engines: {node: '>=0.4.0'} dev: false - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + /fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} dev: false - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true dev: false - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + /fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} dev: false - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + cross-spawn: 7.0.3 + signal-exit: 4.1.0 - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} + /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + dependencies: + '@babel/code-frame': 7.23.5 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.5.4 + tapable: 2.2.1 + typescript: 5.3.3 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) dev: false - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + /freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} engines: {node: '>=8'} - dev: true + dev: false - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - dependencies: - clsx: 2.0.0 + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 - /clear-module@4.1.2: - resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} - engines: {node: '>=8'} + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} dependencies: - parent-module: 2.0.0 - resolve-from: 5.0.0 - dev: true + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false - /cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: true + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 - /cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: true + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false - /cli-color@2.0.3: - resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} - engines: {node: '>=0.10'} + /fs-extra@9.0.0: + resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} + engines: {node: '>=10'} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-iterator: 2.0.3 - memoizee: 0.4.15 - timers-ext: 0.1.7 - dev: true + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 1.0.0 + dev: false - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} dependencies: - restore-cursor: 3.1.0 - dev: true + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} dependencies: - restore-cursor: 4.0.0 - dev: true + minipass: 3.3.6 - /cli-spinners@2.9.1: - resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} - engines: {node: '>=6'} - dev: true + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: false - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true dev: true + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + /fuse@0.9.1(@types/node@20.10.5)(next@14.0.4)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-PLKNduUJSU7l/VIr1Kqo4VZo+dIFxfJuSz5wyA+EVQTUiVQ7RUi6j4H1Uw9rwnY6EZkyK8E26lPaxWgxMR5Tpw==} + dependencies: + '@escape.tech/graphql-armor-block-field-suggestions': 2.1.0 + '@graphql-codegen/cli': 5.0.0(@parcel/watcher@2.3.0)(@types/node@20.10.5)(graphql@16.8.1)(typescript@5.3.3) + '@graphql-codegen/client-preset': 4.1.0(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@graphql-yoga/plugin-defer-stream': 3.1.0(graphql-yoga@5.1.0)(graphql@16.8.1) + '@graphql-yoga/plugin-disable-introspection': 2.1.0(graphql-yoga@5.1.0)(graphql@16.8.1) + '@parcel/watcher': 2.3.0 + '@pothos/core': 3.41.0(graphql@16.8.1) + '@pothos/plugin-dataloader': 3.17.2(@pothos/core@3.41.0)(dataloader@2.2.2)(graphql@16.8.1) + '@pothos/plugin-relay': 3.45.1(@pothos/core@3.41.0)(graphql@16.8.1) + '@urql/core': 4.2.2(graphql@16.8.1) + '@urql/next': 1.1.0(next@14.0.4)(react@18.2.0)(urql@4.0.6) + dataloader: 2.2.2 + graphql: 16.8.1 + graphql-scalars: 1.22.4(graphql@16.8.1) + graphql-yoga: 5.1.0(graphql@16.8.1) + stellate: 2.7.5 + urql: 4.0.6(graphql@16.8.1)(react@18.2.0) + transitivePeerDependencies: + - '@types/express' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - debug + - encoding + - enquirer + - next + - react + - supports-color + - typescript + - utf-8-validate dev: false - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + /gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + wide-align: 1.1.5 dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + /generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true + is-property: 1.0.2 - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 + /gensequence@6.0.0: + resolution: {integrity: sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==} + engines: {node: '>=16'} dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - requiresBuild: true + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} dev: true - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} dev: false - /cmdk@0.2.0(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - command-score: 0.1.2 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - transitivePeerDependencies: - - '@types/react' + /get-npm-tarball-url@2.1.0: + resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} + engines: {node: '>=12.17'} dev: false - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} dev: true - /collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + /get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} dev: false - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + /get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: false + + /get-set-props@0.1.0: + resolution: {integrity: sha512-7oKuKzAGKj0ag+eWZwcGw2fjiZ78tXnXQoBgY0aU7ZOxTu4bB7hSuQSDgtKy978EDH062P5FmD2EWiDpQS9K9Q==} + engines: {node: '>=0.10.0'} dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + /get-stdin@4.0.1: + resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} + engines: {node: '>=0.10.0'} + dev: false + + /get-stdin@8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + + /get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + dev: true + + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} dependencies: - color-name: 1.1.3 + pump: 3.0.0 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} dependencies: - color-name: 1.1.4 + pump: 3.0.0 + dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: - delayed-stream: 1.0.0 - dev: false + call-bind: 1.0.5 + get-intrinsic: 1.2.2 - /comlink@4.4.1: - resolution: {integrity: sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==} - dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + /getenv@1.0.0: + resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} + engines: {node: '>=6'} dev: false - /command-score@0.1.2: - resolution: {integrity: sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w==} + /giget@1.2.1: + resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} + hasBin: true + dependencies: + citty: 0.1.5 + consola: 3.2.3 + defu: 6.1.3 + node-fetch-native: 1.6.1 + nypm: 0.3.3 + ohash: 1.1.3 + pathe: 1.1.1 + tar: 6.2.0 dev: false - /commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} + /git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: true - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + /git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} + /giturl@1.0.3: + resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} + engines: {node: '>= 0.10.0'} dev: true - /comment-json@4.2.3: - resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: - array-timsort: 1.0.3 - core-util-is: 1.0.3 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - dev: true - - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true + is-glob: 4.0.3 - /compose-function@3.0.3: - resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: - arity-n: 1.0.4 - dev: true + is-glob: 4.0.3 - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: true + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 - /configstore@6.0.0: - resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} - engines: {node: '>=12'} + /glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + requiresBuild: true dependencies: - dot-prop: 6.0.1 - graceful-fs: 4.2.11 - unique-string: 3.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 5.1.0 - dev: true + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + optional: true - /content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} + /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 dev: false - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + 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: + 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 - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: false + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 - /copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} + /global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} dependencies: - is-what: 4.1.16 - dev: false + ini: 4.1.1 + dev: true - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + /global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + dependencies: + ini: 1.3.8 dev: true - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} dependencies: - '@types/parse-json': 4.0.1 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 + ini: 2.0.0 dev: true - /cosmiconfig@8.0.0: - resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} - engines: {node: '>=14'} + /global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 dev: true - /create-jest@29.7.0(@types/node@20.8.10): - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.8.10) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node + global-prefix: 3.0.0 dev: true - /cropperjs@1.6.1: - resolution: {integrity: sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==} - dev: false + /global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - dev: true + dependencies: + type-fest: 0.20.2 - /crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} dependencies: - type-fest: 1.4.0 - dev: true + define-properties: 1.2.1 - /cspell-dictionary@7.3.8: - resolution: {integrity: sha512-gkq4t78eLR0xC3P0vDDHPeNY4iZRd5YE6Z8uDJ7RM4UaX/TSdVUN9KNFr34RnJ119NYVHujpL9+uW7wPSAe8Eg==} - engines: {node: '>=16'} + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: - '@cspell/cspell-pipe': 7.3.8 - '@cspell/cspell-types': 7.3.8 - cspell-trie-lib: 7.3.8 - fast-equals: 4.0.3 - gensequence: 6.0.0 - dev: true + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 - /cspell-gitignore@7.3.8: - resolution: {integrity: sha512-vJzCOUEiw6/MwV/U4Ux3bgSdj9mXB+X5eHL+qzVoyFI7ArlvrkuGTL+iFJThQcS8McM3SGqtvaBNCiKBmAeCkA==} - engines: {node: '>=16'} - hasBin: true + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - cspell-glob: 7.3.8 - find-up: 5.0.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 4.0.0 dev: true - /cspell-glob@7.3.8: - resolution: {integrity: sha512-wUZC6znyxEs0wlhzGfZ4XHkATPJyazJIFi/VvAdj+KHe7U8SoSgitJVDQqdgectI2y3MxR7lQdVLX9dONFh+7A==} - engines: {node: '>=16'} + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} dependencies: - micromatch: 4.0.5 + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.0 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 dev: true - /cspell-grammar@7.3.8: - resolution: {integrity: sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==} - engines: {node: '>=16'} - hasBin: true - dependencies: - '@cspell/cspell-pipe': 7.3.8 - '@cspell/cspell-types': 7.3.8 + /globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} dev: true - /cspell-io@7.3.8: - resolution: {integrity: sha512-XrxPbaiek7EZh+26k9RYVz2wKclaMqM6mXBiu/kpFAHRHHfz91ado6xWvyxZ7UAxQ8ixEwZ+oz9TU+k21gHzyw==} - engines: {node: '>=16'} + /goober@2.1.13(csstype@3.1.3): + resolution: {integrity: sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==} + peerDependencies: + csstype: ^3.0.10 dependencies: - '@cspell/cspell-service-bus': 7.3.8 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: true + csstype: 3.1.3 + dev: false - /cspell-lib@7.3.8: - resolution: {integrity: sha512-2L770sI5DdsAKVzO3jxmfP2fz4LryW6dzL93BpN7WU+ebFC6rg4ioa5liOJV4WoDo2fNQMSeqfW4Aawu9zWR7A==} - engines: {node: '>=16'} + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - '@cspell/cspell-bundled-dicts': 7.3.8 - '@cspell/cspell-pipe': 7.3.8 - '@cspell/cspell-resolver': 7.3.8 - '@cspell/cspell-types': 7.3.8 - '@cspell/dynamic-import': 7.3.8 - '@cspell/strong-weak-map': 7.3.8 - clear-module: 4.1.2 - comment-json: 4.2.3 - configstore: 6.0.0 - cosmiconfig: 8.0.0 - cspell-dictionary: 7.3.8 - cspell-glob: 7.3.8 - cspell-grammar: 7.3.8 - cspell-io: 7.3.8 - cspell-trie-lib: 7.3.8 - fast-equals: 5.0.1 - find-up: 6.3.0 - gensequence: 6.0.0 - import-fresh: 3.3.0 - resolve-from: 5.0.0 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - encoding - dev: true + get-intrinsic: 1.2.2 - /cspell-trie-lib@7.3.8: - resolution: {integrity: sha512-UQx1Bazbyz2eQJ/EnMohINnUdZvAQL+OcQU3EPPbNWM1DWF4bJGgmFXKNCRYfJk6wtOZVXG5g5AZXx9KnHeN9A==} - engines: {node: '>=16'} + /got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} dependencies: - '@cspell/cspell-pipe': 7.3.8 - '@cspell/cspell-types': 7.3.8 - gensequence: 6.0.0 + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 dev: true - /cspell@7.3.8: - resolution: {integrity: sha512-8AkqsBQAMsKYV5XyJLB6rBs5hgspL4+MPOg6mBKG2j5EvQgRVc6dIfAPWDNLpIeW2a3+7K5BIWqKHapKPeiknQ==} - engines: {node: '>=16'} - hasBin: true + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /graphql-config@5.0.3(@types/node@20.10.5)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} + engines: {node: '>= 16.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^16.8.1 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true dependencies: - '@cspell/cspell-json-reporter': 7.3.8 - '@cspell/cspell-pipe': 7.3.8 - '@cspell/cspell-types': 7.3.8 - '@cspell/dynamic-import': 7.3.8 - chalk: 5.3.0 - chalk-template: 1.1.0 - commander: 11.1.0 - cspell-gitignore: 7.3.8 - cspell-glob: 7.3.8 - cspell-io: 7.3.8 - cspell-lib: 7.3.8 - fast-glob: 3.3.1 - fast-json-stable-stringify: 2.1.0 - file-entry-cache: 7.0.1 - get-stdin: 9.0.0 - semver: 7.5.4 - strip-ansi: 7.1.0 - vscode-uri: 3.0.8 + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/load': 8.0.1(graphql@16.8.1) + '@graphql-tools/merge': 9.0.1(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + cosmiconfig: 8.3.6(typescript@5.3.3) + graphql: 16.8.1 + jiti: 1.21.0 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.2 transitivePeerDependencies: + - '@types/node' + - bufferutil - encoding - dev: true - - /css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - dev: true + - typescript + - utf-8-validate + dev: false - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} + /graphql-language-service@5.2.0(graphql@16.8.1): + resolution: {integrity: sha512-o/ZgTS0pBxWm3hSF4+6GwiV1//DxzoLWEbS38+jqpzzy1d/QXBidwQuVYTOksclbtOJZ3KR/tZ8fi/tI6VpVMg==} hasBin: true + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + nullthrows: 1.1.1 + vscode-languageserver-types: 3.17.5 + dev: true - /csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /graphql-query-complexity@0.7.2(graphql@16.8.1): + resolution: {integrity: sha512-+VgmrfxGEjHI3zuojWOR8bsz7Ycz/BZjNjxnlUieTz5DsB92WoIrYCSZdWG7UWZ3rfcA1Gb2Nf+wB80GsaZWuQ==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + lodash.get: 4.4.2 dev: false - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - - /currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} + /graphql-request@6.1.0(graphql@16.8.1): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: ^16.8.1 dependencies: - array-find-index: 1.0.2 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-fetch: 3.1.8 + graphql: 16.8.1 + transitivePeerDependencies: + - encoding dev: false - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + /graphql-scalars@1.22.4(graphql@16.8.1): + resolution: {integrity: sha512-ILnv7jq5VKHLUyoaTFX7lgYrjCd6vTee9i8/B+D4zJKJT5TguOl0KkpPEbXHjmeor8AZYrVsrYUHdqRBMX1pjA==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^16.8.1 dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: true + graphql: 16.8.1 + tslib: 2.6.2 + dev: false - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + /graphql-subscriptions@1.2.1(graphql@16.8.1): + resolution: {integrity: sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + iterall: 1.3.0 dev: false - /data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - dev: true + /graphql-tag@2.12.6(graphql@16.8.1): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + graphql: 16.8.1 + tslib: 2.6.2 - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + /graphql-ws@5.14.3(graphql@16.8.1): + resolution: {integrity: sha512-F/i2xNIVbaEF2xWggID0X/UZQa2V8kqKDPO8hwmu53bVOcTL7uNkxnexeEgSCVxYBQUTUNEI8+e4LO1FOhKPKQ==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^16.8.1 dependencies: - '@babel/runtime': 7.23.2 + graphql: 16.8.1 + dev: false + + /graphql-yoga@5.1.0(graphql@16.8.1): + resolution: {integrity: sha512-Ee5uJkNSI7ZRS8X79OlPEuF8m2+HCn/dmjvbMNpsz5Yq+sqsLXTEFhKjhjK6hyqrTl1pQwGwJTbl9f886hDMDg==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^16.8.1 + dependencies: + '@envelop/core': 5.0.0 + '@graphql-tools/executor': 1.2.0(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.12(graphql@16.8.1) + '@graphql-yoga/logger': 2.0.0 + '@graphql-yoga/subscription': 5.0.0 + '@whatwg-node/fetch': 0.9.14 + '@whatwg-node/server': 0.9.22 + dset: 3.1.3 + graphql: 16.8.1 + lru-cache: 10.1.0 + tslib: 2.6.2 dev: false - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + /gsap@3.12.4: + resolution: {integrity: sha512-1ByAq8dD0W4aBZ/JArgaQvc0gyUfkGkP8mgAQa0qZGdpOKlSOhOf+WNXjoLimKaKG3Z4Iu6DKZtnyszqQeyqWQ==} dev: false - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + /gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true dependencies: - ms: 2.1.3 + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + dev: false - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true dependencies: - ms: 2.1.2 + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: false - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + /hanji@0.0.5: + resolution: {integrity: sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==} dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 + lodash.throttle: 4.1.1 + sisteransi: 1.0.5 dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} dev: true - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - dev: false + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - /decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: true - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dev: true + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} + /has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} dev: true - /deep-freeze@0.0.1: - resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + /has-own-property@0.1.0: + resolution: {integrity: sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==} dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: false + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true + has-symbols: 1.0.3 - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - requiresBuild: true - dependencies: - clone: 1.0.4 + /has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} dev: true - /defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 + function-bind: 1.1.2 - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.3 dev: true - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 - object-keys: 1.1.1 + '@types/hast': 3.0.3 + dev: false - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true dev: false - /denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} + /header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + dependencies: + capital-case: 1.0.4 + tslib: 2.6.2 - /depcheck@1.4.7: - resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} + /healthier@7.0.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1): + resolution: {integrity: sha512-maJCx4YzGkz39nr1NarrSeDNzm5mbh9PcAL97IkR9+6tncg4ClJUzZFMnOKaMuTahakRkDCPenKyBRfXotYaIw==} engines: {node: '>=10'} hasBin: true dependencies: - '@babel/parser': 7.23.0 - '@babel/traverse': 7.23.2 - '@vue/compiler-sfc': 3.3.7 - callsite: 1.0.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - debug: 4.3.4 - deps-regex: 0.2.0 - findup-sync: 5.0.0 - ignore: 5.2.4 - is-core-module: 2.13.1 - js-yaml: 3.14.1 - json5: 2.2.3 - lodash: 4.17.21 - minimatch: 7.4.6 - multimatch: 5.0.0 - please-upgrade-node: 3.2.0 - readdirp: 3.6.0 - require-package-name: 2.0.1 + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.5.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.33.2)(eslint@8.56.0) + eslint-config-standard-react: 13.0.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 16.5.0(eslint-ts-patch@8.56.0-0) + eslint-plugin-promise: 6.1.1(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) + find-root: 1.1.0 + minimist: 1.2.8 resolve: 1.22.8 - resolve-from: 5.0.0 - semver: 7.5.4 - yargs: 16.2.0 + standard-engine: 15.1.0 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color + dev: false + + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: true - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + /highlight-es@1.0.3: + resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} + dependencies: + chalk: 2.4.2 + is-es2016-keyword: 1.0.0 + js-tokens: 3.0.2 + dev: true + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 dev: false - /deps-regex@0.2.0: - resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 dev: true - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + /hosted-git-info@3.0.8: + resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: false - /detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 dev: true - /detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} - engines: {node: '>=12.20'} + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.1.0 dev: true - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 dev: true - /detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + dev: false + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.26.0 dev: false - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + /html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true dependencies: - dequal: 2.0.3 + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.17.4 dev: false - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - dev: true + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} - /difflib@0.2.4: - resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + /html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} dependencies: - heap: 0.2.7 - dev: true + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + dev: false - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + /html-webpack-plugin@5.6.0(webpack@5.89.0): + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true dependencies: - path-type: 4.0.0 + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + /htmlparser2@5.0.1: + resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} + dependencies: + domelementtype: 2.3.0 + domhandler: 3.3.0 + domutils: 2.8.0 + entities: 2.2.0 + dev: false - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} dependencies: - esutils: 2.0.3 + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: false - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: - esutils: 2.0.3 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false - /dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + /http-errors@1.7.3: + resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} + engines: {node: '>= 0.6'} dependencies: - no-case: 3.0.4 - tslib: 2.6.2 + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 dev: false - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: - is-obj: 2.0.0 - dev: true + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false - /dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: - is-obj: 2.0.0 + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color dev: true - /dotenv-cli@7.3.0: - resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} - hasBin: true + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - cross-spawn: 7.0.3 - dotenv: 16.3.1 - dotenv-expand: 10.0.0 - minimist: 1.2.8 - dev: true + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - dev: true + /http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: false - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} - dev: true + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.3 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: false - /dreamopt@0.8.0: - resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} - engines: {node: '>=0.4.0'} + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: false + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: - wordwrap: 1.0.0 - dev: true + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color - /drizzle-kit@0.19.13: - resolution: {integrity: sha512-Rba5VW1O2JfJlwVBeZ8Zwt2E2us5oZ08PQBDiVSGlug53TOc8hzXjblZFuF+dnll9/RQEHrkzBmJFgqTvn5Rxg==} - hasBin: true + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} dependencies: - '@drizzle-team/studio': 0.0.5 - '@esbuild-kit/esm-loader': 2.6.5 - camelcase: 7.0.1 - chalk: 5.3.0 - commander: 9.5.0 - esbuild: 0.18.20 - esbuild-register: 3.5.0(esbuild@0.18.20) - glob: 8.1.0 - hanji: 0.0.5 - json-diff: 0.9.0 - minimatch: 7.4.6 - zod: 3.22.4 + agent-base: 7.1.0 + debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} dev: true - /drizzle-orm@0.28.6(@neondatabase/serverless@0.6.0)(@planetscale/database@1.11.0)(@types/pg@8.10.7)(mysql2@3.6.3)(pg@8.11.3)(postgres@3.4.3): - resolution: {integrity: sha512-yBe+F9htrlYER7uXgDJUQsTHFoIrI5yMm5A0bg0GiZ/kY5jNXTWoEy4KQtg35cE27sw1VbgzoMWHAgCckUUUww==} - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' - '@libsql/client': '*' - '@neondatabase/serverless': '>=0.1' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/sql.js': '*' - '@vercel/postgres': '*' - better-sqlite3: '>=7' - bun-types: '*' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@libsql/client': - optional: true - '@neondatabase/serverless': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - sql.js: - optional: true - sqlite3: - optional: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: - '@neondatabase/serverless': 0.6.0 - '@planetscale/database': 1.11.0 - '@types/pg': 8.10.7 - mysql2: 3.6.3 - pg: 8.11.3 - postgres: 3.4.3 - dev: false + safer-buffer: 2.1.2 - /drizzle-zod@0.5.1(drizzle-orm@0.28.6)(zod@3.22.4): - resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} + /icss-utils@5.1.0(postcss@8.4.32): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: - drizzle-orm: '>=0.23.13' - zod: '*' + postcss: ^8.1.0 dependencies: - drizzle-orm: 0.28.6(@neondatabase/serverless@0.6.0)(@planetscale/database@1.11.0)(@types/pg@8.10.7)(mysql2@3.6.3)(pg@8.11.3)(postgres@3.4.3) - zod: 3.22.4 + postcss: 8.4.32 dev: false - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + /identity-function@1.0.0: + resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} dev: true - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /easy-table@1.2.0: - resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} - dependencies: - ansi-regex: 5.0.1 - optionalDependencies: - wcwidth: 1.0.1 + /ignore-by-default@2.1.0: + resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} + engines: {node: '>=10 <11 || >=12 <13 || >=14'} dev: true - /electron-to-chromium@1.4.576: - resolution: {integrity: sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA==} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} - /embla-carousel-react@8.0.0-rc14(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-2b9vXACEcn0qja4QyaFMfCgFbFhumV3krOCGr9+jlQiuXt5z/EyfiYYziDsm70DhTtxtg/uKEGflIqZSfWRYKg==} - peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 + /image-size@1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: - embla-carousel: 8.0.0-rc14 - embla-carousel-reactive-utils: 8.0.0-rc14(embla-carousel@8.0.0-rc14) - react: 18.3.0-canary-ce2bc58a9-20231102 + queue: 6.0.2 dev: false - /embla-carousel-reactive-utils@8.0.0-rc14(embla-carousel@8.0.0-rc14): - resolution: {integrity: sha512-r153bynAo9eTBuWWggPWLYnE9xqVOYmkkeMbAuGX8pkUisJN8aTLMW9b7CYOzjURRB7z85EmYRbeBg+axQzc9g==} - peerDependencies: - embla-carousel: 8.0.0-rc14 - dependencies: - embla-carousel: 8.0.0-rc14 + /immediate@3.3.0: + resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} dev: false - /embla-carousel@8.0.0-rc14: - resolution: {integrity: sha512-/NLkMFZ7xKryRVYeUjmhbfV63Vr07saPBDwAX2TPMbcaiWwfQfU5Xsc2AiCMZANtwmzsjRK6gSBa7hOy/VXu6g==} + /immer@10.0.3: + resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==} dev: false - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true + /immutable@3.7.6: + resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + engines: {node: '>=0.8.0'} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: false - /encode-registry@3.0.1: - resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} - engines: {node: '>=10'} + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: - mem: 8.1.1 + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-from@4.0.0: + resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} + engines: {node: '>=12.2'} + + /import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} dev: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true dependencies: - once: 1.4.0 + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 + /import-modules@2.1.0: + resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} + engines: {node: '>=8'} dev: true - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} + /indent-string@2.1.0: + resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} + engines: {node: '>=0.10.0'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - 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 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + repeating: 2.0.1 + dev: false - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + + /individual@3.0.0: + resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} + dev: true + + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.6 - iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /es-module-lexer@1.3.1: - resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: false - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} dependencies: - hasown: 2.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: false - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + /internal-ip@4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + dev: false - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - next-tick: 1.1.0 - dev: true + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 + /international-types@0.8.1: + resolution: {integrity: sha512-tajBCAHo4I0LIFlmQ9ZWfjMWVyRffzuvfbXCd6ssFt5u1Zw15DN0UBpVTItXdNa1ls+cpQt3Yw8+TxsfGF8JcA==} + dev: false + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} dev: true - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + /intl-messageformat@10.5.8: + resolution: {integrity: sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==} dependencies: - d: 1.0.1 - ext: 1.7.0 - dev: true + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.3 + tslib: 2.6.2 + dev: false - /es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + /intl-messageformat@9.13.0: + resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - dev: true + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/fast-memoize': 1.2.1 + '@formatjs/icu-messageformat-parser': 2.1.0 + tslib: 2.6.2 + dev: false - /esbuild-register@3.5.0(esbuild@0.18.20): - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} - peerDependencies: - esbuild: '>=0.12 <1' + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: - debug: 4.3.4 - esbuild: 0.18.20 - transitivePeerDependencies: - - supports-color - dev: true + loose-envify: 1.4.0 - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 + /ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false - /escape-goat@2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false + + /irregular-plurals@3.5.0: + resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} engines: {node: '>=8'} dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + /is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: false - /eslint-config-next@14.0.1(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-QfIFK2WD39H4WOespjgf6PLv9Bpsd7KGGelCtmq4l67nGvnlsGpuvj0hIT+aIy6p5gKH+lAChYILsyDlxP52yg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: - '@next/eslint-plugin-next': 14.0.1 - '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - eslint: 8.53.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.53.0) - eslint-plugin-react: 7.33.2(eslint@8.53.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.53.0) - typescript: 5.2.2 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: false + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true - /eslint-config-prettier@9.0.0(eslint@8.53.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: - eslint: 8.53.0 - dev: true + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false - /eslint-formatter-codeframe@7.32.1: - resolution: {integrity: sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==} - engines: {node: ^10.12.0 || >=12.0.0} + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: - '@babel/code-frame': 7.12.11 - chalk: 4.1.2 - dev: true + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: false - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 8.53.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color + has-tostringtag: 1.0.0 - /eslint-interactive@10.8.0(eslint@8.53.0): - resolution: {integrity: sha512-bsMSr0NVyxoSbKbA3Rn8so5+A9q+Zu8xExiIM18umPjrqfBAN8WcJfsWvfc9Myfiqn2WwLDM9mRglbx+Hp+z3Q==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: - boxen: 7.1.1 - chalk: 5.3.0 - comlink: 4.4.1 - enquirer: 2.4.1 - eslint: 8.53.0 - eslint-formatter-codeframe: 7.32.1 - estraverse: 5.3.0 - find-cache-dir: 4.0.0 - is-installed-globally: 0.4.0 - ora: 6.3.1 - strip-ansi: 7.1.0 - table: 6.8.1 - terminal-link: 3.0.0 - yargs: 17.7.2 - dev: true + has-bigints: 1.0.2 - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.53.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0) - transitivePeerDependencies: - - supports-color + binary-extensions: 2.2.0 - /eslint-plugin-i18n-json@4.0.0(eslint@8.53.0): - resolution: {integrity: sha512-rglbr9f/UaPN/OeiSLVVFlIh4RrXPTzX5qr4tqOdTj1Ryr8xIhUzriDDuyuPWliektO86c/zy1RldmBIOfDNsQ==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=4.0.0' + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: - '@formatjs/icu-messageformat-parser': 2.7.0 - chalk: 2.4.2 - eslint: 8.53.0 - indent-string: 3.2.0 - jest-diff: 22.4.3 - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - lodash.isplainobject: 4.0.6 - lodash.set: 4.3.2 - log-symbols: 2.2.0 - parse-json: 5.2.0 - plur: 2.1.2 - pretty-format: 22.4.3 - dev: true + call-bind: 1.0.5 + has-tostringtag: 1.0.0 - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.53.0)(typescript@5.2.2) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.53.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) - hasown: 2.0.0 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color + builtin-modules: 3.3.0 - /eslint-plugin-jest-extended@2.0.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-nMhVVsVcG/+Q6FMshql35WBxwx8xlBhxKgAG08WP3BYWfXrp28oxLpJVu9JSbMpfmfKGVrHwMYJGfPLRKlGB8w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + /is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) - eslint: 8.53.0 - transitivePeerDependencies: - - supports-color - - typescript + ci-info: 2.0.0 dev: true - /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.53.0)(jest@29.7.0)(typescript@5.2.2): - resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true dependencies: - '@typescript-eslint/eslint-plugin': 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) - eslint: 8.53.0 - jest: 29.7.0(@types/node@20.8.10) - transitivePeerDependencies: - - supports-color - - typescript - dev: true + ci-info: 3.9.0 + dev: false - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.53.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - '@babel/runtime': 7.23.2 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 - eslint: 8.53.0 hasown: 2.0.0 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.53.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: - eslint: 8.53.0 + has-tostringtag: 1.0.0 + + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false - /eslint-plugin-react@7.33.2(eslint@8.53.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.53.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 + /is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} dev: false - /eslint-plugin-tailwindcss@3.13.0(tailwindcss@3.3.5): - resolution: {integrity: sha512-Fcep4KDRLWaK3KmkQbdyKHG0P4GdXFmXdDaweTIPcgOP60OOuWFbh1++dufRT28Q4zpKTKaHwTsXPJ4O/EjU2Q==} - engines: {node: '>=12.13.0'} - peerDependencies: - tailwindcss: ^3.3.2 - dependencies: - fast-glob: 3.3.1 - postcss: 8.4.31 - tailwindcss: 3.3.5 + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-es2016-keyword@1.0.0: + resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 + /is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + dev: false - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - /eslint@8.53.0: - resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.53.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color + call-bind: 1.0.5 - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 + /is-finite@1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + dev: false - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} dev: true - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} dependencies: - estraverse: 5.3.0 + get-east-asian-width: 1.2.0 + dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + /is-get-set-prop@1.0.0: + resolution: {integrity: sha512-DvAYZ1ZgGUz4lzxKMPYlt08qAUqyG9ckSg2pIjfvcQ7+pkVNUHk8yVLXOnCLe5WKXhLop8oorWFBJHpwWQpszQ==} + dependencies: + get-set-props: 0.1.0 + lowercase-keys: 1.0.1 + dev: true - /estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + /is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} dependencies: - '@types/estree': 1.0.4 + is-extglob: 1.0.0 dev: false - /estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: - '@types/estree-jsx': 1.0.2 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 + is-extglob: 2.1.1 + + /is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} dev: false - /estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false - /estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - dependencies: - '@types/estree-jsx': 1.0.2 - astring: 1.8.6 - source-map: 0.7.4 + /is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} dev: false - /estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + /is-immutable-type@2.0.1(eslint-ts-patch@8.56.0-0)(typescript@5.3.3): + resolution: {integrity: sha512-SNO0yWLzSN+oYb8adM4AvsPYSCqElmjcXUNemryDLo0r5M54oMs/6R4cvKLc9QtIs/nRuc3ahlgJoMdGfcHLwQ==} + peerDependencies: + eslint: '*' + typescript: '>=4.7.4' + dependencies: + '@typescript-eslint/type-utils': 6.16.0(eslint-ts-patch@8.56.0-0)(typescript@5.3.3) + eslint: /eslint-ts-patch@8.56.0-0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + /is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + dev: true + + /is-invalid-path@0.1.0: + resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} + engines: {node: '>=0.10.0'} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/unist': 3.0.1 + is-glob: 2.0.1 dev: false - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /is-iterable@1.1.1: + resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} + engines: {node: '>= 4'} dev: true - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + /is-js-type@2.0.0: + resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} dependencies: - '@types/estree': 1.0.4 - dev: false + js-types: 1.0.0 + dev: true - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + /is-lower-case@2.0.2: + resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + dependencies: + tslib: 2.6.2 - /event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: false + + /is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} dev: true - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + /is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true + has-tostringtag: 1.0.0 - /expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + /is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 dev: true - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj-prop@1.0.0: + resolution: {integrity: sha512-5Idb61slRlJlsAzi0Wsfwbp+zZY+9LXKUAZpvT/1ySw+NxKLRWfa0Bzj+wXI3fX5O9hiddm5c3DAaRSNP/yl2w==} dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + lowercase-keys: 1.0.1 + obj-props: 1.4.0 dev: true - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - dependencies: - type: 2.7.2 + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} dev: true - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} dev: false - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} - /fast-equals@4.0.3: - resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} dev: true - /fast-equals@5.0.1: - resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} - engines: {node: '>=6.0.0'} - dev: true + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: true - /fetch-blob@2.1.2: - resolution: {integrity: sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==} - engines: {node: ^10.17.0 || >=12.3.0} - peerDependencies: - domexception: '*' - peerDependenciesMeta: - domexception: - optional: true + /is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + /is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + + /is-proto-prop@2.0.0: + resolution: {integrity: sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==} dependencies: - escape-string-regexp: 1.0.5 + lowercase-keys: 1.0.1 + proto-props: 2.0.0 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - flat-cache: 3.1.1 + '@types/estree': 1.0.5 + dev: false - /file-entry-cache@7.0.1: - resolution: {integrity: sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==} - engines: {node: '>=12.0.0'} + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: - flat-cache: 3.1.1 - dev: true + call-bind: 1.0.5 + has-tostringtag: 1.0.0 - /file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} + /is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} dependencies: - tslib: 2.6.2 + is-unc-path: 1.0.0 + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: - to-regex-range: 5.0.1 + has-tostringtag: 1.0.0 - /filter-iterator@0.0.1: - resolution: {integrity: sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==} - dev: true + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 dev: true - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 + which-typed-array: 1.1.13 + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true - /find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + /is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - dev: false + unc-path-regex: 0.1.2 - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + dev: true + + /is-upper-case@2.0.2: + resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 + tslib: 2.6.2 - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: false + + /is-valid-path@0.1.1: + resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} + engines: {node: '>=0.10.0'} dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true + is-invalid-path: 0.1.0 + dev: false - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: true + call-bind: 1.0.5 - /findup-sync@5.0.0: - resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} - engines: {node: '>= 10.13.0'} + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.5 - resolve-dir: 1.0.1 - dev: true + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} - /flag-icons@6.12.0: - resolution: {integrity: sha512-fp/flZPzEwbNdGpjj4dh++Kaf5MFX+UUpZExLGXfee/3a0czGt0ur0zyHDglE2pO7nwTzO/jKC8pK6TIEk/TOw==} + /is-whitespace@0.3.0: + resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} + engines: {node: '>=0.10.0'} dev: false - /flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 + is-docker: 2.2.1 - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + dev: true - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} dev: true - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} dev: false - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + /isomorphic-ws@5.0.0(ws@8.16.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 + ws: 8.16.0 dev: false - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} dev: true - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color dev: true - optional: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - functions-have-names: 1.2.3 - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true - /generate-function@2.3.1: - resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - is-property: 1.0.2 - - /gensequence@6.0.0: - resolution: {integrity: sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==} - engines: {node: '>=16'} + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + /iterable-lookahead@1.0.0: + resolution: {integrity: sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==} + engines: {node: '>=4'} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /iterall@1.3.0: + resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==} + dev: false + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 + define-properties: 1.2.1 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 - hasown: 2.0.0 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 dev: false - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 dev: true - /get-stdin@4.0.1: - resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} - engines: {node: '>=0.10.0'} - dev: false - - /get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color dev: true - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} + /jest-cli@29.7.0(@types/node@20.10.5)(ts-node@10.9.2): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - pump: 3.0.0 + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node dev: true - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + /jest-config@29.7.0(@types/node@20.10.5)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: - pump: 3.0.0 - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + '@babel/core': 7.23.6 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + babel-jest: 29.7.0(@babel/core@7.23.6) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.2(@swc/core@1.3.101)(@types/node@20.10.5)(typescript@5.3.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - resolve-pkg-maps: 1.0.0 - - /git-hooks-list@3.1.0: - resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} - dev: true - - /giturl@1.0.3: - resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} - engines: {node: '>= 0.10.0'} + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - is-glob: 4.0.3 - - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false + detect-newline: 3.1.0 + dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true 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 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 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 - dev: false + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + /jest-extended@4.0.2(jest@29.7.0): + resolution: {integrity: sha512-FH7aaPgtGYHc9mRjriS0ZEHYM5/W69tLrFTIdzm+yJgeoCmmrSB/luSfMSqWP9O29QWHPEmJ4qmU6EwsZideog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + jest: '>=27.2.5' + peerDependenciesMeta: + jest: + optional: true 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 + jest: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + dev: true - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - ini: 2.0.0 + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.10.5 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 dev: true - /global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - global-prefix: 3.0.0 + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + jest-util: 29.7.0 dev: true - /global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 + jest-resolve: 29.7.0 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - define-properties: 1.2.1 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 slash: 3.0.0 + dev: true - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 4.0.0 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color dev: true - /goober@2.1.13(csstype@3.1.2): - resolution: {integrity: sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==} - peerDependencies: - csstype: ^3.0.10 + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - csstype: 3.1.2 - dev: false + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - get-intrinsic: 1.2.2 + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true - /got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.2 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - /hanji@0.0.5: - resolution: {integrity: sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - lodash.throttle: 4.1.1 - sisteransi: 1.0.5 + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 dev: true - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - dev: true + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.10.5 + merge-stream: 2.0.0 + supports-color: 8.1.1 - /has-own-property@0.1.0: - resolution: {integrity: sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.10.5 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /jest@29.7.0(@types/node@20.10.5)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - get-intrinsic: 1.2.2 - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + /jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + dev: false - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true - /has-yarn@2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 + /join-component@1.1.0: + resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} + dev: false - /hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + /jose@4.15.4: + resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + dev: false + + /jose@5.2.0: + resolution: {integrity: sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==} + dev: false + + /jotai-x@1.1.0(@types/react@18.2.45)(jotai@2.6.0)(react@18.2.0): + resolution: {integrity: sha512-40Tw6st20+utgffGYVELk5dga+qOaeDmx2EEQgD8f32qjV7LIC5sAihGwkwyDgUpTqmexP0KLdLGJYT+UQj3ag==} + peerDependencies: + '@types/react': '>=17.0.0' + jotai: '>=2.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true dependencies: - '@types/estree': 1.0.4 - '@types/estree-jsx': 1.0.2 - '@types/hast': 3.0.2 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color + '@types/react': 18.2.45 + jotai: 2.6.0(@types/react@18.2.45)(react@18.2.0) + react: 18.2.0 dev: false - /hast-util-to-jsx-runtime@2.2.0: - resolution: {integrity: sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==} + /jotai@2.6.0(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Vt6hsc04Km4j03l+Ax+Sc+FVft5cRJhqgxt6GTz6GM2eM3DyX3CdBdzcG0z2FrlZToL1/0OAkqDghIyARWnSuQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true dependencies: - '@types/hast': 3.0.2 - '@types/unist': 3.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 + '@types/react': 18.2.45 + react: 18.2.0 dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + /js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true dependencies: - '@types/hast': 3.0.2 + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.3.10 + nopt: 7.2.0 dev: false - /heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + /js-cookie@3.0.1: + resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} + engines: {node: '>=12'} + dev: false + + /js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} dev: true - /highlight-es@1.0.3: - resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} - dependencies: - chalk: 2.4.2 - is-es2016-keyword: 1.0.0 - js-tokens: 3.0.2 + /js-tokens@3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} dev: true - /homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-types@1.0.0: + resolution: {integrity: sha512-bfwqBW9cC/Lp7xcRpug7YrXm0IVw+T9e3g4mCYnv0Pjr3zIzU9PCQElYU9oSGAWzXlbdl9X5SAMPejO9sxkeUw==} engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 dev: true - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + /js-video-url-parser@0.5.1: + resolution: {integrity: sha512-/vwqT67k0AyIGMHAvSOt+n4JfrZWF7cPKgKswDO35yr27GfW4HtjpQVlTx6JLF45QuPm8mkzFHkZgFVnFm4x/w==} + dev: false - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: - lru-cache: 6.0.0 - dev: true + argparse: 1.0.10 + esprima: 4.0.1 - /hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} - engines: {node: ^16.14.0 || >=18.0.0} + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: - lru-cache: 10.0.1 - dev: true - - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + argparse: 2.0.1 - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: true + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + dev: false - /http-errors@1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} + /jscodeshift@0.15.1(@babel/preset-env@7.23.6): + resolution: {integrity: sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/preset-flow': 7.23.3(@babel/core@7.23.6) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/register': 7.22.15(@babel/core@7.23.6) + babel-core: 7.0.0-bridge.0(@babel/core@7.23.6) + chalk: 4.1.2 + flow-parser: 0.225.1 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.23.4 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color dev: false - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.11.2 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.16.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: true - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true - /identity-function@1.0.0: - resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true dev: true - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + /json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + /json-diff@0.9.0: + resolution: {integrity: sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==} + hasBin: true dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 + cli-color: 2.0.3 + difflib: 0.2.4 + dreamopt: 0.8.0 + dev: true - /import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + /json-schema-deref-sync@0.13.0: + resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} + engines: {node: '>=6.0.0'} dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true + clone: 2.1.2 + dag-map: 1.0.2 + is-valid-path: 0.1.1 + lodash: 4.17.21 + md5: 2.2.1 + memory-cache: 0.2.0 + traverse: 0.6.8 + valid-url: 1.0.9 + dev: false - /import-meta-resolve@3.1.1: - resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} - dev: true + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - /indent-string@2.1.0: - resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} - engines: {node: '>=0.10.0'} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json-stable-stringify@1.1.0: + resolution: {integrity: sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==} + engines: {node: '>= 0.4'} dependencies: - repeating: 2.0.1 + call-bind: 1.0.5 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 dev: false - /indent-string@3.2.0: - resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} - engines: {node: '>=4'} - dev: true - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /individual@3.0.0: - resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} - dev: true + /json-to-pretty-yaml@1.2.2: + resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} + engines: {node: '>= 0.2.0'} + dependencies: + remedial: 1.0.8 + remove-trailing-spaces: 1.0.8 + dev: false - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: - once: 1.4.0 - wrappy: 1.0.2 + minimist: 1.2.8 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.5.4 dev: true - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 dev: false - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + dev: false + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 - /international-types@0.8.1: - resolution: {integrity: sha512-tajBCAHo4I0LIFlmQ9ZWfjMWVyRffzuvfbXCd6ssFt5u1Zw15DN0UBpVTItXdNa1ls+cpQt3Yw8+TxsfGF8JcA==} + /juice@9.1.0: + resolution: {integrity: sha512-odblShmPrUoHUwRuC8EmLji5bPP2MLO1GL+gt4XU3tT2ECmbSrrMjtMQaqg3wgMFP2zvUzdPZGfxc5Trk3Z+fQ==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + cheerio: 1.0.0-rc.12 + commander: 6.2.1 + mensch: 0.3.4 + slick: 1.12.2 + web-resource-inliner: 6.0.1 + transitivePeerDependencies: + - encoding dev: false - /intl-messageformat@9.13.0: - resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} + /keyv@3.1.0: + resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/fast-memoize': 1.2.1 - '@formatjs/icu-messageformat-parser': 2.1.0 - tslib: 2.6.2 - dev: false + json-buffer: 3.0.0 + dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: - loose-envify: 1.4.0 + json-buffer: 3.0.1 + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 dev: false - /irregular-plurals@1.4.0: - resolution: {integrity: sha512-kniTIJmaZYiwa17eTtWIfm0K342seyugl6vuC8DiiyiRAJWAVlLkqGCI0Im0neo0TkXw+pRcKaBPRdcKHnQJ6Q==} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} dev: false - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /knip@3.9.0(@types/node@20.10.5)(typescript@5.3.3): + resolution: {integrity: sha512-pZgJdC4bSTEU/YT+4Q9uT22HuME+V0h0HT2fsOo0TrW7KY5Ghse+2ngNwOctzUn5LeYQ0eY83Z1DhKDIbe5WkA==} + engines: {node: '>=18.6.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4' dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + '@ericcornelissen/bash-parser': 0.5.2 + '@npmcli/map-workspaces': 3.0.4 + '@npmcli/package-json': 5.0.0 + '@pkgjs/parseargs': 0.11.0 + '@pnpm/logger': 5.0.0 + '@pnpm/workspace.pkgs-graph': 2.0.13(@pnpm/logger@5.0.0) + '@snyk/github-codeowners': 1.1.0 + '@types/node': 20.10.5 + chalk: 5.3.0 + easy-table: 1.2.0 + fast-glob: 3.3.2 + globby: 14.0.0 + jiti: 1.21.0 + js-yaml: 4.1.0 + micromatch: 4.0.5 + minimist: 1.2.8 + pretty-ms: 8.0.0 + strip-json-comments: 5.0.1 + summary: 2.1.0 + typescript: 5.3.3 + zod: 3.22.4 + zod-validation-error: 2.1.0(zod@3.22.4) + transitivePeerDependencies: + - bluebird + - domexception + dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /known-css-properties@0.29.0: + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + dev: true - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 + /kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} dev: false - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: - has-bigints: 1.0.2 + language-subtag-registry: 0.3.22 - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + /latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + package-json: 6.5.0 + dev: true - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + /lazy-universal-dotenv@4.0.0: + resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} + engines: {node: '>=14.0.0'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + app-root-dir: 1.0.2 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + dev: false - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + /leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + dev: false - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true + /lemonsqueezy.ts@0.1.7: + resolution: {integrity: sha512-7COfsFaPVsz4ik6+b5hVI/PMyu6FE+PmrbNvk1G89P826XVRRnidVhDAes+Ed42RLyigc8bBHFbuUZSglPTO0g==} + engines: {node: '>=16.*'} dependencies: - ci-info: 2.0.0 + undici: 5.28.2 dev: true - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.0 + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: - has-tostringtag: 1.0.0 + prelude-ls: 1.2.1 + type-check: 0.4.0 - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + /libphonenumber-js@1.10.53: + resolution: {integrity: sha512-sDTnnqlWK4vH4AlDQuswz3n4Hx7bIQWTpIcScJX+Sp7St3LXHmfiax/ZFfyYxHmkdCvydOLSuvtAO/XpXiSySw==} dev: false - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - - /is-es2016-keyword@1.0.0: - resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} - dev: true + /lightningcss-darwin-arm64@1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + /lightningcss-darwin-x64@1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.5 + /lightningcss-linux-arm-gnueabihf@1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: false + optional: true - /is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} + /lightningcss-linux-arm64-gnu@1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: false + optional: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true + /lightningcss-linux-arm64-musl@1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + /lightningcss-linux-x64-gnu@1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 + /lightningcss-linux-x64-musl@1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: false + optional: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + /lightningcss-win32-x64-msvc@1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: false + optional: true - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + /lightningcss@1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + engines: {node: '>= 12.0.0'} dependencies: - is-docker: 3.0.0 - dev: true + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.19.0 + lightningcss-darwin-x64: 1.19.0 + lightningcss-linux-arm-gnueabihf: 1.19.0 + lightningcss-linux-arm64-gnu: 1.19.0 + lightningcss-linux-arm64-musl: 1.19.0 + lightningcss-linux-x64-gnu: 1.19.0 + lightningcss-linux-x64-musl: 1.19.0 + lightningcss-win32-x64-msvc: 1.19.0 + dev: false - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: true - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - /is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - dev: true + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} - /is-iterable@1.1.1: - resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} - engines: {node: '>= 4'} + /line-column-path@3.0.0: + resolution: {integrity: sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + type-fest: 2.19.0 dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: false - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /is-npm@5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} dependencies: - has-tostringtag: 1.0.0 - - /is-number@4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} + uc.micro: 2.0.0 dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} + /lint-staged@15.2.0: + resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.0.0 + listr2: 8.0.0 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.4 + transitivePeerDependencies: + - supports-color dev: true - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + /listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} engines: {node: '>=12'} - - /is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - dev: true - - /is-property@1.0.2: - resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} - - /is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true dependencies: - '@types/estree': 1.0.4 + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 dev: false - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + /listr2@8.0.0: + resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} + engines: {node: '>=18.0.0'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.3.0 + wrap-ansi: 9.0.0 + dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /load-json-file@1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 dev: false - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /load-json-file@5.3.0: + resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==} + engines: {node: '>=6'} dependencies: - call-bind: 1.0.5 + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 4.0.1 + strip-bom: 3.0.0 + type-fest: 0.3.1 - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + /load-json-file@6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + /load-json-file@7.0.1: + resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} dependencies: - has-tostringtag: 1.0.0 + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} dependencies: - which-typed-array: 1.1.13 - - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: false - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 dev: true - /is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: false - - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: false + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: - call-bind: 1.0.5 + p-locate: 4.1.0 - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: false + p-locate: 5.0.0 - /is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - dev: false + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /is-yarn-global@0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: true - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + /lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + dev: true - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true + /lodash.deburr@4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + dev: false - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.23.2 - '@babel/parser': 7.23.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false - /istanbul-lib-instrument@6.0.1: - resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.23.2 - '@babel/parser': 7.23.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 4.0.0 - supports-color: 7.2.0 + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /iterable-lookahead@1.0.0: - resolution: {integrity: sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==} - engines: {node: '>=4'} + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: false - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} dev: true - /jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.1 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.0.4 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /jest-cli@29.7.0(@types/node@20.8.10): - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.8.10) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.10) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true - /jest-config@29.7.0(@types/node@20.8.10): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - babel-jest: 29.7.0(@babel/core@7.23.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true - /jest-diff@22.4.3: - resolution: {integrity: sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} dependencies: chalk: 2.4.2 - diff: 3.5.0 - jest-get-type: 22.4.3 - pretty-format: 22.4.3 - dev: true + dev: false - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true + is-unicode-supported: 0.1.0 - /jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} dependencies: - detect-newline: 3.1.0 + chalk: 5.3.0 + is-unicode-supported: 1.3.0 dev: true - /jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - dev: true + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: false - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - jest-mock: 29.7.0 - jest-util: 29.7.0 + ansi-escapes: 6.2.0 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 dev: true - /jest-extended@4.0.2(jest@29.7.0): - resolution: {integrity: sha512-FH7aaPgtGYHc9mRjriS0ZEHYM5/W69tLrFTIdzm+yJgeoCmmrSB/luSfMSqWP9O29QWHPEmJ4qmU6EwsZideog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - jest: '>=27.2.5' - peerDependenciesMeta: - jest: - optional: true + /logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} dependencies: - jest: 29.7.0(@types/node@20.8.10) - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - dev: true + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + dev: false - /jest-get-type@22.4.3: - resolution: {integrity: sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==} - dev: true + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.8 - '@types/node': 20.8.10 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + js-tokens: 4.0.0 + + /loud-rejection@1.6.0: + resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} + engines: {node: '>=0.10.0'} + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + dev: false + + /lower-case-first@2.0.2: + resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} + dependencies: + tslib: 2.6.2 + + /lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + dev: false + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} dev: true - /jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true + yallist: 3.1.1 - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: - '@babel/code-frame': 7.22.13 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.2 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true + yallist: 4.0.0 - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + /lru-cache@8.0.5: + resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} + engines: {node: '>=16.14'} + + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - jest-util: 29.7.0 + es5-ext: 0.10.62 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} + /lucide-react@0.302.0(react@18.2.0): + resolution: {integrity: sha512-JZX+1fjpqxvQmEgItvPOAwRlqf0Eg9dSZMxljA2/V2M6dluOhQCPBhewIlSJWgkNu0M36kViOgmTAMnDaAMOFw==} peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: - jest-resolve: 29.7.0 - dev: true + react: 18.2.0 + dev: false - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: false - /jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /magic-string@0.16.0: + resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + vlq: 0.2.3 dev: true - /jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true + '@jridgewell/sourcemap-codec': 1.4.15 - /jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true + pify: 4.0.1 + semver: 5.7.2 + dev: false - /jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true + semver: 6.3.1 - /jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.2 - '@babel/generator': 7.23.0 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.23.0 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 semver: 7.5.4 - transitivePeerDependencies: - - supports-color dev: true - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 + tmpl: 1.0.5 dev: true - /jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.8.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 + p-defer: 1.0.0 dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.8.10 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: false - - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.8.10 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} - /jest@29.7.0(@types/node@20.8.10): - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.8.10) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true + /map-obj@2.0.0: + resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} + engines: {node: '>=4'} + dev: true - /jose@4.15.4: - resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} - dev: false + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} - /js-cookie@3.0.1: - resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} - engines: {node: '>=12'} + /map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} dev: false - /js-cookie@3.0.5: - resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} - engines: {node: '>=14'} + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} dev: false - /js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: true - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + /markdown-it-shikiji@0.9.12: + resolution: {integrity: sha512-JfCGML9/ymRIY5d93OFvTK9cQVCX2hCnKjLLlcP7/8Gsvc5tWNV+IvvsKTIYAzwFrBOJZXYOUxgCRmebFeeXmg==} dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + markdown-it: 14.0.0 + shikiji: 0.9.12 dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + /markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} hasBin: true dependencies: argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.0.0 + dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false - /json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + /matcher@5.0.0: + resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + escape-string-regexp: 5.0.0 dev: true - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + /mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true - /json-diff@0.9.0: - resolution: {integrity: sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==} + /md5-file@3.2.3: + resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} + engines: {node: '>=0.10'} hasBin: true dependencies: - cli-color: 2.0.3 - difflib: 0.2.4 - dreamopt: 0.8.0 + buffer-alloc: 1.2.0 + dev: false + + /md5-hex@3.0.1: + resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} + engines: {node: '>=8'} + dependencies: + blueimp-md5: 2.19.0 dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false - /json-parse-even-better-errors@3.0.0: - resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true + /md5@2.2.1: + resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: false - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + /md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: false - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true + /md5hex@1.0.0: + resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} + dev: false - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color dev: true - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} dependencies: - minimist: 1.2.8 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.0.1 + dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - object.assign: 4.1.4 - object.values: 1.1.7 + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: - json-buffer: 3.0.0 - dev: true + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: - json-buffer: 3.0.1 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false - /knip@2.39.0: - resolution: {integrity: sha512-2piCiCtazV+EfshVmblfaVRTsWI+mZ/ipmBJw2V6BorN0nX+t0BcmMX7s3ozrjpS/ZWANUHOcfWyzA5dbjMM/w==} - engines: {node: '>=16.17.0 <17 || >=18.6.0'} - hasBin: true + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} dependencies: - '@ericcornelissen/bash-parser': 0.5.2 - '@npmcli/map-workspaces': 3.0.4 - '@pkgjs/parseargs': 0.11.0 - '@pnpm/logger': 5.0.0 - '@pnpm/workspace.pkgs-graph': 2.0.10(@pnpm/logger@5.0.0) - '@snyk/github-codeowners': 1.1.0 - chalk: 5.3.0 - easy-table: 1.2.0 - fast-glob: 3.3.1 - globby: 13.2.2 - jiti: 1.21.0 - js-yaml: 4.1.0 - micromatch: 4.0.5 - minimist: 1.2.8 - pretty-ms: 8.0.0 - strip-json-comments: 5.0.1 - summary: 2.1.0 - typescript: 5.2.2 - zod: 3.22.4 - zod-validation-error: 1.5.0(zod@3.22.4) + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - - domexception - dev: true + - supports-color + dev: false - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 dev: false - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + /mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: - language-subtag-registry: 0.3.22 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 dev: false - /latest-version@5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: - package-json: 6.5.0 - dev: true + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + '@types/mdast': 4.0.3 + dev: false - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true - /lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: true - /load-json-file@1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} + /mdx@0.3.1: + resolution: {integrity: sha512-i+oUkB4ntcYVYnjiuktpYP77m/ISDg7z1B2pL+alDNFPgRkXlkYaW6zY03103/88A06E3Pn6x/DL9qB8pT9xWA==} + hasBin: true dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 + meow: 3.6.0 + mustache: 2.2.1 + object-assign: 4.0.1 + read-input: 0.3.1 dev: false - /load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + + /mem@6.1.1: + resolution: {integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==} engines: {node: '>=8'} dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 dev: true - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + /mem@8.1.1: + resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} + engines: {node: '>=10'} dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 dev: true - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.5 dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + /memoize@10.0.0: + resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} + engines: {node: '>=18'} dependencies: - p-locate: 4.1.0 + mimic-function: 5.0.0 dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + /memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} dependencies: - p-locate: 5.0.0 + d: 1.0.1 + es5-ext: 0.10.62 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} dependencies: - p-locate: 6.0.0 - dev: true + map-or-similar: 1.5.0 + dev: false - /lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - dev: true + /memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + dev: false - /lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + /memory-fs@0.2.0: + resolution: {integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==} dev: true - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} dev: true - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + /mensch@0.3.4: + resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} + dev: false + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} dev: true - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + /meow@13.0.0: + resolution: {integrity: sha512-4Hu+75Vo7EOR+8C9RmkabfLijuwd9SrzQ8f0SyC4qZZwU6BlxeOt5ulF3PGCpcMJX4hI+ktpJhea0P6PN1RiWw==} + engines: {node: '>=18'} dev: true - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + /meow@3.6.0: + resolution: {integrity: sha512-1zRGO8C/2QD8uBxZbwwKbIQHrHKANzVnlK/3Gj7xro+ks4HLmayvETy+BnCV+wm68PE6dYcfgyTDMVG2mjlQwg==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase-keys: 2.1.0 + loud-rejection: 1.6.0 + minimist: 1.2.8 + normalize-package-data: 2.5.0 + object-assign: 4.0.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + dev: false - /lodash.set@4.3.2: - resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} + /meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 dev: true - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + /meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 dev: true - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - /log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} - dependencies: - chalk: 2.4.2 - dev: true + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + /meros@1.3.0(@types/node@20.10.5): + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true + '@types/node': 20.10.5 + dev: false - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + + /metro-react-native-babel-preset@0.76.8(@babel/core@7.23.6): + resolution: {integrity: sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 + '@babel/core': 7.23.6 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.6) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.6) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) + '@babel/template': 7.22.15 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.6) + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /micro-spelling-correcter@1.1.1: + resolution: {integrity: sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==} dev: true - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + /micro@10.0.1: + resolution: {integrity: sha512-9uwZSsUrqf6+4FLLpiPj5TRWQv5w5uJrJwsx1LR/TjqvQmKC1XnGQ9OHrFwR3cbZ46YqPqxO/XJCOpWnqMPw2Q==} + engines: {node: '>= 16.0.0'} + hasBin: true + dependencies: + arg: 4.1.0 + content-type: 1.0.4 + raw-body: 2.4.1 + dev: false - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: - js-tokens: 4.0.0 + micromark-util-character: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /loud-rejection@1.6.0: - resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} - engines: {node: '>=0.10.0'} + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.7 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} dependencies: - tslib: 2.6.2 + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true - - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /lru-cache@10.0.1: - resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} - engines: {node: 14 || >=16.14} - dev: true + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} dependencies: - yallist: 3.1.1 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: - yallist: 4.0.0 + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /lru-cache@8.0.5: - resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} - engines: {node: '>=16.14'} + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false - /lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} dependencies: - es5-ext: 0.10.62 - dev: true + micromark-util-types: 2.0.0 + dev: false - /lucide-react@0.292.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-rRgUkpEHWpa5VCT66YscInCQmQuPCB1RFRzkkxMxg4b+jaL0V12E3riWWR2Sh5OIiUhCwGW/ZExuEO4Az32E6Q==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 dev: false - /magic-string@0.16.0: - resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} dependencies: - vlq: 0.2.3 - dev: true + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: - semver: 6.3.1 - dev: true + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} dependencies: - semver: 7.5.4 - dev: true + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: - tmpl: 1.0.5 - dev: true + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: false - /map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} dependencies: - p-defer: 1.0.0 - dev: true + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /map-obj@2.0.0: - resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} - engines: {node: '>=4'} - dev: true + /micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false - /markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: - '@types/mdast': 4.0.2 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + micromark-util-symbol: 2.0.0 dev: false - /mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: - '@types/mdast': 4.0.2 - '@types/unist': 3.0.1 decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 + micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color dev: false - /mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - dependencies: - '@types/mdast': 4.0.2 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.0.1 + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} dev: false - /mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: - '@types/mdast': 4.0.2 + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 dev: false - /mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - dependencies: - '@types/mdast': 4.0.2 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} dev: false - /mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: - '@types/mdast': 4.0.2 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + micromark-util-symbol: 2.0.0 dev: false - /mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: - '@types/mdast': 4.0.2 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + micromark-util-types: 2.0.0 dev: false - /mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 dev: false - /mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false - /mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} - dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 - '@types/unist': 3.0.1 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} dev: false - /mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 + debug: 4.3.4 + parse-entities: 2.0.0 transitivePeerDependencies: - supports-color - dev: false + dev: true - /mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: - '@types/estree-jsx': 1.0.2 - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: - '@types/mdast': 4.0.2 - unist-util-is: 6.0.0 - dev: false + braces: 3.0.2 + picomatch: 2.3.1 - /mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true dependencies: - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + bn.js: 4.12.0 + brorand: 1.1.0 dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + /million@2.6.4: + resolution: {integrity: sha512-voUkdd/jHWrG+7NS+mX49Pat+POKdgGW78V7pYMSrTaOjUitR6ySEcAci8hn17Rsx1IMI3+5w41dkADM1J1ZEg==} + hasBin: true dependencies: - '@types/mdast': 4.0.2 - '@types/unist': 3.0.1 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.0.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + kleur: 4.1.5 + rollup: 3.29.4 + unplugin: 1.6.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: - '@types/mdast': 4.0.2 + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true dev: false - /mdx@0.3.1: - resolution: {integrity: sha512-i+oUkB4ntcYVYnjiuktpYP77m/ISDg7z1B2pL+alDNFPgRkXlkYaW6zY03103/88A06E3Pn6x/DL9qB8pT9xWA==} + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} hasBin: true - dependencies: - meow: 3.6.0 - mustache: 2.2.1 - object-assign: 4.0.1 - read-input: 0.3.1 dev: false - /mem@6.1.1: - resolution: {integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==} + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /mimic-fn@3.1.0: + resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} engines: {node: '>=8'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 dev: true - /mem@8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + /mimic-function@5.0.0: + resolution: {integrity: sha512-RBfQ+9X9DpXdEoK7Bu+KeEU6vFhumEIiXKWECPzRBmDserEq4uR2b/VCm0LwpMSosoq2k+Zuxj/GzOr0Fn6h/g==} + engines: {node: '>=18'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - dev: true + brace-expansion: 2.0.1 - /memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.7 - dev: true - - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} + brace-expansion: 2.0.1 dev: true - /meow@3.6.0: - resolution: {integrity: sha512-1zRGO8C/2QD8uBxZbwwKbIQHrHKANzVnlK/3Gj7xro+ks4HLmayvETy+BnCV+wm68PE6dYcfgyTDMVG2mjlQwg==} - engines: {node: '>=0.10.0'} + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: - camelcase-keys: 2.1.0 - loud-rejection: 1.6.0 - minimist: 1.2.8 - normalize-package-data: 2.5.0 - object-assign: 4.0.1 - read-pkg-up: 1.0.1 - redent: 1.0.0 - trim-newlines: 1.0.0 + brace-expansion: 2.0.1 dev: false - /meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: - '@types/minimist': 1.2.4 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + brace-expansion: 2.0.1 + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} - - /micro@10.0.1: - resolution: {integrity: sha512-9uwZSsUrqf6+4FLLpiPj5TRWQv5w5uJrJwsx1LR/TjqvQmKC1XnGQ9OHrFwR3cbZ46YqPqxO/XJCOpWnqMPw2Q==} - engines: {node: '>= 16.0.0'} - hasBin: true dependencies: - arg: 4.1.0 - content-type: 1.0.4 - raw-body: 2.4.1 + minipass: 3.3.6 dev: false - /micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + minipass: 3.3.6 dev: false - /micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} dependencies: - micromark-util-character: 2.0.1 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + minipass: 3.3.6 dev: false - /micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + /minipass@3.1.6: + resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} + engines: {node: '>=8'} dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + yallist: 4.0.0 dev: false - /micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false + yallist: 4.0.0 - /micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: false + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} - /micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - dependencies: - micromark-util-types: 2.0.0 - dev: false + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} - /micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + minipass: 3.3.6 + yallist: 4.0.0 + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} dev: false - /micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + /mjml-accordion@4.14.1: + resolution: {integrity: sha512-dpNXyjnhYwhM75JSjD4wFUa9JgHm86M2pa0CoTzdv1zOQz67ilc4BoK5mc2S0gOjJpjBShM5eOJuCyVIuAPC6w==} dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + /mjml-body@4.14.1: + resolution: {integrity: sha512-YpXcK3o2o1U+fhI8f60xahrhXuHmav6BZez9vIN3ZEJOxPFSr+qgr1cT2iyFz50L5+ZsLIVj2ZY+ALQjdsg8ig==} dependencies: - '@types/estree': 1.0.4 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + /mjml-button@4.14.1: + resolution: {integrity: sha512-V1Tl1vQ3lXYvvqHJHvGcc8URr7V1l/ZOsv7iLV4QRrh7kjKBXaRS7uUJtz6/PzEbNsGQCiNtXrODqcijLWlgaw==} dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.4 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + /mjml-carousel@4.14.1: + resolution: {integrity: sha512-Ku3MUWPk/TwHxVgKEUtzspy/ePaWtN/3z6/qvNik0KIn0ZUIZ4zvR2JtaVL5nd30LHSmUaNj30XMPkCjYiKkFA==} dependencies: - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + /mjml-cli@4.14.1: + resolution: {integrity: sha512-Gy6MnSygFXs0U1qOXTHqBg2vZX2VL/fAacgQzD4MHq4OuybWaTNSzXRwxBXYCxT3IJB874n2Q0Mxp+Xka+tnZg==} + hasBin: true dependencies: - '@types/estree': 1.0.4 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + '@babel/runtime': 7.23.6 + chokidar: 3.5.3 + glob: 7.2.3 + html-minifier: 4.0.0 + js-beautify: 1.14.11 + lodash: 4.17.21 + mjml-core: 4.14.1 + mjml-migrate: 4.14.1 + mjml-parser-xml: 4.14.1 + mjml-validator: 4.13.0 + yargs: 16.2.0 + transitivePeerDependencies: + - encoding dev: false - /micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + /mjml-column@4.14.1: + resolution: {integrity: sha512-iixVCIX1YJtpQuwG2WbDr7FqofQrlTtGQ4+YAZXGiLThs0En3xNIJFQX9xJ8sgLEGGltyooHiNICBRlzSp9fDg==} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + /mjml-core@4.14.1: + resolution: {integrity: sha512-di88rSfX+8r4r+cEqlQCO7CRM4mYZrfe2wSCu2je38i+ujjkLpF72cgLnjBlSG5aOUCZgYvlsZ85stqIz9LQfA==} dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + cheerio: 1.0.0-rc.12 + detect-node: 2.1.0 + html-minifier: 4.0.0 + js-beautify: 1.14.11 + juice: 9.1.0 + lodash: 4.17.21 + mjml-migrate: 4.14.1 + mjml-parser-xml: 4.14.1 + mjml-validator: 4.13.0 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + /mjml-divider@4.14.1: + resolution: {integrity: sha512-agqWY0aW2xaMiUOhYKDvcAAfOLalpbbtjKZAl1vWmNkURaoK4L7MgDilKHSJDFUlHGm2ZOArTrq8i6K0iyThBQ==} dependencies: - devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + /mjml-group@4.14.1: + resolution: {integrity: sha512-dJt5batgEJ7wxlxzqOfHOI94ABX+8DZBvAlHuddYO4CsLFHYv6XRIArLAMMnAKU76r6p3X8JxYeOjKZXdv49kg==} dependencies: - '@types/estree': 1.0.4 - devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + /mjml-head-attributes@4.14.1: + resolution: {integrity: sha512-XdUNOp2csK28kBDSistInOyzWNwmu5HDNr4y1Z7vSQ1PfkmiuS6jWG7jHUjdoMhs27e6Leuyyc6a8gWSpqSWrg==} dependencies: - micromark-util-character: 2.0.1 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + /mjml-head-breakpoint@4.14.1: + resolution: {integrity: sha512-Qw9l/W/I5Z9p7I4ShgnEpAL9if4472ejcznbBnp+4Gq+sZoPa7iYoEPsa9UCGutlaCh3N3tIi2qKhl9qD8DFxA==} dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + /mjml-head-font@4.14.1: + resolution: {integrity: sha512-oBYm1gaOdEMjE5BoZouRRD4lCNZ1jcpz92NR/F7xDyMaKCGN6T/+r4S5dq1gOLm9zWqClRHaECdFJNEmrDpZqA==} dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + /mjml-head-html-attributes@4.14.1: + resolution: {integrity: sha512-vlJsJc1Sm4Ml2XvLmp01zsdmWmzm6+jNCO7X3eYi9ngEh8LjMCLIQOncnOgjqm9uGpQu2EgUhwvYFZP2luJOVg==} dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + /mjml-head-preview@4.14.1: + resolution: {integrity: sha512-89gQtt3fhl2dkYpHLF5HDQXz/RLpzecU6wmAIT7Dz6etjLGE1dgq2Ay6Bu/OeHjDcT1gbM131zvBwuXw8OydNw==} dependencies: - micromark-util-symbol: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + /mjml-head-style@4.14.1: + resolution: {integrity: sha512-XryOuf32EDuUCBT2k99C1+H87IOM919oY6IqxKFJCDkmsbywKIum7ibhweJdcxiYGONKTC6xjuibGD3fQTTYNQ==} dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + /mjml-head-title@4.14.1: + resolution: {integrity: sha512-aIfpmlQdf1eJZSSrFodmlC4g5GudBti2eMyG42M7/3NeLM6anEWoe+UkF/6OG4Zy0tCQ40BDJ5iBZlMsjQICzw==} dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + /mjml-head@4.14.1: + resolution: {integrity: sha512-KoCbtSeTAhx05Ugn9TB2UYt5sQinSCb7RGRer5iPQ3CrXj8hT5B5Svn6qvf/GACPkWl4auExHQh+XgLB+r3OEA==} dependencies: - micromark-util-symbol: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + /mjml-hero@4.14.1: + resolution: {integrity: sha512-TQJ3yfjrKYGkdEWjHLHhL99u/meKFYgnfJvlo9xeBvRjSM696jIjdqaPHaunfw4CP6d2OpCIMuacgOsvqQMWOA==} dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + /mjml-image@4.14.1: + resolution: {integrity: sha512-jfKLPHXuFq83okwlNM1Um/AEWeVDgs2JXIOsWp2TtvXosnRvGGMzA5stKLYdy1x6UfKF4c1ovpMS162aYGp+xQ==} + dependencies: + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + /mjml-migrate@4.14.1: + resolution: {integrity: sha512-d+9HKQOhZi3ZFAaFSDdjzJX9eDQGjMf3BArLWNm2okC4ZgfJSpOc77kgCyFV8ugvwc8fFegPnSV60Jl4xtvK2A==} + hasBin: true dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.4 - '@types/unist': 3.0.1 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + '@babel/runtime': 7.23.6 + js-beautify: 1.14.11 + lodash: 4.17.21 + mjml-core: 4.14.1 + mjml-parser-xml: 4.14.1 + yargs: 16.2.0 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + /mjml-navbar@4.14.1: + resolution: {integrity: sha512-rNy1Kw8CR3WQ+M55PFBAUDz2VEOjz+sk06OFnsnmNjoMVCjo1EV7OFLDAkmxAwqkC8h4zQWEOFY0MBqqoAg7+A==} + dependencies: + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + /mjml-parser-xml@4.14.1: + resolution: {integrity: sha512-9WQVeukbXfq9DUcZ8wOsHC6BTdhaVwTAJDYMIQglXLwKwN7I4pTCguDDHy5d0kbbzK5OCVxCdZe+bfVI6XANOQ==} dependencies: - micromark-util-symbol: 2.0.0 + '@babel/runtime': 7.23.6 + detect-node: 2.0.4 + htmlparser2: 8.0.2 + lodash: 4.17.21 dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - dependencies: - micromark-util-types: 2.0.0 + /mjml-preset-core@4.14.1: + resolution: {integrity: sha512-uUCqK9Z9d39rwB/+JDV2KWSZGB46W7rPQpc9Xnw1DRP7wD7qAfJwK6AZFCwfTgWdSxw0PwquVNcrUS9yBa9uhw==} + dependencies: + '@babel/runtime': 7.23.6 + mjml-accordion: 4.14.1 + mjml-body: 4.14.1 + mjml-button: 4.14.1 + mjml-carousel: 4.14.1 + mjml-column: 4.14.1 + mjml-divider: 4.14.1 + mjml-group: 4.14.1 + mjml-head: 4.14.1 + mjml-head-attributes: 4.14.1 + mjml-head-breakpoint: 4.14.1 + mjml-head-font: 4.14.1 + mjml-head-html-attributes: 4.14.1 + mjml-head-preview: 4.14.1 + mjml-head-style: 4.14.1 + mjml-head-title: 4.14.1 + mjml-hero: 4.14.1 + mjml-image: 4.14.1 + mjml-navbar: 4.14.1 + mjml-raw: 4.14.1 + mjml-section: 4.14.1 + mjml-social: 4.14.1 + mjml-spacer: 4.14.1 + mjml-table: 4.14.1 + mjml-text: 4.14.1 + mjml-wrapper: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + /mjml-raw@4.14.1: + resolution: {integrity: sha512-9+4wzoXnCtfV6QPmjfJkZ50hxFB4Z8QZnl2Ac0D1Cn3dUF46UkmO5NLMu7UDIlm5DdFyycZrMOwvZS4wv9ksPw==} dependencies: - micromark-util-character: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + /mjml-section@4.14.1: + resolution: {integrity: sha512-Ik5pTUhpT3DOfB3hEmAWp8rZ0ilWtIivnL8XdUJRfgYE9D+MCRn+reIO+DAoJHxiQoI6gyeKkIP4B9OrQ7cHQw==} dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + /mjml-social@4.14.1: + resolution: {integrity: sha512-G44aOZXgZHukirjkeQWTTV36UywtE2YvSwWGNfo/8d+k5JdJJhCIrlwaahyKEAyH63G1B0Zt8b2lEWx0jigYUw==} + dependencies: + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + /mjml-spacer@4.14.1: + resolution: {integrity: sha512-5SfQCXTd3JBgRH1pUy6NVZ0lXBiRqFJPVHBdtC3OFvUS3q1w16eaAXlIUWMKTfy8CKhQrCiE6m65kc662ZpYxA==} + dependencies: + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + /mjml-table@4.14.1: + resolution: {integrity: sha512-aVBdX3WpyKVGh/PZNn2KgRem+PQhWlvnD00DKxDejRBsBSKYSwZ0t3EfFvZOoJ9DzfHsN0dHuwd6Z18Ps44NFQ==} dependencies: - '@types/debug': 4.1.10 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 transitivePeerDependencies: - - supports-color + - encoding dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + /mjml-text@4.14.1: + resolution: {integrity: sha512-yZuvf5z6qUxEo5CqOhCUltJlR6oySKVcQNHwoV5sneMaKdmBiaU4VDnlYFera9gMD9o3KBHIX6kUg7EHnCwBRQ==} dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + transitivePeerDependencies: + - encoding dev: false - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + /mjml-validator@4.13.0: + resolution: {integrity: sha512-uURYfyQYtHJ6Qz/1A7/+E9ezfcoISoLZhYK3olsxKRViwaA2Mm8gy/J3yggZXnsUXWUns7Qymycm5LglLEIiQg==} dependencies: - mime-db: 1.52.0 + '@babel/runtime': 7.23.6 dev: false - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-fn@3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: true - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + /mjml-wrapper@4.14.1: + resolution: {integrity: sha512-aA5Xlq6d0hZ5LY+RvSaBqmVcLkvPvdhyAv3vQf3G41Gfhel4oIPmkLnVpHselWhV14A0KwIOIAKVxHtSAxyOTQ==} dependencies: - brace-expansion: 1.1.11 + '@babel/runtime': 7.23.6 + lodash: 4.17.21 + mjml-core: 4.14.1 + mjml-section: 4.14.1 + transitivePeerDependencies: + - encoding + dev: false - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + /mjml@4.14.1: + resolution: {integrity: sha512-f/wnWWIVbeb/ge3ff7c/KYYizI13QbGIp03odwwkCThsJsacw4gpZZAU7V4gXY3HxSXP2/q3jxOfaHVbkfNpOQ==} + hasBin: true dependencies: - brace-expansion: 2.0.1 - dev: true + '@babel/runtime': 7.23.6 + mjml-cli: 4.14.1 + mjml-core: 4.14.1 + mjml-migrate: 4.14.1 + mjml-preset-core: 4.14.1 + mjml-validator: 4.13.0 + transitivePeerDependencies: + - encoding + dev: false - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: - brace-expansion: 2.0.1 - dev: true + minimist: 1.2.8 + dev: false - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 + acorn: 8.11.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 dev: true - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -9801,10 +22990,25 @@ packages: /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - /mysql2@3.6.3: - resolution: {integrity: sha512-qYd/1CDuW1KYZjD4tzg2O8YS3X/UWuGH8ZMHyMeggMTXL3yOdMisbwZ5SNkHzDGlZXKYLAvV8tMrEH+NUMz3fw==} + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + mkdirp: 0.5.6 + ncp: 2.0.0 + rimraf: 2.4.5 + dev: false + optional: true + + /mysql2@3.6.5: + resolution: {integrity: sha512-pS/KqIb0xlXmtmqEuTvBXTmLoQ5LmAz5NW/r8UyQ1ldvnprNEj3P9GbmuQQ2J0A4LO+ynotGi6TbscPa8OUb+w==} engines: {node: '>= 8.0'} dependencies: denque: 2.1.0 @@ -9829,14 +23033,29 @@ packages: dependencies: lru-cache: 7.18.3 - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + requiresBuild: true + dev: false + optional: true + /ndjson@2.0.0: resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} engines: {node: '>=10'} @@ -9856,10 +23075,13 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} dev: false - /next-auth@4.24.4(next@14.0.2-canary.12)(nodemailer@6.9.7)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-5DGffi+OpkbU62vPQIJ1z+hFnmow+ec5Qrn9m6eoglIO51m0DlrmLxBduZEwKAYDEg9k2joi1yelgmq1vqK3aQ==} + /next-auth@4.24.5(next@14.0.4)(nodemailer@6.9.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3RafV3XbfIKk6rF6GlLE4/KxjTcuMCifqrmD+98ejFq73SRoj2rmzoca8u764977lH/Q7jo6Xu6yM+Re1Mz/Og==} peerDependencies: next: ^12.2.5 || ^13 || ^14 nodemailer: ^6.6.5 @@ -9869,40 +23091,53 @@ packages: nodemailer: optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.4 - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) nodemailer: 6.9.7 oauth: 0.9.15 - openid-client: 5.6.1 - preact: 10.18.2 - preact-render-to-string: 5.2.6(preact@10.18.2) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + openid-client: 5.6.2 + preact: 10.19.3 + preact-render-to-string: 5.2.6(preact@10.19.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) uuid: 8.3.2 dev: false - /next-international@1.1.3: - resolution: {integrity: sha512-S6CbAQDFhMM3jGaJ+9VvX27cEHLh8yD1G3k6NWGuvRXrJX6qSrrVOD6V6PllD88m+GCGql43pB3RWgIrnkoONQ==} + /next-international@1.1.4: + resolution: {integrity: sha512-peIJXXEC5lM7zZONCgN1uUxCkIHpSW1pZuHoRTp9ND14K7CDdHajDMz9RTxVCmQUGWXSaqruM6XVAuq4d+Gpxg==} dependencies: client-only: 0.0.1 international-types: 0.8.1 server-only: 0.0.1 dev: false - /next-intl@3.0.0-rc.7(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-41gDE/WhqpT79UW4qgslB+FKdiBZHGND0Yfsy8f31lARZElCsQA177tDna87Nkzi2Ji//jHoJofoqlUKPXcIxw==} + /next-intl@3.4.0(next@14.0.4)(react@18.2.0): + resolution: {integrity: sha512-pccnuQq6N6iyPi0Foiajp9JgZp99w7gRxHhBxmtBdjsCmrsik7QflKWq2a/US2kFP734JSsSoY98xK+acjozeQ==} peerDependencies: next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@formatjs/intl-localematcher': 0.2.32 negotiator: 0.6.3 - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - use-intl: 3.0.0-rc.6(react@18.3.0-canary-ce2bc58a9-20231102) + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + use-intl: 3.4.0(react@18.2.0) + dev: false + + /next-safe-action@5.2.3(next@14.0.4)(react@18.2.0)(zod@3.22.4): + resolution: {integrity: sha512-djTDE9CkTH/EVzhIJBovlU9kJ7twy7gVC1HFsuQzhMe2d5V90IXlZLmpvnt0c6D5rMjFBrBwd2VVQnyVQcWoHQ==} + engines: {node: '>=16'} + peerDependencies: + next: '>= 14.0.0' + react: '>= 18.2.0' + zod: '>= 3.0.0' + dependencies: + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + zod: 3.22.4 dev: false /next-secure-headers@2.2.0: @@ -9910,24 +23145,33 @@ packages: engines: {node: '>=10.0.0'} dev: true - /next-themes@0.2.1(next@14.0.2-canary.12)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): + /next-themes@0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /next@14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-a0cH+VQpwlG2G1wf2l8DrL4vhow0T+H8zoZql8GqQbFrGOg3TgxVycDRvSmwkcrnvOCVN7P/wYA+XhMN8b+oYA==} + /next-usequerystate@1.13.2(next@14.0.4): + resolution: {integrity: sha512-Jg6pJy/ltevoVc/Qa8Dvgz9UY5UeKsKQfELj9dNxGx2TdxiPTa5w9bfo5y0n1TKeTcnFRHIyf6PqkjLsDFuo1A==} + peerDependencies: + next: '>=13.4 <14.0.2 || ^14.0.3' + dependencies: + mitt: 3.0.1 + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + dev: false + + /next@14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -9941,47 +23185,88 @@ packages: sass: optional: true dependencies: - '@next/env': 14.0.2-canary.12 + '@next/env': 14.0.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001561 + caniuse-lite: 1.0.30001571 + graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) - styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.3.0-canary-ce2bc58a9-20231102) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.2-canary.12 - '@next/swc-darwin-x64': 14.0.2-canary.12 - '@next/swc-linux-arm64-gnu': 14.0.2-canary.12 - '@next/swc-linux-arm64-musl': 14.0.2-canary.12 - '@next/swc-linux-x64-gnu': 14.0.2-canary.12 - '@next/swc-linux-x64-musl': 14.0.2-canary.12 - '@next/swc-win32-arm64-msvc': 14.0.2-canary.12 - '@next/swc-win32-ia32-msvc': 14.0.2-canary.12 - '@next/swc-win32-x64-msvc': 14.0.2-canary.12 + '@next/swc-darwin-arm64': 14.0.4 + '@next/swc-darwin-x64': 14.0.4 + '@next/swc-linux-arm64-gnu': 14.0.4 + '@next/swc-linux-arm64-musl': 14.0.4 + '@next/swc-linux-x64-gnu': 14.0.4 + '@next/swc-linux-x64-musl': 14.0.4 + '@next/swc-win32-arm64-msvc': 14.0.4 + '@next/swc-win32-ia32-msvc': 14.0.4 + '@next/swc-win32-x64-msvc': 14.0.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /nextjs-google-analytics@2.3.3(next@14.0.2-canary.12)(react@18.3.0-canary-ce2bc58a9-20231102): + /nextjs-google-analytics@2.3.3(next@14.0.4)(react@18.2.0): resolution: {integrity: sha512-Y6sI6A7wt5dji8hYBnVkOh9LTyImSLFZXx3FpyQgVW7W4b4qEFHjH2u3fhDJsrRZeLlUGM8/RuHD/mhHc2Axfg==} peerDependencies: next: '>=11.0.0' react: '>=17.0.0' dependencies: - next: 14.0.2-canary.12(@babel/core@7.23.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 optionalDependencies: fsevents: 2.3.3 dev: false + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + + /no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + dependencies: + lower-case: 1.1.4 + dev: false + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.6.2 + + /no-cliches@0.3.6: + resolution: {integrity: sha512-3yZ1vfGKOcv0dyyhUeqA0Qa6RsQ4SfUnL6o2IWR4sVg8kdnJo48XTWbMLdtnfiZTbCUdsMttNwyJcihEdGCZBw==} + engines: {node: '>=16', npm: '>=8'} + dev: true + + /node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false + + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + + /node-addon-api@7.0.0: + resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + dev: false + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 dev: false /node-emoji@1.11.0: @@ -9994,6 +23279,10 @@ packages: resolution: {integrity: sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==} dev: false + /node-fetch-native@1.6.1: + resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} + dev: false + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -10004,7 +23293,6 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: true /node-fetch@3.0.0-beta.9: resolution: {integrity: sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==} @@ -10016,18 +23304,86 @@ packages: - domexception dev: true + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-gyp-build@4.7.1: + resolution: {integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==} + hasBin: true + dev: true + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-polyfill-webpack-plugin@2.0.1(webpack@5.89.0): + resolution: {integrity: sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==} + engines: {node: '>=12'} + peerDependencies: + webpack: '>=5' + dependencies: + assert: 2.1.0 + browserify-zlib: 0.2.0 + buffer: 6.0.3 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 4.23.0 + events: 3.3.0 + filter-obj: 2.0.2 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + process: 0.11.10 + punycode: 2.3.1 + querystring-es3: 0.2.1 + readable-stream: 4.5.1 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + type-fest: 2.19.0 + url: 0.11.3 + util: 0.12.5 + vm-browserify: 1.1.2 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} /nodemailer@6.9.7: resolution: {integrity: sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==} engines: {node: '>=6.0.0'} dev: false + /nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + dev: true + + /noop-fn@1.0.0: + resolution: {integrity: sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ==} + dev: false + + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -10056,6 +23412,13 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -10106,11 +23469,47 @@ packages: - supports-color dev: true + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: true + /npm-normalize-package-bin@3.0.1: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@7.0.0: + resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} + dependencies: + hosted-git-info: 3.0.8 + osenv: 0.1.5 + semver: 5.7.2 + validate-npm-package-name: 3.0.0 + dev: false + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.5.4 + dev: true + /npm-run-all2@6.1.1: resolution: {integrity: sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==} engines: {node: ^14.18.0 || >=16.0.0, npm: '>= 8'} @@ -10125,28 +23524,70 @@ packages: shell-quote: 1.8.1 dev: true + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + + /npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /oauth4webapi@2.3.0: - resolution: {integrity: sha512-JGkb5doGrwzVDuHwgrR4nHJayzN4h59VCed6EW8Tql6iHDfZIabCJvg6wtbn5q6pyB2hZruI3b77Nudvq7NmvA==} + /nypm@0.3.3: + resolution: {integrity: sha512-FHoxtTscAE723e80d2M9cJRb4YVjL82Ra+ZV+YqC6rfNZUWahi+ZhPF+krnR+bdMvibsfHCtgKXnZf5R6kmEPA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + dependencies: + citty: 0.1.5 + execa: 8.0.1 + pathe: 1.1.1 + ufo: 1.3.2 + dev: false + + /oauth4webapi@2.4.0: + resolution: {integrity: sha512-ZWl8ov8HeGVyc9Icl1cag76HvIcDAp23eIIT+UVGir+dEu8BMgMlvZeZwqLVd0P8DqaumH4N+QLQXN69G1QjSA==} dev: false /oauth@0.9.15: resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} dev: false + /obj-props@1.4.0: + resolution: {integrity: sha512-p7p/7ltzPDiBs6DqxOrIbtRdwxxVRBj5ROukeNb9RgA+fawhrz5n2hpNz8DDmYR//tviJSj7nUnlppGmONkjiQ==} + engines: {node: '>=0.10.0'} + dev: true + /object-assign@4.0.1: resolution: {integrity: sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==} engines: {node: '>=0.10.0'} @@ -10168,6 +23609,14 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: false + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -10181,8 +23630,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -10197,7 +23646,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: false /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} @@ -10220,7 +23668,6 @@ packages: dependencies: define-properties: 1.2.1 es-abstract: 1.22.3 - dev: false /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} @@ -10230,45 +23677,91 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 + /objectorarray@1.0.5: + resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + dev: false + /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: false + /oidc-token-hash@5.0.3: resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} engines: {node: ^10.13.0 || >=12.0.0} dev: false + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + /one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + dependencies: + mimic-fn: 1.2.0 + dev: false + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + + /open-editor@4.1.1: + resolution: {integrity: sha512-SYtGeZ9Zkzj/naoZaEF9LzwDYEGwuqQ4Fx5E3xdVRN98LFJjvMhG/ElByFEOVOiXepGra/Wi1fA4i/E1fXSBsw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + env-editor: 1.1.0 + execa: 5.1.1 + line-column-path: 3.0.0 + open: 8.4.2 dev: true - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 is-wsl: 2.2.0 - dev: true - /openid-client@5.6.1: - resolution: {integrity: sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==} + /openid-client@5.6.2: + resolution: {integrity: sha512-TIVimoK/fAvpiISLcoGZyNJx2TOfd5AE6TXn58FFj6Y8qbU/jqky54Aws7sYKuCph1bLPWSRUa1r/Rd6K21bhg==} dependencies: jose: 4.15.4 lru-cache: 6.0.0 @@ -10287,6 +23780,18 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + dev: false + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -10294,13 +23799,12 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true /ora@6.3.1: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} @@ -10308,7 +23812,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -10317,10 +23821,25 @@ packages: wcwidth: 1.0.1 dev: true + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: false + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: false + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true + + /osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: false /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} @@ -10332,12 +23851,16 @@ packages: engines: {node: '>=4'} dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -10350,14 +23873,18 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 - dev: true + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -10370,13 +23897,16 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 - dev: true /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 + + /p-map@6.0.0: + resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} + engines: {node: '>=16'} dev: true /p-memoize@4.0.1: @@ -10390,6 +23920,13 @@ packages: /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + + /package-config@5.0.0: + resolution: {integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==} + engines: {node: '>=18'} + dependencies: + find-up-simple: 1.0.0 + load-json-file: 7.0.1 dev: true /package-json@6.5.0: @@ -10406,6 +23943,26 @@ packages: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} dev: false + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + dependencies: + no-case: 2.3.2 + dev: false + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -10419,10 +23976,31 @@ packages: callsites: 3.1.0 dev: true + /parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: false + + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + /parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - '@types/unist': 2.0.9 + '@types/unist': 2.0.10 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -10432,6 +24010,19 @@ packages: is-hexadecimal: 2.0.1 dev: false + /parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + /parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + dev: true + /parse-json@2.2.0: resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} engines: {node: '>=0.10.0'} @@ -10439,43 +24030,107 @@ packages: error-ex: 1.3.2 dev: false + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true /parse-json@7.1.1: resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} engines: {node: '>=16'} dependencies: - '@babel/code-frame': 7.22.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.0 - lines-and-columns: 2.0.3 - type-fest: 3.13.1 - dev: true + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.1 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + dev: true + + /parse-ms@3.0.0: + resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} + engines: {node: '>=12'} + dev: true + + /parse-npm-tarball-url@3.0.0: + resolution: {integrity: sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==} + engines: {node: '>=8.15'} + dependencies: + semver: 6.3.1 + dev: true + + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} + dependencies: + pngjs: 3.4.0 + dev: false + + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: false + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + + /parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + dev: false + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 - /parse-ms@3.0.0: - resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} - engines: {node: '>=12'} + /passive-voice@0.1.0: + resolution: {integrity: sha512-Pj9iwzXw4bKEtdugGYm92jT4tnsj+xrTSkHFEM4bn6fefqbFdZi49tZMmGIZ91aIQTyFtMUww7O2qYaZKAsDag==} dev: true - /parse-npm-tarball-url@3.0.0: - resolution: {integrity: sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==} - engines: {node: '>=8.15'} + /password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} dependencies: - semver: 6.3.1 - dev: true + ansi-escapes: 4.3.2 + cross-spawn: 7.0.3 + dev: false - /parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: true + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: false + + /path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 /path-exists@2.1.0: resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} @@ -10484,6 +24139,10 @@ packages: pinkie-promise: 2.0.1 dev: false + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -10491,12 +24150,16 @@ packages: /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -10504,18 +24167,26 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + /path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + dependencies: + path-root-regex: 0.1.2 + /path-scurry@1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.0.1 + lru-cache: 10.1.0 minipass: 7.0.4 - dev: true /path-temp@2.1.0: resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} @@ -10524,6 +24195,10 @@ packages: unique-string: 2.0.0 dev: true + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false + /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: false @@ -10541,10 +24216,45 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + dev: false + + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + dev: false + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: false + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.4 + '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 dev: false @@ -10634,6 +24344,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + dev: true + /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -10647,7 +24362,6 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: true /pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} @@ -10663,39 +24377,73 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + /pkg-conf@3.1.0: + resolution: {integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + load-json-file: 5.3.0 + + /pkg-conf@4.0.0: + resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + find-up: 6.3.0 + load-json-file: 7.0.1 + dev: true + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: false + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - dev: true /pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 - dev: true /pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} dependencies: find-up: 6.3.0 + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 dev: true - /playwright-core@1.39.0: - resolution: {integrity: sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==} + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + + /playwright-core@1.40.1: + resolution: {integrity: sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.39.0: - resolution: {integrity: sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==} + /playwright@1.40.1: + resolution: {integrity: sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.39.0 + playwright-core: 1.40.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -10706,35 +24454,77 @@ packages: semver-compare: 1.0.0 dev: true - /plur@2.1.2: - resolution: {integrity: sha512-WhcHk576xg9y/iv6RWOuroZgsqvCbJN+XGvAypCJwLAYs2iWDp5LUmvaCdV6JR2O0SMBf8l6p7A94AyLCFVMlQ==} - engines: {node: '>=0.10.0'} + /plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + dev: false + + /plur@4.0.0: + resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} + engines: {node: '>=10'} + dependencies: + irregular-plurals: 3.5.0 + dev: true + + /plur@5.1.0: + resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - irregular-plurals: 1.4.0 + irregular-plurals: 3.5.0 + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} dev: true - /postcss-import@15.1.0(postcss@8.4.31): + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: false + + /pnp-webpack-plugin@1.7.0(typescript@5.3.3): + resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0(typescript@5.3.3) + transitivePeerDependencies: + - typescript + dev: false + + /polished@4.2.2: + resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + engines: {node: '>=10'} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /postcss-import@15.1.0(postcss@8.4.32): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.31): + /postcss-js@4.0.1(postcss@8.4.32): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.31 + postcss: 8.4.32 - /postcss-load-config@4.0.1(postcss@8.4.31): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + /postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.2): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' @@ -10745,18 +24535,119 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.1.0 - postcss: 8.4.31 + lilconfig: 3.0.0 + postcss: 8.4.32 + ts-node: 10.9.2(@swc/core@1.3.101)(@types/node@20.10.5)(typescript@5.3.3) + yaml: 2.3.4 + + /postcss-load-config@5.0.2(postcss@8.4.32): + resolution: {integrity: sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.32 yaml: 2.3.4 + dev: true + + /postcss-loader@7.3.4(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 8.3.6(typescript@5.3.3) + jiti: 1.21.0 + postcss: 8.4.32 + semver: 7.5.4 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - typescript + dev: false + + /postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.32 + dev: false + + /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 + postcss-selector-parser: 6.0.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-modules-scope@3.1.0(postcss@8.4.32): + resolution: {integrity: sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.32 + postcss-selector-parser: 6.0.14 + dev: false + + /postcss-modules-values@4.0.0(postcss@8.4.32): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 + dev: false - /postcss-nested@6.0.1(postcss@8.4.31): + /postcss-nested@6.0.1(postcss@8.4.32): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss: 8.4.32 + postcss-selector-parser: 6.0.14 + + /postcss-resolve-nested-selector@0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser@7.0.0(postcss@8.4.32): + resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + dependencies: + postcss: 8.4.32 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.32): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.32 + dev: true /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -10766,8 +24657,8 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-selector-parser@6.0.14: + resolution: {integrity: sha512-65xXYsT40i9GyWzlHQ5ShZoK7JZdySeOozi/tz2EezDo6c04q6+ckYMeoY7idaie1qp2dT5KoYQ2yky6JuoHnA==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -10780,7 +24671,16 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -10832,6 +24732,10 @@ packages: engines: {node: '>=12'} dev: false + /pouchdb-collections@1.0.1: + resolution: {integrity: sha512-31db6JRg4+4D5Yzc2nqsRqsA2oOkZS8DpFav3jf/qVNBxusKa2ClkEIZ2bJNpaDbMfWtnuSq59p6Bn+CipPMdg==} + dev: false + /preact-render-to-string@5.2.3(preact@10.11.3): resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} peerDependencies: @@ -10841,12 +24745,12 @@ packages: pretty-format: 3.8.0 dev: false - /preact-render-to-string@5.2.6(preact@10.18.2): + /preact-render-to-string@5.2.6(preact@10.19.3): resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} peerDependencies: preact: '>=10' dependencies: - preact: 10.18.2 + preact: 10.19.3 pretty-format: 3.8.0 dev: false @@ -10854,8 +24758,27 @@ packages: resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} dev: false - /preact@10.18.2: - resolution: {integrity: sha512-X/K43vocUHDg0XhWVmTTMbec4LT/iBMh+csCEqJk+pJqegaXsvjdqN80ZZ3L+93azWCnWCZ+WGwYb8SplxeNjA==} + /preact@10.19.3: + resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} + dev: false + + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.52.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 dev: false /preferred-pm@3.1.2: @@ -10877,27 +24800,33 @@ packages: engines: {node: '>=4'} dev: true - /prettier-plugin-packagejson@2.4.6(prettier@3.0.3): - resolution: {integrity: sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==} + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier-plugin-packagejson@2.4.8(prettier@3.1.1): + resolution: {integrity: sha512-ZK37c6pRUKeUIpQWNEdMgNUiGSG5BTfeeAIA01mRjVGTfWxxVzM55Cs+LaHyweFJbEgkgCNsqMA3LGEAjfOPtA==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: prettier: optional: true dependencies: - prettier: 3.0.3 + prettier: 3.1.1 sort-package-json: 2.6.0 - synckit: 0.8.5 + synckit: 0.8.8 dev: true - /prettier-plugin-tailwindcss@0.5.6(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.0.3): - resolution: {integrity: sha512-2Xgb+GQlkPAUCFi3sV+NOYcSI5XgduvDBL2Zt/hwJudeKXkyvRS65c38SB0yb9UB40+1rL83I6m0RtlOQ8eHdg==} + /prettier-plugin-tailwindcss@0.5.9(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.1.1): + resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' - '@shufo/prettier-plugin-blade': '*' '@trivago/prettier-plugin-sort-imports': '*' prettier: ^3.0 prettier-plugin-astro: '*' @@ -10917,8 +24846,6 @@ packages: optional: true '@shopify/prettier-plugin-liquid': optional: true - '@shufo/prettier-plugin-blade': - optional: true '@trivago/prettier-plugin-sort-imports': optional: true prettier-plugin-astro: @@ -10942,22 +24869,43 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - '@ianvs/prettier-plugin-sort-imports': 4.1.1(prettier@3.0.3) - prettier: 3.0.3 + '@ianvs/prettier-plugin-sort-imports': 4.1.1(@vue/compiler-sfc@3.3.13)(prettier@3.1.1) + prettier: 3.1.1 dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} engines: {node: '>=14'} hasBin: true dev: true - /pretty-format@22.4.3: - resolution: {integrity: sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==} + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false + + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: - ansi-regex: 3.0.1 - ansi-styles: 3.2.1 - dev: true + lodash: 4.17.21 + renderkid: 3.0.0 + dev: false + + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: false /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} @@ -10972,6 +24920,11 @@ packages: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} dev: false + /pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + dev: false + /pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} @@ -10979,13 +24932,66 @@ packages: parse-ms: 3.0.0 dev: true + /pretty@2.0.0: + resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} + engines: {node: '>=0.10.0'} + dependencies: + condense-newlines: 0.2.1 + extend-shallow: 2.0.1 + js-beautify: 1.14.11 + dev: false + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -10993,23 +24999,81 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: false /property-information@6.4.0: resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} dev: false + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + + /proto-props@2.0.0: + resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} + engines: {node: '>=4'} + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: false + + /proxy-compare@2.4.0: + resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==} + dev: false + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: false + + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: false + + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} dev: true + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: false + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -11036,6 +25100,18 @@ packages: engines: {node: '>=6.0.0'} dev: false + /qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + dev: false + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: false + /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} @@ -11043,17 +25119,62 @@ packages: side-channel: 1.0.4 dev: false + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: false + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: false + + /ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + dev: false + + /random-words@1.3.0: + resolution: {integrity: sha512-brwCGe+DN9DqZrAQVNj1Tct1Lody6GrYL/7uei5wfjeQdacFyFd2h/51LNlOoBMzIKMS9xohuL4+wlF/z1g/xg==} + dependencies: + seedrandom: 3.0.5 + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: false + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} dev: false /raw-body@2.4.1: @@ -11066,6 +25187,26 @@ packages: unpipe: 1.0.0 dev: false + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + /rc-config-loader@4.1.3: resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} dependencies: @@ -11085,38 +25226,135 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: true - /react-cropper@2.3.3(react@18.3.0-canary-ce2bc58a9-20231102): + /react-aria-components@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Oyud2UcOXNPcvYn71he0FLIzpaJcLA+hu7i4wR/EKv+9Q/jOUGb++meKPB9vDBCFwGgWaoK7WpHJ2wB9xjLfGw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/string': 3.2.0 + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/toolbar': 3.0.0-beta.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/table': 3.11.4(react@18.2.0) + '@react-types/form': 3.7.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/table': 3.9.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-aria: 3.31.0(react-dom@18.2.0)(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-stately: 3.29.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /react-aria@3.31.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fdmiEhopCq4TIP0BMMsDh92RMfGzVyNaSPdYLs5qqhDlVmaVL3NqWcK8RVstgI13ST/DIM+h9jgtp8+X1EDHMw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/string': 3.2.0 + '@react-aria/breadcrumbs': 3.5.9(react@18.2.0) + '@react-aria/button': 3.9.1(react@18.2.0) + '@react-aria/calendar': 3.5.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/checkbox': 3.13.0(react@18.2.0) + '@react-aria/combobox': 3.8.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/datepicker': 3.9.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dialog': 3.5.9(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dnd': 3.5.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/link': 3.6.3(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/meter': 3.4.9(react@18.2.0) + '@react-aria/numberfield': 3.10.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/progress': 3.4.9(react@18.2.0) + '@react-aria/radio': 3.10.0(react@18.2.0) + '@react-aria/searchfield': 3.7.0(react@18.2.0) + '@react-aria/select': 3.14.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/separator': 3.3.9(react@18.2.0) + '@react-aria/slider': 3.7.4(react@18.2.0) + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/switch': 3.6.0(react@18.2.0) + '@react-aria/table': 3.13.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tabs': 3.8.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tag': 3.3.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/tooltip': 3.7.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-cropper@2.3.3(react@18.2.0): resolution: {integrity: sha512-zghiEYkUb41kqtu+2jpX2Ntigf+Jj1dF9ew4lAobPzI2adaPE31z0p+5TcWngK6TvmWQUwK3lj4G+NDh1PDQ1w==} peerDependencies: react: '>=17.0.2' dependencies: cropperjs: 1.6.1 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /react-day-picker@8.9.1(date-fns@2.30.0)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-W0SPApKIsYq+XCtfGeMYDoU0KbsG3wfkYtlw8l+vZp6KoBXGOlhzBUp4tNx1XiwiOZwhfdGOlj7NGSCKGSlg5Q==} + /react-day-picker@8.10.0(date-fns@3.0.6)(react@18.2.0): + resolution: {integrity: sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg==} peerDependencies: - date-fns: ^2.28.0 + date-fns: ^2.28.0 || ^3.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - date-fns: 2.30.0 - react: 18.3.0-canary-ce2bc58a9-20231102 + date-fns: 3.0.6 + react: 18.2.0 + dev: false + + /react-docgen-typescript@2.2.2(typescript@5.3.3): + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + dependencies: + typescript: 5.3.3 + dev: false + + /react-docgen@7.0.1: + resolution: {integrity: sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==} + engines: {node: '>=16.14.0'} + dependencies: + '@babel/core': 7.23.6 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.4 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.8 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color dev: false - /react-dom@18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-HsQFmQ4s8FNNoRIKukNoV78FwqpFdfgqyZj9nBoCEnBsHCieoMqG6d5BbNArlnTePuW7B66XtWxebCcn4qu2EA==} + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + react: ^18.2.0 dependencies: loose-envify: 1.4.0 - react: 18.3.0-canary-ce2bc58a9-20231102 - scheduler: 0.24.0-canary-ce2bc58a9-20231102 + react: 18.2.0 + scheduler: 0.23.0 dev: false - /react-dropzone@14.2.3(react@18.3.0-canary-ce2bc58a9-20231102): + /react-dropzone@14.2.3(react@18.2.0): resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} engines: {node: '>= 10.13'} peerDependencies: @@ -11125,59 +25363,108 @@ packages: attr-accept: 2.2.2 file-selector: 0.6.0 prop-types: 15.8.1 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /react-hook-form@7.48.1(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-RPLOfCL+qC1lOTknh9OrgeFbchYUJ4KFgrqZTVHf0nRizcwzQUABrBIQk3SkujiqIXTs5xjP6eApc7FOpvpS1Q==} - engines: {node: '>=12.22.0'} + /react-element-to-jsx-string@15.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + dependencies: + '@base2/pretty-print-object': 1.0.1 + is-plain-object: 5.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.1.0 + dev: false + + /react-hook-form@7.49.2(react@18.2.0): + resolution: {integrity: sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA==} + engines: {node: '>=18', pnpm: '8'} peerDependencies: react: ^16.8.0 || ^17 || ^18 dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /react-hot-toast@2.4.1(csstype@3.1.2)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): + /react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} engines: {node: '>=10'} peerDependencies: react: '>=16' react-dom: '>=16' dependencies: - goober: 2.1.13(csstype@3.1.2) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + goober: 2.1.13(csstype@3.1.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - csstype dev: false - /react-icons@4.11.0(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==} + /react-hotkeys-hook@4.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw==} + peerDependencies: + react: '>=16.8.1' + react-dom: '>=16.8.1' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-icons@4.12.0(react@18.2.0): + resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} peerDependencies: react: '*' dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: false + + /react-is@18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: false /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-medium-image-zoom@5.1.8(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-2X4oLlEopIWg7qalR1Qpy4gPrU9CTF0DvJ7HNu5u/NwdyQWupEsje2vuMbjBz7+np8MmQ4DKJ6zGr1ofCuzB3g==} + /react-lag-radar@1.0.0(react@18.2.0): + resolution: {integrity: sha512-3Pv3B3PuMgFgnakXBrVGYPt0eOHQX+zwcImXSKI9CcF2RDw7VUImr5yb+F1hNl35niL7HSF1wAsMko6I4bO7LQ==} + peerDependencies: + react: '*' + dependencies: + '@gaearon/lag-radar': 0.1.0 + react: 18.2.0 + dev: false + + /react-medium-image-zoom@5.1.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VOlqStMbztbHftQvl8wwD2oQvcNQjA9dUtNtIxZmwnP7BIcWfsDS5jRH7vJ/R94EtweiuCCAMnoTh7w5RkkJeg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: false + + /react-refresh@0.4.3: + resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} + engines: {node: '>=0.10.0'} dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -11187,13 +25474,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-style-singleton: 2.2.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + '@types/react': 18.2.45 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0) tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.4(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): + /react-remove-scroll@2.5.4(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -11203,16 +25490,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - react-style-singleton: 2.2.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + '@types/react': 18.2.45 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.45)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - use-sidecar: 1.1.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + use-callback-ref: 1.3.1(@types/react@18.2.45)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0) dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): + /react-remove-scroll@2.5.5(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -11222,16 +25509,47 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - react-style-singleton: 2.2.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + '@types/react': 18.2.45 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.45)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) - use-sidecar: 1.1.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102) + use-callback-ref: 1.3.1(@types/react@18.2.45)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): + /react-stately@3.29.0(react@18.2.0): + resolution: {integrity: sha512-JWPgEg2RxDtSmMkypsBLuhsuiaMDfJcnFw96oDRg8lAGqkslZmbmYH/O1Wz08k2W6P3Bds4rZz6iK91XMNXomA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/calendar': 3.4.3(react@18.2.0) + '@react-stately/checkbox': 3.6.1(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/combobox': 3.8.1(react@18.2.0) + '@react-stately/data': 3.11.0(react@18.2.0) + '@react-stately/datepicker': 3.9.1(react@18.2.0) + '@react-stately/dnd': 3.2.7(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/menu': 3.6.0(react@18.2.0) + '@react-stately/numberfield': 3.8.0(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/radio': 3.10.1(react@18.2.0) + '@react-stately/searchfield': 3.5.0(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/slider': 3.5.0(react@18.2.0) + '@react-stately/table': 3.11.4(react@18.2.0) + '@react-stately/tabs': 3.6.3(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-stately/tooltip': 3.4.6(react@18.2.0) + '@react-stately/tree': 3.7.5(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -11241,23 +25559,43 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 + '@types/react': 18.2.45 get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 tslib: 2.6.2 dev: false - /react-wrap-balancer@1.1.0(react@18.3.0-canary-ce2bc58a9-20231102): + /react-tracked@1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0): + resolution: {integrity: sha512-+XXv4dJH7NnLtSD/cPVL9omra4A3KRK91L33owevXZ81r7qF/a9DdCsVZa90jMGht/V1Ym9sasbmidsJykhULQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '*' + react-native: '*' + scheduler: '>=0.19.0' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + proxy-compare: 2.4.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scheduler: 0.23.0 + use-context-selector: 1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) + dev: false + + /react-wrap-balancer@1.1.0(react@18.2.0): resolution: {integrity: sha512-EhF3jOZm5Fjx+Cx41e423qOv2c2aOvXAtym2OHqrGeMUnwERIyNsRBgnfT3plB170JmuYvts8K2KSPEIerKr5A==} peerDependencies: react: '>=16.8.0 || ^17.0.0 || ^18' dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /react@18.3.0-canary-ce2bc58a9-20231102: - resolution: {integrity: sha512-TeKwsGoNc6vOZGHLvBtXvR1ZeWqxNy0KcBYt12l+6W1h1u8cD3V+BG0gWKdADw0ZGIJEQDE8g9QII3NcfIrJSQ==} + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -11276,7 +25614,7 @@ packages: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - json-parse-even-better-errors: 3.0.0 + json-parse-even-better-errors: 3.0.1 npm-normalize-package-bin: 3.0.1 dev: true @@ -11295,7 +25633,6 @@ packages: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true /read-pkg@1.1.0: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} @@ -11310,22 +25647,33 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.3 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true /read-pkg@8.1.0: resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} engines: {node: '>=16'} dependencies: - '@types/normalize-package-data': 2.4.3 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.0 parse-json: 7.1.1 - type-fest: 4.6.0 + type-fest: 4.9.0 dev: true + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -11333,7 +25681,17 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true + + /readable-stream@4.5.1: + resolution: {integrity: sha512-uQjbf34vmf/asGnOHQEw07Q4llgMACQZTWWa4MmICS0IKJoHbLwKCy71H3eR99Dw5iYejc6W+pqZZEeqRtUFAw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -11341,6 +25699,17 @@ packages: dependencies: picomatch: 2.3.1 + /recast@0.23.4: + resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} + engines: {node: '>= 4'} + dependencies: + assert: 2.1.0 + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + dev: false + /redent@1.0.0: resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} engines: {node: '>=0.10.0'} @@ -11357,6 +25726,14 @@ packages: strip-indent: 3.0.0 dev: true + /redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + dev: false + + /reflect-metadata@0.2.1: + resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} + dev: false + /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -11367,10 +25744,35 @@ packages: get-intrinsic: 1.2.2 globalthis: 1.0.3 which-builtin-type: 1.1.3 + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.6 + dev: false + + /regex-parser@2.2.11: + resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} dev: false - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} @@ -11380,6 +25782,23 @@ packages: define-properties: 1.2.1 set-function-name: 2.0.1 + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + /registry-auth-token@4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} engines: {node: '>=6.0.0'} @@ -11394,10 +25813,48 @@ packages: rc: 1.2.8 dev: true + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + + /rehype-shikiji@0.9.12: + resolution: {integrity: sha512-29ML5umRh27tQrgAr8KWbnKGqzerNysPVoxcuelmdw2LgbigpJHtU42wzeoPCjK4Dt2R6QygbZEZMgSnn18Bvw==} + dependencies: + '@types/hast': 3.0.3 + hast-util-to-string: 3.0.0 + shikiji: 0.9.12 + unified: 11.0.4 + unist-util-visit: 5.0.0 + dev: true + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: false + + /relay-runtime@12.0.0: + resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + dependencies: + '@babel/runtime': 7.23.6 + fbjs: 3.0.5 + invariant: 2.2.4 + transitivePeerDependencies: + - encoding + /remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: - '@types/mdast': 4.0.2 + '@types/mdast': 4.0.3 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 @@ -11419,7 +25876,7 @@ packages: /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - '@types/mdast': 4.0.2 + '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 unified: 11.0.4 @@ -11430,8 +25887,8 @@ packages: /remark-rehype@11.0.0: resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} dependencies: - '@types/hast': 3.0.2 - '@types/mdast': 4.0.2 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 @@ -11440,19 +25897,45 @@ packages: /remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: - '@types/mdast': 4.0.2 + '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 dev: false - /rename-overwrite@4.0.3: - resolution: {integrity: sha512-e1zOWZh4Lauz5DcLMC8j4eoOHPIrZkAVpiocE9SkDE1ZrGMW+W88LR1Y2YjD1DFgOYfJWqSsK6JKsRfuRH+tbQ==} + /remedial@1.0.8: + resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} + dev: false + + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: false + + /remove-trailing-slash@0.1.1: + resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} + dev: false + + /remove-trailing-spaces@1.0.8: + resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==} + dev: false + + /rename-overwrite@5.0.0: + resolution: {integrity: sha512-vSxE5Ww7Jnyotvaxi3Dj0vOMoojH8KMkBfs9xYeW/qNfJiLTcC1fmwTjrbGUq3mQSOCxkG0DbdcvwTUrpvBN4w==} engines: {node: '>=12.10'} dependencies: '@zkochan/rimraf': 2.1.3 fs-extra: 10.1.0 dev: true + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: false + /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -11472,17 +25955,46 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} /require-package-name@2.0.1: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} dev: true + /requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} + dependencies: + nested-error-stacks: 2.0.1 + rc: 1.2.8 + resolve: 1.7.1 + dev: false + + /requireindex@1.1.0: + resolution: {integrity: sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==} + engines: {node: '>=0.10.5'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + /reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + dev: false + + /resend@2.1.0: + resolution: {integrity: sha512-s6LlaEReTUvlbo6w3Eg1M1TMuwK9OKJ1GVgyptIV8smLPHhFZVqnwBTFPZHID9rcsih72t3iuyrtkQ3IIGwnow==} + engines: {node: '>=18'} + dependencies: + '@react-email/render': 0.0.9 + dev: false + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -11505,16 +26017,40 @@ packages: /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + + /resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + dependencies: + global-dirs: 0.1.1 dev: true /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + /resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.32 + source-map: 0.6.1 + dev: false + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -11523,6 +26059,12 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} + dependencies: + path-parse: 1.0.7 + dev: false + /resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true @@ -11530,7 +26072,6 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} @@ -11538,13 +26079,20 @@ packages: lowercase-keys: 1.0.1 dev: true + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + dev: false + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} @@ -11554,6 +26102,11 @@ packages: signal-exit: 3.0.7 dev: true + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -11562,23 +26115,84 @@ packages: resolution: {integrity: sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ==} dev: true + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + /rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + hasBin: true + requiresBuild: true + dependencies: + glob: 6.0.4 + dev: false + optional: true + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - dependencies: - glob: 7.2.3 + dependencies: + glob: 7.2.3 + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: false + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: false - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} + /rooks@7.14.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oPuLNGm3OaFm3WfZHzmDvJvRit8QrXGm9/Kn49Bz8lJUjkThSBtERWzuQ9wb5DveqrpUZvmNyBXjBE0KWVt13w==} + engines: {node: '>=v10.24.1'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - execa: 5.1.1 - dev: true + fast-deep-equal: 3.1.3 + lodash.debounce: 4.0.8 + raf: 3.4.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - dev: true + + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -11592,6 +26206,12 @@ packages: tslib: 1.14.1 dev: true + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: false + /safe-array-concat@1.0.1: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} @@ -11601,9 +26221,19 @@ packages: has-symbols: 1.0.3 isarray: 2.0.5 + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + requiresBuild: true + dev: false + optional: true + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -11611,11 +26241,51 @@ packages: get-intrinsic: 1.2.2 is-regex: 1.1.4 + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /scheduler@0.24.0-canary-ce2bc58a9-20231102: - resolution: {integrity: sha512-V3ChR94XGL1wZoCDCf/HSukgyqNcRPA5epSjbKUvTPl71FDA3qUtDet3QLGWEP/LWAmoJNCs3ME8JQE2AAlTHg==} + /sass-loader@12.6.0(webpack@5.89.0): + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false @@ -11624,9 +26294,38 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.14 + '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: false + + /scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + dependencies: + compute-scroll-into-view: 3.1.0 + dev: false + + /scuid@1.1.0: + resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + dev: false + + /seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + dev: false + + /selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + dependencies: + parseley: 0.12.1 dev: false /semver-compare@1.0.0: @@ -11648,6 +26347,20 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + /semver@7.3.2: + resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -11655,19 +26368,75 @@ packages: dependencies: lru-cache: 6.0.0 + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + /seq-queue@0.0.5: resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} + /serialize-error@6.0.0: + resolution: {integrity: sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.12.0 + dev: false + + /serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.13.1 + dev: true + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color dev: false /server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} dev: false + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -11685,16 +26454,65 @@ packages: functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + /setprototypeof@1.1.1: resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} dev: false + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: false + + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -11705,6 +26523,15 @@ packages: /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + /shikiji-core@0.9.12: + resolution: {integrity: sha512-AYsAtsbZuq0FPT3mdskNMa+yxD5VwXrFC2sH7R2ELmncVGNYvSzR6Zlfq8iEzINq7/kKL5prtt81UFzFWTTbxQ==} + dev: true + + /shikiji@0.9.12: + resolution: {integrity: sha512-jYbulSGcPKYKu2uFZOSg4lgrF7s9s8/ITFzRvczE6633wypMjnnTcRnG/mCFe6v1Dbov7bRCMsXVINBUD2FV9w==} + dependencies: + shikiji-core: 0.9.12 dev: true /side-channel@1.0.4: @@ -11720,11 +26547,45 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - dev: true + + /signedsource@1.0.0: + resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + + /simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + dependencies: + bplist-creator: 0.1.0 + bplist-parser: 0.3.1 + plist: 3.1.0 + dev: false + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + + /simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -11735,6 +26596,67 @@ packages: engines: {node: '>=12'} dev: true + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + + /slate-history@0.100.0(slate@0.101.5): + resolution: {integrity: sha512-x5rUuWLNtH97hs9PrFovGgt3Qc5zkTm/5mcUB+0NR/TK923eLax4HsL6xACLHMs245nI6aJElyM1y6hN0y5W/Q==} + peerDependencies: + slate: '>=0.65.3' + dependencies: + is-plain-object: 5.0.0 + slate: 0.101.5 + dev: false + + /slate-hyperscript@0.100.0(slate@0.101.5): + resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==} + peerDependencies: + slate: '>=0.65.3' + dependencies: + is-plain-object: 5.0.0 + slate: 0.101.5 + dev: false + + /slate-react@0.101.5(react-dom@18.2.0)(react@18.2.0)(slate@0.101.5): + resolution: {integrity: sha512-KfnC1Je7dIZo1Uv4g5d1+No8hKkgXKcSEGGOH7zzZEX9iYGckSg6aBgO0hFmoilidowSiSU45/baL5aeYma9Vg==} + peerDependencies: + react: '>=18.2.0' + react-dom: '>=18.2.0' + slate: '>=0.99.0' + dependencies: + '@juggle/resize-observer': 3.4.0 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.14.202 + direction: 1.0.4 + is-hotkey: 0.2.0 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 3.1.0 + slate: 0.101.5 + tiny-invariant: 1.3.1 + dev: false + + /slate@0.101.5: + resolution: {integrity: sha512-ZZt1ia8ayRqxtpILRMi2a4MfdvwdTu64CorxTVq9vNSd0GQ/t3YDkze6wKjdeUtENmBlq5wNIDInZbx38Hfu5Q==} + dependencies: + immer: 10.0.3 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + dev: false + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: false + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -11742,14 +26664,37 @@ packages: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 dev: true + /slick@1.12.2: + resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} + dev: false + + /slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + dev: false + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.6.2 - dev: false /snakecase-keys@3.2.1: resolution: {integrity: sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==} @@ -11830,6 +26775,13 @@ packages: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.16 + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: true + /spdx-license-ids@3.0.16: resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} @@ -11842,11 +26794,20 @@ packages: /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + + /split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + dependencies: + through: 2.3.8 dev: false + /sponge-case@1.0.1: + resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + dependencies: + tslib: 2.6.2 + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true /sqlstring@2.3.3: resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} @@ -11859,34 +26820,152 @@ packages: minipass: 7.0.4 dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + /ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: false + + /stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + /standard-engine@15.1.0: + resolution: {integrity: sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + get-stdin: 8.0.0 + minimist: 1.2.8 + pkg-conf: 3.1.0 + xdg-basedir: 4.0.0 + + /standard@17.1.0(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1): + resolution: {integrity: sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + eslint: 8.56.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.33.2)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + standard-engine: 15.1.0 + version-guard: 1.1.1 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + bl: 5.1.0 + dev: true + + /stellate@2.7.5: + resolution: {integrity: sha512-rOcSm7wiHs8+uB/GFm12S5K3gpOVZEioJB39n9FguzLhR2xiEnZk5QOgPuzOY2kFUkmdPmfN5AnHDiA+yXJm6g==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@atomist/yaml-updater': 1.0.2 + '@sindresorhus/slugify': 1.1.2 + esbuild: 0.17.19 + express: 4.18.2 + http-proxy-middleware: 2.0.6 + is-ci: 3.0.1 + lz-string: 1.5.0 + random-words: 1.3.0 + zod: 3.22.4 + transitivePeerDependencies: + - '@types/express' + - debug + - supports-color + dev: false + + /storybook@8.0.0-alpha.5: + resolution: {integrity: sha512-FEVdkmsaXwWtOBohwFsrgerpBTRosxMdvM7+rl35JnW3Xs+x3g2U0dAtCP/LE/thPjJIE4cYRhVxkX7g/QHJog==} + hasBin: true + dependencies: + '@storybook/cli': 8.0.0-alpha.5 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: true + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} + /stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} dev: false - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} dependencies: - bl: 5.1.0 - dev: true + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + dev: false + + /stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: false /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + dev: false + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -11895,6 +26974,10 @@ packages: strip-ansi: 6.0.1 dev: true + /string-ts@2.0.0: + resolution: {integrity: sha512-Q+WJ5tQ0AdCeWgbhe3ZqDw1v5DGac5/lmDVNbJIa/bFR7TGfB8nJ1rHQSqinZHB8wKetUfhQlfR89puRcIKZZw==} + dev: false + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11902,7 +26985,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -11911,6 +26993,14 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + + /string-width@7.0.0: + resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 dev: true /string.fromcodepoint@0.2.1: @@ -11929,7 +27019,6 @@ packages: regexp.prototype.flags: 1.5.1 set-function-name: 2.0.1 side-channel: 1.0.4 - dev: false /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} @@ -11953,11 +27042,16 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -11966,6 +27060,13 @@ packages: character-entities-legacy: 3.0.0 dev: false + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11977,7 +27078,6 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true /strip-bom@2.0.0: resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} @@ -11995,15 +27095,18 @@ packages: engines: {node: '>=8'} dev: true + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: false + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: true /strip-indent@1.0.1: resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} @@ -12020,10 +27123,16 @@ packages: min-indent: 1.0.1 dev: true + /strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + dependencies: + min-indent: 1.0.1 + dev: false + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -12034,21 +27143,40 @@ packages: engines: {node: '>=14.16'} dev: true - /stripe@14.3.0: - resolution: {integrity: sha512-R3s+3ONM1XFOTzbMSIML0tixbkuz+gFY/p1h1Qxd9OUftxS8m+rGeBv4ZnvoVhTUwOokArfzQtQlR2Re9XnyQw==} + /stripe@14.10.0: + resolution: {integrity: sha512-zI6yxYVFJtjibgb06Xn08KsJy1Zq+KE3jLkhZ8bJOTrxNVi2CtCreQdUn+NjXN5lTEdiNhxIqL0NmuSza+rOGw==} engines: {node: '>=12.*'} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.10.5 qs: 6.11.2 dev: false + /structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + dev: false + + /style-loader@3.3.3(webpack@5.89.0): + resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + /style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 dev: false - /styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.3.0-canary-ce2bc58a9-20231102): + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + dev: false + + /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -12061,34 +27189,185 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.6 client-only: 0.0.1 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} + /stylelint-config-css-modules@4.4.0(stylelint@16.1.0): + resolution: {integrity: sha512-J93MtxPjRzs/TjwbJ5y9SQy4iIqULXwL1CF1yx2tQCJfS/VZUcDAmoGOwqlLbhHXSQtZO5XQiA75NVWUR3KDCQ==} + peerDependencies: + stylelint: ^14.5.1 || ^15.0.0 || ^16.0.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + optionalDependencies: + stylelint-scss: 6.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-recommended-scss@14.0.0(postcss@8.4.32)(stylelint@16.1.0): + resolution: {integrity: sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.0.2 + peerDependenciesMeta: + postcss: + optional: true + dependencies: + postcss: 8.4.32 + postcss-scss: 4.0.9(postcss@8.4.32) + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + stylelint-scss: 6.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-recommended@14.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint-config-standard-scss@12.0.0(postcss@8.4.32)(stylelint@16.1.0): + resolution: {integrity: sha512-ATh3EcEOLZq0iwlFaBdIsSavrla0lNtJ7mO7hdE7DgVT6imozRggFSqd4cFcjzVnOLKv/uJT63MmqA1acIflbw==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.0.2 + peerDependenciesMeta: + postcss: + optional: true + dependencies: + postcss: 8.4.32 + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended-scss: 14.0.0(postcss@8.4.32)(stylelint@16.1.0) + stylelint-config-standard: 35.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-standard@35.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-JyQrNZk2BZwVKFauGGxW2U6RuhIfQ4XoHHo+rBzMHcAkLnwI/knpszwXjzxiMgSfcxbZBckM7Vq4LHoANTR85g==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + dev: true + + /stylelint-config-standard@36.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + dependencies: + stylelint: 16.1.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.0(stylelint@16.1.0) + dev: true + + /stylelint-scss@6.0.0(stylelint@16.1.0): + resolution: {integrity: sha512-N1xV/Ef5PNRQQt9E45unzGvBUN1KZxCI8B4FgN/pMfmyRYbZGVN4y9qWlvOMdScU17c8VVCnjIHTVn38Bb6qSA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 + dependencies: + known-css-properties: 0.29.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-selector-parser: 6.0.14 + postcss-value-parser: 4.2.0 + stylelint: 16.1.0(typescript@5.3.3) + dev: true + + /stylelint@16.1.0(typescript@5.3.3): + resolution: {integrity: sha512-Sh1rRV0lN1qxz/QsuuooLWsIZ/ona7NKw/fRZd6y6PyXYdD2W0EAzJ8yJcwSx4Iw/muz0CF09VZ+z4EiTAcKmg==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + '@csstools/css-parser-algorithms': 2.4.0(@csstools/css-tokenizer@2.2.2) + '@csstools/css-tokenizer': 2.2.2 + '@csstools/media-query-list-parser': 2.1.6(@csstools/css-parser-algorithms@2.4.0)(@csstools/css-tokenizer@2.2.2) + '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.14) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.3.3) + css-functions-list: 3.2.1 + css-tree: 2.3.1 + debug: 4.3.4 + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.29.0 + mathml-tag-names: 2.1.3 + meow: 13.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 7.0.0(postcss@8.4.32) + postcss-selector-parser: 6.0.14 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 7.1.0 + supports-hyperlinks: 3.0.0 + svg-tags: 1.0.0 + table: 6.8.1 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 - glob: 7.1.6 + glob: 10.3.10 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + /sudo-prompt@8.2.5: + resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} + dev: false + + /sudo-prompt@9.1.1: + resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} + dev: false + /summary@2.1.0: resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} dev: true - /superjson@2.2.0: - resolution: {integrity: sha512-vSr6kwT/LY3T1+JaZllIGFp5+qEYyCw/s6EMgR8TulTwRbKETuVIqN4RTurPBTU/HlEpP0ytN3srB2vjjeBRoQ==} + /superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} engines: {node: '>=16'} dependencies: copy-anything: 3.0.5 - dev: false + + /supertap@3.0.1: + resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + indent-string: 5.0.0 + js-yaml: 3.14.1 + serialize-error: 7.0.1 + strip-ansi: 7.1.0 + dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -12114,29 +27393,67 @@ packages: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 + + /supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swr@2.2.0(react@18.3.0-canary-ce2bc58a9-20231102): + /svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /swap-case@2.0.2: + resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + dependencies: + tslib: 2.6.2 + + /swc-loader@0.2.3(@swc/core@1.3.101)(webpack@5.89.0): + resolution: {integrity: sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==} + peerDependencies: + '@swc/core': ^1.2.147 + webpack: '>=2' + dependencies: + '@swc/core': 1.3.101 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /swr@2.2.0(react@18.2.0): resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 - use-sync-external-store: 1.2.0(react@18.3.0-canary-ce2bc58a9-20231102) + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /synchronous-promise@2.0.17: + resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} dev: false - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.4.2 + '@pkgr/core': 0.1.0 tslib: 2.6.2 dev: true + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: false + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -12152,32 +27469,31 @@ packages: resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} dev: false - /tailwind-merge@2.0.0: - resolution: {integrity: sha512-WO8qghn9yhsldLSg80au+3/gY9E4hFxIvQ3qOmlpXnqpDKoMruKfi/56BbbMg6fHTQJ9QD3cc79PoWqlaQE4rw==} + /tailwind-merge@2.2.0: + resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} dependencies: - '@babel/runtime': 7.23.2 - dev: true + '@babel/runtime': 7.23.6 - /tailwind-variants@0.1.18(tailwindcss@3.3.5): - resolution: {integrity: sha512-yoydMYm3FbZRw7wak+E2sqwYv2Uo3YWRqVZR03DGqDGm0ytzDrEnWO/Q/GMHdhaz8adOvycKw/bwCgQFCfmfhg==} + /tailwind-variants@0.1.19(tailwindcss@3.4.0): + resolution: {integrity: sha512-D9Yf5WqsxodnCtjZt6KifEoKwW8rTURXQV03KRKlojITQM5gV1vPVWufWNiIvd/ptC3QybYFpwmHK9cs4Ei08Q==} engines: {node: '>=16.x', pnpm: '>=7.x'} peerDependencies: tailwindcss: '*' dependencies: tailwind-merge: 1.14.0 - tailwindcss: 3.3.5 + tailwindcss: 3.4.0(ts-node@10.9.2) dev: false - /tailwindcss-animate@1.0.7(tailwindcss@3.3.5): + /tailwindcss-animate@1.0.7(tailwindcss@3.4.0): resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.3.5 + tailwindcss: 3.4.0(ts-node@10.9.2) dev: false - /tailwindcss@3.3.5: - resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} + /tailwindcss@3.4.0(ts-node@10.9.2): + resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -12186,7 +27502,7 @@ packages: chokidar: 3.5.3 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.0 @@ -12195,21 +27511,140 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.31 - postcss-import: 15.1.0(postcss@8.4.31) - postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.1(postcss@8.4.31) - postcss-nested: 6.0.1(postcss@8.4.31) - postcss-selector-parser: 6.0.13 + postcss: 8.4.32 + postcss-import: 15.1.0(postcss@8.4.32) + postcss-js: 4.0.1(postcss@8.4.32) + postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.2) + postcss-nested: 6.0.1(postcss@8.4.32) + postcss-selector-parser: 6.0.14 resolve: 1.22.8 - sucrase: 3.34.0 + sucrase: 3.35.0 transitivePeerDependencies: - ts-node + /tapable@0.1.10: + resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} + engines: {node: '>=0.6'} + dev: true + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 + dev: false + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + /telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + dependencies: + memoizerific: 1.11.3 + dev: false + + /temp-dir@1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + dev: false + + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false + + /temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + dev: true + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: false + + /tempy@0.3.0: + resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} + engines: {node: '>=8'} + dependencies: + temp-dir: 1.0.0 + type-fest: 0.3.1 + unique-string: 1.0.0 + dev: false + + /tempy@0.7.1: + resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} + engines: {node: '>=10'} + dependencies: + del: 6.1.1 + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: false + + /tempy@1.0.1: + resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} + engines: {node: '>=10'} + dependencies: + del: 6.1.1 + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: false + + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + dev: false + /terminal-link@3.0.0: resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} engines: {node: '>=12'} @@ -12218,7 +27653,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.9(esbuild@0.18.20)(webpack@5.89.0): + /terser-webpack-plugin@5.3.9(@swc/core@1.3.101)(esbuild@0.18.20)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -12235,16 +27670,16 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 + '@swc/core': 1.3.101 esbuild: 0.18.20 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.24.0 - webpack: 5.89.0(esbuild@0.18.20) - dev: false + terser: 5.26.0 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) - /terser@5.24.0: - resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + /terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -12252,7 +27687,6 @@ packages: acorn: 8.11.2 commander: 2.20.3 source-map-support: 0.5.21 - dev: false /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -12263,6 +27697,15 @@ packages: minimatch: 3.1.2 dev: true + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + + /text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -12281,6 +27724,13 @@ packages: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} dev: true + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: @@ -12289,8 +27739,19 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + /time-zone@1.0.0: + resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} + engines: {node: '>=4'} dev: true + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: false + /timers-ext@0.1.7: resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} dependencies: @@ -12298,22 +27759,41 @@ packages: next-tick: 1.1.0 dev: true - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tiny-queue@0.2.1: + resolution: {integrity: sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + + /title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + dependencies: + tslib: 2.6.2 /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true + /to-absolute-glob@3.0.0: + resolution: {integrity: sha512-loO/XEWTRqpfcpI7+Jr2RR2Umaaozx1t6OSVWtMi0oy5F/Fxg3IC+D/TToDnxyAGs7uZBGT/6XmyDUxgsObJXA==} + engines: {node: '>=0.10.0'} + dependencies: + is-absolute: 1.0.0 + is-negated-glob: 1.0.0 + dev: true + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -12354,10 +27834,48 @@ packages: engines: {node: '>=0.6'} dev: false + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /toml-eslint-parser@0.9.3: + resolution: {integrity: sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + dev: true + + /too-wordy@0.3.6: + resolution: {integrity: sha512-fK4DKkEcrpBbK6uANekH37VeNAb/88qKdkqc/nBOFJpHdvXKXdA4lZRkiM6zNlow00Zp4W4/lnWyqqCaOQlg/w==} + engines: {node: '>=6', npm: '>=5'} + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.1 dev: true + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + dev: false + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false @@ -12372,17 +27890,26 @@ packages: engines: {node: '>=8'} dev: true + /triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + dev: false + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false - /ts-api-utils@1.0.3(typescript@5.2.2): + /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.3.3 + + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: false /ts-deepmerge@6.2.0: resolution: {integrity: sha512-2qxI/FZVDPbzh63GwWIZYE7daWKtwXZYuyc8YNq0iTmMUwn4mL0jRLsp6hfFlgbdRSR4x2ppe+E86FnvEpN7Nw==} @@ -12392,46 +27919,184 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /ts-jest@29.1.1(@babel/core@7.23.6)(esbuild@0.18.20)(jest@29.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.6 + bs-logger: 0.2.6 + esbuild: 0.18.20 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.10.5)(ts-node@10.9.2) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 5.3.3 + yargs-parser: 21.1.1 + dev: true + + /ts-log@2.2.5: + resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} + dev: false + + /ts-node@10.9.2(@swc/core@1.3.101)(@types/node@20.10.5)(typescript@5.3.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.3.101 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.10.5 + acorn: 8.11.2 + acorn-walk: 8.3.1 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + /ts-pnp@1.2.0(typescript@5.3.3): + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + dev: false + + /ts-standard@12.0.2(eslint-import-resolver-typescript@3.6.1)(typescript@5.3.3): + resolution: {integrity: sha512-XX2wrB9fKKTfBj4yD3ABm9iShzZcS2iWcPK8XzlBvuL20+wMiLgiz/k5tXgZwTaYq5wRhbks1Y9PelhujF/9ag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.33.2)(eslint@8.56.0) + eslint-config-standard-with-typescript: 23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 15.7.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + minimist: 1.2.8 + pkg-conf: 4.0.0 + standard-engine: 15.1.0 + typescript: 5.3.3 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /tsconfig-paths-webpack-plugin@4.1.0: + resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} + engines: {node: '>=10.13.0'} + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + tsconfig-paths: 4.2.0 + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false + /tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.2.2): + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.2.2 + typescript: 5.3.3 dev: true - /tsx@3.14.0: - resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} + /tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.18.20 + esbuild: 0.19.10 get-tsconfig: 4.7.2 - source-map-support: 0.5.21 optionalDependencies: fsevents: 2.3.3 dev: true + /tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + dev: false + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -12443,6 +28108,21 @@ packages: engines: {node: '>=4'} dev: true + /type-fest@0.12.0: + resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} + engines: {node: '>=10'} + dev: false + + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: false + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -12455,17 +28135,18 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: true + + /type-fest@0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - dev: true /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - dev: true /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} @@ -12481,10 +28162,37 @@ packages: engines: {node: '>=14.16'} dev: true - /type-fest@4.6.0: - resolution: {integrity: sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==} + /type-fest@4.9.0: + resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} engines: {node: '>=16'} - dev: true + + /type-graphql@1.1.1(class-validator@0.14.0)(graphql@16.8.1): + resolution: {integrity: sha512-iOOWVn0ehCYMukmnXStbkRwFE9dcjt7/oDcBS1JyQZo9CbhlIll4lHHps54HMEk4A4c8bUPd+DjK8w1/ZrxB4A==} + engines: {node: '>= 10.3'} + requiresBuild: true + peerDependencies: + class-validator: '>=0.12.0' + graphql: ^16.8.1 + dependencies: + '@types/glob': 7.2.0 + '@types/node': 20.10.5 + '@types/semver': 7.5.6 + class-validator: 0.14.0 + glob: 7.2.3 + graphql: 16.8.1 + graphql-query-complexity: 0.7.2(graphql@16.8.1) + graphql-subscriptions: 1.2.1(graphql@16.8.1) + semver: 7.5.4 + tslib: 2.6.2 + dev: false + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false /type@1.2.0: resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} @@ -12534,11 +28242,27 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + + /uc.micro@2.0.0: + resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} + dev: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + dev: false + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -12547,25 +28271,82 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + /unescape-js@1.1.4: resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} dependencies: string.fromcodepoint: 0.2.1 dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + /unified@11.0.4: resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 + + /unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: false + + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: false + + /unique-string@1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} + dependencies: + crypto-random-string: 1.0.0 dev: false /unique-string@2.0.0: @@ -12573,7 +28354,6 @@ packages: engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 - dev: true /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} @@ -12585,71 +28365,103 @@ packages: /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - '@types/unist': 3.0.1 - dev: false + '@types/unist': 3.0.2 /unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 dev: false /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 dev: false /unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-visit: 5.0.0 dev: false + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 3.0.1 - dev: false + '@types/unist': 3.0.2 /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@1.0.0: + resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} + engines: {node: '>= 10.0.0'} dev: false /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - dev: true + + /unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + dependencies: + normalize-path: 2.1.1 + dev: false /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: false + /unplugin@1.6.0: + resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: false + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - dev: true + dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.1): + /update-browserslist-db@1.0.13(browserslist@4.22.2): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 @@ -12673,19 +28485,41 @@ packages: xdg-basedir: 4.0.0 dev: true - /uploadthing@5.7.4: - resolution: {integrity: sha512-8pTPznWTUlvWRxwWME2Eo6A1VcpvjskRcxzx7aQ45yPjh1yVFZ9RUKG1sjBTNSJCArMdbeg5wlhJT5S2XGr/8Q==} + /uploadthing@6.1.0: + resolution: {integrity: sha512-3OhxRxY+cOoA+g5kAkuYo/pIyOJKZR6+iUt077QkfhmN8GCjekFyiQDAmH/X1IQ29U8lMpMkgcxHx9HetkPtdw==} engines: {node: '>=18.13.0'} dependencies: '@uploadthing/mime-types': 0.2.2 - '@uploadthing/shared': 5.2.7(@uploadthing/mime-types@0.2.2) + '@uploadthing/shared': 6.0.2(@uploadthing/mime-types@0.2.2) + dev: false + + /upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + dependencies: + tslib: 2.6.2 + + /upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} dev: false + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.6.2 + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + /url-join@4.0.0: + resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} + dev: false + + /url-or-path@2.3.0: + resolution: {integrity: sha512-5g9xpEJKjbAY8ikLU3XFpEg3hRLGt6SbCQmDElb1AL7JTW6vMi5Na5e3dMvONHisIu9VHgMAADLHJ8EznYR2ow==} + dev: true + /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} @@ -12693,8 +28527,41 @@ packages: prepend-http: 2.0.0 dev: true - /use-callback-ref@1.3.0(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + dev: false + + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: false + + /urlpattern-polyfill@9.0.0: + resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} + dev: false + + /urql@4.0.6(graphql@16.8.1)(react@18.2.0): + resolution: {integrity: sha512-meXJ2puOd64uCGKh7Fse2R7gPa8+ZpBOoA62jN7CPXXUt7SVZSdeXWSpB3HvlfzLUkEqsWbvshwrgeWRYNNGaQ==} + peerDependencies: + react: '>= 16.8.0' + dependencies: + '@urql/core': 4.2.2(graphql@16.8.1) + react: 18.2.0 + wonka: 6.3.4 + transitivePeerDependencies: + - graphql + dev: false + + /use-callback-ref@1.3.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12703,22 +28570,49 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 - react: 18.3.0-canary-ce2bc58a9-20231102 + '@types/react': 18.2.45 + react: 18.2.0 tslib: 2.6.2 dev: false - /use-intl@3.0.0-rc.6(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-vkPHZFFTrt/GnLPVn0HdCUeU+BgtitkuONa9e+XC3IeItd6RxJ28RMbAK43QI726N/CrAjds/fGjI8BF21u6Hw==} + /use-context-selector@1.4.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0): + resolution: {integrity: sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '*' + react-native: '*' + scheduler: '>=0.19.0' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scheduler: 0.23.0 + dev: false + + /use-deep-compare@1.2.1(react@18.2.0): + resolution: {integrity: sha512-JTnOZAr0fq1ix6CQ4XANoWIh03xAiMFlP/lVAYDdAOZwur6nqBSdATn1/Q9PLIGIW+C7xmFZBCcaA4KLDcQJtg==} + peerDependencies: + react: '>=16.8.0' + dependencies: + dequal: 2.0.3 + react: 18.2.0 + dev: false + + /use-intl@3.4.0(react@18.2.0): + resolution: {integrity: sha512-vFwyAm9RDXjQN83wle9LjmE5PB/k0vOU0FetHffjr7/wLW8xlX2tAABxIyG1gy9eS5IYixAezvJXYr8g6fRIXA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@formatjs/ecma402-abstract': 1.17.2 + '@formatjs/ecma402-abstract': 1.18.0 intl-messageformat: 9.13.0 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 dev: false - /use-sidecar@1.1.2(@types/react@18.2.34)(react@18.3.0-canary-ce2bc58a9-20231102): + /use-sidecar@1.1.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12728,43 +28622,96 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.34 + '@types/react': 18.2.45 detect-node-es: 1.1.0 - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 tslib: 2.6.2 dev: false - /use-sync-external-store@1.2.0(react@18.3.0-canary-ce2bc58a9-20231102): + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.3.0-canary-ce2bc58a9-20231102 + react: 18.2.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 + dev: false + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: false + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true dev: false - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + dev: false /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /v8-to-istanbul@9.1.3: - resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.20 - '@types/istanbul-lib-coverage': 2.0.5 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 dev: true + /valid-data-url@3.0.1: + resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} + engines: {node: '>=10'} + dev: false + + /valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + dev: false + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + /validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + dependencies: + builtins: 1.0.3 + dev: false + /validate-npm-package-name@4.0.0: resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -12772,20 +28719,46 @@ packages: builtins: 5.0.1 dev: true - /vaul@0.7.7(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102): - resolution: {integrity: sha512-NAQTE8836Daxq+VC74srRfGqiOLQft4yc0x8YsO6Vowti0RC7LWzSpIxKd7RGegzgMMZOho+9ysH+uI6o+tUVw==} + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: false + + /value-or-promise@1.0.12: + resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} + engines: {node: '>=12'} + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + + /vaul@0.8.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9nUU2jIObJvJZxeQU1oVr/syKo5XqbRoOMoTEt0hHlWify4QZFlqTh6QSN/yxoKzNrMeEQzxbc3XC/vkPLOIqw==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.34)(react-dom@18.3.0-canary-ce2bc58a9-20231102)(react@18.3.0-canary-ce2bc58a9-20231102) - react: 18.3.0-canary-ce2bc58a9-20231102 - react-dom: 18.3.0-canary-ce2bc58a9-20231102(react@18.3.0-canary-ce2bc58a9-20231102) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' dev: false + /version-guard@1.1.1: + resolution: {integrity: sha512-MGQLX89UxmYHgDvcXyjBI0cbmoW+t/dANDppNPrno64rYr8nH4SHSuElQuSYdXGEs0mUzdQe1BY+FhVPNsAmJQ==} + engines: {node: '>=0.10.48'} + dev: true + /version-selector-type@3.0.0: resolution: {integrity: sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA==} engines: {node: '>=10.13'} @@ -12796,30 +28769,61 @@ packages: /vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false /vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: - '@types/unist': 3.0.1 + '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false /vlq@0.2.3: resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} dev: true + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: false + /vscode-languageserver-textdocument@1.0.11: resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + dev: true + /vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} dev: true + /vue-eslint-parser@9.3.2(eslint-ts-patch@8.56.0-0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: /eslint-ts-patch@8.56.0-0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -12832,14 +28836,35 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + + /weasel-words@0.1.1: + resolution: {integrity: sha512-rWkTAGqs4TN6qreS06+irmFUMrQVx5KoFjD8CxMHUsAwmxw/upDcfleaEYOLsonUbornahg+VJ9xrWxp4udyJA==} dev: true + /web-resource-inliner@6.0.1: + resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} + engines: {node: '>=10.0.0'} + dependencies: + ansi-colors: 4.1.3 + escape-goat: 3.0.0 + htmlparser2: 5.0.1 + mime: 2.6.0 + node-fetch: 2.7.0 + valid-data-url: 3.0.1 + transitivePeerDependencies: + - encoding + dev: false + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /web-vitals@3.5.0: resolution: {integrity: sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==} dev: false @@ -12856,14 +28881,50 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} dev: true + /webpack-dev-middleware@6.1.1(webpack@5.89.0): + resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + dev: false + + /webpack-hot-middleware@2.26.0: + resolution: {integrity: sha512-okzjec5sAEy4t+7rzdT8eRyxsk0FDSmBPN2KwX4Qd+6+oQCfe5Ve07+u7cJvofgB+B4w5/4dO4Pz0jhhHyyPLQ==} + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.4.0 + strip-ansi: 6.0.1 + dev: false + /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + + /webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: false + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: false - /webpack@5.89.0(esbuild@0.18.20): + /webpack@5.89.0(@swc/core@1.3.101)(esbuild@0.18.20): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true @@ -12873,17 +28934,17 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.6 - '@types/estree': 1.0.4 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 acorn: 8.11.2 acorn-import-assertions: 1.9.0(acorn@8.11.2) - browserslist: 4.22.1 + browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.1 + es-module-lexer: 1.4.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12894,21 +28955,44 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.89.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.101)(esbuild@0.18.20)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: false + + /well-known-symbols@2.0.0: + resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} + engines: {node: '>=6'} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -12935,7 +29019,6 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 - dev: false /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} @@ -12944,7 +29027,9 @@ packages: is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: false + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} @@ -12969,7 +29054,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -12978,6 +29062,20 @@ packages: dependencies: isexe: 2.0.0 + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: true + /widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} @@ -12992,9 +29090,50 @@ packages: string-width: 5.1.2 dev: true + /winston-transport@4.6.0: + resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + engines: {node: '>= 12.0.0'} + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + dev: false + + /winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.6.0 + dev: false + + /wonka@4.0.15: + resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} + dev: false + + /wonka@6.3.4: + resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==} + dev: false + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -13003,7 +29142,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -13012,11 +29150,27 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.0.0 + strip-ansi: 7.1.0 dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: false + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: @@ -13034,24 +29188,152 @@ packages: signal-exit: 3.0.7 dev: true + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: true + + /write-good@1.0.8: + resolution: {integrity: sha512-P1Ct7+DNrOcr2JAxDZ3Q5i5sx2LSveu7iLaoUL0A+YiG0GKf0l5+9j3rwMeyh6JeTL1+HfQV1rnwEvzhNIvpFw==} + engines: {node: '>=6', npm: '>=5'} + hasBin: true + dependencies: + adverb-where: 0.2.6 + commander: 2.20.3 + e-prime: 0.10.4 + no-cliches: 0.3.6 + passive-voice: 0.1.0 + too-wordy: 0.3.6 + weasel-words: 0.1.1 + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + /xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} + dependencies: + simple-plist: 1.3.1 + uuid: 7.0.3 + dev: false + /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} - dev: true /xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} dev: true + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + + /xmlbuilder@14.0.0: + resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} + engines: {node: '>=8.0'} + dev: false + + /xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + dev: false + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xo@0.56.0(eslint-import-resolver-typescript@3.6.1)(webpack@5.89.0): + resolution: {integrity: sha512-ohzSqgQ8POgZ3KNaEK/gxDovb6h3cglxv8+xi9Dn7gmRe8g4qotpOZpMs5ACJhvkJDmJOhiKbk6Uq6Mx1Di9DA==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + webpack: '>=1.11.0' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + '@eslint/eslintrc': 2.1.4 + '@typescript-eslint/eslint-plugin': 6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + arrify: 3.0.0 + cosmiconfig: 8.3.6(typescript@5.3.3) + define-lazy-prop: 3.0.0 + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + eslint-config-xo: 0.43.1(eslint@8.56.0) + eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.16.0)(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3) + eslint-formatter-pretty: 5.0.0 + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.27.5)(webpack@5.89.0) + eslint-plugin-ava: 14.0.0(eslint@8.56.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.16.0)(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.8)(eslint@8.56.0) + eslint-plugin-n: 16.5.0(eslint@8.56.0) + eslint-plugin-no-use-extend-native: 0.5.0 + eslint-plugin-prettier: 5.1.2(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@3.1.1) + eslint-plugin-unicorn: 48.0.1(eslint@8.56.0) + esm-utils: 4.2.1 + find-cache-dir: 4.0.0 + find-up: 6.3.0 + get-stdin: 9.0.0 + get-tsconfig: 4.7.2 + globby: 13.2.2 + imurmurhash: 0.1.4 + json-stable-stringify-without-jsonify: 1.0.1 + lodash-es: 4.17.21 + meow: 12.1.1 + micromatch: 4.0.5 + open-editor: 4.1.1 + prettier: 3.1.1 + semver: 7.5.4 + slash: 5.1.0 + to-absolute-glob: 3.0.0 + typescript: 5.3.3 + webpack: 5.89.0(@swc/core@1.3.101)(esbuild@0.18.20) + transitivePeerDependencies: + - '@types/eslint' + - eslint-import-resolver-typescript + - supports-color + dev: true + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -13059,24 +29341,57 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + dev: false + + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.4 + dev: true + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} @@ -13089,7 +29404,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} @@ -13102,7 +29416,10 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} @@ -13111,11 +29428,10 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true - /zod-validation-error@1.5.0(zod@3.22.4): - resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} - engines: {node: '>=16.0.0'} + /zod-validation-error@2.1.0(zod@3.22.4): + resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==} + engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.18.0 dependencies: @@ -13125,6 +29441,41 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + /zustand-x@3.0.1(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(zustand@4.4.7): + resolution: {integrity: sha512-HPk2zFT7boCIyeqhDPNHyOPEmE/WixmEbHAsPzKmUCIzUifY4VUM2PsGVC3eRtnARM9JFS9iSUImrKTTzj92JQ==} + peerDependencies: + zustand: '>=4.3.9' + dependencies: + immer: 10.0.3 + react-tracked: 1.7.11(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + - react-native + - scheduler + dev: false + + /zustand@4.4.7(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.45 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: false diff --git a/postcss.config.cjs b/postcss.config.cjs index f1f8e011..9fefd490 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,8 +1,11 @@ +/** @type {import('postcss-load-config').Config} */ const config = { plugins: { + // When adding other plugins, we need to add some of them before tailwindcss tailwindcss: {}, - autoprefixer: {} - } + // But some others, like autoprefixer, we need to add after tailwindcss + autoprefixer: {}, + }, }; module.exports = config; diff --git a/prettier.config.cjs b/prettier.config.cjs index 3d728a19..f51dbd09 100644 --- a/prettier.config.cjs +++ b/prettier.config.cjs @@ -1,16 +1,15 @@ /** @typedef {import("@ianvs/prettier-plugin-sort-imports").PluginConfig} SortImportsConfig */ /** @typedef {import("prettier").Config} PrettierConfig */ +/** + * Remember to restart VSCode after making + * any changes here and saving this file. + */ /** @type {PrettierConfig | SortImportsConfig} */ const config = { - printWidth: 80, - tabWidth: 2, - semi: true, - useTabs: false, - singleQuote: false, - bracketSameLine: false, arrowParens: "always", - trailingComma: "all", + quoteProps: "preserve", + bracketSameLine: false, endOfLine: "lf", importOrder: [ "^~/styles/(.*)$", @@ -19,18 +18,19 @@ const config = { "^(next/(.*)$)|^(next$)", "", "", - "^~/types/(.*)$", - "^~/server/(.*)$", + "^~/app", + "^~/app/(.*)$", + "^~/core/(.*)$", "^~/data/(.*)$", - "^~/hooks/(.*)$", + "^~/env.mjs", "^~/forms/(.*)$", + "^~/hooks/(.*)$", "^~/islands/(.*)$", - "^~/utils/(.*)$", - "^~/app/(.*)$", - "^~/types.ts", - "^~/app.ts", - "", + "^~/navigation", "^~/plugins/(.*)$", + "^~/server/(.*)$", + "^~/types/(.*)$", + "^~/utils/(.*)$", "", "^[./]", "", @@ -41,6 +41,12 @@ const config = { require.resolve("prettier-plugin-packagejson"), require.resolve("@ianvs/prettier-plugin-sort-imports"), ], + printWidth: 80, + semi: true, + singleQuote: false, + tabWidth: 2, + trailingComma: "all", + useTabs: false, }; module.exports = config; diff --git a/public/screenshot.png b/public/screenshot.png index 10be2254ff22058189f0fabc603c0d306f8d8ce7..f5112e5c7b488f37ba8a70eb32f24912393392da 100644 GIT binary patch literal 331402 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

%p9QHp5^K-vLZI|Ur+}HluJ(nB+*x6Sq0!qB_ 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

H`vEjz%W@kLN;kJ9GTsp#ZqjL6N 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 IpM9;1^ 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

{m5LPP|JA*q;tM2t*UerQ1p@TELwCMjJbcz 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
    %p%7fsTsPor-h0%-<`Sa^7NgWk~A4Nvu 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 GSN{vHs$$~+ literal 149199 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

    |CMr6hDvI-x^oA@JS)p65C5 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%0A5kfM0Z4sPCQ-?V$HrqoNl-WT7m8{AySRpyQmYb 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 Bxv>BM diff --git a/src/app.ts b/src/app.ts index f4ba6641..1566ba92 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,12 +6,29 @@ * combine as much as possible into a single file. */ -import { ContentSection, MainMenuItem, type FooterItem } from "~/types"; +import type { OAuthStrategy } from "@clerk/types"; +import type { ContentSection, FooterItem, MainMenuItem } from "~/types"; import { slugify } from "~/utils"; import { productCategories } from "~/server/config/products"; import { networks } from "~/server/config/socials"; +import { env } from "./env.mjs"; +import { Icons } from "./islands/icons"; + +// todo: parse this from clerk's dashboard instead of hardcoding it +export const oauthProvidersClerk = [ + { name: "Google", strategy: "oauth_google", icon: "google" }, + { name: "Discord", strategy: "oauth_discord", icon: "discord" }, + // { name: "Microsoft", strategy: "oauth_microsoft", icon: "microsoft" }, + // { name: "Facebook", strategy: "oauth_facebook", icon: "facebook" }, + // { name: "Github", strategy: "oauth_github", icon: "gitHub" }, +] satisfies { + name: string; + icon: keyof typeof Icons; + strategy: OAuthStrategy; +}[]; + export const appts = { name: "Relivator", debug: false, @@ -42,7 +59,9 @@ export const REPOSITORY_OWNER = "blefnk"; export const REPOSITORY_NAME = "relivator"; export const REPOSITORY_URL = `https://github.com/${REPOSITORY_OWNER}/${REPOSITORY_NAME}`; export const DISCORD_URL = "https://discord.gg/Pb8uKbwpsJ"; -export const baseUrl = "https://relivator.bleverse.com"; +export const baseUrl = new URL( + env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000", +); export const BASE_URL = process.env.NODE_ENV === "production" ? baseUrl : "http://localhost:3000"; @@ -58,7 +77,6 @@ export const TRIAL_LENGTH_IN_DAYS = 7; export const ROLES = [OWNER_ROLE, ADMIN_ROLE, MEMBER_ROLE] as const; export const settings = { - internationalizationEnabled: true, themeToggleEnabled: true, }; @@ -69,8 +87,8 @@ export const siteConfig = { description: "NextJS 14 free starter: store, landing, dashboard. It helps you build great eCommerce and SaaS apps faster than ever. Get it!", company: { - name: "Bleverse Nazarii Korniienko", - link: "https://github.com/blefnk", + name: "Nazarii Korniienko", + link: "https://github.com/blefnk/relivator", email: "blefnk@gmail.com", twitter: "@blefnk", }, @@ -103,10 +121,10 @@ export const siteConfig = { "Utils", ], url: { - base: baseUrl, + base: env.NEXT_PUBLIC_APP_URL, author: REPOSITORY_OWNER, }, - ogImage: `${baseUrl}/og-image.png`, + ogImage: `${env.NEXT_PUBLIC_APP_URL}/og-image.png`, mainNav: [ { title: "Lobby", @@ -205,8 +223,8 @@ export const siteConfig = { title: "Social", items: [ { - title: "Facebook", - href: links.facebook, + title: "Github", + href: links.githubAccount, external: true, }, { @@ -220,8 +238,8 @@ export const siteConfig = { external: true, }, { - title: "Github", - href: links.githubAccount, + title: "Facebook", + href: links.facebook, external: true, }, ], @@ -230,8 +248,8 @@ export const siteConfig = { title: "Github", items: [ { - title: "Nomaders", - href: "https://github.com/blefnk/nomaders", + title: "Relivator", + href: "https://github.com/blefnk/relivator", external: true, }, { @@ -240,12 +258,12 @@ export const siteConfig = { external: true, }, { - title: "Relivator", - href: "https://github.com/blefnk/relivator", + title: "Blefnk", + href: "https://github.com/blefnk", external: true, }, { - title: "Utilities", + title: "Utils", href: "https://github.com/blefnk/utils", external: true, }, @@ -255,39 +273,39 @@ export const siteConfig = { }; export const featureCards: ContentSection = { - header: `Powered by`, - subheader: `What Makes Relivator Possible`, + header: "Powered by", + subheader: "What Makes Relivator Possible", content: [ { - text: `Next.js`, - subtext: `The React Framework`, + text: "Next.js", + subtext: "The React Framework", }, { - text: `shadcn/ui`, - subtext: `Beautifully Designed Components`, + text: "shadcn/ui", + subtext: "Beautifully Designed Components", }, { - text: `Vercel`, - subtext: `Develop. Preview. Ship.`, + text: "Vercel", + subtext: "Develop. Preview. Ship.", }, ], }; export const features: ContentSection = { - header: `Features`, - subheader: `Why You Need to Download Relivator`, + header: "Features", + subheader: "Why You Need to Download Relivator", content: [ { - text: `SEO Optimized`, - subtext: `Improved website visibility on search engines`, + text: "SEO Optimized", + subtext: "Improved website visibility on search engines", }, { - text: `Highly Performant`, - subtext: `Fast loading times and smooth performance`, + text: "Highly Performant", + subtext: "Fast loading times and smooth performance", }, { - text: `Easy Customization`, - subtext: `Change your content and layout with little effort`, + text: "Easy Customization", + subtext: "Change your content and layout with little effort", }, ], }; diff --git a/src/app/[locale]/(adm)/dashboard/admin/_islands/privilegies.tsx b/src/app/[locale]/(adm)/dashboard/admin/_islands/privilegies.tsx new file mode 100644 index 00000000..5cd84b0a --- /dev/null +++ b/src/app/[locale]/(adm)/dashboard/admin/_islands/privilegies.tsx @@ -0,0 +1,44 @@ +"use client"; + +import { startTransition } from "react"; +import { catchError } from "~/utils"; +import toast from "react-hot-toast"; + +import { changeUserPrivilegies } from "~/core/adm/actions"; +import { Button } from "~/islands/primitives/button"; + +type ButtonSetPrivilegiesProps = { + role: "user" | "admin"; + userId: string; +}; + +export default function ButtonSetPrivilegies({ + role, + userId, +}: ButtonSetPrivilegiesProps) { + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + startTransition(() => { + async function changePrivileges() { + try { + const session = await changeUserPrivilegies({ + role, + userId, + }); + if (session !== undefined) { + toast(session.result ?? "Something wrong..."); + } + } catch (err) { + catchError(err); + } + } + changePrivileges(); + }); + } + + return ( +

    + + + ); +} diff --git a/src/app/[locale]/(adm)/dashboard/admin/page.tsx b/src/app/[locale]/(adm)/dashboard/admin/page.tsx new file mode 100644 index 00000000..b162ceda --- /dev/null +++ b/src/app/[locale]/(adm)/dashboard/admin/page.tsx @@ -0,0 +1,66 @@ +import { Link } from "~/core/link"; +import AdminProductsManagement from "~/core/trpc/tanstack/products-admin"; +import { Icons } from "~/islands/icons"; +import { GeneralShell } from "~/islands/wrappers/general-shell"; +import { redirect } from "~/navigation"; +import Creating from "~/plugins/builder/creating"; +import { getServerAuthSession } from "~/utils/auth/users"; + +import ButtonSetPrivilegies from "./_islands/privilegies"; + +export default async function AdminMainPage() { + const session = await getServerAuthSession(); + if (!session) return redirect("/auth"); + + return ( + +

    Admin Page

    +

    + The page is still in development. Currently you can create the new pages + and components here, likewise play with tRPC and TanStack Query below + (use also TanStack DevTools on localhost). +

    +
    + +
    +
    +

    Create New Page

    +

    + /src/app/[locale]/(cms)/* will be used +

    + +
    + +
    +

    Create New Component

    +

    + /src/islands/(cms)/* will be used +

    + +
    + +
    +

    Create New Post

    + +
    + +
    +

    Edit User Privilegies

    + {/* eslint-disable-next-line jsx-a11y/aria-role */} + +
    +
    + +
    + +
    + ); +} diff --git a/src/app/[locale]/(adm)/dashboard/layout.tsx b/src/app/[locale]/(adm)/dashboard/layout.tsx new file mode 100644 index 00000000..6c2067bc --- /dev/null +++ b/src/app/[locale]/(adm)/dashboard/layout.tsx @@ -0,0 +1,27 @@ +import { SidebarNav } from "~/islands/navigation/sidebar-nav"; +import { ScrollArea } from "~/islands/primitives/scroll-area"; +import { redirect } from "~/navigation"; +import { dashboardConfig } from "~/server/config/dashboard"; +import { getServerAuthSession } from "~/utils/auth/users"; + +interface AdminLayoutProperties { + children: React.ReactNode; +} + +export default async function AdminLayout({ children }: AdminLayoutProperties) { + const session = await getServerAuthSession(); + if (!session) redirect("/auth"); + + return ( +
    +
    + +
    {children}
    +
    +
    + ); +} diff --git a/src/app/[locale]/(adm)/layout.tsx b/src/app/[locale]/(adm)/layout.tsx new file mode 100644 index 00000000..85727aef --- /dev/null +++ b/src/app/[locale]/(adm)/layout.tsx @@ -0,0 +1,18 @@ +import { SiteFooter } from "~/islands/navigation/site-footer"; +import { SiteHeader } from "~/islands/navigation/site-header"; + +interface MainLayoutProperties { + children: React.ReactNode; +} + +export default async function AdminMainLayout({ + children, +}: MainLayoutProperties) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app/[locale]/(auth)/auth/layout.tsx b/src/app/[locale]/(auth)/auth/layout.tsx index 36250125..e41920f2 100644 --- a/src/app/[locale]/(auth)/auth/layout.tsx +++ b/src/app/[locale]/(auth)/auth/layout.tsx @@ -3,11 +3,11 @@ import { type WithChildren } from "~/types"; import { FakeLoadingVariantOne } from "~/islands/fake-loading"; -type AuthLayoutProps = PropsWithChildren; +type AuthLayoutProperties = PropsWithChildren; export default function AuthLayout({ children, -}: WithChildren) { +}: WithChildren) { return ( <> diff --git a/src/app/[locale]/(auth)/auth/page.tsx b/src/app/[locale]/(auth)/auth/page.tsx index 70b27bb4..2cc27e14 100644 --- a/src/app/[locale]/(auth)/auth/page.tsx +++ b/src/app/[locale]/(auth)/auth/page.tsx @@ -3,64 +3,104 @@ * This page acts as middleware to verify user sessions and handles * cases where user data might be absent due to possible database updates. */ -import { notFound, redirect } from "next/navigation"; -import { auth, currentUser } from "@clerk/nextjs"; -import { getNextAuthServerSession } from "~/auth"; -import { env } from "~/env.mjs"; -import { redirect as intlRedirect } from "~/navigation"; +import { notFound } from "next/navigation"; +import { auth, clerkClient, currentUser } from "@clerk/nextjs"; +import { type UserRole } from "~/types"; import { eq } from "drizzle-orm"; +import { getProviders } from "next-auth/react"; +import toast from "react-hot-toast"; +import type Stripe from "stripe"; +import { getNextAuthServerSession } from "~/core/auth/authjs"; +import { getSubscriptionPlanAction } from "~/core/stripe/actions"; +import { stripe } from "~/core/stripe/connect"; +import { createUser } from "~/core/trpc/routers/auth3"; import { db } from "~/data/db"; -import { User, users } from "~/data/db/schema"; -import { createUser } from "~/utils/trpc/others/handlers/users"; -import { getServerAuthSession, getUserData, getUserEmail } from "~/utils/users"; +import { users, type User } from "~/data/db/schema"; +import { env } from "~/env.mjs"; +import { redirect } from "~/navigation"; +import { utapi } from "~/server/utapi"; +import { + getCurrentUser, + getServerAuthSession, + getUserData, + getUserEmail, +} from "~/utils/auth/users"; export default async function SignInPage() { - // Initialize debug mode for this request for logging const debug = process.env.NODE_ENV === "development"; - // Attempt to retrieve the user session - const session = await getServerAuthSession(); - // Handle the case if no session is found - if (!session) { - if (env.NEXT_PUBLIC_AUTH_PROVIDER === "clerk") { - return intlRedirect("/sign-in"); - } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { - return redirect("/api/auth/signin"); - } else { - throw new Error("❌ NEXT_PUBLIC_AUTH_PROVIDER is not defined"); + + // ============================================== + // HANDLE USER AUTH: CLERK + // ============================================== + if (env.NEXT_PUBLIC_AUTH_PROVIDER === "clerk") { + // Attempt to retrieve the user session + const session = await getServerAuthSession(); + + // Handle the case if no session is found + if (!session) { + return redirect("/sign-in"); } - } - const data = await getUserData(session); - const user = await db - .select() - .from(users) - .where(eq(users.id, session.id)) - .then((res: User[]) => res[0] ?? null); + const data = await getUserData(session); + const user: User = await db + .select() + .from(users) + .where(eq(users.id, session.id)) + .then((res: User[]) => res[0] ?? null); - if (env.NEXT_PUBLIC_AUTH_PROVIDER === "clerk") { + // const user = await getCurrentUser(); + + const { userId } = auth(); + + // todo: determine which approach is better const current_clerk_user = await currentUser(); + const get_clerk_user = await clerkClient.users.getUser( + userId ?? session.id, + ); + const email = getUserEmail(current_clerk_user); const name = data.username; const image = data.image; - const { userId } = auth(); + // If we have a new database, but user already has + // Stripe metadata we need to get thats data here. + // Thanks to it user don't loose the subscription. + // Retrieve the subscription details from Stripe. + const userPlanInfo = await getSubscriptionPlanAction(userId ?? session.id); + + // Create user in db if they already doesn't exist there if (!user && userId) { const create = await createUser({ id: userId, + // clerkId: userId, // todo: implement to have a single row for authjs and clerk name: name, emailClerk: email, emailVerified: new Date(), image: image, + role: "user", + mode: "buyer", + stripeCurrentPeriodEnd: userPlanInfo?.stripeCurrentPeriodEnd ?? null, + stripeCustomerId: userPlanInfo?.stripeCustomerId ?? null, + stripePriceId: userPlanInfo?.stripePriceId ?? null, + stripeSubscriptionId: userPlanInfo?.stripeSubscriptionId ?? null, createdAt: new Date(), updatedAt: new Date(), }); - if (create) console.log(" ✓ New user successfully registered:", name); - } else if (user && userId) { - const updateFields: Record = {}; + } + if (user && userId) { + // Edit Clerk's own privateMetadata to add the user's role if it's missing + if (!get_clerk_user.privateMetadata.role) { + await clerkClient.users.updateUserMetadata(userId ?? session.id, { + privateMetadata: { + role: "user" satisfies UserRole, + }, + }); + } // Using a functional approach to set fields + const updateFields: Record = {}; const setFieldIfNull = (fieldName: string, newValue: any) => { if (user[fieldName] === null) { updateFields[fieldName] = newValue; @@ -71,6 +111,22 @@ export default async function SignInPage() { setFieldIfNull("name", name); setFieldIfNull("emailClerk", email); setFieldIfNull("emailVerified", new Date()); // temporary + setFieldIfNull("image", image); + setFieldIfNull("role", "user"); + setFieldIfNull("mode", "buyer"); + setFieldIfNull( + "stripeCurrentPeriodEnd", + userPlanInfo?.stripeCurrentPeriodEnd ?? null, + ); + setFieldIfNull( + "stripeCustomerId", + userPlanInfo?.stripeCustomerId ?? null, + ); + setFieldIfNull("stripePriceId", userPlanInfo?.stripePriceId ?? null); + setFieldIfNull( + "stripeSubscriptionId", + userPlanInfo?.stripeSubscriptionId ?? null, + ); // Update the user if there are fields to update if (Object.keys(updateFields).length > 0) { @@ -83,26 +139,71 @@ export default async function SignInPage() { .where(eq(users.id, session.id)); if (debug) { - console.log( - " ✓ Some of the user's data was null and is now updated.", - ); + console.log(" ✓ Some of the user's data was updated"); } } } // User prepared, redirect to the app - return redirect("/dashboard/stores"); - } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { + return redirect("/dashboard/billing"); + } + + // ============================================== + // HANDLE USER AUTH: NEXT-AUTH.JS + // ============================================== + else { + // Attempt to retrieve the user session const session = await getNextAuthServerSession(); - if (user && session?.user?.id && !user.emailVerified) { - console.log(" ✓ New user successfully registered."); - } + // Handle the case if no session is found + if (!session) { + const NextAuthProviders = await getProviders(); + if (!NextAuthProviders) { + console.error( + "❌ Specify at least one NextAuth.js provider or switch to Clerk (refer to .env.example)", + ); + return redirect("/"); + } + return redirect("/sign-in"); + } else if (session) { + const data = await getUserData(session); + const user: User = await db + .select() + .from(users) + .where(eq(users.id, session.user.id)) + .then((res: User[]) => res[0] ?? null); - if (user && session?.user?.id) { - const updateFields: Record = {}; + const oldImageUrl = data.image ?? ""; + + if (user && !user.emailVerified) { + // todo: Trying to fix a strange "A resource is blocked by OpaqueResponseBlocking" + // todo: error in browser console; We use a new generated image instead; We cannot + // todo: re-upload original image because UploadThing need to downloaded it first. + // todo: Note: This error happens only when NEXT_PUBLIC_CSP_XSS is set to "true". + if ( + env.UPLOADTHING_SECRET && + env.NEXT_PUBLIC_CSP_XSS === "true" && + oldImageUrl.includes("googleusercontent.com") + ) { + // const newImage = await utapi.uploadFilesFromUrl(new URL(oldImageUrl)); + // https://docs.uploadthing.com/api-reference/server#uploadfilesfromurl + const uploadedImg = await utapi.uploadFilesFromUrl( + new URL( + `https://api.dicebear.com/7.x/lorelei/svg?seed=${session?.user?.id}`, + ), + ); + const newImageUrl = new URL(uploadedImg.data?.url ?? ""); + await db + .update(users) + .set({ image: newImageUrl }) + .where(eq(users.id, session.user.id)); + } + console.log(" ✓ New user successfully registered"); + } // Using a functional approach to set fields + const updateFields: Record = {}; + // eslint-disable-next-line sonarjs/no-identical-functions const setFieldIfNull = (fieldName: string, newValue: any) => { if (user[fieldName] === null) { updateFields[fieldName] = newValue; @@ -111,28 +212,72 @@ export default async function SignInPage() { // Check each field and add to updateFields if it's null setFieldIfNull("emailVerified", new Date()); // temporary + setFieldIfNull("role", "user"); + setFieldIfNull("mode", "buyer"); + + // If we have a new database, but user already has + // Stripe metadata we need to get thats data here. + // Thanks to it user don't loose the subscription. + // Retrieve the subscription details from Stripe. + // todo: Current implementation did not work with NextAuth.js + const userPlanInfo = await getSubscriptionPlanAction(user.id); + setFieldIfNull( + "stripeCurrentPeriodEnd", + userPlanInfo?.stripeCurrentPeriodEnd ?? null, + ); + setFieldIfNull( + "stripeCustomerId", + userPlanInfo?.stripeCustomerId ?? null, + ); + setFieldIfNull("stripePriceId", userPlanInfo?.stripePriceId ?? null); + setFieldIfNull( + "stripeSubscriptionId", + userPlanInfo?.stripeSubscriptionId ?? null, + ); // Update the user if there are fields to update if (Object.keys(updateFields).length > 0) { // Set updatedAt to the current date/time updateFields.updatedAt = new Date(); - await db .update(users) .set(updateFields) .where(eq(users.id, session.user.id)); + } - // if (debug) { - // console.log( - // " ✓ Some of the user's data was null and is now updated.", - // ); - // } + // todo: the same as above, just to ensure + // todo: check for already registered users + if ( + env.UPLOADTHING_SECRET && + env.NEXT_PUBLIC_CSP_XSS === "true" && + oldImageUrl.includes("googleusercontent.com") + ) { + const uploadedImg = await utapi.uploadFilesFromUrl( + new URL( + `https://api.dicebear.com/7.x/shapes/svg?seed=${session?.user?.id}`, + ), + ); + const newImageUrl = new URL(uploadedImg.data?.url ?? ""); + await db + .update(users) + .set({ image: newImageUrl }) + .where(eq(users.id, session.user.id)); } - } - // User prepared, redirect to the app - return redirect("/dashboard/stores"); - } else { - throw new Error("❌ NEXT_PUBLIC_AUTH_PROVIDER is not defined"); + if ( + debug && + ((oldImageUrl.includes("googleusercontent.com") && + env.NEXT_PUBLIC_CSP_XSS === "true") || + Object.keys(updateFields).length > 0) + ) { + console.log(" ✓ Some of the user's data was updated"); + } + + // User prepared, redirect to the app + return redirect("/dashboard/billing"); + } else { + console.error("❌ Something wrong with auth/page.tsx"); + return redirect("/"); + } } } diff --git a/src/app/[locale]/(auth)/block/page.tsx b/src/app/[locale]/(auth)/block/page.tsx new file mode 100644 index 00000000..43d08e54 --- /dev/null +++ b/src/app/[locale]/(auth)/block/page.tsx @@ -0,0 +1,19 @@ +/** @see /src/middleware.ts */ + +import { Balancer } from "react-wrap-balancer"; + +import PageLayout from "~/islands/wrappers/page-layout"; + +export default function BlockedPage() { + return ( + + + Our servers have put you on the naughty list. You will need to wait a + bit before being able to access our services. + + + ); +} diff --git a/src/app/[locale]/(auth)/layout.tsx b/src/app/[locale]/(auth)/layout.tsx index 31880a6d..c21a9d6a 100644 --- a/src/app/[locale]/(auth)/layout.tsx +++ b/src/app/[locale]/(auth)/layout.tsx @@ -3,10 +3,10 @@ import { type WithChildren } from "~/types"; import { GeneralShell } from "~/islands/wrappers/general-shell"; -type AuthLayoutProps = PropsWithChildren; +type AuthLayoutProperties = PropsWithChildren; export default function AuthLayout({ children, -}: WithChildren) { +}: WithChildren) { return {children}; } diff --git a/src/app/[locale]/(auth)/sign-in/layout.tsx b/src/app/[locale]/(auth)/sign-in/layout.tsx index 97c88cd9..da184f7f 100644 --- a/src/app/[locale]/(auth)/sign-in/layout.tsx +++ b/src/app/[locale]/(auth)/sign-in/layout.tsx @@ -1,11 +1,13 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface SignInLayoutProps { +interface SignInLayoutProperties { children: React.ReactNode; } -export default async function SignInLayout({ children }: SignInLayoutProps) { +export default async function SignInLayout({ + children, +}: SignInLayoutProperties) { return ( <> diff --git a/src/app/[locale]/(auth)/sign-in/page.tsx b/src/app/[locale]/(auth)/sign-in/page.tsx index 044f3134..bf1aeb4f 100644 --- a/src/app/[locale]/(auth)/sign-in/page.tsx +++ b/src/app/[locale]/(auth)/sign-in/page.tsx @@ -1,12 +1,13 @@ import { currentUser } from "@clerk/nextjs"; -import { env } from "~/env.mjs"; -import { redirect } from "~/navigation"; import { getProviders } from "next-auth/react"; +import { getTranslations } from "next-intl/server"; +import { AuthPagesContent } from "~/core/auth/shared/islands/auth-pages-content"; import { seo } from "~/data/meta"; import { fullURL } from "~/data/meta/builder"; -import AuthPagesContent from "~/islands/content/auth-pages-content"; -import { getCurrentUser } from "~/utils/users"; +import { env } from "~/env.mjs"; +import { redirect } from "~/navigation"; +import { getCurrentUser } from "~/utils/auth/users"; export const metadata = seo({ metadataBase: fullURL(), @@ -15,20 +16,24 @@ export const metadata = seo({ }); export default async function SignInPage() { - let user: any; + const t = await getTranslations(); + let NextAuthProviders: any; + let user: any; if (env.NEXT_PUBLIC_AUTH_PROVIDER === "clerk") { user = await currentUser(); - } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { + if (user?.id) return redirect("/auth"); + } else { user = await getCurrentUser(); NextAuthProviders = await getProviders(); - if (!NextAuthProviders) return null; - if (user?.id) return redirect("/dashboard/stores"); - } else { - throw new Error( - "❌ [SiteHeader] `env.NEXT_PUBLIC_AUTH_PROVIDER` is not defined", - ); + if (!NextAuthProviders) { + console.error( + "❌ Specify at least one NextAuth.js provider or switch to Clerk (refer to .env.example)", + ); + return redirect("/"); + } + if (user?.id) return redirect("/auth"); } return ( @@ -36,6 +41,27 @@ export default async function SignInPage() { user={user} isRegPage={false} providers={NextAuthProviders} + // INTERNATIONALIZATION + tSignin={t("auth.error.default")} + tOAuthSignin={t("auth.error.default")} + tOAuthCallback={t("auth.error.default")} + tOAuthCreateAccount={t("auth.error.email")} + tEmailCreateAccount={t("auth.error.default")} + tCallback={t("auth.error.default")} + tOAuthAccountNotLinked={t("auth.error.oauthNotLinked")} + tDefault={t("auth.error.unknown")} + tUnknownError={t("auth.error.unknown-error")} + tPrivacy={t("auth.legal-privacy")} + tTerms={t("auth.legal-terms")} + tAnd={t("auth.legal-and")} + tSignUpLink={t("RegisterForm.title")} + tSignInLink={t("LoginForm.title")} + tAuthLegal={t("auth.legal")} + tSignUpHere={t("LoginForm.signup")} + tNoAccount={t("LoginForm.no-account")} + tSignInHere={t("RegisterForm.signin")} + tHaveAccount={t("RegisterForm.have-account")} + tPleaseWait={t("auth-provider.please-wait")} /> ); } diff --git a/src/app/[locale]/(auth)/sign-out/layout.tsx b/src/app/[locale]/(auth)/sign-out/layout.tsx index 43096015..774ef704 100644 --- a/src/app/[locale]/(auth)/sign-out/layout.tsx +++ b/src/app/[locale]/(auth)/sign-out/layout.tsx @@ -1,11 +1,13 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface SignOutLayoutProps { +interface SignOutLayoutProperties { children: React.ReactNode; } -export default async function SignOutLayout({ children }: SignOutLayoutProps) { +export default async function SignOutLayout({ + children, +}: SignOutLayoutProperties) { return ( <> diff --git a/src/app/[locale]/(auth)/sign-out/page.tsx b/src/app/[locale]/(auth)/sign-out/page.tsx index 8e99ee58..a30cb510 100644 --- a/src/app/[locale]/(auth)/sign-out/page.tsx +++ b/src/app/[locale]/(auth)/sign-out/page.tsx @@ -1,6 +1,7 @@ import { type Metadata } from "next"; import { fullURL } from "~/data/meta/builder"; +import { env } from "~/env.mjs"; import { LogOutButtons } from "~/islands/account/logout-buttons"; import { PageHeader, @@ -8,6 +9,8 @@ import { PageHeaderHeading, } from "~/islands/navigation/page-header"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { redirect } from "~/navigation"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -15,7 +18,10 @@ export const metadata: Metadata = { description: "Sign out of your account", }; -export default function SignOutPage() { +export default async function SignOutPage() { + const session = await getServerAuthSession(); + if (!session) return redirect("/"); + return ( diff --git a/src/app/[locale]/(auth)/sign-up/layout.tsx b/src/app/[locale]/(auth)/sign-up/layout.tsx index 79fb1651..cc3af66f 100644 --- a/src/app/[locale]/(auth)/sign-up/layout.tsx +++ b/src/app/[locale]/(auth)/sign-up/layout.tsx @@ -1,11 +1,13 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface SignUpLayoutProps { +interface SignUpLayoutProperties { children: React.ReactNode; } -export default async function SignUpLayout({ children }: SignUpLayoutProps) { +export default async function SignUpLayout({ + children, +}: SignUpLayoutProperties) { return ( <> diff --git a/src/app/[locale]/(auth)/sign-up/page.tsx b/src/app/[locale]/(auth)/sign-up/page.tsx index 2d2f2ea7..1f65de7f 100644 --- a/src/app/[locale]/(auth)/sign-up/page.tsx +++ b/src/app/[locale]/(auth)/sign-up/page.tsx @@ -1,12 +1,14 @@ import { currentUser } from "@clerk/nextjs"; -import { env } from "~/env.mjs"; -import { redirect } from "~/navigation"; import { getProviders } from "next-auth/react"; +import { useTranslations } from "next-intl"; +import { getTranslations } from "next-intl/server"; +import { AuthPagesContent } from "~/core/auth/shared/islands/auth-pages-content"; import { seo } from "~/data/meta"; import { fullURL } from "~/data/meta/builder"; -import AuthPagesContent from "~/islands/content/auth-pages-content"; -import { getCurrentUser } from "~/utils/users"; +import { env } from "~/env.mjs"; +import { redirect } from "~/navigation"; +import { getCurrentUser } from "~/utils/auth/users"; export const metadata = seo({ metadataBase: fullURL(), @@ -15,21 +17,24 @@ export const metadata = seo({ }); export default async function SignUpPage() { - // const user = await getCurrentUser(); - let user: any; + const t = await getTranslations(); + let NextAuthProviders: any; + let user: any; if (env.NEXT_PUBLIC_AUTH_PROVIDER === "clerk") { user = await currentUser(); - } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { + if (user?.id) return redirect("/auth"); + } else { user = await getCurrentUser(); NextAuthProviders = await getProviders(); - if (user?.id) return redirect("/dashboard/stores"); - if (!NextAuthProviders) return null; - } else { - throw new Error( - "❌ [SiteHeader] `env.NEXT_PUBLIC_AUTH_PROVIDER` is not defined", - ); + if (!NextAuthProviders) { + console.error( + "❌ Specify at least one NextAuth.js provider or switch to Clerk (refer to .env.example)", + ); + return redirect("/"); + } + if (user?.id) return redirect("/auth"); } return ( @@ -37,6 +42,27 @@ export default async function SignUpPage() { user={user} isRegPage={true} providers={NextAuthProviders} + // INTERNATIONALIZATION + tSignin={t("auth.error.default")} + tOAuthSignin={t("auth.error.default")} + tOAuthCallback={t("auth.error.default")} + tOAuthCreateAccount={t("auth.error.email")} + tEmailCreateAccount={t("auth.error.default")} + tCallback={t("auth.error.default")} + tOAuthAccountNotLinked={t("auth.error.oauthNotLinked")} + tDefault={t("auth.error.unknown")} + tUnknownError={t("auth.error.unknown-error")} + tPrivacy={t("auth.legal-privacy")} + tTerms={t("auth.legal-terms")} + tAnd={t("auth.legal-and")} + tSignUpLink={t("RegisterForm.title")} + tSignInLink={t("LoginForm.title")} + tAuthLegal={t("auth.legal")} + tSignUpHere={t("LoginForm.signup")} + tNoAccount={t("LoginForm.no-account")} + tSignInHere={t("RegisterForm.signin")} + tHaveAccount={t("RegisterForm.have-account")} + tPleaseWait={t("auth-provider.please-wait")} /> ); } diff --git a/src/app/[locale]/(blog)/blog/[...slug]/page.tsx b/src/app/[locale]/(blog)/blog/[...slug]/page.tsx index 9fd8a37a..cf158c86 100644 --- a/src/app/[locale]/(blog)/blog/[...slug]/page.tsx +++ b/src/app/[locale]/(blog)/blog/[...slug]/page.tsx @@ -1,17 +1,17 @@ import "~/styles/mdx.css"; import { type Metadata } from "next"; -import { env } from "~/env.mjs"; -import { Link } from "~/navigation"; import { cn } from "~/utils"; +import { env } from "~/env.mjs"; import { Icons } from "~/islands/icons"; import { buttonVariants } from "~/islands/primitives/button"; import { Separator } from "~/islands/primitives/separator"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { Link } from "~/navigation"; export async function generateMetadata(): Promise { - const url = env.NEXT_PUBLIC_APP_URL; + const url = env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"; const ogUrl = new URL(`${url}/api/og`); ogUrl.searchParams.set("type", "Blog Post"); diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/blocks.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/blocks.ts new file mode 100644 index 00000000..4a3b304d --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/blocks.ts @@ -0,0 +1,88 @@ +import { type AutoformatRule } from "@udecode/plate-autoformat"; +import { ELEMENT_BLOCKQUOTE } from "@udecode/plate-block-quote"; +import { + ELEMENT_CODE_BLOCK, + insertEmptyCodeBlock, +} from "@udecode/plate-code-block"; +import { ELEMENT_DEFAULT, insertNodes, setNodes } from "@udecode/plate-common"; +import { + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, +} from "@udecode/plate-heading"; +import { ELEMENT_HR } from "@udecode/plate-horizontal-rule"; + +import { preFormat } from "./funcs"; + +export const autoformatBlocks: AutoformatRule[] = [ + { + mode: "block", + type: ELEMENT_H1, + match: "# ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_H2, + match: "## ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_H3, + match: "### ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_H4, + match: "#### ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_H5, + match: "##### ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_H6, + match: "###### ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_BLOCKQUOTE, + match: "> ", + preFormat, + }, + { + mode: "block", + type: ELEMENT_CODE_BLOCK, + match: "```", + triggerAtBlockStart: false, + preFormat, + format: (editor) => { + insertEmptyCodeBlock(editor, { + defaultType: ELEMENT_DEFAULT, + insertNodesOptions: { select: true }, + }); + }, + }, + { + mode: "block", + type: ELEMENT_HR, + match: ["---", "—-", "___ "], + format: (editor) => { + setNodes(editor, { type: ELEMENT_HR }); + insertNodes(editor, { + type: ELEMENT_DEFAULT, + children: [{ text: "" }], + }); + }, + }, +]; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/funcs.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/funcs.ts new file mode 100644 index 00000000..6ebe2ef1 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/funcs.ts @@ -0,0 +1,43 @@ +import { type AutoformatBlockRule } from "@udecode/plate-autoformat"; +import { + ELEMENT_CODE_BLOCK, + ELEMENT_CODE_LINE, +} from "@udecode/plate-code-block"; +import { + getParentNode, + isElement, + isType, + type PlateEditor, +} from "@udecode/plate-common"; +import { toggleList, unwrapList } from "@udecode/plate-list"; +import toast from "react-hot-toast"; + +export const preFormat: AutoformatBlockRule["preFormat"] = (editor) => + unwrapList(editor); + +export const format = (editor: PlateEditor, customFormatting: () => void) => { + if (editor.selection) { + const parentEntry = getParentNode(editor, editor.selection); + if (!parentEntry) return; + const [node] = parentEntry; + if ( + isElement(node) && + !isType(editor, node, ELEMENT_CODE_BLOCK) && + !isType(editor, node, ELEMENT_CODE_LINE) + ) { + customFormatting(); + } + } +}; + +export const formatList = (editor: PlateEditor, elementType: string) => { + format(editor, () => + toggleList(editor, { + type: elementType, + }), + ); +}; + +export const formatText = (editor: PlateEditor, text: string) => { + format(editor, () => editor.insertText(text)); +}; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/indent-list.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/indent-list.ts new file mode 100644 index 00000000..9949f241 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/indent-list.ts @@ -0,0 +1,24 @@ +import { type AutoformatRule } from "@udecode/plate-autoformat"; +import { ListStyleType, toggleIndentList } from "@udecode/plate-indent-list"; + +export const autoformatIndentLists: AutoformatRule[] = [ + { + mode: "block", + type: "list", + match: ["* ", "- "], + format: (editor) => { + toggleIndentList(editor, { + listStyleType: ListStyleType.Disc, + }); + }, + }, + { + mode: "block", + type: "list", + match: ["1. ", "1) "], + format: (editor) => + toggleIndentList(editor, { + listStyleType: ListStyleType.Decimal, + }), + }, +]; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/index.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/index.ts new file mode 100644 index 00000000..66ad0082 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/index.ts @@ -0,0 +1,31 @@ +import { + autoformatArrow, + autoformatLegal, + autoformatLegalHtml, + autoformatMath, + autoformatPunctuation, + autoformatSmartQuotes, + type AutoformatPlugin, +} from "@udecode/plate-autoformat"; +import { type PlatePlugin } from "@udecode/plate-common"; + +import { autoformatBlocks } from "./blocks"; +import { autoformatIndentLists } from "./indent-list"; +import { autoformatMarks } from "./marks"; + +export const autoFormatConfig: Partial> = { + options: { + rules: [ + ...autoformatBlocks, + ...autoformatIndentLists, + ...autoformatMarks, + ...autoformatSmartQuotes, + ...autoformatPunctuation, + ...autoformatLegal, + ...autoformatLegalHtml, + ...autoformatArrow, + ...autoformatMath, + ], + enableUndoOnDelete: true, + }, +}; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/lists.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/lists.ts new file mode 100644 index 00000000..31eb04c6 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/lists.ts @@ -0,0 +1,46 @@ +import { type AutoformatRule } from "@udecode/plate-autoformat"; +import { isBlock, setNodes } from "@udecode/plate-common"; +import { + ELEMENT_LI, + ELEMENT_OL, + ELEMENT_TODO_LI, + ELEMENT_UL, + type TTodoListItemElement, +} from "@udecode/plate-list"; + +import { formatList, preFormat } from "./funcs"; + +export const autoformatLists: AutoformatRule[] = [ + { + mode: "block", + type: ELEMENT_LI, + match: ["* ", "- "], + preFormat, + format: (editor) => formatList(editor, ELEMENT_UL), + }, + { + mode: "block", + type: ELEMENT_LI, + match: ["1. ", "1) "], + preFormat, + format: (editor) => formatList(editor, ELEMENT_OL), + }, + { + mode: "block", + type: ELEMENT_TODO_LI, + match: "[] ", + }, + { + mode: "block", + type: ELEMENT_TODO_LI, + match: "[x] ", + format: (editor) => + setNodes( + editor, + { type: ELEMENT_TODO_LI, checked: true }, + { + match: (n) => isBlock(editor, n), + }, + ), + }, +]; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/auto-format/marks.ts b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/marks.ts new file mode 100644 index 00000000..d25b52f8 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/auto-format/marks.ts @@ -0,0 +1,84 @@ +import { type AutoformatRule } from "@udecode/plate-autoformat"; +import { + MARK_BOLD, + MARK_CODE, + MARK_ITALIC, + MARK_STRIKETHROUGH, + MARK_SUBSCRIPT, + MARK_SUPERSCRIPT, + MARK_UNDERLINE, +} from "@udecode/plate-basic-marks"; +import { MARK_HIGHLIGHT } from "@udecode/plate-highlight"; + +export const autoformatMarks: AutoformatRule[] = [ + { + mode: "mark", + type: [MARK_BOLD, MARK_ITALIC], + match: "***", + }, + { + mode: "mark", + type: [MARK_UNDERLINE, MARK_ITALIC], + match: "__*", + }, + { + mode: "mark", + type: [MARK_UNDERLINE, MARK_BOLD], + match: "__**", + }, + { + mode: "mark", + type: [MARK_UNDERLINE, MARK_BOLD, MARK_ITALIC], + match: "___***", + }, + { + mode: "mark", + type: MARK_BOLD, + match: "**", + }, + { + mode: "mark", + type: MARK_UNDERLINE, + match: "__", + }, + { + mode: "mark", + type: MARK_ITALIC, + match: "*", + }, + { + mode: "mark", + type: MARK_ITALIC, + match: "_", + }, + { + mode: "mark", + type: MARK_STRIKETHROUGH, + match: "~~", + }, + { + mode: "mark", + type: MARK_SUPERSCRIPT, + match: "^", + }, + { + mode: "mark", + type: MARK_SUBSCRIPT, + match: "~", + }, + { + mode: "mark", + type: MARK_HIGHLIGHT, + match: "==", + }, + { + mode: "mark", + type: MARK_HIGHLIGHT, + match: "≡", + }, + { + mode: "mark", + type: MARK_CODE, + match: "`", + }, +]; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/editor-placeholder.tsx b/src/app/[locale]/(blog)/blog/new/_islands/editor-placeholder.tsx new file mode 100644 index 00000000..5496c2b9 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/editor-placeholder.tsx @@ -0,0 +1,85 @@ +/** Reliverse CMS: Blog Post Editor */ + +import React from "react"; +import { + createNodeHOC, + createNodesHOC, + usePlaceholderState, + type CreateHOCOptions, + type PlaceholderProps, + type PlatePluginComponent, +} from "@udecode/plate-common"; +import { ELEMENT_H1 } from "@udecode/plate-heading"; +import { ELEMENT_PARAGRAPH } from "@udecode/plate-paragraph"; +import { cn } from "~/utils"; + +interface CustomPlaceholderProps extends PlaceholderProps { + children: React.ReactNode[]; +} + +type CustomPlaceholderChild = { + className?: string; + nodeProps: { + className?: string; + placeholder?: string; + }; +}; + +export const Placeholder = (props: CustomPlaceholderProps) => { + const { children, placeholder, nodeProps } = props; + + const { enabled } = usePlaceholderState(props); + + return React.Children.map(children, (child) => { + if (!React.isValidElement(child)) { + return child; + } + + const elementChild: React.ReactElement = child; + + return React.cloneElement(elementChild, { + className: elementChild.props.className, + nodeProps: { + ...nodeProps, + className: cn( + enabled && + "before:absolute before:cursor-text before:text-primary before:content-[attr(placeholder)]", + ), + placeholder, + }, + }); + }); +}; + +export const withPlaceholder = createNodeHOC(Placeholder); +export const withPlaceholdersPrimitive: ( + components: Record, + options: + | CreateHOCOptions + | CreateHOCOptions[], +) => Record = createNodesHOC(Placeholder); + +export const withPlaceholders = ( + components: Record, +) => + withPlaceholdersPrimitive(components, [ + { + key: ELEMENT_PARAGRAPH, + placeholder: "Type / for slash commands...", + hideOnBlur: true, + query: { + maxLevel: 1, + }, + }, + { + key: ELEMENT_H1, + placeholder: "Untitled", + hideOnBlur: false, + }, + ]); + +/** + * Learn more/inspirations: + * @see https://platejs.org + * @see https://github.com/noodle-run/noodle/blob/main/src/editor/index.tsx + */ diff --git a/src/app/[locale]/(blog)/blog/new/_islands/editor-plate.tsx b/src/app/[locale]/(blog)/blog/new/_islands/editor-plate.tsx new file mode 100644 index 00000000..412ac098 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/editor-plate.tsx @@ -0,0 +1,37 @@ +/** Reliverse CMS: Blog Post Editor */ + +"use client"; + +import { Plate } from "@udecode/plate-common"; +import { ELEMENT_H1 } from "@udecode/plate-heading"; + +import { plugins } from "./editor-plugins"; +import { Editor } from "./editor-ui"; + +export const PlateEditor = () => { + const initialValue = [ + { + id: "1", + type: ELEMENT_H1, + children: [{ text: "" }], + }, + ]; + + return ( + { + console.log(e); + }} + > + + + ); +}; + +/** + * Learn more/inspirations: + * @see https://platejs.org + * @see https://github.com/noodle-run/noodle/blob/main/src/editor/index.tsx + */ diff --git a/src/app/[locale]/(blog)/blog/new/_islands/editor-plugins.ts b/src/app/[locale]/(blog)/blog/new/_islands/editor-plugins.ts new file mode 100644 index 00000000..ab9c8bb5 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/editor-plugins.ts @@ -0,0 +1,193 @@ +/** Reliverse CMS: Blog Post Editor */ + +import { withCn, withProps } from "@udecode/cn"; +import { createAutoformatPlugin } from "@udecode/plate-autoformat"; +import { + createBasicMarksPlugin, + MARK_BOLD, + MARK_CODE, + MARK_ITALIC, + MARK_SUBSCRIPT, + MARK_SUPERSCRIPT, + MARK_UNDERLINE, +} from "@udecode/plate-basic-marks"; +import { ELEMENT_BLOCKQUOTE } from "@udecode/plate-block-quote"; +import { + createExitBreakPlugin, + createSoftBreakPlugin, +} from "@udecode/plate-break"; +import { + ELEMENT_CODE_BLOCK, + isCodeBlockEmpty, + isSelectionAtCodeBlockStart, + unwrapCodeBlock, +} from "@udecode/plate-code-block"; +import { + createHistoryPlugin, + createPlugins, + createReactPlugin, + isBlockAboveEmpty, + isSelectionAtBlockStart, + PlateLeaf, +} from "@udecode/plate-common"; +import { + createHeadingPlugin, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + KEYS_HEADING, +} from "@udecode/plate-heading"; +import { ELEMENT_HR } from "@udecode/plate-horizontal-rule"; +import { ELEMENT_TODO_LI } from "@udecode/plate-list"; +import { ELEMENT_IMAGE } from "@udecode/plate-media"; +import { createNodeIdPlugin } from "@udecode/plate-node-id"; +import { createNormalizeTypesPlugin } from "@udecode/plate-normalizers"; +import { + createParagraphPlugin, + ELEMENT_PARAGRAPH, +} from "@udecode/plate-paragraph"; +import { createResetNodePlugin } from "@udecode/plate-reset-node"; +import { createSelectOnBackspacePlugin } from "@udecode/plate-select"; +import { ELEMENT_TD } from "@udecode/plate-table"; +import { createTrailingBlockPlugin } from "@udecode/plate-trailing-block"; + +import { autoFormatConfig } from "./auto-format"; +import { withPlaceholders } from "./editor-placeholder"; +import { HeadingElement } from "./elements/heading"; +import { ParagraphElement } from "./elements/paragraph"; +import { BoldLeaf } from "./leafs/bold"; +import { CodeLeaf } from "./leafs/code"; + +const resetBlockTypesCommonRule = { + types: [ELEMENT_BLOCKQUOTE, ELEMENT_TODO_LI], + defaultType: ELEMENT_PARAGRAPH, +}; + +const resetBlockTypesCodeBlockRule = { + types: [ELEMENT_CODE_BLOCK], + defaultType: ELEMENT_PARAGRAPH, + onReset: unwrapCodeBlock, +}; + +export const plugins = createPlugins( + [ + // Essentials + createReactPlugin(), + createHistoryPlugin(), + + // Basic Elements + createParagraphPlugin(), + createHeadingPlugin(), + + // Marks + createBasicMarksPlugin(), + + // Functionality + createAutoformatPlugin(autoFormatConfig), + createExitBreakPlugin({ + options: { + rules: [ + { + hotkey: "mod+enter", + }, + { + hotkey: "mod+shift+enter", + before: true, + }, + { + hotkey: "enter", + query: { + start: true, + end: true, + allow: KEYS_HEADING, + }, + relative: true, + level: 1, + }, + ], + }, + }), + createNodeIdPlugin(), + createResetNodePlugin({ + options: { + rules: [ + { + ...resetBlockTypesCommonRule, + hotkey: "Enter", + predicate: isBlockAboveEmpty, + }, + { + ...resetBlockTypesCommonRule, + hotkey: "Backspace", + predicate: isSelectionAtBlockStart, + }, + { + ...resetBlockTypesCodeBlockRule, + hotkey: "Enter", + predicate: isCodeBlockEmpty, + }, + { + ...resetBlockTypesCodeBlockRule, + hotkey: "Backspace", + predicate: isSelectionAtCodeBlockStart, + }, + ], + }, + }), + createSelectOnBackspacePlugin({ + options: { + query: { + allow: [ELEMENT_IMAGE, ELEMENT_HR], + }, + }, + }), + createSoftBreakPlugin({ + options: { + rules: [ + { hotkey: "shift+enter" }, + { + hotkey: "enter", + query: { + allow: [ELEMENT_CODE_BLOCK, ELEMENT_BLOCKQUOTE, ELEMENT_TD], + }, + }, + ], + }, + }), + createTrailingBlockPlugin({ + options: { type: ELEMENT_PARAGRAPH }, + }), + createNormalizeTypesPlugin({ + options: { + rules: [{ path: [0], strictType: ELEMENT_H1 }], + }, + }), + ], + { + components: withPlaceholders({ + [ELEMENT_PARAGRAPH]: ParagraphElement, + // [ELEMENT_H1]: withCn(HeadingElement, { variant: "h1" }), + // [ELEMENT_H2]: withCn(HeadingElement, { variant: "h2" }), + // [ELEMENT_H3]: withCn(HeadingElement, { variant: "h3" }), + // [ELEMENT_H4]: withCn(HeadingElement, { variant: "h4" }), + // [ELEMENT_H5]: withCn(HeadingElement, { variant: "h5" }), + // [ELEMENT_H6]: withCn(HeadingElement, { variant: "h6" }), + + [MARK_BOLD]: BoldLeaf, + // [MARK_ITALIC]: withProps(PlateLeaf, { as: "em" }), + // [MARK_UNDERLINE]: withProps(PlateLeaf, { as: "u" }), + // [MARK_SUPERSCRIPT]: withProps(PlateLeaf, { as: "sup" }), + // [MARK_SUBSCRIPT]: withProps(PlateLeaf, { as: "sub" }), + [MARK_CODE]: CodeLeaf, + }), + }, +); + +/** + * Learn more/inspirations: + * @see https://platejs.org + * @see https://github.com/noodle-run/noodle/blob/main/src/editor/index.tsx + */ diff --git a/src/app/[locale]/(blog)/blog/new/_islands/editor-ui.tsx b/src/app/[locale]/(blog)/blog/new/_islands/editor-ui.tsx new file mode 100644 index 00000000..ad1b076f --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/editor-ui.tsx @@ -0,0 +1,35 @@ +/** Reliverse CMS: Blog Post Editor */ + +import React from "react"; +import { PlateContent } from "@udecode/plate-common"; +import type { PlateContentProps } from "@udecode/plate-common"; +import { cn } from "~/utils"; + +const Editor = React.forwardRef( + ({ className, disabled, readOnly, ...props }, ref) => { + return ( +
    + +
    + ); + }, +); + +Editor.displayName = "Editor"; + +export { Editor }; + +/** + * Learn more/inspirations: + * @see https://platejs.org + * @see https://github.com/noodle-run/noodle/blob/main/src/editor/index.tsx + */ diff --git a/src/app/[locale]/(blog)/blog/new/_islands/elements/heading.tsx b/src/app/[locale]/(blog)/blog/new/_islands/elements/heading.tsx new file mode 100644 index 00000000..471ab5c6 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/elements/heading.tsx @@ -0,0 +1,45 @@ +import { PlateElement, type PlateElementProps } from "@udecode/plate-common"; +import { cva, type VariantProps } from "class-variance-authority"; + +const headingVariants = cva("", { + variants: { + variant: { + h1: "mb-1 mt-[2em] text-4xl font-bold", + h2: "mb-px mt-[1.4em] text-2xl font-semibold tracking-tight", + h3: "mb-px mt-[1em] text-xl font-semibold tracking-tight", + h4: "mt-[0.75em] text-lg font-semibold tracking-tight", + h5: "mt-[0.75em] text-lg font-semibold tracking-tight", + h6: "mt-[0.75em] text-base font-semibold tracking-tight", + }, + isFirstBlock: { + true: "!mt-0", + false: "", + }, + }, +}); + +export function HeadingElement({ + className, + variant = "h1", + children, + ...props +}: PlateElementProps & VariantProps) { + const { element, editor } = props; + + // biome-ignore lint/style/noNonNullAssertion: + const Element = variant!; + + return ( + + {children} + + ); +} diff --git a/src/app/[locale]/(blog)/blog/new/_islands/elements/paragraph.tsx b/src/app/[locale]/(blog)/blog/new/_islands/elements/paragraph.tsx new file mode 100644 index 00000000..fccb06b1 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/elements/paragraph.tsx @@ -0,0 +1,22 @@ +import React from "react"; +import { PlateElement, type PlateElementProps } from "@udecode/plate-common"; +import { cn } from "~/utils"; + +const ParagraphElement = React.forwardRef< + React.ElementRef, + PlateElementProps +>(({ className, children, ...props }: PlateElementProps, ref) => { + return ( + + {children} + + ); +}); + +ParagraphElement.displayName = "ParagraphElement"; + +export { ParagraphElement }; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/leafs/bold.tsx b/src/app/[locale]/(blog)/blog/new/_islands/leafs/bold.tsx new file mode 100644 index 00000000..b5022ff9 --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/leafs/bold.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import { PlateLeaf, type PlateLeafProps } from "@udecode/plate-common"; +import { cn } from "~/utils"; + +const BoldLeaf = React.forwardRef< + React.ElementRef, + PlateLeafProps +>(({ className, children, ...props }: PlateLeafProps, ref) => { + return ( + + {children} + + ); +}); + +BoldLeaf.displayName = "BoldLeaf"; + +export { BoldLeaf }; diff --git a/src/app/[locale]/(blog)/blog/new/_islands/leafs/code.tsx b/src/app/[locale]/(blog)/blog/new/_islands/leafs/code.tsx new file mode 100644 index 00000000..ec1323bf --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/_islands/leafs/code.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import { PlateLeaf, type PlateLeafProps } from "@udecode/plate-common"; +import { cn } from "~/utils"; + +const CodeLeaf = React.forwardRef< + React.ElementRef, + PlateLeafProps +>(({ className, children, ...props }: PlateLeafProps, ref) => { + return ( + + {children} + + ); +}); + +CodeLeaf.displayName = "CodeLeaf"; + +export { CodeLeaf }; diff --git a/src/app/[locale]/(blog)/blog/new/page.tsx b/src/app/[locale]/(blog)/blog/new/page.tsx new file mode 100644 index 00000000..158e3c5d --- /dev/null +++ b/src/app/[locale]/(blog)/blog/new/page.tsx @@ -0,0 +1,17 @@ +/** Reliverse CMS: Blog Post Editor */ + +import { PlateEditor } from "./_islands/editor-plate"; + +export default function EditorPage() { + return ( + <> + + + ); +} + +/** + * Learn more/inspirations: + * @see https://platejs.org + * @see https://github.com/noodle-run/noodle/blob/main/src/editor/index.tsx + */ diff --git a/src/app/[locale]/(blog)/blog/page.tsx b/src/app/[locale]/(blog)/blog/page.tsx index 1eab3cba..e7b40920 100644 --- a/src/app/[locale]/(blog)/blog/page.tsx +++ b/src/app/[locale]/(blog)/blog/page.tsx @@ -1,4 +1,9 @@ import { type Metadata } from "next"; +import { + dehydrate, + HydrationBoundary, + QueryClient, +} from "@tanstack/react-query"; import { fullURL } from "~/data/meta/builder"; import { @@ -6,6 +11,7 @@ import { PageHeaderDescription, PageHeaderHeading, } from "~/islands/navigation/page-header"; +import { Button } from "~/islands/primitives/button"; import { Separator } from "~/islands/primitives/separator"; import { Shell } from "~/islands/wrappers/shell-variants"; @@ -29,7 +35,9 @@ export default function BlogPage() { id="blog-posts" aria-labelledby="blog-posts-heading" className="grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4" - >

+ > + Blog still in development. Please check back later. +
); } diff --git a/src/app/[locale]/(blog)/layout.tsx b/src/app/[locale]/(blog)/layout.tsx index b50248cc..70bac13d 100644 --- a/src/app/[locale]/(blog)/layout.tsx +++ b/src/app/[locale]/(blog)/layout.tsx @@ -1,17 +1,17 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface BlogLayoutProps { +interface BlogLayoutProperties { children: React.ReactNode; } -export default async function BlogLayout({ children }: BlogLayoutProps) { +export default async function BlogLayout({ children }: BlogLayoutProperties) { return ( <> -
-
{children}
-
+
+ {children} +
); diff --git a/src/app/[locale]/(cms)/layout.tsx b/src/app/[locale]/(cms)/layout.tsx new file mode 100644 index 00000000..bc4256d1 --- /dev/null +++ b/src/app/[locale]/(cms)/layout.tsx @@ -0,0 +1,24 @@ +/** + * Reliverse CMS v0.3.0 — /dashboard/admin + * ======================================== + * @see https://github.com/blefnk/reliverse + */ + +import { SiteFooter } from "~/islands/navigation/site-footer"; +import { SiteHeader } from "~/islands/navigation/site-header"; + +type MainLayoutProperties = { + children: React.ReactNode; +}; + +export default async function CmsMainLayout({ + children, +}: MainLayoutProperties) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app/[locale]/(legal)/layout.tsx b/src/app/[locale]/(legal)/layout.tsx index c0c0f6a0..412b9801 100644 --- a/src/app/[locale]/(legal)/layout.tsx +++ b/src/app/[locale]/(legal)/layout.tsx @@ -1,10 +1,10 @@ import { type ReactNode } from "react"; -import { Link } from "~/navigation"; import { ChevronLeftIcon } from "lucide-react"; import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; import { Button } from "~/islands/primitives/button"; +import { Link } from "~/navigation"; type Props = { children?: ReactNode; diff --git a/src/app/[locale]/(legal)/privacy/page.tsx b/src/app/[locale]/(legal)/privacy/page.tsx index e8dd83a6..9ed1ef6d 100644 --- a/src/app/[locale]/(legal)/privacy/page.tsx +++ b/src/app/[locale]/(legal)/privacy/page.tsx @@ -1,9 +1,29 @@ +import { Button } from "~/islands/primitives/button"; +import { Card, CardContent, CardHeader } from "~/islands/primitives/card"; + import Content from "./content.mdx"; export default function PrivacyPage() { return ( -
+
+
+ + Cookie Management + +

+ We use cookies to improve your experience on our website. Cookies + are stored only in your browser. By browsing this website, you agree + to our use of cookies. +

+

+ {/* You can remove stored cookies by clicking the button below. */} + You can disallow cookie storing in your browser settings. However, + this may affect your ability to use our website. +

+ +
+
); } diff --git a/src/app/[locale]/(legal)/terms/content.mdx b/src/app/[locale]/(legal)/terms/content.mdx index 4e47bf68..6cadaa2e 100644 --- a/src/app/[locale]/(legal)/terms/content.mdx +++ b/src/app/[locale]/(legal)/terms/content.mdx @@ -2,7 +2,7 @@ import { siteConfig } from "~/app"; # Terms of Service -_Last updated: April 20, 2023_ +_Last updated: December 27, 2023_ ## 1. Introduction diff --git a/src/app/[locale]/(legal)/terms/page.tsx b/src/app/[locale]/(legal)/terms/page.tsx index eba5ca42..970c2f1c 100644 --- a/src/app/[locale]/(legal)/terms/page.tsx +++ b/src/app/[locale]/(legal)/terms/page.tsx @@ -2,7 +2,7 @@ import Content from "./content.mdx"; export default function TermsPage() { return ( -
+
); diff --git a/src/app/[locale]/(main)/(checkout)/cart/layout.tsx b/src/app/[locale]/(main)/(checkout)/cart/layout.tsx index a755edbf..172abcba 100644 --- a/src/app/[locale]/(main)/(checkout)/cart/layout.tsx +++ b/src/app/[locale]/(main)/(checkout)/cart/layout.tsx @@ -1,13 +1,13 @@ import Link from "next/link"; import { redirect } from "next/navigation"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; -interface CartLayoutProps { +interface CartLayoutProperties { children: React.ReactNode; } -export default async function CartLayout({ children }: CartLayoutProps) { +export default async function CartLayout({ children }: CartLayoutProperties) { const user = await getServerAuthSession(); if (!user) redirect("/auth"); diff --git a/src/app/[locale]/(main)/(checkout)/cart/page.tsx b/src/app/[locale]/(main)/(checkout)/cart/page.tsx index e232dd32..74919770 100644 --- a/src/app/[locale]/(main)/(checkout)/cart/page.tsx +++ b/src/app/[locale]/(main)/(checkout)/cart/page.tsx @@ -1,10 +1,10 @@ -import { type Metadata } from "next"; -import { cookies } from "next/headers"; -import { env } from "~/env.mjs"; -import { Link } from "~/navigation"; +import type { Metadata } from "next"; import { cn } from "~/utils"; +import { and, eq } from "drizzle-orm"; -import { getUniqueStoreIds } from "~/server/actions/cart"; +import { db } from "~/data/db"; +import { products } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { Icons } from "~/islands/icons"; import { CheckoutCard } from "~/islands/modules/cards/checkout-card"; import { @@ -14,21 +14,25 @@ import { } from "~/islands/navigation/page-header"; import { buttonVariants } from "~/islands/primitives/button"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { Link } from "~/navigation"; +import { getUniqueStoreIds } from "~/server/actions/cart"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), - title: "Cart", + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), description: "Checkout with your cart items", + title: "Cart", }; export default async function CartPage() { - const uniqueStoreIds = (await getUniqueStoreIds()) as number[]; + // console.log("⏳ awaiting getUniqueStoreIds for uniqueStoreIds..."); + const uniqueStoreIds = await getUniqueStoreIds(); + // console.log("...uniqueStoreIds:", uniqueStoreIds); return ( Checkout @@ -36,15 +40,14 @@ export default async function CartPage() { - {uniqueStoreIds.length > 0 ? ( + {uniqueStoreIds.length > 0 ? uniqueStoreIds.map((storeId) => ( - + )) - ) : ( -
Add items to your cart to checkout
- )} + }
); } diff --git a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/page.tsx b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/page.tsx index db90c2a3..b84401a8 100644 --- a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/page.tsx +++ b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/page.tsx @@ -1,15 +1,17 @@ import { type Metadata } from "next"; import { notFound } from "next/navigation"; import { ArrowLeftIcon } from "@radix-ui/react-icons"; -import { siteConfig } from "~/app"; -import { env } from "~/env.mjs"; -import { Link } from "~/navigation"; import { cn, formatPrice } from "~/utils"; import { eq } from "drizzle-orm"; -import { getCartAction } from "~/server/actions/cart"; +import { siteConfig } from "~/app"; +import { + createPaymentIntentAction, + getStripeAccountAction, +} from "~/core/stripe/actions"; import { db } from "~/data/db"; import { stores } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { CheckoutForm } from "~/forms/checkout-form"; import { CartLineItems } from "~/islands/checkout/cart-line-items"; import { CheckoutShell } from "~/islands/checkout/checkout-shell"; @@ -21,26 +23,23 @@ import { } from "~/islands/primitives/drawer"; import { ScrollArea } from "~/islands/primitives/scroll-area"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { - createPaymentIntentAction, - getStripeAccountAction, -} from "~/utils/stripe/actions"; +import { Link } from "~/navigation"; +import { getCartAction } from "~/server/actions/cart"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), title: "Checkout", description: "Checkout with store items", }; -interface CheckoutPageProps { +interface CheckoutPageProperties { params: { storeId: string; }; } -export default async function CheckoutPage({ params }: CheckoutPageProps) { +export default async function CheckoutPage({ params }: CheckoutPageProperties) { const appName = siteConfig.name; - const appUrl = siteConfig.url.base ?? ""; const storeId = Number(params.storeId); @@ -63,6 +62,7 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) { storeId, }); + // console.log("CheckoutPage's await getCartAction"); const cartLineItems = await getCartAction(storeId); const paymentIntent = createPaymentIntentAction({ @@ -70,10 +70,45 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) { items: cartLineItems, }); - const total = cartLineItems.reduce( - (total, item) => total + item.quantity * Number(item.price), - 0, - ); + let total = 0; + let totalQuantity = 0; + + // Calculation of total price + try { + total = cartLineItems.reduce( + (total, item) => total + (item.quantity ?? 0) * Number(item.price ?? 0), + 0, + ); + } catch (error) { + if (error instanceof Error) { + console.error("❌ Error calculating total:", error.message); + total = 0; // Set default variable value in case of an error + } else { + // If for any reason something else was + // thrown that wasn't an Error, handle it + console.error("❌ An unexpected error occurred:", error); + } + } + + // Component for displaying total quantity + const TotalQuantity = () => { + try { + totalQuantity = cartLineItems.reduce( + (acc, item) => acc + (item.quantity ?? 0), + 0, + ); + } catch (error) { + if (error instanceof Error) { + console.error("❌ Error in totalQuantity:", error.message); + totalQuantity = 0; // Set default value in case of an error + } else { + // If for any reason something else was + // thrown that wasn't an Error, handle it + console.error("❌ An unexpected error occurred:", error); + } + } + return
Total ({totalQuantity})
; + }; if (!(isConnected && store.stripeAccountId)) { return ( @@ -108,7 +143,7 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) { return (
-
+
-
- Total ( - {cartLineItems.reduce( - (acc, item) => acc + item.quantity, - 0, - )} - ) -
+
{formatPrice(total)}
@@ -156,7 +184,7 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) {
-
+
{env.DEV_DEMO_NOTES === "true" && "Test data can be used: 4242424242424242 | 12/34 | 567"}
diff --git a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/loading.tsx b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/loading.tsx index 1a15ab39..3c558a1d 100644 --- a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/loading.tsx +++ b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/loading.tsx @@ -22,6 +22,7 @@ export default function OrderSuccessLoading() {
{Array.from({ length: 4 }).map((_, i) => ( + // biome-ignore lint/suspicious/noArrayIndexKey:
diff --git a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/page.tsx b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/page.tsx index 9601c010..986d9211 100644 --- a/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/page.tsx +++ b/src/app/[locale]/(main)/(checkout)/checkout/[storeId]/success/page.tsx @@ -1,13 +1,13 @@ import { type Metadata } from "next"; import Link from "next/link"; -import { env } from "~/env.mjs"; import { type CheckoutItem } from "~/types"; import { cn, formatPrice } from "~/utils"; import { eq } from "drizzle-orm"; -import { getOrderLineItemsAction } from "~/server/actions/order"; +import { getPaymentIntentAction } from "~/core/stripe/actions"; import { db } from "~/data/db"; import { stores } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { CartLineItems } from "~/islands/checkout/cart-line-items"; import { VerifyOderForm } from "~/islands/checkout/verify-order-form"; import { @@ -17,27 +17,25 @@ import { } from "~/islands/navigation/page-header"; import { buttonVariants } from "~/islands/primitives/button"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { getPaymentIntentAction } from "~/utils/stripe/actions"; +import { deleteCartAction, deleteCartItemAction } from "~/server/actions/cart"; +import { getOrderLineItemsAction } from "~/server/actions/order"; +import { getCartId } from "~/server/cart"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), title: "Order Success", description: "Order summary for your purchase", }; -interface OrderSuccessPageProps { - params: { - storeId: string; - }; - searchParams: { - [key: string]: string | string[] | undefined; - }; +interface OrderSuccessPageProperties { + params: { storeId: string }; + searchParams: { [key: string]: string | string[] | undefined }; } export default async function OrderSuccessPage({ params, searchParams, -}: OrderSuccessPageProps) { +}: OrderSuccessPageProperties) { const storeId = Number(params.storeId); const { payment_intent, @@ -53,37 +51,42 @@ export default async function OrderSuccessPage({ where: eq(stores.id, storeId), }); - const { isVerified, paymentIntent } = await getPaymentIntentAction({ + /* const { isVerified, paymentIntent } = await getPaymentIntentAction({ storeId, paymentIntentId: typeof payment_intent === "string" ? payment_intent : "", deliveryPostalCode: typeof delivery_postal_code === "string" ? delivery_postal_code : "", - }); + }); */ - const lineItems = + /* const lineItems = isVerified && paymentIntent ? await getOrderLineItemsAction({ storeId, items: paymentIntent?.metadata?.items, paymentIntent, }) - : []; + : []; */ + + // TODO: REMOVE !! TEMPORARY SOLUTION + const cartId = await getCartId(); + if (cartId) await deleteCartAction(); + // TODO: REMOVE !! TEMPORARY SOLUTION return (
- {isVerified ? ( -
- - Thank you for your order - - {store?.name ?? "Store"} will be in touch with you shortly - - -
+ + Thank you for your order + + {store?.name ?? "Store"} will be in touch with you shortly + + + {/*
-
-
- - Continue shopping - - - Back to cart - -
- - ) : ( + */} + + + {/* ) : (
Thank you for your order + + {store?.name ?? "Store"} will be in touch with you shortly + Please enter your delivery postal code to verify your order @@ -162,7 +138,57 @@ export default async function OrderSuccessPage({ className="mx-auto w-full max-w-md pt-40" />
- )} + )} */} ); } + +function OrderSuccessActions() { + return ( +
+ + Continue shopping + + {/* + Back to cart + */} + + Back to home + +
+ ); +} diff --git a/src/app/[locale]/(main)/(checkout)/checkout/layout.tsx b/src/app/[locale]/(main)/(checkout)/checkout/layout.tsx index a5149387..fd8cc0b4 100644 --- a/src/app/[locale]/(main)/(checkout)/checkout/layout.tsx +++ b/src/app/[locale]/(main)/(checkout)/checkout/layout.tsx @@ -1,14 +1,14 @@ import { redirect } from "next/navigation"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; -interface CheckoutLayoutProps { +interface CheckoutLayoutProperties { children: React.ReactNode; } export default async function CheckoutLayout({ children, -}: CheckoutLayoutProps) { +}: CheckoutLayoutProperties) { const user = await getServerAuthSession(); if (!user) redirect("/auth"); diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/loading.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/loading.tsx new file mode 100644 index 00000000..47eaa678 --- /dev/null +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/loading.tsx @@ -0,0 +1,30 @@ +import { + PageHeader, + PageHeaderDescription, + PageHeaderHeading, +} from "~/islands/navigation/page-header"; +import { Skeleton } from "~/islands/primitives/skeleton"; +import { Shell } from "~/islands/wrappers/shell-variants"; + +export default function PurchasesLoading() { + return ( + + + Purchases + + Manage your purchases + + +
+
+ + +
+ +
+
+ ); +} diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/page.tsx new file mode 100644 index 00000000..5394dbe0 --- /dev/null +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/account/manage/page.tsx @@ -0,0 +1,41 @@ +import { type Metadata } from "next"; +import { redirect } from "next/navigation"; + +import { fullURL } from "~/data/meta/builder"; +import { + PageHeader, + PageHeaderDescription, + PageHeaderHeading, +} from "~/islands/navigation/page-header"; +import { Shell } from "~/islands/wrappers/shell-variants"; +import { getServerAuthSession } from "~/utils/auth/users"; + +export const metadata: Metadata = { + metadataBase: fullURL(), + title: "Subscription", + description: "Manage your subscription", +}; + +// /dashboard/account/manage +// todo: add a link to the Stripe portal +export default async function ManageSubscriptionPage() { + const session = await getServerAuthSession(); + if (!session) redirect("/auth"); + + return ( + + + + Manage Your Subscription + + + Manage your subscription + + +
The page is still in production. Please check back here later.
+
+ ); +} diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/account/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/account/page.tsx index 0556e250..ef897469 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/account/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/account/page.tsx @@ -1,17 +1,17 @@ import Link from "next/link"; import { redirect } from "next/navigation"; -import { env } from "~/env.mjs"; +import { UserProfileClerk } from "~/core/auth/clerkjs/islands/user-profile-clerk"; import { seo } from "~/data/meta"; import { fullURL } from "~/data/meta/builder"; -import { UserProfileClerk } from "~/islands/account/user-profile-clerk"; +import { env } from "~/env.mjs"; import { PageHeader, PageHeaderDescription, PageHeaderHeading, } from "~/islands/navigation/page-header"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata = seo({ metadataBase: fullURL(), @@ -51,7 +51,7 @@ export default async function ProfilesPage() { {env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs" && ( <> -

+

This page is under construction.
Please{" "} @@ -65,7 +65,7 @@ export default async function ProfilesPage() { {debug && ( <> -

+

[localhost-debug-mode-user-object]

diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/billing/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/billing/page.tsx
index ec1b33fd..e47ae09c 100644
--- a/src/app/[locale]/(main)/(dashboard)/dashboard/billing/page.tsx
+++ b/src/app/[locale]/(main)/(dashboard)/dashboard/billing/page.tsx
@@ -1,23 +1,29 @@
 import { type Metadata } from "next";
 import { redirect } from "next/navigation";
 import { CheckIcon } from "@radix-ui/react-icons";
-import { env } from "~/env.mjs";
 import type { SubscriptionPlanTypes, UserSubscriptionPlan } from "~/types";
 import { cn, formatDate, formatPrice } from "~/utils";
+import { desc, eq, sql } from "drizzle-orm";
 
-import { storeSubscriptionPlans } from "~/server/config/subscriptions";
+import { getSubscriptionPlanAction } from "~/core/stripe/actions";
+import { db } from "~/data/db";
+import { products, stores, users } from "~/data/db/schema";
 import { fullURL } from "~/data/meta/builder";
+import { env } from "~/env.mjs";
 import { ButtonManageSubscription } from "~/forms/manage-subscription-form";
 import {
   PageHeader,
   PageHeaderDescription,
   PageHeaderHeading,
 } from "~/islands/navigation/page-header";
+import { buttonVariants } from "~/islands/primitives/button";
 import { Card } from "~/islands/primitives/card";
 import { Separator } from "~/islands/primitives/separator";
 import { Shell } from "~/islands/wrappers/shell-variants";
-import { getSubscriptionPlanAction } from "~/utils/stripe/actions";
-import { getServerAuthSession } from "~/utils/users";
+import { Link } from "~/navigation";
+import { storeSubscriptionPlans } from "~/server/config/subscriptions";
+import { getDashboardRedirectPath, getPlanFeatures } from "~/server/subs";
+import { getServerAuthSession } from "~/utils/auth/users";
 
 export const metadata: Metadata = {
   metadataBase: fullURL(),
@@ -31,6 +37,25 @@ export default async function BillingPage() {
 
   const userPlanInfo = await getSubscriptionPlanAction(user.id);
 
+  const allStores = await db
+    .select({
+      id: stores.id,
+      name: stores.name,
+      description: stores.description,
+      stripeAccountId: stores.stripeAccountId,
+    })
+    .from(stores)
+    .leftJoin(products, eq(products.storeId, stores.id))
+    .groupBy(stores.id)
+    .orderBy(desc(stores.stripeAccountId), desc(sql`count(*)`))
+    .where(eq(stores.userId, user.id));
+
+  const subscriptionPlan = await getSubscriptionPlanAction(user.id);
+
+  const { maxStoreCount, maxProductCount } = getPlanFeatures(
+    subscriptionPlan?.id,
+  );
+
   return (
     
       
-        Billing
+        
+ Billing + + Create store + +
Manage your billing and subscription @@ -48,19 +89,31 @@ export default async function BillingPage() { aria-labelledby="billing-info-heading" className="space-y-5" > +

+ Subscription Plans +

-

- Current Subscription Is {userPlanInfo?.name ?? "Starter"} -

- {!userPlanInfo?.isSubscribed - ? "Upgrade to create more stores and products " - : userPlanInfo.isCanceled - ? "Your plan will be canceled on " - : "Your plan renews on "} - {userPlanInfo?.stripeCurrentPeriodEnd - ? `${formatDate(userPlanInfo.stripeCurrentPeriodEnd)}.` - : null} + Your current plan is{" "} + + {subscriptionPlan?.name ?? "Starter"} + + . + {!userPlanInfo?.isSubscribed ? + " Upgrade to create more stores and products " + : userPlanInfo.isCanceled ? + " Your plan will be canceled on " + : " It renews on "} + {userPlanInfo?.stripeCurrentPeriodEnd ? + `${formatDate(userPlanInfo.stripeCurrentPeriodEnd)}. ` + : null} + This plan allows you to create{" "} + up to {maxStoreCount} stores{" "} + and include{" "} + + up to {maxProductCount} products + {" "} + per store.

@@ -69,17 +122,32 @@ export default async function BillingPage() { aria-labelledby="subscription-plans-heading" className="space-y-5 pb-2.5" > -

- Subscription Plans -

+ {env.DEV_DEMO_NOTES === "true" && ( +

+ [demo-only-msg] When using buttons below {" -> "} use Stripe Test + Card data: + 4242424242424242 + | + 12/34 + | + 567 +

+ )} {env.NODE_ENV === "development" && ( - - [localhost-only-message]: Ensure you have the `.env` file correctly - filled out and `pnpm stripe:listen` running before using the buttons +

+ [localhost-notice] Ensure you have correctly filled out the{" "} + `.env` file and have{" "} + `pnpm stripe:listen` running{" "} + before using the buttons below. - +
+ [localhost-notice]{" "} + Buttons are hidden if{" "} + NEXT_PUBLIC_APP_URL and Stripe environment variable keys are + missing. Refer to .env.example file. +

)} -
+
{storeSubscriptionPlans.map((planInfo, index) => ( -

+

{planInfo.name}

-

+

{pricing} /month

-
+
{planInfo.description}
-
    +
      {planInfo.features.map((feature) => (
    • ))}
    - + {env.NEXT_PUBLIC_APP_URL && + env.STRIPE_SECRET_KEY && + env.STRIPE_WEBHOOK_SIGNING_SECRET && + env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY && + (env.STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID || + env.STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID) && ( + + )} + {/* {process.env.NODE_ENV === "development" && ( +
    +

    [localhost-debug]:

    +

    mapPlanId: {planInfo.id}

    +

    isCurrentPlan: {String(isCurrentPlan)}

    +

    isSubscribed: {String(isSubscribed)}

    +

    stripeCustomerId: {userPlanInfo?.stripeCustomerId}

    +

    stripePriceId: {planInfo.stripePriceId}

    +

    stripeSubscriptionId: {userPlanInfo?.stripeSubscriptionId}

    +
    + )} */}
); } diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/page.tsx index ff5ca9db..563a0203 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/page.tsx @@ -1,5 +1,5 @@ import { redirect } from "~/navigation"; export default function DashboardPage() { - return redirect("/dashboard/stores"); + return redirect("/dashboard/billing"); } diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/purchases/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/purchases/page.tsx index 557a4878..9f91ed53 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/purchases/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/purchases/page.tsx @@ -8,7 +8,7 @@ import { PageHeaderHeading, } from "~/islands/navigation/page-header"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata: Metadata = { metadataBase: fullURL(), diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/settings/email/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/settings/email/page.tsx index 9ce4e3e8..fed4c155 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/settings/email/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/settings/email/page.tsx @@ -1,9 +1,9 @@ -import { type Metadata } from "next"; +import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { eq } from "drizzle-orm"; import { db } from "~/data/db"; -import { emailPreferences } from "~/data/db/schema"; +import { emails } from "~/data/db/schema"; import { fullURL } from "~/data/meta/builder"; import { UpdateEmailPreferencesForm } from "~/forms/update-email-preferences-form"; import { PageHeader } from "~/islands/navigation/page-header"; @@ -22,7 +22,7 @@ export const metadata: Metadata = { description: "Manage your email preferences", }; -interface EmailPreferencesPageProps { +interface EmailPreferencesPageProperties { searchParams: { [key: string]: string | string[] | undefined; }; @@ -30,12 +30,12 @@ interface EmailPreferencesPageProps { export default async function EmailPreferencesPage({ searchParams, -}: EmailPreferencesPageProps) { +}: EmailPreferencesPageProperties) { const token = typeof searchParams.token === "string" ? searchParams.token : ""; - const emailPreference = await db.query.emailPreferences.findFirst({ - where: eq(emailPreferences.token, token), + const emailPreference = await db.query.emails.findFirst({ + where: eq(emails.token, token), }); if (!emailPreference) { diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/settings/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/settings/page.tsx index c07d7e83..5d8f891b 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/settings/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/settings/page.tsx @@ -4,7 +4,6 @@ import { getProviders } from "next-auth/react"; import { seo } from "~/data/meta"; import { fullURL } from "~/data/meta/builder"; -import SettingsPageContent from "~/islands/content/settings-content"; import { PageHeader, PageHeaderDescription, @@ -54,7 +53,6 @@ export default async function ProfilesPage() { {" "} page for now. - {/* */} {/* {store.name} - {allStores.length > 1 ? ( + {allStores.length > 1 ? - ) : null} + : null}
diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/orders/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/orders/page.tsx index 0a3b4d14..89fd72c3 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/orders/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/orders/page.tsx @@ -1,19 +1,19 @@ -import { type Metadata } from "next"; +import type { Metadata } from "next"; import { notFound } from "next/navigation"; -import { env } from "~/env.mjs"; import { and, asc, desc, eq, like, sql } from "drizzle-orm"; import { db } from "~/data/db"; import { orders, stores, type Order } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { OrdersTableShell } from "~/islands/wrappers/orders-table-shell"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), title: "Orders", description: "Manage your orders", }; -interface OrdersPageProps { +interface OrdersPageProperties { params: { storeId: string; }; @@ -25,17 +25,14 @@ interface OrdersPageProps { export default async function OrdersPage({ params, searchParams, -}: OrdersPageProps) { +}: OrdersPageProperties) { const storeId = Number(params.storeId); const { page, per_page, sort, email } = searchParams ?? {}; const store = await db.query.stores.findFirst({ where: eq(stores.id, storeId), - columns: { - id: true, - name: true, - }, + columns: { id: true, name: true }, }); if (!store) { @@ -46,19 +43,16 @@ export default async function OrdersPage({ const limit = typeof per_page === "string" ? parseInt(per_page) : 10; // Number of items to skip const offset = - typeof page === "string" - ? parseInt(page) > 0 - ? (parseInt(page) - 1) * limit - : 0 - : 0; + typeof page === "string" ? + parseInt(page) > 0 ? + (parseInt(page) - 1) * limit + : 0 + : 0; // Column and order to sort by const [column, order] = - typeof sort === "string" - ? (sort.split(".") as [ - keyof Order | undefined, - "asc" | "desc" | undefined, - ]) - : []; + typeof sort === "string" ? + (sort.split(".") as [keyof Order | undefined, "asc" | "desc" | undefined]) + : []; // Transaction is used to ensure both queries are executed in a single transaction const { items, total } = await db.transaction(async (tx) => { @@ -71,17 +65,17 @@ export default async function OrdersPage({ and( eq(orders.storeId, storeId), // Filter by name - typeof email === "string" - ? like(orders.email, `%${email}%`) - : undefined, + typeof email === "string" ? + like(orders.email, `%${email}%`) + : undefined, ), ) .orderBy( - column && column in orders - ? order === "asc" - ? asc(orders[column]) - : desc(orders[column]) - : desc(orders.createdAt), + column && column in orders ? + order === "asc" ? + asc(orders[column]) + : desc(orders[column]) + : desc(orders.createdAt), ); const total = await tx @@ -93,9 +87,9 @@ export default async function OrdersPage({ and( eq(orders.storeId, storeId), // Filter by name - typeof email === "string" - ? like(orders.email, `%${email}%`) - : undefined, + typeof email === "string" ? + like(orders.email, `%${email}%`) + : undefined, ), ) .then((res) => res[0]?.count ?? 0); @@ -108,5 +102,7 @@ export default async function OrdersPage({ const pageCount = Math.ceil(total / limit); - return ; + // TODO: UNCOMMENT !! TEMP SOLUTION + // return ; + return

Orders

; } diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/page.tsx index 0a97d87a..12053598 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/page.tsx @@ -1,10 +1,11 @@ import { type Metadata } from "next"; import { revalidatePath } from "next/cache"; import { notFound, redirect } from "next/navigation"; -import { Link } from "~/navigation"; import { cn, formatDate } from "~/utils"; import { and, eq, not } from "drizzle-orm"; +import toast from "react-hot-toast"; +import { getStripeAccountAction } from "~/core/stripe/actions"; import { db } from "~/data/db"; import { products, stores } from "~/data/db/schema"; import { fullURL } from "~/data/meta/builder"; @@ -22,7 +23,7 @@ import { Input } from "~/islands/primitives/input"; import { Label } from "~/islands/primitives/label"; import { Textarea } from "~/islands/primitives/textarea"; import { ConnectStoreToStripeButton } from "~/islands/stripe-btn-connect"; -import { getStripeAccountAction } from "~/utils/stripe/actions"; +import { Link } from "~/navigation"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -30,7 +31,7 @@ export const metadata: Metadata = { description: "Manage your store", }; -interface UpdateStorePageProps { +interface UpdateStorePageProperties { params: { storeId: string; }; @@ -38,7 +39,7 @@ interface UpdateStorePageProps { export default async function UpdateStorePage({ params, -}: UpdateStorePageProps) { +}: UpdateStorePageProperties) { const storeId = Number(params.storeId); async function updateStore(fd: FormData) { @@ -55,7 +56,8 @@ export default async function UpdateStorePage({ }); if (storeWithSameName) { - throw new Error("Store name already taken"); + toast.error("Store name already taken."); + return; } await db @@ -213,11 +215,7 @@ export default async function UpdateStorePage({ -
+
Update store - + Delete store Delete store diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/[productId]/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/[productId]/page.tsx index 9655d23a..9dc4cbe9 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/[productId]/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/[productId]/page.tsx @@ -21,7 +21,7 @@ export const metadata: Metadata = { description: "Manage your product", }; -interface UpdateProductPageProps { +interface UpdateProductPageProperties { params: { storeId: string; productId: string; @@ -30,7 +30,7 @@ interface UpdateProductPageProps { export default async function UpdateProductPage({ params, -}: UpdateProductPageProps) { +}: UpdateProductPageProperties) { const storeId = Number(params.storeId); const productId = Number(params.productId); diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/new/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/new/page.tsx index 8d28432f..1fb4c761 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/new/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/new/page.tsx @@ -10,7 +10,7 @@ import { CardHeader, CardTitle, } from "~/islands/primitives/card"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -18,13 +18,15 @@ export const metadata: Metadata = { description: "Add a new product", }; -type NewProductPageProps = { +type NewProductPageProperties = { params: { storeId: string; }; }; -export default async function NewProductPage({ params }: NewProductPageProps) { +export default async function NewProductPage({ + params, +}: NewProductPageProperties) { const user = await getServerAuthSession(); if (!user) redirect("/auth"); diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/page.tsx index b1edf1a0..e5527531 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/[storeId]/products/page.tsx @@ -1,20 +1,21 @@ import { type Metadata } from "next"; import { notFound } from "next/navigation"; -import { env } from "~/env.mjs"; import { and, asc, desc, eq, inArray, like, sql } from "drizzle-orm"; import { db } from "~/data/db"; import { products, stores, type Product } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { GenerateButton } from "~/islands/generate"; +import { Separator } from "~/islands/primitives/separator"; import { ProductsTableShell } from "~/islands/wrappers/products-table-shell"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), title: "Products", description: "Manage your products", }; -interface ProductsPageProps { +interface ProductsPageProperties { params: { storeId: string; }; @@ -26,7 +27,7 @@ interface ProductsPageProps { export default async function ProductsPage({ params, searchParams, -}: ProductsPageProps) { +}: ProductsPageProperties) { const storeId = Number(params.storeId); const { page, per_page, sort, name, category } = searchParams ?? {}; @@ -47,24 +48,24 @@ export default async function ProductsPage({ const limit = typeof per_page === "string" ? parseInt(per_page) : 10; // Number of items to skip const offset = - typeof page === "string" - ? parseInt(page) > 0 - ? (parseInt(page) - 1) * limit - : 0 - : 0; + typeof page === "string" ? + parseInt(page) > 0 ? + (parseInt(page) - 1) * limit + : 0 + : 0; // Column and order to sort by const [column, order] = - typeof sort === "string" - ? (sort.split(".") as [ - keyof Product | undefined, - "asc" | "desc" | undefined, - ]) - : []; + typeof sort === "string" ? + (sort.split(".") as [ + keyof Product | undefined, + "asc" | "desc" | undefined, + ]) + : []; const categories = - typeof category === "string" - ? (category.split(".") as Product["category"][]) - : []; + typeof category === "string" ? + (category.split(".") as Product["category"][]) + : []; // Transaction is used to ensure both queries are executed in a single transaction const { items, total } = await db.transaction(async (tx) => { @@ -77,21 +78,21 @@ export default async function ProductsPage({ and( eq(products.storeId, storeId), // Filter by name - typeof name === "string" - ? like(products.name, `%${name}%`) - : undefined, + typeof name === "string" ? + like(products.name, `%${name}%`) + : undefined, // Filter by category - categories.length > 0 - ? inArray(products.category, categories) - : undefined, + categories.length > 0 ? + inArray(products.category, categories) + : undefined, ), ) .orderBy( - column && column in products - ? order === "asc" - ? asc(products[column]) - : desc(products[column]) - : desc(products.createdAt), + column && column in products ? + order === "asc" ? + asc(products[column]) + : desc(products[column]) + : desc(products.createdAt), ); const total = await tx @@ -102,12 +103,12 @@ export default async function ProductsPage({ .where( and( eq(products.storeId, storeId), - typeof name === "string" - ? like(products.name, `%${name}%`) - : undefined, - categories.length > 0 - ? inArray(products.category, categories) - : undefined, + typeof name === "string" ? + like(products.name, `%${name}%`) + : undefined, + categories.length > 0 ? + inArray(products.category, categories) + : undefined, ), ) .then((res) => res[0]?.count ?? 0); @@ -122,12 +123,17 @@ export default async function ProductsPage({ return (
- {env.NODE_ENV !== "production" && } + {env.NODE_ENV !== "production" && ( + <> + + + + )}
); } diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/new/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/new/page.tsx index 3ea662fc..c2bb5de4 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/new/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/new/page.tsx @@ -16,7 +16,7 @@ import { CardTitle, } from "~/islands/primitives/card"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata: Metadata = { metadataBase: fullURL(), diff --git a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/page.tsx b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/page.tsx index fab8c89c..0a00efd0 100644 --- a/src/app/[locale]/(main)/(dashboard)/dashboard/stores/page.tsx +++ b/src/app/[locale]/(main)/(dashboard)/dashboard/stores/page.tsx @@ -1,15 +1,15 @@ -import { type Metadata } from "next"; +import type { Metadata } from "next"; import Link from "next/link"; import { redirect } from "next/navigation"; import { RocketIcon } from "@radix-ui/react-icons"; -import { env } from "~/env.mjs"; import { cn } from "~/utils"; import { desc, eq, sql } from "drizzle-orm"; -import { getDashboardRedirectPath, getPlanFeatures } from "~/server/subs"; +import { getSubscriptionPlanAction } from "~/core/stripe/actions"; import { db } from "~/data/db"; import { products, stores, users } from "~/data/db/schema"; -import { StoreCard } from "~/islands/modules/cards/store-card"; +import { env } from "~/env.mjs"; +import { StoreCard } from "~/islands/modules/cards/store-card-dashboard"; import { PageHeader, PageHeaderDescription, @@ -22,11 +22,11 @@ import { } from "~/islands/primitives/alert"; import { buttonVariants } from "~/islands/primitives/button"; import { Shell } from "~/islands/wrappers/shell-variants"; -import { getSubscriptionPlanAction } from "~/utils/stripe/actions"; -import { getServerAuthSession, getUserData } from "~/utils/users"; +import { getDashboardRedirectPath, getPlanFeatures } from "~/server/subs"; +import { getServerAuthSession, getUserData } from "~/utils/auth/users"; export const metadata: Metadata = { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), title: "Stores", description: "Manage your stores", }; @@ -48,13 +48,6 @@ export default async function StoresPage() { .orderBy(desc(stores.stripeAccountId), desc(sql`count(*)`)) .where(eq(stores.userId, user.id)); - const data = await getUserData(user); - const user_db = await db - .select() - .from(users) - .where(eq(users.id, user.id)) - .then((res) => res[0] ?? null); - const subscriptionPlan = await getSubscriptionPlanAction(user.id); const { maxStoreCount, maxProductCount } = getPlanFeatures( @@ -75,7 +68,7 @@ export default async function StoresPage() { aria-label="Create store" href={getDashboardRedirectPath({ storeCount: allStores.length, - subscriptionPlan: subscriptionPlan, + subscriptionPlan, })} className={cn( buttonVariants({ @@ -98,8 +91,10 @@ export default async function StoresPage() { Heads up! Your current plan is{" "} - {subscriptionPlan?.name}. It - allows you to create{" "} + + {subscriptionPlan?.name ?? "Starter"} + + . It allows you to create{" "} up to {maxStoreCount} stores{" "} and include{" "} diff --git a/src/app/[locale]/(main)/(dashboard)/layout.tsx b/src/app/[locale]/(main)/(dashboard)/layout.tsx index 3a2a1fd4..70068fef 100644 --- a/src/app/[locale]/(main)/(dashboard)/layout.tsx +++ b/src/app/[locale]/(main)/(dashboard)/layout.tsx @@ -1,17 +1,16 @@ -import { redirect } from "~/navigation"; - -import { dashboardConfig } from "~/server/config/dashboard"; import { SidebarNav } from "~/islands/navigation/sidebar-nav"; import { ScrollArea } from "~/islands/primitives/scroll-area"; -import { getServerAuthSession } from "~/utils/users"; +import { redirect } from "~/navigation"; +import { dashboardConfig } from "~/server/config/dashboard"; +import { getServerAuthSession } from "~/utils/auth/users"; -interface DashboardLayoutProps { +interface DashboardLayoutProperties { children: React.ReactNode; } export default async function DashboardLayout({ children, -}: DashboardLayoutProps) { +}: DashboardLayoutProperties) { const session = await getServerAuthSession(); if (!session) redirect("/auth"); diff --git a/src/app/[locale]/(main)/(features)/apiFromClient/page.tsx b/src/app/[locale]/(main)/(features)/apiFromClient/page.tsx index 943aa4ab..2abd2786 100644 --- a/src/app/[locale]/(main)/(features)/apiFromClient/page.tsx +++ b/src/app/[locale]/(main)/(features)/apiFromClient/page.tsx @@ -2,12 +2,16 @@ import { useEffect, useState } from "react"; +interface ApiResponse { + name: string; +} + export default function APITestPage() { const [name, setName] = useState(); useEffect(() => { fetch("/api/whoAmI") - .then((res) => res.json()) + .then((res) => res.json() as Promise) .then((data) => setName(data.name)); }, []); diff --git a/src/app/[locale]/(main)/(features)/apiFromServer/page.tsx b/src/app/[locale]/(main)/(features)/apiFromServer/page.tsx index 167b04c8..bcddbbe1 100644 --- a/src/app/[locale]/(main)/(features)/apiFromServer/page.tsx +++ b/src/app/[locale]/(main)/(features)/apiFromServer/page.tsx @@ -1,10 +1,16 @@ import { headers } from "next/headers"; +interface ApiResponse { + name: string; +} + export default async function APIFromServer() { - const resp = await fetch("http://localhost:3000/api/whoAmI", { + const response = await fetch("http://localhost:3000/api/whoAmI", { method: "GET", headers: headers(), - }).then((res) => res.json()); + }); + + const resp = (await response.json()) as ApiResponse; return (
diff --git a/src/app/[locale]/(main)/(features)/protected/page.tsx b/src/app/[locale]/(main)/(features)/protected/page.tsx index 8b4d6add..9c021d5e 100644 --- a/src/app/[locale]/(main)/(features)/protected/page.tsx +++ b/src/app/[locale]/(main)/(features)/protected/page.tsx @@ -3,7 +3,7 @@ import { getServerSession } from "next-auth"; export default async function ProtectedRoute() { const session = await getServerSession(); - if (!session || !session.user) redirect("/api/auth/signin"); + if (!session || !session.user) redirect("/sign-in"); return (
diff --git a/src/app/[locale]/(main)/(features)/serverAction/page.tsx b/src/app/[locale]/(main)/(features)/serverAction/page.tsx index 816e3919..bdaa47de 100644 --- a/src/app/[locale]/(main)/(features)/serverAction/page.tsx +++ b/src/app/[locale]/(main)/(features)/serverAction/page.tsx @@ -1,6 +1,6 @@ import { getServerSession } from "next-auth"; -import WhoAmIButton from "./WhoAmIButton"; +import WhoAmIButton from "~/core/auth/authjs/islands/check-user-button"; export default async function ServerActionPage() { const whoAmI = async () => { diff --git a/src/app/[locale]/(main)/(marketing)/about/page.tsx b/src/app/[locale]/(main)/(marketing)/about/page.tsx index 68bc3496..4e595b16 100644 --- a/src/app/[locale]/(main)/(marketing)/about/page.tsx +++ b/src/app/[locale]/(main)/(marketing)/about/page.tsx @@ -1,34 +1,63 @@ +import Link from "next/link"; +import { ArrowRight } from "lucide-react"; +import { useTranslations } from "next-intl"; +import Balancer from "react-wrap-balancer"; import { cnBase } from "tailwind-variants"; +import { siteConfig } from "~/app"; +import { Link as ButtonLink } from "~/core/link"; +import { seo } from "~/data/meta"; import { typography } from "~/server/text"; -import { type GenerateMetadata } from "~/data/meta/extend"; -export const generateMetadata: GenerateMetadata = async () => { - return { - metadataBase: new URL("https://relivator.bleverse.com"), - description: "The best React 18 & Next.js 14 starter just for you.", - keywords: "nextjs, starter, react, tools, bleverse, blefonix", - }; -}; +export const metadata = seo({ title: "About" }); -export default async function Page() { +export default function Page() { + const t = useTranslations(); return (
-
+
-

Relivator

+

+ {siteConfig.name} +

+ + {t("landing.about")} + +
+ + Learn More on Home Page + + +
+ {/* biome-ignore lint/style/useSelfClosingElements: */} + {/* biome-ignore lint/a11y/useHeadingContent: */}

- MIT ©{" "} - + {siteConfig.author} + {" "} + - Bleverse - + ({siteConfig.name}'s GitHub) +

diff --git a/src/app/[locale]/(main)/layout.tsx b/src/app/[locale]/(main)/layout.tsx index c5248b6a..078531e8 100644 --- a/src/app/[locale]/(main)/layout.tsx +++ b/src/app/[locale]/(main)/layout.tsx @@ -1,11 +1,11 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface MainLayoutProps { +interface MainLayoutProperties { children: React.ReactNode; } -export default async function MainLayout({ children }: MainLayoutProps) { +export default async function MainLayout({ children }: MainLayoutProperties) { return ( <> diff --git a/src/app/[locale]/(store)/categories/[category]/[subcategory]/page.tsx b/src/app/[locale]/(store)/categories/[category]/[subcategory]/page.tsx index 3acc2594..bbeb5a1b 100644 --- a/src/app/[locale]/(store)/categories/[category]/[subcategory]/page.tsx +++ b/src/app/[locale]/(store)/categories/[category]/[subcategory]/page.tsx @@ -1,8 +1,18 @@ -import { toTitleCase, unslugify } from "~/utils"; +/** + * Subcategory Page + * ================ + * + * @see https://github.com/gustavoguichard/string-ts#-api + */ + +import type { Metadata } from "next"; +import { unslugify } from "~/utils"; +import { getTranslations } from "next-intl/server"; +import { titleCase } from "string-ts"; -import { getProductsAction } from "~/server/actions/product"; -import { getStoresAction } from "~/server/actions/store"; import { type Product } from "~/data/db/schema"; +import { env } from "~/env.mjs"; +import { IntlMessage } from "~/islands/message"; import { PageHeader, PageHeaderDescription, @@ -10,8 +20,11 @@ import { } from "~/islands/navigation/page-header"; import { Products } from "~/islands/products"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { getProductsAction } from "~/server/actions/product"; +import { getStoresAction } from "~/server/actions/store"; +import { getServerAuthSession } from "~/utils/auth/users"; -type SubcategoryPageProps = { +type SubcategoryPageProperties = { params: { category: Product["category"]; subcategory: string; @@ -21,11 +34,14 @@ type SubcategoryPageProps = { }; }; -export function generateMetadata({ params }: SubcategoryPageProps) { +export function generateMetadata({ + params, +}: SubcategoryPageProperties): Metadata { const subcategory = unslugify(params.subcategory); return { - title: toTitleCase(subcategory), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), + title: titleCase(subcategory), description: `Buy the best ${subcategory}`, }; } @@ -33,11 +49,13 @@ export function generateMetadata({ params }: SubcategoryPageProps) { export default async function SubcategoryPage({ params, searchParams, -}: SubcategoryPageProps) { +}: SubcategoryPageProperties) { const { category, subcategory } = params; const { page, per_page, sort, price_range, store_ids, store_page } = searchParams; + const t = await getTranslations(); + // Products transaction const limit = typeof per_page === "string" ? parseInt(per_page) : 8; const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; @@ -52,14 +70,14 @@ export default async function SubcategoryPage({ store_ids: typeof store_ids === "string" ? store_ids : null, }); - const pageCount = Math.ceil(productsTransaction.total / limit); + const pageCount = Math.ceil(productsTransaction.count / limit); // Stores transaction const storesLimit = 25; const storesOffset = - typeof store_page === "string" - ? (parseInt(store_page) - 1) * storesLimit - : 0; + typeof store_page === "string" ? + (parseInt(store_page) - 1) * storesLimit + : 0; const storesTransaction = await getStoresAction({ limit: storesLimit, @@ -67,7 +85,9 @@ export default async function SubcategoryPage({ sort: "productCount.desc", }); - const storePageCount = Math.ceil(storesTransaction.total / storesLimit); + const storePageCount = Math.ceil(storesTransaction.count / storesLimit); + + const session = await getServerAuthSession(); return ( @@ -76,10 +96,12 @@ export default async function SubcategoryPage({ aria-labelledby="subcategory-page-header-heading" > - {toTitleCase(unslugify(subcategory))} + {titleCase(unslugify(subcategory))} - {`Buy the best ${unslugify(subcategory)}`} + {t("store.categories.buyTheBest", { + category: unslugify(subcategory), + })} ); diff --git a/src/app/[locale]/(store)/categories/[category]/page.tsx b/src/app/[locale]/(store)/categories/[category]/page.tsx index 17ce7d7a..0d99e6c7 100644 --- a/src/app/[locale]/(store)/categories/[category]/page.tsx +++ b/src/app/[locale]/(store)/categories/[category]/page.tsx @@ -1,8 +1,9 @@ -import { toTitleCase } from "~/utils"; +import type { Metadata } from "next"; +import { getTranslations } from "next-intl/server"; +import { titleCase } from "string-ts"; -import { getProductsAction } from "~/server/actions/product"; -import { getStoresAction } from "~/server/actions/store"; import { type Product } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { PageHeader, PageHeaderDescription, @@ -10,19 +11,23 @@ import { } from "~/islands/navigation/page-header"; import { Products } from "~/islands/products"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { getProductsAction } from "~/server/actions/product"; +import { getStoresAction } from "~/server/actions/store"; +import { getServerAuthSession } from "~/utils/auth/users"; -type CategoryPageProps = { +interface CategoryPageProperties { params: { category: Product["category"]; }; searchParams: { [key: string]: string | string[] | undefined; }; -}; +} -export function generateMetadata({ params }: CategoryPageProps) { +export function generateMetadata({ params }: CategoryPageProperties): Metadata { return { - title: toTitleCase(params.category), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), + title: titleCase(params.category), description: `Buy products from the ${params.category} category`, }; } @@ -30,7 +35,7 @@ export function generateMetadata({ params }: CategoryPageProps) { export default async function CategoryPage({ params, searchParams, -}: CategoryPageProps) { +}: CategoryPageProperties) { const { category } = params; const { page, @@ -42,6 +47,8 @@ export default async function CategoryPage({ store_page, } = searchParams; + const t = await getTranslations(); + // Products transaction const limit = typeof per_page === "string" ? parseInt(per_page) : 8; const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; @@ -56,14 +63,14 @@ export default async function CategoryPage({ store_ids: typeof store_ids === "string" ? store_ids : null, }); - const pageCount = Math.ceil(productsTransaction.total / limit); + const pageCount = Math.ceil(productsTransaction.count / limit); // Stores transaction const storesLimit = 25; const storesOffset = - typeof store_page === "string" - ? (parseInt(store_page) - 1) * storesLimit - : 0; + typeof store_page === "string" ? + (parseInt(store_page) - 1) * storesLimit + : 0; const storesTransaction = await getStoresAction({ limit: storesLimit, @@ -71,7 +78,9 @@ export default async function CategoryPage({ sort: "productCount.desc", }); - const storePageCount = Math.ceil(storesTransaction.total / storesLimit); + const storePageCount = Math.ceil(storesTransaction.count / storesLimit); + + const session = await getServerAuthSession(); return ( @@ -79,9 +88,11 @@ export default async function CategoryPage({ id="category-page-header" aria-labelledby="category-page-header-heading" > - {toTitleCase(category)} + {titleCase(category)} - {`Buy ${category} from the best stores`} + {t("store.categories.buyFromCategories", { + category: category, + })} ); diff --git a/src/app/[locale]/(store)/custom/clothing/page.tsx b/src/app/[locale]/(store)/custom/clothing/page.tsx index b89dd385..8dd7560f 100644 --- a/src/app/[locale]/(store)/custom/clothing/page.tsx +++ b/src/app/[locale]/(store)/custom/clothing/page.tsx @@ -1,13 +1,10 @@ import { type Metadata } from "next"; -import { cookies } from "next/headers"; -import { Link } from "~/navigation"; +import { CheckIcon, CircleIcon } from "@radix-ui/react-icons"; import { cn } from "~/utils"; +import { getTranslations } from "next-intl/server"; -import { getCartItemsAction } from "~/server/actions/cart"; -import { getProductsAction } from "~/server/actions/product"; -import { productCategories } from "~/server/config/products"; import { fullURL } from "~/data/meta/builder"; -import { Icons } from "~/islands/icons"; +import { env } from "~/env.mjs"; import { PageHeader, PageHeaderDescription, @@ -15,6 +12,11 @@ import { } from "~/islands/navigation/page-header"; import { ProductBuilder } from "~/islands/product-building"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { Link } from "~/navigation"; +import { getCartItemsAction } from "~/server/actions/cart"; +import { getProductsAction } from "~/server/actions/product"; +import { getCartId } from "~/server/cart"; +import { productCategories } from "~/server/config/products"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -22,17 +24,17 @@ export const metadata: Metadata = { description: "Select the components for your board", }; -interface CustomClothesPageProps { - searchParams: { - [key: string]: string | string[] | undefined; - }; +interface CustomClothesPageProperties { + searchParams: { [key: string]: string | string[] | undefined }; } export default async function CustomClothesPage({ searchParams, -}: CustomClothesPageProps) { +}: CustomClothesPageProperties) { const { page, per_page, sort, subcategory, price_range } = searchParams; + const t = await getTranslations(); + // Products transaction const limit = typeof per_page === "string" ? parseInt(per_page) : 8; const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; @@ -47,11 +49,12 @@ export default async function CustomClothesPage({ price_range: typeof price_range === "string" ? price_range : null, }); - const pageCount = Math.ceil(productsTransaction.total / limit); + const pageCount = Math.ceil(productsTransaction.count / limit); // Get cart items - const cartId = cookies().get("cartId")?.value; - + // console.log("⏳ awaiting getCartId for CustomClothesPage..."); + const cartId = await getCartId(); + // console.log("get custom clothing's `cartId`:", cartId); const cartItems = await getCartItemsAction({ cartId: Number(cartId) }); return ( @@ -68,7 +71,7 @@ export default async function CustomClothesPage({
@@ -77,6 +80,7 @@ export default async function CustomClothesPage({ aria-label={subcategory.title} key={subcategory.title} href={`/custom/clothing?subcategory=${subcategory.slug}`} + scroll={false} >
- {cartItems - ?.map((item) => item.subcategory) - ?.includes(subcategory.slug) ? ( -
@@ -106,6 +110,7 @@ export default async function CustomClothesPage({ pageCount={pageCount} subcategory={activeSubcategory} cartItems={cartItems ?? []} + tAddToCart={t("store.product.addToCart")} /> ); diff --git a/src/app/[locale]/(store)/layout.tsx b/src/app/[locale]/(store)/layout.tsx index e18c21f3..28a7ac45 100644 --- a/src/app/[locale]/(store)/layout.tsx +++ b/src/app/[locale]/(store)/layout.tsx @@ -1,11 +1,11 @@ import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -interface LobbyLayoutProps { +interface LobbyLayoutProperties { children: React.ReactNode; } -export default async function LobbyLayout({ children }: LobbyLayoutProps) { +export default async function LobbyLayout({ children }: LobbyLayoutProperties) { return ( <> diff --git a/src/app/[locale]/(store)/preview/[productId]/page.tsx b/src/app/[locale]/(store)/product-preview/[productId]/page.tsx similarity index 60% rename from src/app/[locale]/(store)/preview/[productId]/page.tsx rename to src/app/[locale]/(store)/product-preview/[productId]/page.tsx index a0e5a88b..9844ab9e 100644 --- a/src/app/[locale]/(store)/preview/[productId]/page.tsx +++ b/src/app/[locale]/(store)/product-preview/[productId]/page.tsx @@ -1,6 +1,6 @@ -import { redirect } from "~/navigation"; +import { redirect } from "next/navigation"; -interface ProductPreviewPageProps { +interface ProductPreviewPageProperties { params: { productId: string; }; @@ -8,7 +8,7 @@ interface ProductPreviewPageProps { export default function ProductPreviewPage({ params, -}: ProductPreviewPageProps) { +}: ProductPreviewPageProperties) { const productId = Number(params.productId); redirect(`/product/${productId}`); diff --git a/src/app/[locale]/(store)/product/[productId]/_islands/client.tsx b/src/app/[locale]/(store)/product/[productId]/_islands/client.tsx new file mode 100644 index 00000000..be113e30 --- /dev/null +++ b/src/app/[locale]/(store)/product/[productId]/_islands/client.tsx @@ -0,0 +1,63 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { getCookie, setCookie } from "cookies-next"; +import { useTranslations } from "next-intl"; + +import { + AddToCartForm, + type AddToCartFormProps, +} from "~/forms/add-to-cart-form"; +import AddToCartGuestForm from "~/forms/email-form"; + +export default function AddToCart({ + productId, + storeId, + session, + email, +}: AddToCartFormProps) { + const [guestEmail, setGuestEmail] = useState(null); + const [showGuestForm, setShowGuestForm] = useState(false); + + const t = useTranslations(); + + useEffect(() => { + if (!session) { + const emailFromCookie = getCookie("GUEST_EMAIL")?.toString(); + if (emailFromCookie) { + setGuestEmail(emailFromCookie); + } else { + setShowGuestForm(true); + } + } + }, [session]); + + const handleGuestEmailSubmission = async (email: string) => { + // todo: Check if email exists in guests table, and add if not + setCookie("GUEST_EMAIL", email); + setGuestEmail(email); + setShowGuestForm(false); + }; + + return ( + <> + {session ? + + : guestEmail ? + + : showGuestForm ? + + : null} + + ); +} diff --git a/src/app/[locale]/(store)/product/[productId]/page.tsx b/src/app/[locale]/(store)/product/[productId]/page.tsx index 56440515..cc3fd32f 100644 --- a/src/app/[locale]/(store)/product/[productId]/page.tsx +++ b/src/app/[locale]/(store)/product/[productId]/page.tsx @@ -1,12 +1,22 @@ +/** + * Product Page + * ============ + * + * @see https://github.com/gustavoguichard/string-ts#-api + */ + import { type Metadata } from "next"; import { notFound } from "next/navigation"; -import { env } from "~/env.mjs"; -import { Link } from "~/navigation"; -import { formatPrice, toTitleCase } from "~/utils"; +import { formatPrice } from "~/utils"; +import { getCookie, setCookie } from "cookies-next"; import { and, desc, eq, not } from "drizzle-orm"; +import { getTranslations } from "next-intl/server"; +import { titleCase } from "string-ts"; +import { Link as ButtonLink } from "~/core/link"; import { db } from "~/data/db"; -import { products, stores } from "~/data/db/schema"; +import { products, stores, users, type Product } from "~/data/db/schema"; +import { env } from "~/env.mjs"; import { AddToCartForm } from "~/forms/add-to-cart-form"; import { ProductCard } from "~/islands/modules/cards/product-card"; import { Breadcrumbs } from "~/islands/navigation/pagination/breadcrumbs"; @@ -16,11 +26,16 @@ import { AccordionItem, AccordionTrigger, } from "~/islands/primitives/accordion"; +import { Button } from "~/islands/primitives/button"; import { Separator } from "~/islands/primitives/separator"; import { ProductImageCarousel } from "~/islands/product-carousel"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { Link, redirect } from "~/navigation"; +import { getServerAuthSession, getUserById } from "~/utils/auth/users"; -interface ProductPageProps { +import AddToCart from "./_islands/client"; + +interface ProductPageProperties { params: { productId: string; }; @@ -28,32 +43,32 @@ interface ProductPageProps { export async function generateMetadata({ params, -}: ProductPageProps): Promise { +}: ProductPageProperties): Promise { const productId = Number(params.productId); const product = await db.query.products.findFirst({ - columns: { - name: true, - description: true, - }, + columns: { name: true, description: true }, where: eq(products.id, productId), }); - if (!product) { - return {}; - } + if (!product) return {}; return { - metadataBase: new URL(env.NEXT_PUBLIC_APP_URL), - title: toTitleCase(product.name), + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), + title: titleCase(product.name), description: product.description, }; } -export default async function ProductPage({ params }: ProductPageProps) { +export default async function ProductPage({ params }: ProductPageProperties) { + const session = await getServerAuthSession(); + const guestEmail = getCookie("GUEST_EMAIL")?.toString() || null; + + const t = await getTranslations(); + const productId = Number(params.productId); - const product = await db.query.products.findFirst({ + const product: Product = await db.query.products.findFirst({ columns: { id: true, name: true, @@ -66,20 +81,16 @@ export default async function ProductPage({ params }: ProductPageProps) { where: eq(products.id, productId), }); - if (!product) { - notFound(); - } + if (!product) notFound(); const store = await db.query.stores.findFirst({ - columns: { - id: true, - name: true, - }, - where: eq(stores.id, product.storeId), + columns: { id: true, name: true }, + where: eq(stores.id, Number(product.storeId)), }); - const otherProducts = store - ? await db + const otherProducts = + store ? + await db .select({ id: products.id, name: products.name, @@ -104,11 +115,11 @@ export default async function ProductPage({ params }: ProductPageProps) {
@@ -132,33 +141,83 @@ export default async function ProductPage({ params }: ProductPageProps) {

{formatPrice(product.price)}

- {store ? ( + {store ? {store.name} - ) : null} + : null}
+ - + + {guestEmail || session ? + + : + {t("store.product.addToCart")} + + } + - + + - Description + + {t("store.product.description")} + - {product.description ?? - "No description is available for this product."} + {product.description && product.description.length > 0 ? + product.description + : `${t("store.product.noDescription")}`}
- {store && otherProducts.length > 0 ? ( + + {env.NODE_ENV === "development" && ( + <> + +

[localhost-only-debug-info]

+
+

store.id: {store.id}

+

productId: {productId}

+

product.storeId: {product.storeId}

+

product.price: {product.price}

+

product.inventory: {product.inventory || 0}

+

store.name: {store.name}

+

product.category: {product.category}

+

product.name: {product.name}

+

guestEmail: {guestEmail || "not set or not found in cookie"}

+
+ {store && otherProducts.length > 0 ? + + : null} + + )} + + {store && otherProducts.length > 0 ?

- More products from {store.name} + {t("store.product.moreProductsFrom", { + storeName: store.name, + })}

@@ -166,13 +225,15 @@ export default async function ProductPage({ params }: ProductPageProps) { ))}
- ) : null} + : null} ); } diff --git a/src/app/[locale]/(store)/products/@modal/(..)product-preview/[productId]/page.tsx b/src/app/[locale]/(store)/products/@modal/(..)product-preview/[productId]/page.tsx deleted file mode 100644 index 8682ce5b..00000000 --- a/src/app/[locale]/(store)/products/@modal/(..)product-preview/[productId]/page.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, -} from "~/islands/primitives/alert-dialog"; -import { Button } from "~/islands/primitives/button"; - -export default function ProductPreviewModal() { - return ( - - - - - - - Are you absolutely sure? - - This action cannot be undone. This will permanently delete your - account and remove your data from our servers. - - - - Cancel - Continue - - - - ); -} diff --git a/src/app/[locale]/(store)/products/@modal/default.tsx b/src/app/[locale]/(store)/products/@modal/default.tsx deleted file mode 100644 index 6ddf1b76..00000000 --- a/src/app/[locale]/(store)/products/@modal/default.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function Default() { - return null; -} diff --git a/src/app/[locale]/(store)/products/layout.tsx b/src/app/[locale]/(store)/products/layout.tsx deleted file mode 100644 index 8da18991..00000000 --- a/src/app/[locale]/(store)/products/layout.tsx +++ /dev/null @@ -1,16 +0,0 @@ -interface ProductsLayoutProps { - children: React.ReactNode; - modal: React.ReactNode; -} - -export default function ProductsLayout({ - children, - modal, -}: ProductsLayoutProps) { - return ( - <> - {children} - {modal} - - ); -} diff --git a/src/app/[locale]/(store)/products/loading.tsx b/src/app/[locale]/(store)/products/loading.tsx index c25ab3da..2b4f9712 100644 --- a/src/app/[locale]/(store)/products/loading.tsx +++ b/src/app/[locale]/(store)/products/loading.tsx @@ -39,10 +39,7 @@ export default function ProductsLoading() { -
- - -
+
))} diff --git a/src/app/[locale]/(store)/products/page.tsx b/src/app/[locale]/(store)/products/page.tsx index c599699f..78ec6e72 100644 --- a/src/app/[locale]/(store)/products/page.tsx +++ b/src/app/[locale]/(store)/products/page.tsx @@ -1,9 +1,10 @@ import { type Metadata } from "next"; +import { getTranslations } from "next-intl/server"; -import { getProductsAction } from "~/server/actions/product"; -import { getStoresAction } from "~/server/actions/store"; import { products } from "~/data/db/schema"; import { fullURL } from "~/data/meta/builder"; +import { productsSearchParamsSchema } from "~/data/validations/params"; +import { env } from "~/env.mjs"; import { PageHeader, PageHeaderDescription, @@ -11,6 +12,9 @@ import { } from "~/islands/navigation/page-header"; import { Products } from "~/islands/products"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { getProductsAction } from "~/server/actions/product"; +import { getStoresAction } from "~/server/actions/store"; +import { getServerAuthSession } from "~/utils/auth/users"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -18,7 +22,7 @@ export const metadata: Metadata = { description: "Buy products from our stores", }; -interface ProductsPageProps { +interface ProductsPageProperties { searchParams: { [key: string]: string | string[] | undefined; }; @@ -26,7 +30,7 @@ interface ProductsPageProps { export default async function ProductsPage({ searchParams, -}: ProductsPageProps) { +}: ProductsPageProperties) { const { page, per_page, @@ -36,30 +40,41 @@ export default async function ProductsPage({ price_range, store_ids, store_page, - } = searchParams ?? {}; + } = productsSearchParamsSchema.parse(searchParams); + + const t = await getTranslations(); // Products transaction - const limit = typeof per_page === "string" ? parseInt(per_page) : 8; - const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; + const pageAsNumber = Number(page); + const fallbackPage = + Number.isNaN(pageAsNumber) || pageAsNumber < 1 ? 1 : pageAsNumber; + const perPageAsNumber = Number(per_page); + // Number of items per page + const limit = Number.isNaN(perPageAsNumber) ? 10 : perPageAsNumber; + // Number of items to skip + const offset = fallbackPage > 0 ? (fallbackPage - 1) * limit : 0; const productsTransaction = await getProductsAction({ limit, offset, - sort: typeof sort === "string" ? sort : null, - categories: typeof categories === "string" ? categories : null, - subcategories: typeof subcategories === "string" ? subcategories : null, - price_range: typeof price_range === "string" ? price_range : null, - store_ids: typeof store_ids === "string" ? store_ids : null, + sort, + categories, + subcategories, + price_range, + store_ids, }); - const pageCount = Math.ceil(productsTransaction.total / limit); + const pageCount = Math.ceil(productsTransaction.count / limit); // Stores transaction - const storesLimit = 25; + const storesPageAsNumber = Number(store_page); + const fallbackStoresPage = + Number.isNaN(storesPageAsNumber) || storesPageAsNumber < 1 ? + 1 + : storesPageAsNumber; + const storesLimit = 40; const storesOffset = - typeof store_page === "string" - ? (parseInt(store_page) - 1) * storesLimit - : 0; + fallbackStoresPage > 0 ? (fallbackStoresPage - 1) * storesLimit : 0; const storesTransaction = await getStoresAction({ limit: storesLimit, @@ -67,27 +82,28 @@ export default async function ProductsPage({ sort: "productCount.desc", }); - const storePageCount = Math.ceil(storesTransaction.total / storesLimit); + const storePageCount = Math.ceil(storesTransaction.count / storesLimit); + + const session = await getServerAuthSession(); return ( - - Products + + + {t("store.product.products")} + - Buy products from our stores + {t("store.product.buyProductsFromOurStores")} ); diff --git a/src/app/[locale]/(store)/store/[storeId]/page.tsx b/src/app/[locale]/(store)/store/[storeId]/page.tsx index 96a139e1..2c0b8e65 100644 --- a/src/app/[locale]/(store)/store/[storeId]/page.tsx +++ b/src/app/[locale]/(store)/store/[storeId]/page.tsx @@ -1,24 +1,21 @@ import { type Metadata } from "next"; import { notFound } from "next/navigation"; import { eq } from "drizzle-orm"; +import { getTranslations } from "next-intl/server"; -import { getProductsAction } from "~/server/actions/product"; -import { getStoresAction } from "~/server/actions/store"; import { db } from "~/data/db"; import { products, stores } from "~/data/db/schema"; import { fullURL } from "~/data/meta/builder"; +import { env } from "~/env.mjs"; import { Breadcrumbs } from "~/islands/navigation/pagination/breadcrumbs"; import { Separator } from "~/islands/primitives/separator"; import { Products } from "~/islands/products"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { getProductsAction } from "~/server/actions/product"; +import { getStoresAction } from "~/server/actions/store"; +import { getServerAuthSession } from "~/utils/auth/users"; -export const metadata: Metadata = { - metadataBase: fullURL(), - title: "Store", - description: "Store description", -}; - -interface StorePageProps { +interface StorePageProperties { params: { storeId: string; }; @@ -27,15 +24,35 @@ interface StorePageProps { }; } -export default async function StorePage({ - params, - searchParams, -}: StorePageProps) { +async function getStoreFromParams(params: StorePageProperties["params"]) { const storeId = Number(params.storeId); - const store = await db.query.stores.findFirst({ + return await db.query.stores.findFirst({ where: eq(stores.id, storeId), }); +} + +export async function generateMetadata({ + params, +}: StorePageProperties): Promise { + const store = await getStoreFromParams(params); + + if (!store) { + return {}; + } + + return { + metadataBase: new URL(env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"), + title: store.name, + description: store.description, + }; +} + +export default async function StorePage({ + params, + searchParams, +}: StorePageProperties) { + const store = await getStoreFromParams(params); if (!store) { notFound(); @@ -43,6 +60,8 @@ export default async function StorePage({ const { page, per_page, store_page } = searchParams; + const t = await getTranslations(); + // Products transaction const limit = typeof per_page === "string" ? parseInt(per_page) : 8; const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; @@ -50,17 +69,17 @@ export default async function StorePage({ const productsTransaction = await getProductsAction({ limit: limit, offset: offset, - store_ids: String(storeId), + store_ids: String(store.id), }); - const pageCount = Math.ceil(productsTransaction.total / limit); + const pageCount = Math.ceil(productsTransaction.count / limit); // Stores transaction const storesLimit = 25; const storesOffset = - typeof store_page === "string" - ? (parseInt(store_page) - 1) * storesLimit - : 0; + typeof store_page === "string" ? + (parseInt(store_page) - 1) * storesLimit + : 0; const storesTransaction = await getStoresAction({ limit: storesLimit, @@ -68,14 +87,16 @@ export default async function StorePage({ sort: "name.asc", }); - const storePageCount = Math.ceil(storesTransaction.total / storesLimit); + const storePageCount = Math.ceil(storesTransaction.count / storesLimit); + + const session = await getServerAuthSession(); return (
diff --git a/src/app/[locale]/(store)/stores/page.tsx b/src/app/[locale]/(store)/stores/page.tsx index d8326641..be80593f 100644 --- a/src/app/[locale]/(store)/stores/page.tsx +++ b/src/app/[locale]/(store)/stores/page.tsx @@ -1,7 +1,8 @@ import { type Metadata } from "next"; +import { getTranslations } from "next-intl/server"; -import { getStoresAction } from "~/server/actions/store"; import { fullURL } from "~/data/meta/builder"; +import { storesSearchParamsSchema } from "~/data/validations/params"; import { PageHeader, PageHeaderDescription, @@ -9,6 +10,7 @@ import { } from "~/islands/navigation/page-header"; import { Stores } from "~/islands/stores"; import { Shell } from "~/islands/wrappers/shell-variants"; +import { getStoresAction } from "~/server/actions/store"; export const metadata: Metadata = { metadataBase: fullURL(), @@ -16,27 +18,36 @@ export const metadata: Metadata = { description: "Buy stores from our stores", }; -interface StoresPageProps { +interface StoresPageProperties { searchParams: { [key: string]: string | string[] | undefined; }; } -export default async function StoresPage({ searchParams }: StoresPageProps) { - const { page, per_page, sort, statuses } = searchParams ?? {}; +export default async function StoresPage({ + searchParams, +}: StoresPageProperties) { + const { page, per_page, sort, statuses } = + storesSearchParamsSchema.parse(searchParams); + + const t = await getTranslations(); // Stores transaction - const limit = typeof per_page === "string" ? parseInt(per_page) : 8; - const offset = typeof page === "string" ? (parseInt(page) - 1) * limit : 0; + const pageAsNumber = Number(page); + const fallbackPage = + Number.isNaN(pageAsNumber) || pageAsNumber < 1 ? 1 : pageAsNumber; + const perPageAsNumber = Number(per_page); + const limit = Number.isNaN(perPageAsNumber) ? 10 : perPageAsNumber; + const offset = fallbackPage > 0 ? (fallbackPage - 1) * limit : 0; const storesTransaction = await getStoresAction({ - limit: limit, - offset: offset, - sort: typeof sort === "string" ? sort : "productCount.desc", - statuses: typeof statuses === "string" ? statuses : null, + limit, + offset, + sort, + statuses, }); - const pageCount = Math.ceil(storesTransaction.total / limit); + const pageCount = Math.ceil(storesTransaction.count / limit); return ( @@ -44,9 +55,11 @@ export default async function StoresPage({ searchParams }: StoresPageProps) { id="stores-page-header" aria-labelledby="stores-page-header-heading" > - Stores + + {t("store.product.products")} + - Buy products from our stores + {t("store.stores.buy-products")} locale !== defaultLocale), + // alternateLocale: locales + // .filter((cur) => cur.code !== defaultLocale) + // .map((cur) => cur.code), description: siteConfig.description, siteName: siteConfig.name, url: siteConfig.url.base, @@ -93,18 +88,6 @@ export const metadata = seo({ }, }); -// @example remote fonts -/* import { Roboto as FontHeading, Inter as FontSans } from "next/font/google"; -const fontSans = FontSans({ - subsets: ["latin", "cyrillic"], - variable: "--font-sans", -}); -const fontHeading = FontHeading({ - subsets: ["latin", "cyrillic"], - variable: "--font-heading", - weight: "500", -}); */ - const fontSans = localFont({ src: "../../styles/fonts/inter.woff2", variable: "--font-sans", @@ -117,12 +100,30 @@ const fontHeading = localFont({ display: "swap", }); +// @example remote fonts +/* import { Roboto as FontHeading, Inter as FontSans } from "next/font/google"; +const fontSans = FontSans({ + subsets: ["latin", "cyrillic"], + variable: "--font-sans", +}); +const fontHeading = FontHeading({ + subsets: ["latin", "cyrillic"], + variable: "--font-heading", + weight: "500", +}); */ + /** - * LocaleLayoutProps extends from PropsWithChildren, a utility type + * LocaleLayoutProperties extends from PropsWithChildren, a utility type * that automatically infers and includes the 'children' prop, making it * suitable for components that expect to receive children elements. + * @see https://next-intl-docs.vercel.app/docs/environments/server-client-components */ -type LocaleLayoutProps = PropsWithChildren; +type LocaleLayoutProperties = PropsWithChildren; + +// @example opt out of caching for all data requests in the route segment +// export const dynamic = "force-dynamic"; +// @example enable edge runtime, but some errors on windows are possible +// export const runtime = "edge"; /** * This component handles the layout for different locales. It dynamically loads @@ -132,24 +133,11 @@ type LocaleLayoutProps = PropsWithChildren; export default async function LocaleLayout({ children, params: { locale }, -}: WithChildren) { +}: WithChildren) { // Validate the incoming 'locale' parameter to ensure it's supported - const isValidLocale = locales.some((cur) => cur === locale); - if (!isValidLocale) notFound(); // Redirect if the locale is invalid - - // Dynamically load internationalization messages based on the current locale - let messages: any; - try { - messages = (await import(`~/data/i18n/${locale}.json`)).default; - } catch (error) { - console.error("❌ Error loading internationalization messages", error); - notFound(); // Redirect to 'Not Found' page if messages can't be loaded - } - - // Retrieve the authentication session state for the current layout request - const session = await getNextAuthServerSession(); - - // Render the layout with internationalization, themes, analytics, and more + if (!locales.includes(locale as any)) notFound(); // Redirect if not + // Render the layout with internationalization + // theme, analytics, other providers, and more return ( - - - - - - - - - - {children} - - - - - - - - - + + + + + + + + {children} + + + + + + + ); diff --git a/src/app/[locale]/not-found.tsx b/src/app/[locale]/not-found.tsx index 2cf0d1fb..61db27ea 100644 --- a/src/app/[locale]/not-found.tsx +++ b/src/app/[locale]/not-found.tsx @@ -1,31 +1,84 @@ +/** + * This file is used to render a 404 page. + * This file serves as Layout for 404 page. + * Visit to check more. + */ + "use client"; -import { Link } from "~/navigation"; -import { ChevronLeft } from "lucide-react"; -import { useTranslations } from "next-intl"; -import { Balancer } from "react-wrap-balancer"; +import { getCookie } from "cookies-next"; +import pick from "lodash/pick"; +import type { AbstractIntlMessages } from "next-intl"; +import { NextIntlClientProvider } from "next-intl"; -import { Button } from "~/islands/primitives/button"; -import PageLayout from "~/islands/wrappers/page-layout"; +import de_de from "~/data/i18n/de-de.json"; +import en_us from "~/data/i18n/en-us.json"; +import es_es from "~/data/i18n/es-es.json"; +import fa_ir from "~/data/i18n/fa-ir.json"; +import fr_fr from "~/data/i18n/fr-fr.json"; +import hi_in from "~/data/i18n/hi-in.json"; +import it_it from "~/data/i18n/it-it.json"; +import pl_pl from "~/data/i18n/pl-pl.json"; +import tr_tr from "~/data/i18n/tr-tr.json"; +import uk_ua from "~/data/i18n/uk-ua.json"; +import NotFoundContent from "~/islands/content/not-found-content"; +import { defaultLocale } from "~/navigation"; -/** @see https://nextjs.org/docs/app/api-reference/file-conventions/not-found */ +// Create a mapping from locale identifiers +// to the specific imported JSON modules +const localeMessages = { + "de-de": de_de, + "en-us": en_us, + "es-es": es_es, + "fa-ir": fa_ir, + "fr-fr": fr_fr, + "hi-in": hi_in, + "it-it": it_it, + "pl-pl": pl_pl, + "tr-tr": tr_tr, + "uk-ua": uk_ua, +}; export default function NotFoundPage() { - const t = useTranslations("pages"); + const locale = getCookie("NEXT_LOCALE")?.toString() || defaultLocale; + // console.log("locale from cookie", locale); // for debug purposes + + // Use the mapping object to select messages + // This approach also works without --turbo + const messages: AbstractIntlMessages = + localeMessages[locale] || localeMessages["en-us"]; + + // When not using next dev --turbo, we can use this: + /* let messages: AbstractIntlMessages = {}; + try { + messages = require(`~/data/i18n/${locale}.json`); + } catch (error) { + // Assign fallback set of messages when error + messages = require("~/data/i18n/en-us.json"); + // console.error(error); // browser console + } */ + return ( - - - {t("not-found.description")} - - - + + + ); } + +/** + * Learn more and resources + * ======================== + * @see https://next-intl-docs.vercel.app/docs/environments/server-client-components + * @see https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md + * @see https://nextjs.org/docs/app/api-reference/file-conventions/not-found + * @see https://next-intl-docs.vercel.app/docs/getting-started/app-router + * @see https://next-intl-docs.vercel.app/docs/environments/error-files + * @see https://github.com/amannn/next-intl/issues?q=turbo + * @see https://github.com/amannn/next-intl/issues/718 + * @see https://github.com/amannn/next-intl/pull/641 + * @see https://github.com/vercel/turbo/issues/2372 + */ diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index 6a7fc2e3..f44722de 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,136 +1,117 @@ /** - * Learn more about the Relivator Next.js project: + * Learn more about the Relivator Next.js starter: * @see https://github.com/blefnk/relivator#readme */ -import { REPOSITORY_URL, siteConfig } from "~/app"; -import { Link, redirect, type Locale } from "~/navigation"; -import { cn } from "~/utils"; -import { eq } from "drizzle-orm"; -import { Download, Store } from "lucide-react"; +import { ArrowRight, Download, ShoppingCart, Store } from "lucide-react"; +import { useTranslations } from "next-intl"; import { Balancer } from "react-wrap-balancer"; -import { productCategories } from "~/server/config/products"; -import { db } from "~/data/db"; -import { User, users } from "~/data/db/schema"; +import { REPOSITORY_URL, siteConfig } from "~/app"; +import { Link } from "~/core/link"; import { seo } from "~/data/meta"; +import { env } from "~/env.mjs"; import { FeaturedStoreItems } from "~/islands/commerce/featured-store-items"; import { HeroSection } from "~/islands/marketing/hero-section"; -import { IntlMessage } from "~/islands/message"; import { SiteFooter } from "~/islands/navigation/site-footer"; import { SiteHeader } from "~/islands/navigation/site-header"; -import { buttonVariants } from "~/islands/primitives/button"; -import ProductsCtx from "~/islands/products-ctx"; import { GeneralShell } from "~/islands/wrappers/general-shell"; -import { getServerAuthSession } from "~/utils/users"; - -import { GithubStarsPlugin } from "~/plugins/islands/github/server"; +import { Link as NavLink } from "~/navigation"; +import { Features, GithubStarsPlugin } from "~/plugins/islands/github/stars"; +import { productCategories } from "~/server/config/products"; export const metadata = seo({ title: `Home – ${siteConfig.name}` }); -type HomePageProps = { params: { locale: Locale } }; - -export default async function HomePage({ params: { locale } }: HomePageProps) { - // Get the user session for NextAuth.js and Clerk - const session = await getServerAuthSession(); - - // Ensure that the user is ready to use the app - if (session) { - const user: User = await db - .select() - .from(users) - .where(eq(users.id, session.id)) - .then((res: User[]) => res[0] ?? null); - if (!user || (user && !user.emailVerified)) { - return redirect(`/auth`); - } - } +export default function HomePage() { + // useTranslations works both on the server and client + // we only need the getTranslations on async components + const t = useTranslations(); return ( <>
+ + - + {t("landing.about")} -
- - - Free Download - + +
+ {env.DEV_DEMO_NOTES === "true" ? ( + + + Download Starter + + ) : ( + + + Buy Now + + )} - - Check Demo + + {env.DEV_DEMO_NOTES === "true" ? "Launch Demo" : "Sell Now"}
- {/* */}
{productCategories.map((category) => ( - -

+

{category.title}

- + ))}
+ {env.DEV_DEMO_NOTES === "true" && } +
Do you want to sell your products?
- -
- Get Started - Create a store -
+ + Get Started +
@@ -139,13 +120,40 @@ export default async function HomePage({ params: { locale } }: HomePageProps) { ); } -// ===== [TODO SECTION] ================================================= +/** + * Learning resources: + * =================== + * @see https://next-intl-docs.vercel.app/docs/environments/server-client-components + * @see https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md#capabilities--constraints-of-server-and-client-components + */ + +// [TODO SECTION] +// ============== -// todo: fix typescript errors when using next-intl without "use client" +// todo: try to use this for static pages rendering // unstable_setRequestLocale(locale); // needs for static pages rendering // const t = useTranslations("landing"); // traditional page translations // const t = await getTranslator(locale, "landing"); // also static pages -/** @see https://github.com/amannn/next-intl/pull/149 */ +// @see https://github.com/amannn/next-intl/pull/149 + +// todo: try to add this somewhere to the app +/** + import { + getTranslations, + getFormatter, + getNow, + getTimeZone, + getMessages, + getLocale +} from 'next-intl/server'; + +const t = await getTranslations('ProfilePage'); +const format = await getFormatter(); +const now = await getNow(); +const timeZone = await getTimeZone(); +const messages = await getMessages(); +const locale = await getLocale(); +*/ // ===== [INTERESTING THINGS ] ========================================== diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 30275575..7f0f3732 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -1,6 +1,6 @@ -import { authOptions } from "~/auth"; import NextAuth from "next-auth"; -// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +import { authOptions } from "~/core/auth/authjs"; + const handler = NextAuth(authOptions); export { handler as GET, handler as POST }; diff --git a/src/app/api/auth/whoAmI/route.ts b/src/app/api/auth/whoAmI/route.ts index 32a137d3..52f224c0 100644 --- a/src/app/api/auth/whoAmI/route.ts +++ b/src/app/api/auth/whoAmI/route.ts @@ -1,7 +1,8 @@ import { NextResponse } from "next/server"; -import { authOptions } from "~/auth"; import { getServerSession } from "next-auth"; +import { authOptions } from "~/core/auth/authjs"; + export async function GET() { const session = await getServerSession(authOptions); diff --git a/src/app/api/cms/create/island/README.md b/src/app/api/cms/create/island/README.md new file mode 100644 index 00000000..91b48f77 --- /dev/null +++ b/src/app/api/cms/create/island/README.md @@ -0,0 +1,7 @@ +# Reliverse CMS + +In the future you will find here the stable version of the API currently located in: + +`src/pages/api/cms/create/island/route.ts` + + diff --git a/src/app/api/cms/create/page/README.md b/src/app/api/cms/create/page/README.md new file mode 100644 index 00000000..05e9f32d --- /dev/null +++ b/src/app/api/cms/create/page/README.md @@ -0,0 +1,7 @@ +# Reliverse CMS + +In the future you will find here the stable version of the API currently located in: + +`src/pages/api/cms/create/page/route.ts` + + diff --git a/src/app/api/trpc/[trpc]/route.ts b/src/app/api/trpc/[trpc]/route.ts index 8213676c..86e5c271 100644 --- a/src/app/api/trpc/[trpc]/route.ts +++ b/src/app/api/trpc/[trpc]/route.ts @@ -1,14 +1,9 @@ -/** - * @see https://youtu.be/qCLV0Iaq9zU - * @see https://github.com/t3-oss/create-t3-app/blob/next/cli/template/extras/src/app/api/trpc/%5Btrpc%5D/route.ts - */ - import type { NextRequest } from "next/server"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; -import { env } from "~/env.mjs"; -import { appRouter } from "~/utils/trpc/root"; -import { createTRPCContext } from "~/utils/trpc/trpc"; +import { appRouter } from "~/core/trpc/root"; +import { createTRPCContext } from "~/core/trpc/trpc"; +import { env } from "~/env.mjs"; const handler = (req: NextRequest) => fetchRequestHandler({ @@ -17,13 +12,20 @@ const handler = (req: NextRequest) => router: appRouter, createContext: () => createTRPCContext({ req }), onError: - env.NODE_ENV === "development" - ? ({ path, error }) => { - console.error( - `❌ tRPC failed on ${path ?? ""}: ${error.message}`, - ); - } - : undefined, + env.NODE_ENV === "development" ? + ({ path, error }) => { + console.error( + `❌ tRPC failed on ${path ?? ""}: ${error.message}`, + ); + } + : undefined, }); export { handler as GET, handler as POST }; + +/** + * Learning resources and inspirations + * =================================== + * @see https://youtu.be/qCLV0Iaq9zU + * @see https://github.com/t3-oss/create-t3-app/blob/next/cli/template/extras/src/app/api/trpc/%5Btrpc%5D/route.ts + */ diff --git a/src/app/api/uploadthing/core.ts b/src/app/api/uploadthing/core.ts index 67fde718..7b0935fe 100644 --- a/src/app/api/uploadthing/core.ts +++ b/src/app/api/uploadthing/core.ts @@ -1,30 +1,57 @@ import { createUploadthing, type FileRouter } from "uploadthing/next"; -import { getServerAuthSession } from "~/utils/users"; +import { env } from "~/env.mjs"; +import { getServerAuthSession } from "~/utils/auth/users"; const f = createUploadthing(); -// FileRouter for your app, can contain multiple FileRoutes +type ValidFileTypes = "audio" | "blob" | "image" | "video"; +type FileRouterInput = + | Record< + ValidFileTypes, + { + maxFileSize: "4MB"; + maxFileCount: number; + } + > + | ValidFileTypes[]; + +// Control the file sizes for all file types +const DEFAULT_IMAGE_UPLOAD_PARAMS: FileRouterInput = { + audio: { maxFileSize: "4MB", maxFileCount: 1 }, + blob: { maxFileSize: "4MB", maxFileCount: 1 }, + image: { maxFileSize: "4MB", maxFileCount: 3 }, + video: { maxFileSize: "4MB", maxFileCount: 1 }, +}; + +// FileRouter for the app, can contain multiple FileRoutes export const ourFileRouter = { - // Define as many FileRoutes as you like, each with a unique routeSlug - productImage: f({ image: { maxFileSize: "4MB", maxFileCount: 3 } }) + // We can define here as many FileRoutes as we like, each with a unique routeSlug + // productImage: f({ image: { maxFileSize: "4MB", maxFileCount: 3 } }) // simplified + // todo: currently `accept` param has priority from src/islands/file-dialog.ts file + imageUploader: f({ + "image/png": DEFAULT_IMAGE_UPLOAD_PARAMS.image, + "image/jpeg": DEFAULT_IMAGE_UPLOAD_PARAMS.image, + }) // Set permissions and file types for this FileRoute - .middleware(async (req) => { - // This code runs on your server before upload + // TODO: FIX MYSQL-PLANETSCALE-CLERK + /* .middleware(async () => { const user = await getServerAuthSession(); - - // If you throw, the user will not be able to upload - if (!user) throw new Error("Unauthorized"); - + // If throw, the user will not be able to upload + if (!user?.id) throw new Error("Unauthorized"); // Whatever is returned here is accessible in onUploadComplete as `metadata` return { userId: user.id }; + }) */ + .onUploadError(async ({ error }) => { + console.error("❌ Error uploading image:", error.message); + throw new Error(error.message); }) - // eslint-disable-next-line @typescript-eslint/require-await .onUploadComplete(async ({ metadata, file }) => { - // This code RUNS ON YOUR SERVER after upload - console.log("Upload complete for userId:", metadata.userId); - - console.log("file url", file.url); + // This code RUNS ON THE SERVER after upload + if (env.NODE_ENV === "development") { + // console.log(" ✓ Image uploaded by userId:", metadata.userId); + console.log("[UT] Image uploaded! URL is", file.url); + } }), } satisfies FileRouter; diff --git a/src/app/api/uploadthing/route.ts b/src/app/api/uploadthing/route.ts index be94bb0c..3705a2b4 100644 --- a/src/app/api/uploadthing/route.ts +++ b/src/app/api/uploadthing/route.ts @@ -2,7 +2,6 @@ import { createNextRouteHandler } from "uploadthing/next"; import { ourFileRouter } from "./core"; -// Export routes for Next App Router export const { GET, POST } = createNextRouteHandler({ router: ourFileRouter, }); diff --git a/src/app/api/user/[id]/billing/manage/route.ts b/src/app/api/user/[id]/billing/manage/route.ts index 141409eb..cd9e3beb 100644 --- a/src/app/api/user/[id]/billing/manage/route.ts +++ b/src/app/api/user/[id]/billing/manage/route.ts @@ -10,7 +10,7 @@ import { NextResponse } from "next/server"; -import { withAuth } from "~/utils/with"; +import { withAuth } from "~/utils/auth/with"; // POST /api/projects/[slug]/billing/manage - create a Stripe billing portal session export const POST = withAuth(async ({ seller }) => { diff --git a/src/app/api/webhooks/stripe/route.ts b/src/app/api/webhooks/stripe/route.ts index 8a5200f3..d5560efb 100644 --- a/src/app/api/webhooks/stripe/route.ts +++ b/src/app/api/webhooks/stripe/route.ts @@ -14,12 +14,12 @@ import { headers } from "next/headers"; import { clerkClient } from "@clerk/nextjs"; -import { env } from "~/env.mjs"; import { type CheckoutItem } from "~/types"; import { eq } from "drizzle-orm"; import type Stripe from "stripe"; import { z } from "zod"; +import { stripe } from "~/core/stripe/connect"; import { db } from "~/data/db"; import { addresses, @@ -30,7 +30,7 @@ import { users, } from "~/data/db/schema"; import { checkoutItemSchema } from "~/data/validations/cart"; -import { stripe } from "~/utils/stripe/connect"; +import { env } from "~/env.mjs"; /** * POST /api/webhooks/stripe @@ -38,29 +38,31 @@ import { stripe } from "~/utils/stripe/connect"; * It's responsible for handling various event types sent by Stripe, such as payment * success, payment failure, customer creation, etc. */ -export async function POST(req: Request) { +export async function POST(request: Request) { /** * Construct and validate the event sent by Stripe. * This process is crucial to ensure the integrity and authenticity of the event. * The event is created by parsing the request body, the Stripe signature header, * and using the Stripe webhook signing secret from the environment variables. */ - const body = await req.text(); + const body = await request.text(); const signature = headers().get("Stripe-Signature") ?? ""; const secret = env.STRIPE_WEBHOOK_SIGNING_SECRET as string; let event: Stripe.Event; try { event = stripe.webhooks.constructEvent(body, signature, secret); - } catch (err) { + } catch (error) { return new Response( - `❌ [Stripe Error]: ${err instanceof Error ? err.message : "Unknown"}`, + `❌ [Stripe Error]: ${ + error instanceof Error ? error.message : "Unknown" + }`, { status: 400 }, ); } // By using console.log in this place, we ensure to see triggered events only const debug = process.env.NODE_ENV === "development"; // const debug = false; - if (debug) console.log(` ✓ Received ${event.type}`); + // if (debug) console.log(` ✓ Received ${event.type}`); // Switch case to handle different types of Stripe webhook events switch (event.type) { @@ -106,7 +108,7 @@ export async function POST(req: Request) { ); // Update the user stripe into in our database as well. - const update_db = await db + const update_database = await db .update(users) .set({ stripeSubscriptionId: subscription.id, @@ -120,8 +122,8 @@ export async function POST(req: Request) { eq(users.id, checkoutSessionCompleted?.metadata?.userId ?? ""), ); - if (debug && update_clerk && update_db) - console.log("✅ [stripe/clerk] User successfully updated."); + if (debug && update_clerk && update_database) + console.log(" ✓ [stripe/clerk] Customer successfully updated"); } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { // Update the user stripe into in our database. // Since this is the initial subscription, we need @@ -141,7 +143,7 @@ export async function POST(req: Request) { ); if (debug && update) - console.log("✅ [stripe/authjs] User successfully updated."); + console.log(" ✓ [stripe/authjs] Customer successfully updated"); } } @@ -186,7 +188,7 @@ export async function POST(req: Request) { ); // Update the user stripe into in our database as well. - const update_db = await db + const update_database = await db .update(users) .set({ stripePriceId: subscription.items.data[0]?.price.id, @@ -198,8 +200,8 @@ export async function POST(req: Request) { eq(users.id, invoicePaymentSucceeded?.metadata?.userId ?? ""), ); - if (debug && update_clerk && update_db) - console.log("✅ [stripe/clerk] User successfully updated."); + if (debug && update_clerk && update_database) + console.log(" ✓ [stripe/clerk] Customer successfully updated"); } else if (env.NEXT_PUBLIC_AUTH_PROVIDER === "authjs") { // Update the price id and set the new period end const update = await db @@ -215,7 +217,7 @@ export async function POST(req: Request) { ); if (debug && update) - console.log("✅ [stripe/authjs] User successfully updated."); + console.log(" ✓ [stripe/authjs] Customer successfully updated"); } } break; //=> invoice.payment_succeeded (2) @@ -233,7 +235,7 @@ export async function POST(req: Request) { const paymentIntentPaymentFailed = event.data .object as Stripe.PaymentIntent; if (debug) { - console.log( + console.error( `❌ Payment failed: ${paymentIntentPaymentFailed.last_payment_error?.message}`, ); } @@ -250,9 +252,8 @@ export async function POST(req: Request) { */ case "payment_intent.processing": { const paymentIntentProcessing = event.data.object as Stripe.PaymentIntent; - if (debug) { + if (debug) console.log(`⌛ Payment processing: ${paymentIntentProcessing.id}`); - } break; //=> payment_intent.processing (4) } @@ -284,7 +285,7 @@ export async function POST(req: Request) { // If there are items in metadata, then create order if (checkoutItems) { try { - if (!event.account) throw new Error("❌ No account found."); + if (!event.account) throw new Error("❌ No account found"); // Parsing items from metadata // Didn't parse before because can pass the unparsed data @@ -295,7 +296,7 @@ export async function POST(req: Request) { JSON.parse(paymentIntentSucceeded?.metadata?.items ?? "[]"), ); if (!safeParsedItems.success) { - throw new Error("❌ Could not parse items."); + throw new Error("❌ Could not parse items"); } const payment = await db.query.payments.findFirst({ @@ -303,11 +304,11 @@ export async function POST(req: Request) { where: eq(payments.stripeAccountId, event.account), }); if (!payment?.storeId) { - return new Response("❌ Store not found.", { status: 404 }); + return new Response("❌ Store not found", { status: 404 }); } // Create new address in DB - const stripeAddress = paymentIntentSucceeded?.shipping?.address; + /* const stripeAddress = paymentIntentSucceeded?.shipping?.address; const newAddress = await db.insert(addresses).values({ line1: stripeAddress?.line1, line2: stripeAddress?.line2, @@ -316,7 +317,7 @@ export async function POST(req: Request) { country: stripeAddress?.country, postalCode: stripeAddress?.postal_code, }); - if (!newAddress.insertId) throw new Error("❌ No address created."); + if (!newAddress.insertId) throw new Error("❌ No address created"); */ // Create new order in db await db.insert(orders).values({ @@ -331,7 +332,7 @@ export async function POST(req: Request) { stripePaymentIntentStatus: paymentIntentSucceeded?.status, name: paymentIntentSucceeded?.shipping?.name, email: paymentIntentSucceeded?.receipt_email, - addressId: Number(newAddress.insertId), + // addressId: Number(newAddress.insertId), }); // Update product inventory in db @@ -344,12 +345,14 @@ export async function POST(req: Request) { where: eq(products.id, item.productId), }); if (!product) { - throw new Error("❌ Product not found."); + throw new Error("❌ Product not found"); } - const inventory = product.inventory - item.quantity; + let inventory: number = product.inventory - item.quantity; if (inventory < 0) { - throw new Error("❌ Product out of stock."); + // TODO: FIX MYSQL !! TEMPORARY SOLUTION + inventory = 1; + // throw new Error("❌ Product out of stock"); } await db @@ -368,8 +371,8 @@ export async function POST(req: Request) { items: [], }) .where(eq(carts.paymentIntentId, paymentIntentId)); - } catch (err) { - console.log("❌ Error creating order.", err); + } catch (error) { + console.error("❌ Error creating order", error); } } @@ -382,7 +385,7 @@ export async function POST(req: Request) { */ case "application_fee.created": { const applicationFeeCreated = event.data.object; - console.log(`Application fee id: ${applicationFeeCreated.id}`); + console.log(` ✓ Application fee id: ${applicationFeeCreated}`); break; //=> application_fee.created (6) } @@ -397,7 +400,7 @@ export async function POST(req: Request) { case "charge.succeeded": { // const chargeSucceeded = event.data.object as Stripe.Charge; // if (debug) { - // console.log(`✅ ChargeId ${chargeSucceeded.id} succeeded!`); + // console.log(` ✓ ChargeId ${chargeSucceeded.id} succeeded!`); // } break; //=> charge.succeeded (7) } @@ -412,7 +415,7 @@ export async function POST(req: Request) { */ case "customer.created": { // if (debug) { - // console.log("✅ New customer successfully created!"); + // console.log(" ✓ New customer successfully created!"); // } break; //=> customer.created (8) } @@ -421,7 +424,7 @@ export async function POST(req: Request) { * [9] customer.subscription.updated * ================================= * - * Triggered when a subscription for a customer is updated. This + * Triggered when a subscription for a customer is updated This * can involve changes in plan, status updates, or billing cycles. * Essential for maintaining current subscription states in your system. */ @@ -449,8 +452,9 @@ export async function POST(req: Request) { case "payment_method.attached": case "account.external_account.deleted": case "account.external_account.updated": - case "account.external_account.created": + case "account.external_account.created": { break; + } /** * [else] Unknown event types @@ -469,7 +473,7 @@ export async function POST(req: Request) { * Respond to the webhook event. And * close the current webhook request. */ - return new Response(null, { status: 200 }); + return new Response(undefined, { status: 200 }); } /** diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 68b3036b..b7d0d38f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,9 +1,9 @@ // This is the RootLayout component: A wrapper for the app. // Navigate to "app/[locale]/layout.tsx" for the main layout file. -type RootLayoutProps = { children: React.ReactNode }; +type RootLayoutProperties = { children: React.ReactNode }; -export default function RootLayout({ children }: RootLayoutProps) { +export default function RootLayout({ children }: RootLayoutProperties) { return children; } diff --git a/src/app/manifest.ts b/src/app/manifest.ts index 650bd86f..27f4d462 100644 --- a/src/app/manifest.ts +++ b/src/app/manifest.ts @@ -1,4 +1,5 @@ import { type MetadataRoute } from "next"; + import { siteConfig } from "~/app"; export default function manifest(): MetadataRoute.Manifest { diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index 5e7fe599..9986a966 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,5 +1,6 @@ "use client"; +// biome-ignore lint/suspicious/noShadowRestrictedNames: import Error from "next/error"; /** diff --git a/src/app/page.tsx b/src/app/page.tsx index 1690ac2e..c0bb3886 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,4 +1,5 @@ import { redirect } from "next/navigation"; + import { defaultLocale } from "~/navigation"; /** @@ -7,6 +8,5 @@ import { defaultLocale } from "~/navigation"; * For the actual content, please visit the "app/[locale]/page.tsx" page component. */ export default function RootPage() { - // return <>debug_mode_enabled; redirect(defaultLocale); } diff --git a/src/app/robots.ts b/src/app/robots.ts index d7ae6071..93f9334c 100644 --- a/src/app/robots.ts +++ b/src/app/robots.ts @@ -1,14 +1,16 @@ -/** @see https://robotstxt.org/robotstxt.html */ +import type { MetadataRoute } from "next"; -import { MetadataRoute } from "next"; import { BASE_URL } from "~/app"; +/** + * @see https://github.com/search?q=path%3Aapp%2Frobots.ts&type=code + * @see https://robotstxt.org/robotstxt.html + * @see https://rotecna.com/robots.txt + */ + export default function robots(): MetadataRoute.Robots { return { - rules: { - userAgent: "*", - allow: "/", - }, + rules: { userAgent: "*", allow: "/" }, sitemap: `${BASE_URL}/sitemap.xml`, }; } diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index f1614ece..1d56d5e4 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -33,14 +33,12 @@ export default async function sitemap(): Promise { lastModified: new Date().toISOString(), })); - const subcategories = productCategories - .map((category) => - category.subcategories.map((subcategory) => ({ - url: absoluteUrl(`/categories/${category.title}/${subcategory.slug}`), - lastModified: new Date().toISOString(), - })), - ) - .flat(); + const subcategories = productCategories.flatMap((category) => + category.subcategories.map((subcategory) => ({ + url: absoluteUrl(`/categories/${category.title}/${subcategory.slug}`), + lastModified: new Date().toISOString(), + })), + ); const routes = [ "", diff --git a/src/core/adm/actions.ts b/src/core/adm/actions.ts new file mode 100644 index 00000000..b38262e7 --- /dev/null +++ b/src/core/adm/actions.ts @@ -0,0 +1,56 @@ +"use server"; + +import { eq } from "drizzle-orm"; + +import { db } from "~/data/db"; +import type { User } from "~/data/db/schema"; +import { users } from "~/data/db/schema"; +import { redirect } from "~/navigation"; +import { getServerAuthSession } from "~/utils/auth/users"; + +interface changeUserPrivilegiesProps { + role: "user" | "admin"; + userId: string; +} + +export async function changeUserPrivilegies({ + role, + userId, +}: changeUserPrivilegiesProps) { + const session = await getServerAuthSession(); + if (!session) return redirect("/auth"); + + try { + const admin: User = await db.query.users.findFirst({ + columns: { role: true }, + where: eq(users.id, session.id), + }); + if (!admin || admin.role !== "admin") { + return { + result: + "You need to have 'admin' role in 'users' table to change user privileges", + }; + } + + const user = await db.query.users.findFirst({ + where: eq(users.id, userId), + }); + if (!user) return { result: "User not found" }; + + const success: boolean = await db + .update(users) + .set({ role } as User) + .where(eq(users.id, userId)); + + if (success) return { result: `User role was changed to '${role}'` }; + else return { result: "Something wrong when switching user role..." }; + } catch (error) { + if (error instanceof Error) { + console.error("❌ Error in changeUserPrivilegies:", error.message); + return { result: `Error when switching user role: ${error.message}` }; + } else { + console.error("❌ Unknown error in changeUserPrivilegies"); + return { result: "An unknown error occurred" }; + } + } +} diff --git a/src/auth.ts b/src/core/auth/authjs/index.ts similarity index 69% rename from src/auth.ts rename to src/core/auth/authjs/index.ts index 285bda9f..2118d23a 100644 --- a/src/auth.ts +++ b/src/core/auth/authjs/index.ts @@ -6,7 +6,6 @@ */ import { DrizzleAdapter } from "@auth/drizzle-adapter"; -import { env } from "~/env.mjs"; import { getServerSession, type DefaultSession, @@ -15,11 +14,13 @@ import { import DiscordProvider from "next-auth/providers/discord"; import GithubProvider from "next-auth/providers/github"; import GoogleProvider from "next-auth/providers/google"; -import { type Provider } from "next-auth/providers/index"; +import type { Provider } from "next-auth/providers/index"; +import { getLocale } from "next-intl/server"; import { db } from "~/data/db"; import { mysqlTable } from "~/data/db/schema/mysql"; import { pgTable } from "~/data/db/schema/pgsql"; +import { env } from "~/env.mjs"; // Choose the appropriate table based on the provider let table; @@ -55,11 +56,24 @@ declare module "next-auth" { } /** - * Auth.js Providers - * + * NextAuth.js Providers Configuration + * =================================== * @see https://next-auth.js.org/providers/discord * @see https://next-auth.js.org/providers/github * @see https://next-auth.js.org/providers/google + * + * Note: Normally, when you sign in with an OAuth provider and another account with the same + * email address already exists, the accounts are not linked automatically. Automatic account + * linking on sign in is not secure between arbitrary providers and is disabled by default. + * @see https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/lib/routes/callback/handle-login.ts#L174 + * @see https://github.com/nextauthjs/next-auth/blob/main/docs/docs/guides/providers/custom-provider.md?plain=1#L83 + * @see https://github.com/boxyhq/next-auth/blob/main/docs/docs/reference/adapters/index.md?plain=1#L175 + * @see https://next-auth.js.org/configuration/providers/oauth#allowdangerousemailaccountlinking-option + * @see https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/oauth.ts#L210 + * @see https://github.com/dustij/dbudget/blob/main/src/app/api/auth/%5B...nextauth%5D/options.ts + * + * todo: try to implement our own safe account linking logic if possible + * @see https://authjs.dev/reference/core/adapters#linkaccount */ const providers = [ env.DISCORD_CLIENT_ID && @@ -67,18 +81,21 @@ const providers = [ DiscordProvider({ clientId: env.DISCORD_CLIENT_ID, clientSecret: env.DISCORD_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, }), env.GITHUB_CLIENT_ID && env.GITHUB_CLIENT_SECRET && GithubProvider({ clientId: env.GITHUB_CLIENT_ID, clientSecret: env.GITHUB_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, }), env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET && GoogleProvider({ clientId: env.GOOGLE_CLIENT_ID, clientSecret: env.GOOGLE_CLIENT_SECRET, + allowDangerousEmailAccountLinking: true, }), /** * ...add more authjs providers here @@ -100,20 +117,20 @@ const providers = [ * @see https://next-auth.js.org/configuration/callbacks */ export const authOptions: NextAuthOptions = { + // @ts-expect-error strange error drizzle adapter: DrizzleAdapter(db, table), secret: env.NEXTAUTH_SECRET, providers, callbacks: { session: ({ session, user }) => ({ ...session, - user: { - ...session.user, - id: user.id, - }, + user: { ...session.user, id: user.id }, }), }, pages: { newUser: "/auth", + signIn: "/sign-in", + signOut: "/sign-out", }, }; @@ -123,3 +140,9 @@ export const authOptions: NextAuthOptions = { * @see https://next-auth.js.org/configuration/nextjs */ export const getNextAuthServerSession = () => getServerSession(authOptions); + +/** + * DOCUMENTATION + * ============= + * Coming Soon... + */ diff --git a/src/app/[locale]/(main)/(features)/serverAction/WhoAmIButton.tsx b/src/core/auth/authjs/islands/check-user-button.tsx similarity index 95% rename from src/app/[locale]/(main)/(features)/serverAction/WhoAmIButton.tsx rename to src/core/auth/authjs/islands/check-user-button.tsx index 65c116a6..2329569b 100644 --- a/src/app/[locale]/(main)/(features)/serverAction/WhoAmIButton.tsx +++ b/src/core/auth/authjs/islands/check-user-button.tsx @@ -11,6 +11,7 @@ export default function WhoAmIButton({ return (
{" "} + {" "} + {" "} + + +
+

Products

+ +
+ {productData && ( + <> +

Product Details

+
+ {productData.nameLong} + {productData.seller && ( + - {productData.seller.name} + )} +
+ + )} +
+
+ ); +} diff --git a/src/utils/trpc/trpc.ts b/src/core/trpc/trpc.ts similarity index 88% rename from src/utils/trpc/trpc.ts rename to src/core/trpc/trpc.ts index b6f452f0..8324087c 100644 --- a/src/utils/trpc/trpc.ts +++ b/src/core/trpc/trpc.ts @@ -12,8 +12,9 @@ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import { ZodError } from "zod"; +import type { Context } from "~/core/trpc/context"; import { db } from "~/data/db"; -import { getServerAuthSession } from "~/utils/users"; +import { getServerAuthSession } from "~/utils/auth/users"; /** * 1. CONTEXT @@ -48,9 +49,8 @@ export const createInnerTRPCContext = async (opts: CreateContextOptions) => { }; /** - * This is the actual context you will use in your router. It will be used to process every request - * that goes through your tRPC endpoint. - * + * This is the actual context you'll use in your router. It will be used to + * process every request that goes through your tRPC endpoint * @see https://trpc.io/docs/context */ export const createTRPCContext = async (opts: { req: NextRequest }) => { @@ -82,6 +82,8 @@ const t = initTRPC.context().create({ }; }, }); +// Initialize tRPC to be used as inner nested +export const tn = initTRPC.context().create(); /** * 3. ROUTER & PROCEDURE (THE IMPORTANT BIT) @@ -107,7 +109,8 @@ export const createTRPCRouter = t.router; export const publicProcedure = t.procedure; /** Reusable middleware that enforces users are logged in before running the procedure. */ -const enforceUserIsAuthed = t.middleware(({ ctx, next }) => { +const enforceUserIsAuthed = t.middleware(({ ctx, next, input }) => { + // console.log({ input }); // to debug if (!ctx.session || !ctx.session.id) { throw new TRPCError({ code: "UNAUTHORIZED" }); } diff --git a/src/utils/trpc/others/trpc.ts b/src/core/trpc/trpc2.ts similarity index 89% rename from src/utils/trpc/others/trpc.ts rename to src/core/trpc/trpc2.ts index fc8dd181..4d5f61f6 100644 --- a/src/utils/trpc/others/trpc.ts +++ b/src/core/trpc/trpc2.ts @@ -1,6 +1,6 @@ import { initTRPC, TRPCError } from "@trpc/server"; -import { Context } from "~/utils/trpc/others/context"; +import type { Context } from "~/core/trpc/context"; const t = initTRPC.context().create(); diff --git a/src/data/db/index.ts b/src/data/db/index.ts index d942126e..63e63ecc 100644 --- a/src/data/db/index.ts +++ b/src/data/db/index.ts @@ -1,46 +1,64 @@ /** * Unified Schema Exporter for Multiple Databases * ============================================== - * * Please check the "schema/index.ts" file for * instructions, resources, inspirations, etc. */ -import { Client as clientPlanetscale } from "@planetscale/database"; -import { env } from "~/env.mjs"; -import { drizzle as drizzlePlanetscale } from "drizzle-orm/planetscale-serverless"; -import { drizzle as drizzlePostgres } from "drizzle-orm/postgres-js"; +import { Client as ClientPlanetscale } from "@planetscale/database"; +import { addQueryParamIfMissed } from "~/utils"; +import { + drizzle as drizzlePlanetscale, + type PlanetScaleDatabase, +} from "drizzle-orm/planetscale-serverless"; +import { + drizzle as drizzlePostgres, + type PostgresJsDatabase, +} from "drizzle-orm/postgres-js"; import postgres from "postgres"; +import { env } from "~/env.mjs"; + import * as schemaMysql from "./schema/mysql"; import * as schemaPgsql from "./schema/pgsql"; -if (!env.NEXT_PUBLIC_DB_PROVIDER) - throw new Error( - "NEXT_PUBLIC_DB_PROVIDER is not set in environment variables.", - ); +// Connection strings for MySQL and PostgreSQL +// Add the ssl query parameter if it's missing +const csMysql: string = addQueryParamIfMissed( + env.DATABASE_URL, + "ssl", + JSON.stringify({ rejectUnauthorized: true }), +); +const csPgsql: string = addQueryParamIfMissed( + env.DATABASE_URL, + "sslmode", + "require", +); -const csMysql = `${env.DATABASE_URL}?ssl={"rejectUnauthorized":true}`; -const csPgsql = `${env.DATABASE_URL}?sslmode=require`; +// todo: we need to figure out +// todo: how to type db properly -// todo: We need to figure out how to type this properly -// import type { PlanetScaleDatabase } from "drizzle-orm/planetscale-serverless"; -// import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; -// export type DB = PlanetScaleDatabase | PostgresJsDatabase; -// let db: DB | Promise; -// type DatabaseInstance = PlanetScaleDatabase | PostgresJsDatabase; -// let db: DatabaseInstance; -let db: any; +let db: + | PlanetScaleDatabase + | PostgresJsDatabase + | any; -/** - * Configure this based on the database provider. - * Feel free to add/remove/edit things if needed. - */ +let dbProvider = env.NEXT_PUBLIC_DB_PROVIDER; + +// Configure this based on the database provider. +// Feel free to add/remove/edit things if needed. try { - switch (env.NEXT_PUBLIC_DB_PROVIDER) { + // Set default DB provider based on DATABASE_URL + // if NEXT_PUBLIC_DB_PROVIDER is not specified + if (!dbProvider) { + const databaseUrl = process.env.DATABASE_URL; + if (databaseUrl?.startsWith("mysql://")) dbProvider = "planetscale"; + else if (databaseUrl?.startsWith("postgres://")) dbProvider = "neon"; + } + switch (dbProvider) { case "planetscale": db = drizzlePlanetscale( - new clientPlanetscale({ url: csMysql }).connection(), + new ClientPlanetscale({ url: csMysql }).connection(), { schema: schemaMysql, logger: false }, ); break; @@ -54,7 +72,7 @@ try { break; default: throw new Error( - `💡 Unsupported NEXT_PUBLIC_DB_PROVIDER "${env.NEXT_PUBLIC_DB_PROVIDER}".\ + `❌ Unsupported NEXT_PUBLIC_DB_PROVIDER "${dbProvider}".\ Please check your environment configuration.`, ); } diff --git a/src/data/db/schema/index.ts b/src/data/db/schema/index.ts index 43d55b6b..b41dfe4c 100644 --- a/src/data/db/schema/index.ts +++ b/src/data/db/schema/index.ts @@ -10,44 +10,53 @@ * Check {dialect}.ts files to see the detailed database structures. */ +import * as schemaMysql from "~/data/db/schema/mysql"; +import * as schemaPgsql from "~/data/db/schema/pgsql"; import { env } from "~/env.mjs"; -import * as schemaMysql from "./mysql"; -import * as schemaPgsql from "./pgsql"; +// Configure this based on the database provider. +// Feel free to add/remove/edit things if needed. +const selectedSchema = (() => { + let dbProvider = env.NEXT_PUBLIC_DB_PROVIDER || ""; -if (!env.NEXT_PUBLIC_DB_PROVIDER) - throw new Error( - "NEXT_PUBLIC_DB_PROVIDER is not set in environment variables.", - ); + if (!dbProvider) { + dbProvider = "planetscale"; + console.error( + "❌ NEXT_PUBLIC_DB_PROVIDER is not set (refer to .env.example)", + ); -/** - * Configure this based on the database provider. - * Feel free to add/remove/edit things if needed. - */ -const selectedSchema = (() => { - switch (env.NEXT_PUBLIC_DB_PROVIDER) { - case "planetscale": - return schemaMysql; - case "railway": - case "vercel": - case "neon": - return schemaPgsql; - default: - throw new Error( - `Unknown NEXT_PUBLIC_DB_PROVIDER: ${env.NEXT_PUBLIC_DB_PROVIDER}`, - ); + // Set default DB provider based on DATABASE_URL + // if NEXT_PUBLIC_DB_PROVIDER is not specified + // todo: Find another way, because DATABASE_URL + // todo: can't be accessed on the client-side. + // const databaseUrl = env.DATABASE_URL; + // if (databaseUrl?.startsWith("mysql://")) { + // dbProvider = "planetscale"; + // } else if (databaseUrl?.startsWith("postgres://")) { + // dbProvider = "neon"; + // } + } + + // Assign schema based on the dbProvider + if (dbProvider === "planetscale") { + return schemaMysql; + } else if (["railway", "vercel", "neon"].includes(dbProvider)) { + return schemaPgsql; + } else { + console.error("❌ selectedSchema(): Unknown NEXT_PUBLIC_DB_PROVIDER"); + return schemaMysql; } })(); -//======================================================= +// ======================================================= // Export tables based on the selected schema -//======================================================= +// ======================================================= export const { accounts, addresses, carts, - emailPreferences, + emails, orders, payments, products, @@ -59,14 +68,13 @@ export const { verificationTokens, } = selectedSchema; -//======================================================= +// ======================================================= // Export types based on the selected schema -//======================================================= +// ======================================================= export type Address = typeof selectedSchema.addresses.$inferSelect; export type Cart = typeof selectedSchema.carts.$inferSelect; -export type EmailPreference = - typeof selectedSchema.emailPreferences.$inferSelect; +export type EmailPreference = typeof selectedSchema.emails.$inferSelect; export type Order = typeof selectedSchema.orders.$inferSelect; export type Payment = typeof selectedSchema.payments.$inferSelect; export type Product = typeof selectedSchema.products.$inferSelect; @@ -76,8 +84,7 @@ export type User = typeof selectedSchema.users.$inferSelect; export type NewAddress = typeof selectedSchema.addresses.$inferInsert; export type NewCart = typeof selectedSchema.carts.$inferInsert; -export type NewEmailPreference = - typeof selectedSchema.emailPreferences.$inferInsert; +export type NewEmailPreference = typeof selectedSchema.emails.$inferInsert; export type NewOrder = typeof selectedSchema.orders.$inferInsert; export type NewPayment = typeof selectedSchema.payments.$inferInsert; export type NewProduct = typeof selectedSchema.products.$inferInsert; diff --git a/src/data/db/schema/mysql.ts b/src/data/db/schema/mysql.ts index b3548105..13f513d8 100644 --- a/src/data/db/schema/mysql.ts +++ b/src/data/db/schema/mysql.ts @@ -18,10 +18,11 @@ import { timestamp, varchar, } from "drizzle-orm/mysql-core"; -import Stripe from "stripe"; +import type Stripe from "stripe"; export const mysqlTable = mysqlTableCreator((name) => `acme_${name}`); +// @see src/app/[locale]/(auth)/auth/page.tsx export const users = mysqlTable("user", { id: varchar("id", { length: 255 }).notNull().primaryKey(), name: varchar("name", { length: 255 }), @@ -32,8 +33,11 @@ export const users = mysqlTable("user", { fsp: 3, }).default(sql`CURRENT_TIMESTAMP(3)`), image: varchar("image", { length: 255 }), + role: mysqlEnum("role", ["admin", "user"]).notNull().default("user"), + mode: mysqlEnum("mode", ["seller", "buyer"]).notNull().default("buyer"), stripeCustomerId: text("stripeCustomerId"), stripePriceId: text("stripePriceId"), + currentCartId: varchar("currentCartId", { length: 255 }), stripeCurrentPeriodEnd: text("stripeCurrentPeriodEnd"), stripeSubscriptionId: text("stripeSubscriptionId"), createdAt: timestamp("createdAt").defaultNow(), @@ -42,6 +46,7 @@ export const users = mysqlTable("user", { export const usersRelations = relations(users, ({ many }) => ({ usersToProducts: many(usersToProducts), + capabilities: many(capabilities), accounts: many(accounts), products: many(products), stores: many(stores), @@ -138,12 +143,12 @@ export const todosRelations = relations(todos, ({ one }) => ({ export const stores = mysqlTable("stores", { id: serial("id").primaryKey(), - userId: varchar("userId", { length: 191 }).notNull(), - name: varchar("name", { length: 191 }).notNull(), + userId: varchar("userId", { length: 255 }).notNull(), + name: varchar("name", { length: 255 }).notNull(), description: text("description"), slug: text("slug"), active: boolean("active").notNull().default(false), - stripeAccountId: varchar("stripeAccountId", { length: 191 }), + stripeAccountId: varchar("stripeAccountId", { length: 255 }), createdAt: timestamp("createdAt").defaultNow(), }); @@ -155,7 +160,8 @@ export const storesRelations = relations(stores, ({ many, one }) => ({ export const products = mysqlTable("products", { id: serial("id").primaryKey(), - name: varchar("name", { length: 191 }).notNull(), + name: varchar("name", { length: 255 }).notNull(), + storeId: int("storeId").notNull().default(1), description: text("description"), images: json("images").$type().default(null), category: mysqlEnum("category", [ @@ -166,12 +172,11 @@ export const products = mysqlTable("products", { ]) .notNull() .default("clothing"), - subcategory: varchar("subcategory", { length: 191 }), + subcategory: varchar("subcategory", { length: 255 }), price: decimal("price", { precision: 10, scale: 2 }).notNull().default("0"), inventory: int("inventory").notNull().default(0), rating: int("rating").notNull().default(0), tags: json("tags").$type().default(null), - storeId: int("storeId").notNull(), createdAt: timestamp("createdAt").defaultNow(), }); @@ -182,8 +187,10 @@ export const productsRelations = relations(products, ({ one }) => ({ export const carts = mysqlTable("carts", { id: serial("id").primaryKey(), - paymentIntentId: varchar("paymentIntentId", { length: 191 }), - clientSecret: varchar("clientSecret", { length: 191 }), + userId: varchar("userId", { length: 255 }), + email: varchar("email", { length: 255 }), + clientSecret: varchar("clientSecret", { length: 255 }), + paymentIntentId: varchar("paymentIntentId", { length: 255 }), items: json("items").$type().default(null), closed: boolean("closed").notNull().default(false), createdAt: timestamp("createdAt").defaultNow(), @@ -191,13 +198,14 @@ export const carts = mysqlTable("carts", { export const cartsRelations = relations(carts, ({ one }) => ({ user: one(users, { fields: [carts.id], references: [users.id] }), + store: one(stores, { fields: [carts.id], references: [stores.id] }), })); -export const emailPreferences = mysqlTable("emails", { +export const emails = mysqlTable("emails", { id: serial("id").primaryKey(), - userId: varchar("userId", { length: 191 }), - email: varchar("email", { length: 191 }).notNull(), - token: varchar("token", { length: 191 }).notNull(), + userId: varchar("userId", { length: 255 }), + email: varchar("email", { length: 255 }).notNull(), + token: varchar("token", { length: 255 }).notNull(), newsletter: boolean("newsletter").notNull().default(false), marketing: boolean("marketing").notNull().default(false), transactional: boolean("transactional").notNull().default(false), @@ -207,7 +215,7 @@ export const emailPreferences = mysqlTable("emails", { export const payments = mysqlTable("payments", { id: serial("id").primaryKey(), storeId: int("storeId").notNull(), - stripeAccountId: varchar("stripeAccountId", { length: 191 }).notNull(), + stripeAccountId: varchar("stripeAccountId", { length: 255 }).notNull(), stripeAccountCreatedAt: int("stripeAccountCreatedAt"), stripeAccountExpiresAt: int("stripeAccountExpiresAt"), detailsSubmitted: boolean("detailsSubmitted").notNull().default(false), @@ -225,25 +233,25 @@ export const orders = mysqlTable("orders", { quantity: int("quantity"), amount: decimal("amount", { precision: 10, scale: 2 }).notNull().default("0"), stripePaymentIntentId: varchar("stripePaymentIntentId", { - length: 191, + length: 255, }).notNull(), stripePaymentIntentStatus: varchar("stripePaymentIntentStatus", { - length: 191, + length: 255, }).notNull(), - name: varchar("name", { length: 191 }), - email: varchar("email", { length: 191 }), + name: varchar("name", { length: 255 }), + email: varchar("email", { length: 255 }), addressId: int("addressId"), createdAt: timestamp("createdAt").defaultNow(), }); export const addresses = mysqlTable("addresses", { id: serial("id").primaryKey(), - line1: varchar("line1", { length: 191 }), - line2: varchar("line2", { length: 191 }), - city: varchar("city", { length: 191 }), - state: varchar("state", { length: 191 }), - postalCode: varchar("postalCode", { length: 191 }), - country: varchar("country", { length: 191 }), + line1: varchar("line1", { length: 255 }), + line2: varchar("line2", { length: 255 }), + city: varchar("city", { length: 255 }), + state: varchar("state", { length: 255 }), + postalCode: varchar("postalCode", { length: 255 }), + country: varchar("country", { length: 255 }), createdAt: timestamp("createdAt").defaultNow(), }); @@ -271,3 +279,33 @@ export const usersToProductsRelations = relations( }), }), ); + +export const guests = mysqlTable("guest", { + id: varchar("id", { length: 255 }).notNull().primaryKey(), + email: varchar("email", { length: 255 }), + createdAt: timestamp("createdAt").defaultNow(), + updatedAt: timestamp("updatedAt").defaultNow(), +}); + +export const guestsRelations = relations(users, ({ many }) => ({ + usersToProducts: many(usersToProducts), + products: many(products), + todos: many(todos), + carts: many(carts), +})); + +export const capabilities = mysqlTable("capabilities", { + id: serial("id").primaryKey(), + userId: varchar("userId", { length: 255 }).notNull(), + promoteUsers: boolean("promote_users").notNull().default(false), + removeUsers: boolean("remove_users").notNull().default(false), + createdAt: timestamp("createdAt").defaultNow(), + updatedAt: timestamp("updatedAt").defaultNow(), +}); + +export const capabilitiesRelations = relations(capabilities, ({ one }) => ({ + user: one(users, { + fields: [capabilities.userId], + references: [users.id], + }), +})); diff --git a/src/data/db/schema/pgsql.ts b/src/data/db/schema/pgsql.ts index f74a3e16..28528dd3 100644 --- a/src/data/db/schema/pgsql.ts +++ b/src/data/db/schema/pgsql.ts @@ -17,10 +17,20 @@ import { text, timestamp, } from "drizzle-orm/pg-core"; -import Stripe from "stripe"; +import type Stripe from "stripe"; + +export const roleEnum = pgEnum("role", ["user", "admin"]); +export const modeEnum = pgEnum("mode", ["buyer", "seller"]); +export const categoryEnum = pgEnum("category", [ + "accessories", + "furniture", + "clothing", + "tech", +]); export const pgTable = pgTableCreator((name) => `acme_${name}`); +// @see src/app/[locale]/(auth)/auth/page.tsx export const users = pgTable("user", { id: text("id").notNull().primaryKey(), name: text("name"), @@ -28,8 +38,11 @@ export const users = pgTable("user", { emailClerk: text("emailClerk"), emailVerified: timestamp("emailVerified", { mode: "date" }), image: text("image"), + role: roleEnum("role").notNull().default("user"), + mode: modeEnum("mode").notNull().default("buyer"), stripeCustomerId: text("stripeCustomerId"), stripePriceId: text("stripePriceId"), + currentCartId: text("currentCartId"), stripeCurrentPeriodEnd: text("stripeCurrentPeriodEnd"), stripeSubscriptionId: text("stripeSubscriptionId"), createdAt: timestamp("createdAt").defaultNow(), @@ -38,6 +51,7 @@ export const users = pgTable("user", { export const usersRelations = relations(users, ({ many }) => ({ usersToProducts: many(usersToProducts), + capabilities: many(capabilities), accounts: many(accounts), products: many(products), stores: many(stores), @@ -62,7 +76,9 @@ export const accounts = pgTable( token_type: text("token_type"), }, (account) => ({ - compoundKey: primaryKey(account.provider, account.providerAccountId), + compoundKey: primaryKey({ + columns: [account.provider, account.providerAccountId], + }), userIdIdx: index("userId_idx").on(account.userId), }), ); @@ -71,17 +87,11 @@ export const accountsRelations = relations(accounts, ({ one }) => ({ user: one(users, { fields: [accounts.userId], references: [users.id] }), })); -export const sessions = pgTable( - "session", - { - sessionToken: text("sessionToken").notNull().primaryKey(), - userId: text("userId").notNull(), - expires: timestamp("expires", { mode: "date" }).notNull(), - }, - (session) => ({ - userIdIdx: index("userId_idx").on(session.userId), - }), -); +export const sessions = pgTable("session", { + sessionToken: text("sessionToken").notNull().primaryKey(), + userId: text("userId").notNull(), + expires: timestamp("expires", { mode: "date" }).notNull(), +}); export const sessionsRelations = relations(sessions, ({ one }) => ({ user: one(users, { fields: [sessions.userId], references: [users.id] }), @@ -95,7 +105,7 @@ export const verificationTokens = pgTable( expires: timestamp("expires", { mode: "date" }).notNull(), }, (vt) => ({ - compoundKey: primaryKey(vt.identifier, vt.token), + compoundKey: primaryKey({ columns: [vt.identifier, vt.token] }), }), ); @@ -147,16 +157,10 @@ export const storesRelations = relations(stores, ({ many, one }) => ({ user: one(users, { fields: [stores.id], references: [users.id] }), })); -export const categoryEnum = pgEnum("category", [ - "accessories", - "furniture", - "clothing", - "tech", -]); - export const products = pgTable("products", { id: serial("id").primaryKey(), name: text("name").notNull(), + storeId: integer("storeId").notNull().default(1), description: text("description"), images: json("images").$type().default(null), category: categoryEnum("category").notNull().default("clothing"), @@ -165,7 +169,6 @@ export const products = pgTable("products", { inventory: integer("inventory").notNull().default(0), rating: integer("rating").notNull().default(0), tags: json("tags").$type().default(null), - storeId: integer("storeId").notNull(), createdAt: timestamp("createdAt").defaultNow(), }); @@ -176,8 +179,10 @@ export const productsRelations = relations(products, ({ one }) => ({ export const carts = pgTable("carts", { id: serial("id").primaryKey(), - paymentIntentId: text("paymentIntentId"), + userId: text("userId"), + email: text("email"), clientSecret: text("clientSecret"), + paymentIntentId: text("paymentIntentId"), items: json("items").$type().default(null), closed: boolean("closed").notNull().default(false), createdAt: timestamp("createdAt").defaultNow(), @@ -185,9 +190,10 @@ export const carts = pgTable("carts", { export const cartsRelations = relations(carts, ({ one }) => ({ user: one(users, { fields: [carts.id], references: [users.id] }), + store: one(stores, { fields: [carts.id], references: [stores.id] }), })); -export const emailPreferences = pgTable("emails", { +export const emails = pgTable("emails", { id: serial("id").primaryKey(), userId: text("userId"), email: text("email").notNull(), @@ -244,7 +250,9 @@ export const usersToProducts = pgTable( productId: text("product_id").notNull(), }, (usersToProducts) => ({ - compoundKey: primaryKey(usersToProducts.userId, usersToProducts.productId), + compoundKey: primaryKey({ + columns: [usersToProducts.userId, usersToProducts.productId], + }), }), ); @@ -261,3 +269,33 @@ export const usersToProductsRelations = relations( }), }), ); + +export const guests = pgTable("guest", { + id: text("id").notNull().primaryKey(), + email: text("email"), + createdAt: timestamp("createdAt").defaultNow(), + updatedAt: timestamp("updatedAt").defaultNow(), +}); + +export const guestsRelations = relations(users, ({ many }) => ({ + usersToProducts: many(usersToProducts), + products: many(products), + todos: many(todos), + carts: many(carts), +})); + +export const capabilities = pgTable("capabilities", { + id: serial("id").primaryKey(), + userId: text("userId").notNull(), + promoteUsers: boolean("promote_users").notNull().default(false), + removeUsers: boolean("remove_users").notNull().default(false), + createdAt: timestamp("createdAt").defaultNow(), + updatedAt: timestamp("updatedAt").defaultNow(), +}); + +export const capabilitiesRelations = relations(capabilities, ({ one }) => ({ + user: one(users, { + fields: [capabilities.userId], + references: [users.id], + }), +})); diff --git a/src/data/i18n/de-de.json b/src/data/i18n/de-de.json index 34529989..daa3d06a 100644 --- a/src/data/i18n/de-de.json +++ b/src/data/i18n/de-de.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Blockieren", - "columns": "Spalten", - "delete": "Löschen", - "email": "E-Mail", - "filter-emails-placeholder": "E-Mails filtern", - "id": "ID", - "isadmin": "Ist Administrator", - "lastlogintime": "Letzter Login-Zeitpunkt", - "make-admin": "Zum Administrator machen", - "make-non-admin": "Zum Nicht-Administrator machen", - "name": "Name", - "next": "Nächste", - "no-results": "Keine Ergebnisse", - "of": "von", - "previous": "Vorherige", - "registrationtime": "Anmeldezeitpunkt", - "rows-selected": "Zeile(n) ausgewählt", - "success-description": "Erfolg", - "success-title": "Erfolgreich", - "unblock": "Freigeben", - "view-profile": "Profil anzeigen" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Diese Umgebungsvariablen sind falsch oder nicht angegeben (bitte überprüfen Sie die .env-Datei):" - } - }, - "LanguageSwitch": { - "choose-language": "Sprache" - }, - "LocaleSwitcher": { - "label": "Sprache ändern", - "selectLocale": "Sprache" - }, - "LoginForm": { - "description": "Melden Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort an.", - "email": "E-Mail", - "email-placeholder": "Geben Sie Ihre E-Mail-Adresse ein", - "error-heading": "Anmeldung fehlgeschlagen.", - "errors": { - "Callback": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "CredentialsSignin": "Anmeldung fehlgeschlagen. Überprüfen Sie, ob die von Ihnen bereitgestellten Details korrekt sind.", - "Email or password is incorrect": "E-Mail oder Passwort ist falsch.", - "EmailCreateAccount": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "EmailSignin": "Überprüfen Sie Ihre E-Mail-Adresse.", - "Invalid credentials": "Ungültige Anmeldedaten.", - "OAuthAccountNotLinked": "Um Ihre Identität zu bestätigen, melden Sie sich mit demselben Konto an, das Sie ursprünglich verwendet haben.", - "OAuthCallback": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "OAuthCreateAccount": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "OAuthSignin": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "Signin": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", - "default": "Anmeldung fehlgeschlagen." - }, - "form": { - "description": "Melden Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort bei Ihrem Konto an.", - "email": "Email", - "email-placeholder": "Geben sie ihre E-Mailadresse ein", - "error-heading": "Manchmal passieren schlimme Dinge ...", - "no-account": "Sie haben noch kein Konto?", - "other-options": "Melden Sie sich an mit:", - "password": "Passwort", - "password-placeholder": "Geben Sie Ihr Passwort ein", - "sign-out": "Abmelden", - "signup": "Hier anmelden.", - "submit": "anmelden", - "title": "anmelden", - "wait": "Bitte warten..." - }, - "no-account": "Haben Sie noch keinen Account?", - "other-options": "Oder melden Sie sich an mit:", - "password": "Passwort", - "password-placeholder": "Geben Sie Ihr Passwort ein", - "reset-password": "Passwort zurücksetzen", - "signin": "anmelden", - "signup": "Hier registrieren.", - "submit": "Anmelden", - "success-description": "Erfolg.", - "success-title": "Erledigt!", - "title": "Anmelden", - "wait": "Bitte warten..." - }, - "MainError": { - "Could not fetch user.": "Konnte den Benutzer nicht abrufen.", - "Not authenticated.": "Nicht authentifiziert.", - "User not found.": "Benutzer nicht gefunden.", - "error": "Fehler" - }, - "Navbar": { - "home": "Startseite", - "sign-out": "Ausloggen", - "signin": "Anmelden" - }, - "ProfileButton": { - "admin": "Admin-Panel", - "logout": "Abmelden", - "my-account": "Mein Konto", - "new-review": "Neue Bewertung", - "profile": "Profil", - "settings": "Einstellungen" - }, - "ProfileSettingsForm": { - "description": "Aktualisieren Sie Ihre Profil-Einstellungen.", - "errors": { - "update-error": "Benutzer konnte nicht aktualisiert werden." - }, - "name": "Name", - "name-min": "Der Name muss mindestens 2 Zeichen enthalten.", - "name-placeholder": "Geben Sie Ihren Namen ein", - "submit": "Benutzer aktualisieren", - "title": "Profil-Einstellungen", - "update-success": "Benutzer erfolgreich aktualisiert." - }, - "RegisterForm": { - "description": "Erstellen Sie ein neues Konto mit Ihrer E-Mail-Adresse und Ihrem Passwort.", - "email": "E-Mail", - "email-placeholder": "Geben Sie Ihre E-Mail-Adresse ein", - "error-heading": "Registrierung fehlgeschlagen.", - "errors": { - "Not authenticated.": "Nicht authentifiziert.", - "Please fill all fields.": "Bitte füllen Sie alle Felder aus.", - "User with this email already exists.": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits." - }, - "form": { - "email-min": "Der Benutzername muss mindestens 2 Zeichen enthalten.", - "invalid-email": "Ungültige E-Mail-Adresse.", - "name-min": "Der Name muss mindestens 2 Zeichen enthalten.", - "password-min": "Das Passwort muss mindestens 6 Zeichen enthalten." - }, - "have-account": "Sie haben bereits ein Konto?", - "name": "Name", - "name-placeholder": "Geben Sie Ihren Namen ein", - "other-options": "Oder registrieren Sie sich mit:", - "password": "Passwort", - "password-placeholder": "Geben Sie Ihr Passwort ein", - "signin": "Hier anmelden.", - "submit": "Registrieren", - "success-description": "Sie können sich jetzt in Ihr Konto einloggen.", - "success-title": "Registrierung war erfolgreich!", - "title": "Registrieren", - "wait": "Bitte warten..." - }, - "ReviewNewForm": { - "description": "Erstellen Sie eine neue Bewertung.", - "errors": { - "create-error": "Bewertung konnte nicht erstellt werden." - }, - "grade": "Note", - "grade-placeholder": "Note eingeben", - "item": "Artikel", - "item-placeholder": "Name des bewerteten Kunstwerks", - "submit": "Bewertung erstellen", - "tags": "Tags", - "tags-placeholder": "Tags eingeben", - "title": "Bewertung erstellen", - "title-field": "Titel", - "title-field-placeholder": "Titel eingeben" - }, - "TagsSelect": { - "no-options": "Keine Optionen", - "search": "Suchen...", - "tags": "Tags", - "tags-placeholder": "Tags eingeben" - }, - "ThemeSwitch": { - "dark": "Dunkel", - "light": "Hell", - "system": "System" - }, "account-page": { - "Settings": "Einstellungen", "loggedIn": "Eingeloggt", "loggedOut": "Abgemeldet", "login": "Anmelden", "logout": "Ausloggen", + "Settings": "Einstellungen", "title": "Konto" }, "auth": { - "other-options": "Weitere Konten verknüpfen:" + "emailSubmitButton": { + "label": "Einreichen" + }, + "error": { + "default": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "email": "E-Mail nicht gefunden. Versuchen Sie es mit einem anderen Anbieter.", + "oauthNotLinked": "Um Ihre Identität zu bestätigen, melden Sie sich mit demselben Konto an, das Sie ursprünglich verwendet haben.", + "unknown": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.", + "unknown-error": "Etwas ist schief gelaufen. Bitte besuchen Sie die Seite /contact und informieren Sie unser Support-Team über diesen unbekannten Fehler." + }, + "legal": "Durch die Nutzung der oben genannten Schaltflächen erklären Sie sich damit einverstanden", + "legal-and": "Und", + "legal-privacy": "Datenschutzrichtlinie", + "legal-terms": "Nutzungsbedingungen", + "magicLink": { + "description": "Überprüfen Sie Ihren Spam-Ordner.", + "title": "Eine Magie-Link-E-Mail wurde gesendet. 🧙‍♂️" + }, + "noProvider": { + "link": "Konfigurieren Sie mindestens einen Authentifizierungsanbieter (z.B. E-Mail, Google, GitHub, Facebook usw.)", + "preLink": "Sie müssen" + }, + "orEmailLabel": "Oder mit Ihrer E-Mail", + "other-options": "Verknüpfen Sie mehr Konten:", + "register": { + "agreeToTerms": "Indem Sie sich anmelden, stimmen Sie unseren termsOfService und privacyPolicy zu.", + "alreadyHaveAccountLabel": { + "link": "Anmelden", + "preLink": "Sie haben bereits ein Konto?" + }, + "heading": "Ein Konto erstellen" + }, + "signin": { + "heading": "Anmelden", + "noAccountLabel": { + "link": "Kostenlos anmelden", + "preLink": "Sie haben kein Konto?" + } + }, + "signinErrorToast": { + "description": "Anmeldungen sind deaktiviert.", + "title": "Nicht autorisiert", + "tooManyRequests": "Zu viele Anfragen. Versuchen Sie es später noch einmal." + } }, "auth-page": { "error": "Stimmt etwas nicht...", @@ -207,9 +81,37 @@ "signOutText": "Abmelden {userName}" } }, + "DataTable": { + "block": "Blockieren", + "columns": "Spalten", + "delete": "Löschen", + "email": "E-Mail", + "filter-emails-placeholder": "E-Mails filtern", + "id": "ID", + "isadmin": "Ist Administrator", + "lastlogintime": "Letzter Login-Zeitpunkt", + "make-admin": "Zum Administrator machen", + "make-non-admin": "Zum Nicht-Administrator machen", + "name": "Name", + "next": "Nächste", + "no-results": "Keine Ergebnisse", + "of": "von", + "previous": "Vorherige", + "registrationtime": "Anmeldezeitpunkt", + "rows-selected": "Zeile(n) ausgewählt", + "success-description": "Erfolg", + "success-title": "Erfolgreich", + "unblock": "Freigeben", + "view-profile": "Profil anzeigen" + }, "environments": { "auth-button-placeholder": "⚠️ Bitte geben Sie Github/Google/Discord in den Umgebungsvariablen an, um Authentifizierungsfunktionen freizuschalten." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Diese Umgebungsvariablen sind falsch oder nicht angegeben (bitte überprüfen Sie die .env-Datei):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Unser Ziel ist es, den funktionsreichsten, globalsten und bekanntesten Next.js-Starter der Welt zu entwickeln. Entdecken Sie unsere umfassende Liste an Funktionen. Dies bietet mehr als nur Code – es ist eine Reise. Der Starter ist stabil und einsatzbereit für die Produktion.", "btn1-products-now": "Produkte jetzt", "btn1-sell": "Verkaufen", "btn2-download": "Download", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Kostenlose und kostenpflichtige Abonnements mit Stripe.", - "title": "Abonnements" + "title": "Abonnements", + "ambitions-description": "Hören Sie auf, von einem Anlasser zum nächsten zu rennen. Mit Relivator haben Sie unbegrenzte Möglichkeiten. Sie können alles erstellen, was Sie wollen; Alle Werkzeuge sind bereits für Sie vorbereitet." }, "files": { "description": "Middleware-Authentifizierung mit NextAuth.js.", - "title": "Authentifizierung" + "title": "Authentifizierung", + "on-the-fly": "Vollständige On-the-Fly-Anpassung", + "on-the-fly-description": "Tauchen Sie ein in eine umfangreiche Liste von Funktionen in unserem Projekt-Repository. Wechseln Sie mühelos zwischen Clerk/NextAuth.js und MySQL/PostgreSQL, um Ihren Projektanforderungen gerecht zu werden.", + "roadmap": "Große Ambitionen: Grenzenlose Möglichkeiten" }, "subtitle": "Vom Code bis zum Design verfügt Relivator über Funktionen, die Ihre Webprojekte auf ein neues Niveau bringen.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Zur Liste gehen" }, - "title": "Entdecken Sie die wichtigsten tools für React, Next.js und mehr. Speziell auf Sie zugeschnitten.", - "about": "Unser Ziel ist es, den funktionsreichsten, globalsten und bekanntesten Next.js-Starter der Welt zu entwickeln. Entdecken Sie unsere umfassende Liste an Funktionen. Dies bietet mehr als nur Code – es ist eine Reise. Der Starter ist stabil und einsatzbereit für die Produktion." + "title": "Entdecken Sie die wichtigsten tools für React, Next.js und mehr. Speziell auf Sie zugeschnitten." + }, + "LanguageSwitch": { + "choose-language": "Sprache" + }, + "LocaleSwitcher": { + "label": "Sprache ändern", + "selectLocale": "Sprache" + }, + "LoginForm": { + "description": "Melden Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort an.", + "email": "E-Mail", + "email-placeholder": "Geben Sie Ihre E-Mail-Adresse ein", + "error-heading": "Anmeldung fehlgeschlagen.", + "errors": { + "Callback": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "CredentialsSignin": "Anmeldung fehlgeschlagen. Überprüfen Sie, ob die von Ihnen bereitgestellten Details korrekt sind.", + "default": "Anmeldung fehlgeschlagen.", + "Email or password is incorrect": "E-Mail oder Passwort ist falsch.", + "EmailCreateAccount": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "EmailSignin": "Überprüfen Sie Ihre E-Mail-Adresse.", + "Invalid credentials": "Ungültige Anmeldedaten.", + "OAuthAccountNotLinked": "Um Ihre Identität zu bestätigen, melden Sie sich mit demselben Konto an, das Sie ursprünglich verwendet haben.", + "OAuthCallback": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "OAuthCreateAccount": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "OAuthSignin": "Versuchen Sie, sich mit einem anderen Konto anzumelden.", + "Signin": "Versuchen Sie, sich mit einem anderen Konto anzumelden." + }, + "form": { + "description": "Melden Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort bei Ihrem Konto an.", + "email": "Email", + "email-placeholder": "Geben sie ihre E-Mailadresse ein", + "error-heading": "Manchmal passieren schlimme Dinge ...", + "no-account": "Sie haben noch kein Konto?", + "other-options": "Melden Sie sich an mit:", + "password": "Passwort", + "password-placeholder": "Geben Sie Ihr Passwort ein", + "sign-out": "Abmelden", + "signup": "Hier anmelden.", + "submit": "anmelden", + "title": "anmelden", + "wait": "Bitte warten..." + }, + "no-account": "Haben Sie noch keinen Account?", + "other-options": "Oder melden Sie sich an mit:", + "password": "Passwort", + "password-placeholder": "Geben Sie Ihr Passwort ein", + "reset-password": "Passwort zurücksetzen", + "signin": "anmelden", + "signup": "Hier registrieren.", + "submit": "Anmelden", + "success-description": "Erfolg.", + "success-title": "Erledigt!", + "title": "Anmelden", + "wait": "Bitte warten..." + }, + "MainError": { + "error": "Fehler", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "Relivator" }, + "Navbar": { + "home": "Startseite", + "sign-out": "Ausloggen", + "signin": "Anmelden" + }, "pages": { "about": { "author": "License", @@ -331,7 +302,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +350,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Seite nicht gefunden! 🥲 Leider...", "description": "Die Ressource, nach der Sie suchen, wurde möglicherweise verschoben, umbenannt oder hat vielleicht nie existiert. Bitte überprüfen Sie die URL oder navigieren Sie zu anderen Abschnitten über das Menü.", - "go-home": "Zur Startseite zurückkehren" + "go-home": "Zur Startseite zurückkehren", + "title": "🫠 Seite nicht gefunden! 🥲 Leider..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "Bitte! Gib Relivator einen Stern auf GitHub ⭐ Ziel:" + "stars": "Bitte! Gib Relivator einen Stern ⭐ Ziel:" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "Welche Zahlungsmethoden werden akzeptiert?" } }, + "ProfileButton": { + "admin": "Admin-Panel", + "logout": "Abmelden", + "my-account": "Mein Konto", + "new-review": "Neue Bewertung", + "profile": "Profil", + "settings": "Einstellungen" + }, + "ProfileSettingsForm": { + "description": "Aktualisieren Sie Ihre Profil-Einstellungen.", + "errors": { + "update-error": "Benutzer konnte nicht aktualisiert werden." + }, + "name": "Name", + "name-min": "Der Name muss mindestens 2 Zeichen enthalten.", + "name-placeholder": "Geben Sie Ihren Namen ein", + "submit": "Benutzer aktualisieren", + "title": "Profil-Einstellungen", + "update-success": "Benutzer erfolgreich aktualisiert." + }, + "RegisterForm": { + "description": "Erstellen Sie ein neues Konto mit Ihrer E-Mail-Adresse und Ihrem Passwort.", + "email": "E-Mail", + "email-placeholder": "Geben Sie Ihre E-Mail-Adresse ein", + "error-heading": "Registrierung fehlgeschlagen.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Der Benutzername muss mindestens 2 Zeichen enthalten.", + "invalid-email": "Ungültige E-Mail-Adresse.", + "name-min": "Der Name muss mindestens 2 Zeichen enthalten.", + "password-min": "Das Passwort muss mindestens 6 Zeichen enthalten." + }, + "have-account": "Sie haben bereits ein Konto?", + "name": "Name", + "name-placeholder": "Geben Sie Ihren Namen ein", + "other-options": "Oder registrieren Sie sich mit:", + "password": "Passwort", + "password-placeholder": "Geben Sie Ihr Passwort ein", + "signin": "Hier anmelden.", + "submit": "Registrieren", + "success-description": "Sie können sich jetzt in Ihr Konto einloggen.", + "success-title": "Registrierung war erfolgreich!", + "title": "Registrieren", + "wait": "Bitte warten..." + }, + "ReviewNewForm": { + "description": "Erstellen Sie eine neue Bewertung.", + "errors": { + "create-error": "Bewertung konnte nicht erstellt werden." + }, + "grade": "Note", + "grade-placeholder": "Note eingeben", + "item": "Artikel", + "item-placeholder": "Name des bewerteten Kunstwerks", + "submit": "Bewertung erstellen", + "tags": "Tags", + "tags-placeholder": "Tags eingeben", + "title": "Bewertung erstellen", + "title-field": "Titel", + "title-field-placeholder": "Titel eingeben" + }, "settings-page": { "description": "Verwalten Sie Ihre Einstellungen.", "title": "Einstellungen" }, "signIn": { + "heading": "Anmelden", "LoginForm": { "wait": "Bitte warten..." }, - "heading": "Anmelden", "meta": { "description": "Melden Sie sich für eine personalisierte Erfahrung an", "title": "Anmelden" @@ -634,6 +670,17 @@ "providerButtonText": "Anmelden mit {name}", "providerButtonTextReg": "Registrieren Sie sich mit {name}" }, + "TagsSelect": { + "no-options": "Keine Optionen", + "search": "Suchen...", + "tags": "Tags", + "tags-placeholder": "Tags eingeben" + }, + "ThemeSwitch": { + "dark": "Dunkel", + "light": "Hell", + "system": "System" + }, "things": { "heading": "Ihr Relivator", "input": { @@ -658,5 +705,24 @@ "title": "Kostenlose Online-Tools von Relivator" }, "title": "Werkzeuge" + }, + "store": { + "stores": { + "buy-products": "Kaufen Sie Produkte in unseren Geschäften", + "stores": "Shops" + }, + "categories": { + "buyFromCategories": "Kaufen Sie {category} in den besten Geschäften", + "buyProducts": "Kaufen Sie Produkte aus der Kategorie ${category}", + "buyTheBest": "Kaufen Sie die beste {category}" + }, + "product": { + "products": "Produkte", + "noDescription": "Für dieses Produkt ist keine Beschreibung verfügbar.", + "description": "Beschreibung", + "moreProductsFrom": "Weitere Produkte von {storeName}", + "buyProductsFromOurStores": "Kaufen Sie Produkte in unseren Geschäften", + "addToCart": "Zum Warenkorb" + } } } diff --git a/src/data/i18n/en-us.json b/src/data/i18n/en-us.json index 6c80b7b7..f9aebf84 100644 --- a/src/data/i18n/en-us.json +++ b/src/data/i18n/en-us.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Block", - "columns": "Columns", - "delete": "Delete", - "email": "Email", - "filter-emails-placeholder": "Filter emails", - "id": "ID", - "isadmin": "Is admin", - "lastlogintime": "Last login time", - "make-admin": "Make admin", - "make-non-admin": "Make non-admin", - "name": "Name", - "next": "Next", - "no-results": "No results", - "of": "of", - "previous": "Previous", - "registrationtime": "Registration time", - "rows-selected": "row(s) selected", - "success-description": "Success", - "success-title": "Successfully", - "unblock": "Unblock", - "view-profile": "View profile" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "These environment variables are specified incorrectly or not specified (please check .env file):" - } - }, - "LanguageSwitch": { - "choose-language": "Language" - }, - "LocaleSwitcher": { - "label": "Change language", - "selectLocale": "Language" - }, - "LoginForm": { - "description": "Sign in to your account using your email address and password.", - "email": "Email", - "email-placeholder": "Enter your email address", - "error-heading": "Unable to sign in.", - "errors": { - "Callback": "Try signing with a different account.", - "CredentialsSignin": "Sign in failed. Check the details you provided are correct.", - "Email or password is incorrect": "Email or password is incorrect.", - "EmailCreateAccount": "Try signing with a different account.", - "EmailSignin": "Check your email address.", - "Invalid credentials": "Invalid credentials.", - "OAuthAccountNotLinked": "To confirm your identity, sign in with the same account you used originally.", - "OAuthCallback": "Try signing with a different account.", - "OAuthCreateAccount": "Try signing with a different account.", - "OAuthSignin": "Try signing with a different account.", - "Signin": "Try signing with a different account.", - "default": "Unable to sign in." - }, - "form": { - "description": "Sign in to your account using your email address and password.", - "email": "Email", - "email-placeholder": "Enter your email address", - "error-heading": "Unable to sign in.", - "no-account": "Don't have an account?", - "other-options": "Sign in using:", - "password": "Password", - "password-placeholder": "Enter your password", - "sign-out": "Sign out", - "signup": "Sign up here.", - "submit": "Sign in", - "title": "Sign in", - "wait": "Please wait..." - }, - "no-account": "Don't have an account?", - "other-options": "Sign in using:", - "password": "Password", - "password-placeholder": "Enter your password", - "reset-password": "Reset Password", - "signin": "Sign in", - "signup": "Sign up here.", - "submit": "Sign in", - "success-description": "Success.", - "success-title": "Done!", - "title": "Sign in", - "wait": "Please wait..." - }, - "MainError": { - "Could not fetch user.": "Could not fetch user.", - "Not authenticated.": "Not authenticated.", - "User not found.": "User not found.", - "error": "Error" - }, - "Navbar": { - "home": "Home", - "sign-out": "Log out", - "signin": "Sign in" - }, - "ProfileButton": { - "admin": "Admin panel", - "logout": "Log out", - "my-account": "My account", - "new-review": "New review", - "profile": "Profile", - "settings": "Settings" - }, - "ProfileSettingsForm": { - "description": "Update your profile settings.", - "errors": { - "update-error": "Unable to update user." - }, - "name": "Name", - "name-min": "Name must be at least 2 characters.", - "name-placeholder": "Enter your name", - "submit": "Update User", - "title": "Profile settings", - "update-success": "User updated successfully." - }, - "RegisterForm": { - "description": "Create a new account using your email address and password.", - "email": "Email", - "email-placeholder": "Enter your email address", - "error-heading": "Unable to sign up.", - "errors": { - "Not authenticated.": "Not authenticated.", - "Please fill all fields.": "Please fill all fields.", - "User with this email already exists.": "User with this email already exists." - }, - "form": { - "email-min": "Username must be at least 2 characters.", - "invalid-email": "Invalid email address.", - "name-min": "Name must be at least 2 characters.", - "password-min": "Password must be at least 6 characters." - }, - "have-account": "Already have an account?", - "name": "Name", - "name-placeholder": "Enter your name", - "other-options": "Or sign up with:", - "password": "Password", - "password-placeholder": "Enter your password", - "signin": "Sign in here.", - "submit": "Sign up", - "success-description": "You can now sign in to your account.", - "success-title": "Registration was successful!", - "title": "Sign up", - "wait": "Please wait..." - }, - "ReviewNewForm": { - "description": "Create a new review.", - "errors": { - "create-error": "Unable to create review." - }, - "grade": "Grade", - "grade-placeholder": "Enter grade", - "item": "Item", - "item-placeholder": "Name of the reviewed piece of art", - "submit": "Create review", - "tags": "Tags", - "tags-placeholder": "Enter tags", - "title": "Create review", - "title-field": "Title", - "title-field-placeholder": "Enter title" - }, - "TagsSelect": { - "no-options": "No options", - "search": "Search...", - "tags": "Tags", - "tags-placeholder": "Enter tags" - }, - "ThemeSwitch": { - "dark": "Dark", - "light": "Light", - "system": "System" - }, "account-page": { - "Settings": "Settings", "loggedIn": "Logged In", "loggedOut": "Logged Out", "login": "Sign In", "logout": "Log Out", + "Settings": "Settings", "title": "Account" }, "auth": { - "other-options": "Link more accounts:" + "emailSubmitButton": { + "label": "Submit" + }, + "error": { + "default": "Try signing with a different account.", + "email": "Email not found. Try signing with a different provider.", + "oauthNotLinked": "To confirm your identity, sign in with the same account you used originally.", + "unknown": "An error occurred. Please try again.", + "unknown-error": "Something went wrong. Please visit the /contact page and inform our support team about this unknown error." + }, + "legal": "By using the buttons above, you agree with", + "legal-and": "and", + "legal-privacy": "Privacy Policy", + "legal-terms": "Terms of Service", + "magicLink": { + "description": "Make sure to check your spam folder.", + "title": "A magic link email was sent. 🧙‍♂️" + }, + "noProvider": { + "link": "configure at least one auth provider (e.g. Email, Google, GitHub, Facebook, etc.)", + "preLink": "You need to" + }, + "orEmailLabel": "Or with your email", + "other-options": "Link more accounts:", + "register": { + "agreeToTerms": "By signing up, you agree to our termsOfService and privacyPolicy.", + "alreadyHaveAccountLabel": { + "link": "Sign in", + "preLink": "Already have an account?" + }, + "heading": "Create an account" + }, + "signin": { + "heading": "Sign In", + "noAccountLabel": { + "link": "Sign up for free", + "preLink": "Don't have an account?" + } + }, + "signinErrorToast": { + "description": "Sign ups are disabled.", + "title": "Unauthorized", + "tooManyRequests": "Too many requests. Try again later." + } }, "auth-page": { "error": "Something wrong...", @@ -191,6 +65,32 @@ "magic-link": "Send Magic Link", "sign-out": "Sign out" }, + "auth-provider": { + "please-wait": "Please, wait...", + "sign-in": "Sign in with {name}", + "sign-in-null": "{name}", + "sign-up": "Sign up with {name}", + "sign-up-null": "{name}" + }, + "store": { + "categories": { + "buyProducts": "Buy products from the ${category} category", + "buyFromCategories": "Buy {category} from the best stores", + "buyTheBest": "Buy the best {category}" + }, + "stores": { + "stores": "Stores", + "buy-products": "Buy products from our stores" + }, + "product": { + "products": "Products", + "description": "Description", + "noDescription": "No description is available for this product.", + "moreProductsFrom": "More products from {storeName}", + "buyProductsFromOurStores": "Buy products from our stores", + "addToCart": "Add to cart" + } + }, "common": { "home": { "linkText": "Back to Homepage" @@ -200,9 +100,37 @@ "signOutText": "Sign out {userName}" } }, + "DataTable": { + "block": "Block", + "columns": "Columns", + "delete": "Delete", + "email": "Email", + "filter-emails-placeholder": "Filter emails", + "id": "ID", + "isadmin": "Is admin", + "lastlogintime": "Last login time", + "make-admin": "Make admin", + "make-non-admin": "Make non-admin", + "name": "Name", + "next": "Next", + "no-results": "No results", + "of": "of", + "previous": "Previous", + "registrationtime": "Registration time", + "rows-selected": "row(s) selected", + "success-description": "Success", + "success-title": "Successfully", + "unblock": "Unblock", + "view-profile": "View profile" + }, "environments": { "auth-button-placeholder": "⚠️ Please specify Github/Google/Discord in environment variables to unlock auth-related features." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "These environment variables are specified incorrectly or not specified (please check .env file):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -248,35 +176,40 @@ } }, "landing": { + "about": "We aim to create the world's most feature-rich, global, and iconic Next.js starter. Explore the comprehensive list of features. Offering more than just code, it's a journey. It's stable and ready for production.", "btn1-products-now": "Products Now", "btn1-sell": "Sell", "btn2-download": "Download", "btn2-starter": "Next.js Relivator Starter", "features": { "clock": { - "description": "Stay on track with Drizzle ORM. Deployed on Vercel, Railway, Neon, etc.", - "title": "Database" + "description": "Maintain peak performance with Drizzle ORM, by switching MySQL and Postgres on-the-fly. Enjoy flexible deployment options, including Planetscale, Vercel, Railway, Neon, and more.", + "title": "Database Integration: Robust and Versatile" }, "cryptography": { - "description": "Engage with App dir, Routing, Layouts, Loading UI, API routes, and beyond.", - "title": "Next.js 14" + "description": "Experience seamless navigation with advanced features like App Router, Layouts, and Loading UI. Leverage powerful API routes and explore innovative capabilities beyond the basics.", + "title": "Next.js 14: Enhanced User Experience & DX" }, "currency": { - "description": "UI components built using Radix UI and styled with Tailwind CSS.", - "title": "Components" + "description": "Craft stunning UI with components built on top of Radix and Shadcn UI, beautifully styled with Tailwind CSS for a modern aesthetic. VSCode is recommended for a full immersion experience.", + "title": "Components: Elegant & Functional" }, "devtools": { - "description": "Free and paid subscriptions using Stripe.", - "title": "Subscriptions" + "description": "Implemented a robust subscription system, both free and paid plans are supported, optimized for efficiency and scalability. Learn README.md of the project to learn more.", + "title": "Stripe Subscriptions: Powerful & Flexible", + "ambitions-description": "Stop running from one starter to the next. With Relivator, you'll have unlimited possibilities. You can create anything you want; all the tools are already prepared, just for you." }, "files": { - "description": "Middleware authentication using NextAuth.js.", - "title": "Authentication" + "description": "Deploy a versatile authentication system using NextAuth.js and Clerk, tailored for your application’s needs. Learn more in .env.example file, and you're ready to go.", + "title": "User Authentication: Secure & Conditional", + "on-the-fly": "Full On The Fly Customization", + "roadmap": "Huge Ambitions: Limitless Possibilities", + "on-the-fly-description": "Dive into an extensive list of features in our project repository. Effortlessly switch between Clerk/NextAuth.js and MySQL/PostgreSQL to suit your project requirements." }, "subtitle": "From code to design, Relivator has functionalities that supercharge your web projects.", "text": { - "description": "Manipulate app effortlessly with Server and Client Components. Use hook. And more.", - "title": "React 18" + "description": "Effortlessly manipulate your app with both Server and Client Components. Utilize advanced hooks and explore a range of additional features for a smoother development experience.", + "title": "React 18: Streamlined Modern Development" }, "title": "Features" }, @@ -301,13 +234,77 @@ "things": { "linkText": "Go to list" }, - "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you.", - "about": "We aim to create the world's most feature-rich, global, and iconic Next.js starter. Explore the comprehensive list of features. Offering more than just code, it's a journey. It's stable and ready for production." + "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." + }, + "LanguageSwitch": { + "choose-language": "Language" + }, + "LocaleSwitcher": { + "label": "Change language", + "selectLocale": "Language" + }, + "LoginForm": { + "description": "Sign in to your account using your email address and password.", + "email": "Email", + "email-placeholder": "Enter your email address", + "error-heading": "Unable to sign in.", + "errors": { + "Callback": "Try signing with a different account.", + "CredentialsSignin": "Sign in failed. Check the details you provided are correct.", + "default": "Unable to sign in.", + "Email or password is incorrect": "Email or password is incorrect.", + "EmailCreateAccount": "Try signing with a different account.", + "EmailSignin": "Check your email address.", + "Invalid credentials": "Invalid credentials.", + "OAuthAccountNotLinked": "To confirm your identity, sign in with the same account you used originally.", + "OAuthCallback": "Try signing with a different account.", + "OAuthCreateAccount": "Try signing with a different account.", + "OAuthSignin": "Try signing with a different account.", + "Signin": "Try signing with a different account." + }, + "form": { + "description": "Sign in to your account using your email address and password.", + "email": "Email", + "email-placeholder": "Enter your email address", + "error-heading": "Unable to sign in.", + "no-account": "Don't have an account?", + "other-options": "Sign in using:", + "password": "Password", + "password-placeholder": "Enter your password", + "sign-out": "Sign out", + "signup": "Sign up here.", + "submit": "Sign in", + "title": "Sign in", + "wait": "Please wait..." + }, + "no-account": "Don't have an account?", + "other-options": "Sign in using:", + "password": "Password", + "password-placeholder": "Enter your password", + "reset-password": "Reset Password", + "signin": "Sign in", + "signup": "Sign up here.", + "submit": "Sign in", + "success-description": "Success.", + "success-title": "Done!", + "title": "Sign in", + "wait": "Please wait..." + }, + "MainError": { + "error": "Error", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "Relivator" }, + "Navbar": { + "home": "Home", + "sign-out": "Log out", + "signin": "Sign in" + }, "pages": { "about": { "author": "License", @@ -324,7 +321,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -372,9 +369,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Page not found! 🥲 Sadly...", "description": "The resource you're looking for might have been moved, renamed, or might never have existed. Please verify the URL or navigate to other sections using the menu.", - "go-home": "Return to Home Page" + "go-home": "Return to Home Page", + "title": "🫠 Page not found! 🥲 Sadly..." }, "tools": { "binary-code": { @@ -557,7 +554,7 @@ } }, "plugins": { - "stars": "Support 'Relivator' by starring it on GitHub ⭐ Goal:" + "stars": "Star Relivator v1.2.0 on GitHub ⭐" }, "pricing": { "compare": { @@ -611,21 +608,97 @@ "what-payment": "What payment methods do you accept?" } }, + "ProfileButton": { + "admin": "Admin panel", + "logout": "Log out", + "my-account": "My account", + "new-review": "New review", + "profile": "Profile", + "settings": "Settings" + }, + "ProfileSettingsForm": { + "description": "Update your profile settings.", + "errors": { + "update-error": "Unable to update user." + }, + "name": "Name", + "name-min": "Name must be at least 2 characters.", + "name-placeholder": "Enter your name", + "submit": "Update User", + "title": "Profile settings", + "update-success": "User updated successfully." + }, + "RegisterForm": { + "description": "Create a new account using your email address and password.", + "email": "Email", + "email-placeholder": "Enter your email address", + "error-heading": "Unable to sign up.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Username must be at least 2 characters.", + "invalid-email": "Invalid email address.", + "name-min": "Name must be at least 2 characters.", + "password-min": "Password must be at least 6 characters." + }, + "have-account": "Already have an account?", + "name": "Name", + "name-placeholder": "Enter your name", + "other-options": "Or sign up with:", + "password": "Password", + "password-placeholder": "Enter your password", + "signin": "Sign in here.", + "submit": "Sign up", + "success-description": "You can now sign in to your account.", + "success-title": "Registration was successful!", + "title": "Sign up", + "wait": "Please wait..." + }, + "ReviewNewForm": { + "description": "Create a new review.", + "errors": { + "create-error": "Unable to create review." + }, + "grade": "Grade", + "grade-placeholder": "Enter grade", + "item": "Item", + "item-placeholder": "Name of the reviewed piece of art", + "submit": "Create review", + "tags": "Tags", + "tags-placeholder": "Enter tags", + "title": "Create review", + "title-field": "Title", + "title-field-placeholder": "Enter title" + }, "settings-page": { "description": "Manage your settings.", "title": "Settings" }, "signIn": { "heading": "Sign In", + "LoginForm": { + "wait": "Please, wait..." + }, "meta": { "description": "Sign in for a personalized experience", "title": "Sign In" }, "providerButtonText": "Sign in with {name}", - "providerButtonTextReg": "Sign up with {name}", - "LoginForm": { - "wait": "Please, wait..." - } + "providerButtonTextReg": "Sign up with {name}" + }, + "TagsSelect": { + "no-options": "No options", + "search": "Search...", + "tags": "Tags", + "tags-placeholder": "Enter tags" + }, + "ThemeSwitch": { + "dark": "Dark", + "light": "Light", + "system": "System" }, "things": { "heading": "Your Relivator", @@ -651,12 +724,5 @@ "title": "Free online tools from Relivator" }, "title": "Tools" - }, - "auth-provider": { - "please-wait": "Please, wait...", - "sign-in": "Sign in with {name}", - "sign-in-null": "{name}", - "sign-up": "Sign up with {name}", - "sign-up-null": "{name}" } } diff --git a/src/data/i18n/es-es.json b/src/data/i18n/es-es.json index 36b7d6d6..d6ece71a 100644 --- a/src/data/i18n/es-es.json +++ b/src/data/i18n/es-es.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Bloquear", - "columns": "Columnas", - "delete": "Eliminar", - "email": "Correo electrónico", - "filter-emails-placeholder": "Filtrar correos electrónicos", - "id": "ID", - "isadmin": "Es administrador", - "lastlogintime": "Último inicio de sesión", - "make-admin": "Hacer administrador", - "make-non-admin": "Hacer no administrador", - "name": "Nombre", - "next": "Siguiente", - "no-results": "Sin resultados", - "of": "de", - "previous": "Anterior", - "registrationtime": "Hora de registro", - "rows-selected": "fila(s) seleccionada(s)", - "success-description": "Éxito", - "success-title": "Éxito", - "unblock": "Desbloquear", - "view-profile": "Ver perfil" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Estas variables de entorno se especifican incorrectamente o no se especifican (verifique el archivo .env):" - } - }, - "LanguageSwitch": { - "choose-language": "Idioma" - }, - "LocaleSwitcher": { - "label": "Cambiar idioma", - "selectLocale": "Idioma" - }, - "LoginForm": { - "description": "Inicia sesión en tu cuenta utilizando tu dirección de correo electrónico y contraseña.", - "email": "Correo electrónico", - "email-placeholder": "Ingresa tu dirección de correo electrónico", - "error-heading": "No se pudo iniciar sesión.", - "errors": { - "Callback": "Intenta iniciar sesión con una cuenta diferente.", - "CredentialsSignin": "Error al iniciar sesión. Verifica que los detalles que proporcionaste sean correctos.", - "Email or password is incorrect": "El correo electrónico o la contraseña son incorrectos.", - "EmailCreateAccount": "Intenta iniciar sesión con una cuenta diferente.", - "EmailSignin": "Verifica tu dirección de correo electrónico.", - "Invalid credentials": "Credenciales no válidas.", - "OAuthAccountNotLinked": "Para confirmar tu identidad, inicia sesión con la misma cuenta que utilizaste originalmente.", - "OAuthCallback": "Intenta iniciar sesión con una cuenta diferente.", - "OAuthCreateAccount": "Intenta iniciar sesión con una cuenta diferente.", - "OAuthSignin": "Intenta iniciar sesión con una cuenta diferente.", - "Signin": "Intenta iniciar sesión con una cuenta diferente.", - "default": "No se pudo iniciar sesión." - }, - "form": { - "description": "Inicie sesión en su cuenta utilizando su dirección de correo electrónico y contraseña.", - "email": "Correo electrónico", - "email-placeholder": "Introduce tu dirección de correo electrónico", - "error-heading": "A veces suceden cosas malas...", - "no-account": "¿No tienes una cuenta?", - "other-options": "Inicia sesión usando:", - "password": "Contraseña", - "password-placeholder": "Ingresa tu contraseña", - "sign-out": "desconectar", - "signup": "Registrate aquí.", - "submit": "Iniciar sesión", - "title": "Iniciar sesión", - "wait": "Espere por favor..." - }, - "no-account": "¿No tienes una cuenta?", - "other-options": "Iniciar sesión usando:", - "password": "Contraseña", - "password-placeholder": "Ingresa tu contraseña", - "reset-password": "Restablecer la contraseña", - "signin": "Iniciar sesión", - "signup": "Regístrate aquí.", - "submit": "Iniciar sesión", - "success-description": "Éxito.", - "success-title": "¡Hecho!", - "title": "Iniciar sesión", - "wait": "Por favor espera..." - }, - "MainError": { - "Could not fetch user.": "No se pudo obtener el usuario.", - "Not authenticated.": "No autenticado.", - "User not found.": "Usuario no encontrado.", - "error": "Error" - }, - "Navbar": { - "home": "Inicio", - "sign-out": "Cerrar sesión", - "signin": "Iniciar sesión" - }, - "ProfileButton": { - "admin": "Panel de administración", - "logout": "Cerrar sesión", - "my-account": "Mi cuenta", - "new-review": "Nueva reseña", - "profile": "Perfil", - "settings": "Configuración" - }, - "ProfileSettingsForm": { - "description": "Actualiza tu configuración de perfil.", - "errors": { - "update-error": "No se pudo actualizar el usuario." - }, - "name": "Nombre", - "name-min": "El nombre debe tener al menos 2 caracteres.", - "name-placeholder": "Ingresa tu nombre", - "submit": "Actualizar usuario", - "title": "Configuración del perfil", - "update-success": "Usuario actualizado exitosamente." - }, - "RegisterForm": { - "description": "Crea una nueva cuenta utilizando tu dirección de correo electrónico y contraseña.", - "email": "Correo electrónico", - "email-placeholder": "Ingresa tu dirección de correo electrónico", - "error-heading": "No se pudo registrar.", - "errors": { - "Not authenticated.": "No autenticado.", - "Please fill all fields.": "Por favor completa todos los campos.", - "User with this email already exists.": "Ya existe un usuario con este correo electrónico." - }, - "form": { - "email-min": "El nombre de usuario debe tener al menos 2 caracteres.", - "invalid-email": "Dirección de correo electrónico no válida.", - "name-min": "El nombre debe tener al menos 2 caracteres.", - "password-min": "La contraseña debe tener al menos 6 caracteres." - }, - "have-account": "¿Ya tienes una cuenta?", - "name": "Nombre", - "name-placeholder": "Ingresa tu nombre", - "other-options": "O regístrate con:", - "password": "Contraseña", - "password-placeholder": "Ingresa tu contraseña", - "signin": "Inicia sesión aquí.", - "submit": "Registrarse", - "success-description": "Ahora puedes iniciar sesión en tu cuenta.", - "success-title": "Registro exitoso", - "title": "Regístrate", - "wait": "Por favor espera..." - }, - "ReviewNewForm": { - "description": "Crea una nueva reseña.", - "errors": { - "create-error": "No se pudo crear la reseña." - }, - "grade": "Calificación", - "grade-placeholder": "Ingresa una calificación", - "item": "Elemento", - "item-placeholder": "Nombre de la pieza de arte revisada", - "submit": "Crear reseña", - "tags": "Etiquetas", - "tags-placeholder": "Ingresa etiquetas", - "title": "Crear reseña", - "title-field": "Título", - "title-field-placeholder": "Ingresa un título" - }, - "TagsSelect": { - "no-options": "Sin opciones", - "search": "Buscar...", - "tags": "Etiquetas", - "tags-placeholder": "Ingresa etiquetas" - }, - "ThemeSwitch": { - "dark": "Oscuro", - "light": "Claro", - "system": "Sistema" - }, "account-page": { - "Settings": "Ajustes", "loggedIn": "Conectado", "loggedOut": "Desconectado", "login": "Iniciar sesión", "logout": "Cerrar sesión", + "Settings": "Ajustes", "title": "Cuenta" }, "auth": { - "other-options": "Vincular más cuentas:" + "emailSubmitButton": { + "label": "Enviar" + }, + "error": { + "default": "Intenta iniciar sesión con otra cuenta.", + "email": "Correo electrónico no encontrado. Intenta iniciar sesión con otro proveedor.", + "oauthNotLinked": "Para confirmar tu identidad, inicia sesión con la misma cuenta que usaste originalmente.", + "unknown": "Ocurrió un error. Por favor, inténtalo de nuevo.", + "unknown-error": "Algo salió mal. Por favor, visite la página /contact e informe a nuestro equipo de soporte sobre este error desconocido." + }, + "legal": "Al utilizar los botones de arriba, usted acepta", + "legal-and": "y", + "legal-privacy": "política de privacidad", + "legal-terms": "Términos de servicio", + "magicLink": { + "description": "Asegúrate de revisar tu carpeta de spam.", + "title": "Se ha enviado un correo electrónico con un enlace mágico. 🧙‍♂️" + }, + "noProvider": { + "link": "configura al menos un proveedor de autenticación (por ejemplo, correo electrónico, Google, GitHub, Facebook, etc.)", + "preLink": "Necesitas" + }, + "orEmailLabel": "O con tu correo electrónico", + "other-options": "Vincula más cuentas:", + "register": { + "agreeToTerms": "Al registrarte, aceptas nuestros termsOfService y privacyPolicy.", + "alreadyHaveAccountLabel": { + "link": "Iniciar sesión", + "preLink": "¿Ya tienes una cuenta?" + }, + "heading": "Crear una cuenta" + }, + "signin": { + "heading": "Iniciar Sesión", + "noAccountLabel": { + "link": "Regístrate gratis", + "preLink": "¿No tienes una cuenta?" + } + }, + "signinErrorToast": { + "description": "Los registros están deshabilitados.", + "title": "No autorizado", + "tooManyRequests": "Demasiadas solicitudes. Intenta de nuevo más tarde." + } }, "auth-page": { "error": "Ocurre algo...", @@ -207,9 +81,37 @@ "signOutText": "Cerrar sesión {userName}" } }, + "DataTable": { + "block": "Bloquear", + "columns": "Columnas", + "delete": "Eliminar", + "email": "Correo electrónico", + "filter-emails-placeholder": "Filtrar correos electrónicos", + "id": "ID", + "isadmin": "Es administrador", + "lastlogintime": "Último inicio de sesión", + "make-admin": "Hacer administrador", + "make-non-admin": "Hacer no administrador", + "name": "Nombre", + "next": "Siguiente", + "no-results": "Sin resultados", + "of": "de", + "previous": "Anterior", + "registrationtime": "Hora de registro", + "rows-selected": "fila(s) seleccionada(s)", + "success-description": "Éxito", + "success-title": "Éxito", + "unblock": "Desbloquear", + "view-profile": "Ver perfil" + }, "environments": { "auth-button-placeholder": "⚠️ Especifique Github/Google/Discord en las variables de entorno para desbloquear funciones relacionadas con la autenticación." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Estas variables de entorno se especifican incorrectamente o no se especifican (verifique el archivo .env):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Nuestro objetivo es crear el iniciador Next.js más rico en funciones, global e icónico del mundo. Explore la lista completa de funciones. Ofrecemos más que solo código, es un viaje. Es estable y está listo para producción.", "btn1-products-now": "Productos ahora", "btn1-sell": "Vender", "btn2-download": "Download", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Suscripciones gratuitas y de pago con Stripe.", - "title": "Suscripciones" + "title": "Suscripciones", + "ambitions-description": "Deja de correr de un titular a otro. Con Relivator tendrás posibilidades ilimitadas. Puedes crear lo que quieras; Todas las herramientas ya están preparadas, solo para ti." }, "files": { "description": "Autenticación de middleware mediante NextAuth.js.", - "title": "Autenticación" + "title": "Autenticación", + "on-the-fly": "Personalización completa sobre la marcha", + "on-the-fly-description": "Sumérgete en una extensa lista de características en nuestro repositorio de proyectos. Cambie sin esfuerzo entre Clerk/NextAuth.js y MySQL/PostgreSQL para adaptarse a los requisitos de su proyecto.", + "roadmap": "Grandes ambiciones: posibilidades ilimitadas" }, "subtitle": "Desde el código hasta el diseño, Relivator tiene funcionalidades que potencian tus proyectos web.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Ir a la lista" }, - "title": "Descubra las herramientas fundamentales para React, Next.js y más. Diseñado especialmente para ti.", - "about": "Nuestro objetivo es crear el iniciador Next.js más rico en funciones, global e icónico del mundo. Explore la lista completa de funciones. Ofrecemos más que solo código, es un viaje. Es estable y está listo para producción." + "title": "Descubra las herramientas fundamentales para React, Next.js y más. Diseñado especialmente para ti." + }, + "LanguageSwitch": { + "choose-language": "Idioma" + }, + "LocaleSwitcher": { + "label": "Cambiar idioma", + "selectLocale": "Idioma" + }, + "LoginForm": { + "description": "Inicia sesión en tu cuenta utilizando tu dirección de correo electrónico y contraseña.", + "email": "Correo electrónico", + "email-placeholder": "Ingresa tu dirección de correo electrónico", + "error-heading": "No se pudo iniciar sesión.", + "errors": { + "Callback": "Intenta iniciar sesión con una cuenta diferente.", + "CredentialsSignin": "Error al iniciar sesión. Verifica que los detalles que proporcionaste sean correctos.", + "default": "No se pudo iniciar sesión.", + "Email or password is incorrect": "El correo electrónico o la contraseña son incorrectos.", + "EmailCreateAccount": "Intenta iniciar sesión con una cuenta diferente.", + "EmailSignin": "Verifica tu dirección de correo electrónico.", + "Invalid credentials": "Credenciales no válidas.", + "OAuthAccountNotLinked": "Para confirmar tu identidad, inicia sesión con la misma cuenta que utilizaste originalmente.", + "OAuthCallback": "Intenta iniciar sesión con una cuenta diferente.", + "OAuthCreateAccount": "Intenta iniciar sesión con una cuenta diferente.", + "OAuthSignin": "Intenta iniciar sesión con una cuenta diferente.", + "Signin": "Intenta iniciar sesión con una cuenta diferente." + }, + "form": { + "description": "Inicie sesión en su cuenta utilizando su dirección de correo electrónico y contraseña.", + "email": "Correo electrónico", + "email-placeholder": "Introduce tu dirección de correo electrónico", + "error-heading": "A veces suceden cosas malas...", + "no-account": "¿No tienes una cuenta?", + "other-options": "Inicia sesión usando:", + "password": "Contraseña", + "password-placeholder": "Ingresa tu contraseña", + "sign-out": "desconectar", + "signup": "Registrate aquí.", + "submit": "Iniciar sesión", + "title": "Iniciar sesión", + "wait": "Espere por favor..." + }, + "no-account": "¿No tienes una cuenta?", + "other-options": "Iniciar sesión usando:", + "password": "Contraseña", + "password-placeholder": "Ingresa tu contraseña", + "reset-password": "Restablecer la contraseña", + "signin": "Iniciar sesión", + "signup": "Regístrate aquí.", + "submit": "Iniciar sesión", + "success-description": "Éxito.", + "success-title": "¡Hecho!", + "title": "Iniciar sesión", + "wait": "Por favor espera..." + }, + "MainError": { + "error": "Error", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "Relivator" }, + "Navbar": { + "home": "Inicio", + "sign-out": "Cerrar sesión", + "signin": "Iniciar sesión" + }, "pages": { "about": { "author": "License", @@ -331,7 +302,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +350,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 ¡Página no encontrada! 🥲 Lamentablemente...", "description": "El recurso que estás buscando podría haber sido movido, renombrado o tal vez nunca haya existido. Verifica la URL o navega a otras secciones usando el menú.", - "go-home": "Regresar a la página de inicio" + "go-home": "Regresar a la página de inicio", + "title": "🫠 ¡Página no encontrada! 🥲 Lamentablemente..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "¡Por favor! ¡Dale una estrella en GitHub ⭐ Objetivo:" + "stars": "¡Por favor! ¡Dale una estrella ⭐ Objetivo:" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "¿Qué métodos de pago aceptan?" } }, + "ProfileButton": { + "admin": "Panel de administración", + "logout": "Cerrar sesión", + "my-account": "Mi cuenta", + "new-review": "Nueva reseña", + "profile": "Perfil", + "settings": "Configuración" + }, + "ProfileSettingsForm": { + "description": "Actualiza tu configuración de perfil.", + "errors": { + "update-error": "No se pudo actualizar el usuario." + }, + "name": "Nombre", + "name-min": "El nombre debe tener al menos 2 caracteres.", + "name-placeholder": "Ingresa tu nombre", + "submit": "Actualizar usuario", + "title": "Configuración del perfil", + "update-success": "Usuario actualizado exitosamente." + }, + "RegisterForm": { + "description": "Crea una nueva cuenta utilizando tu dirección de correo electrónico y contraseña.", + "email": "Correo electrónico", + "email-placeholder": "Ingresa tu dirección de correo electrónico", + "error-heading": "No se pudo registrar.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "El nombre de usuario debe tener al menos 2 caracteres.", + "invalid-email": "Dirección de correo electrónico no válida.", + "name-min": "El nombre debe tener al menos 2 caracteres.", + "password-min": "La contraseña debe tener al menos 6 caracteres." + }, + "have-account": "¿Ya tienes una cuenta?", + "name": "Nombre", + "name-placeholder": "Ingresa tu nombre", + "other-options": "O regístrate con:", + "password": "Contraseña", + "password-placeholder": "Ingresa tu contraseña", + "signin": "Inicia sesión aquí.", + "submit": "Registrarse", + "success-description": "Ahora puedes iniciar sesión en tu cuenta.", + "success-title": "Registro exitoso", + "title": "Regístrate", + "wait": "Por favor espera..." + }, + "ReviewNewForm": { + "description": "Crea una nueva reseña.", + "errors": { + "create-error": "No se pudo crear la reseña." + }, + "grade": "Calificación", + "grade-placeholder": "Ingresa una calificación", + "item": "Elemento", + "item-placeholder": "Nombre de la pieza de arte revisada", + "submit": "Crear reseña", + "tags": "Etiquetas", + "tags-placeholder": "Ingresa etiquetas", + "title": "Crear reseña", + "title-field": "Título", + "title-field-placeholder": "Ingresa un título" + }, "settings-page": { "description": "Administre su configuración.", "title": "Ajustes" }, "signIn": { + "heading": "Iniciar sesión", "LoginForm": { "wait": "Espere por favor..." }, - "heading": "Iniciar sesión", "meta": { "description": "Inicia sesión para una experiencia personalizada", "title": "Iniciar sesión" @@ -634,6 +670,17 @@ "providerButtonText": "Iniciar sesión con {name}", "providerButtonTextReg": "Regístrate con {nombre}" }, + "TagsSelect": { + "no-options": "Sin opciones", + "search": "Buscar...", + "tags": "Etiquetas", + "tags-placeholder": "Ingresa etiquetas" + }, + "ThemeSwitch": { + "dark": "Oscuro", + "light": "Claro", + "system": "Sistema" + }, "things": { "heading": "Tu Relivator", "input": { @@ -658,5 +705,24 @@ "title": "Herramientas en línea gratuitas de Relivator" }, "title": "Herramientas" + }, + "store": { + "categories": { + "buyFromCategories": "Compra {category} en las mejores tiendas", + "buyProducts": "Compra productos de la categoría ${category}", + "buyTheBest": "Compra lo mejor de {category}" + }, + "stores": { + "buy-products": "Compra productos en nuestras tiendas", + "stores": "Tiendas" + }, + "product": { + "products": "Productos", + "noDescription": "No hay descripción disponible para este producto.", + "description": "Descripción", + "moreProductsFrom": "Más productos de {storeName}", + "buyProductsFromOurStores": "Compra productos en nuestras tiendas", + "addToCart": "Añadir a la cesta" + } } } diff --git a/src/data/i18n/fa-ir.json b/src/data/i18n/fa-ir.json new file mode 100644 index 00000000..6b0c86ac --- /dev/null +++ b/src/data/i18n/fa-ir.json @@ -0,0 +1,728 @@ +{ + "account-page": { + "loggedIn": "وارد شده", + "loggedOut": "از سیستم خارج شد", + "login": "ورود", + "logout": "خروج", + "Settings": "تنظیمات", + "title": "حساب" + }, + "auth": { + "emailSubmitButton": { + "label": "ارسال" + }, + "error": { + "default": "با حساب دیگری وارد شوید.", + "email": "ایمیل یافت نشد. با ارائه‌دهنده دیگری وارد شوید.", + "oauthNotLinked": "برای تایید هویت خود، با همان حسابی که ابتدا استفاده کرده‌اید وارد شوید.", + "unknown": "خطایی رخ داده است. لطفا دوباره تلاش کنید.", + "unknown-error": "مشکلی پیش آمده است. لطفا به صفحه /contact مراجعه کرده و تیم پشتیبانی ما را از این خطای ناشناخته آگاه سازید." + }, + "legal": "با استفاده از دکمه های بالا، شما موافق هستید", + "legal-and": "و", + "legal-privacy": "سیاست حفظ حریم خصوصی", + "legal-terms": "شرایط استفاده از خدمات", + "magicLink": { + "description": "اطمینان حاصل کنید که پوشه اسپم خود را بررسی کرده‌اید.", + "title": "یک ایمیل حاوی لینک جادویی ارسال شد. 🧙‍♂️" + }, + "noProvider": { + "link": "حداقل یک ارائه‌دهنده احراز هویت را پیکربندی کنید (مانند ایمیل، گوگل، گیت‌هاب، فیسبوک و غیره)", + "preLink": "شما نیاز دارید" + }, + "orEmailLabel": "یا با ایمیل خود", + "other-options": "حساب‌های بیشتری را پیوند دهید:", + "register": { + "agreeToTerms": "با ثبت نام، شما با شرایط خدمات و سیاست حفظ حریم خصوصی ما موافقت می‌کنید.", + "alreadyHaveAccountLabel": { + "link": "وارد شوید", + "preLink": "قبلاً حساب کاربری دارید؟" + }, + "heading": "ایجاد یک حساب کاربری" + }, + "signin": { + "heading": "ورود", + "noAccountLabel": { + "link": "ثبت نام رایگان", + "preLink": "حساب کاربری ندارید؟" + } + }, + "signinErrorToast": { + "description": "ثبت نام غیرفعال شده است.", + "title": "غیر مجاز", + "tooManyRequests": "درخواست‌های بیش از حد. بعداً دوباره تلاش کنید." + } + }, + "auth-page": { + "error": "یه چیزی اشتباه...", + "password": "کلمه عبور", + "submit": "ارسال", + "username": "نام کاربری" + }, + "auth-pages-content": { + "change": "ایمیل / رمز عبور من را تغییر دهید", + "description": "در صورت نیاز، می توانید پروفایل های دیگر خود را در اینجا پیوند دهید. ", + "magic-link": "ارسال لینک جادویی", + "sign-out": "خروج از سیستم" + }, + "auth-provider": { + "please-wait": "لطفا صبر کنید...", + "sign-in": "با {name} وارد شوید", + "sign-in-null": "{name}", + "sign-up": "ثبت نام با {name}", + "sign-up-null": "{name}" + }, + "common": { + "home": { + "linkText": "بازگشت به صفحه اصلی" + }, + "userLogin": { + "signInText": "ورود", + "signOutText": "خروج از سیستم {userName}" + } + }, + "DataTable": { + "block": "مسدود کردن", + "columns": "ستون ها", + "delete": "حذف", + "email": "پست الکترونیک", + "filter-emails-placeholder": "ایمیل ها را فیلتر کنید", + "id": "شناسه", + "isadmin": "امین است", + "lastlogintime": "آخرین زمان ورود", + "make-admin": "ساختن مدیر", + "make-non-admin": "غیر امین کنید", + "name": "نام", + "next": "بعد", + "no-results": "هیچ نتیجه ای", + "of": "از", + "previous": "قبلی", + "registrationtime": "زمان ثبت نام", + "rows-selected": "ردیف(های) انتخاب شده است", + "success-description": "موفقیت", + "success-title": "با موفقیت", + "unblock": "رفع انسداد", + "view-profile": "مشاهده نمایه" + }, + "environments": { + "auth-button-placeholder": "⚠️ لطفاً Github/Google/Discord را در متغیرهای محیطی برای باز کردن قفل ویژگی‌های مرتبط با احراز هویت مشخص کنید." + }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "این متغیرهای محیطی به اشتباه مشخص شده اند یا مشخص نشده اند (لطفاً فایل .env را بررسی کنید):" + } + }, + "general": { + "about": "در باره", + "pricing": "قیمت گذاری", + "tools": "کاربردها" + }, + "islands": { + "command": { + "dark": "تاریک", + "light": "سبک", + "system": "سیستم", + "theme": "موضوع", + "tools": "امکانات" + }, + "copy-button": { + "copied": "در کلیپ بورد کپی شد!", + "copy": "کپی به کلیپ بورد" + }, + "footer": "توسعه یافته توسط {author}. ", + "links": { + "github": "پروفایل GitHub من", + "twitter": "پروفایل توییتر من" + }, + "main": { + "about": "در باره", + "github": "github", + "tools": "امکانات", + "twitter": "توییتر" + }, + "pricing": { + "toast": { + "description": "این پروژه منبع باز و رایگان برای استفاده است. ", + "title": "رایگان است! " + } + }, + "search": { + "placeholder": "یک دستور تایپ کنید یا جستجو کنید", + "title": "جستجو کردن..." + }, + "toast": { + "error": "خطا", + "success": "موفقیت", + "warning": "هشدار" + } + }, + "landing": { + "about": "هدف ما ایجاد غنی‌ترین، جهانی‌ترین و نمادین‌ترین استارتر Next.js در جهان است. ", + "btn1-products-now": "محصولات در حال حاضر", + "btn1-sell": "فروش", + "btn2-download": "دانلود", + "btn2-starter": "Next.js Relivator Starter", + "features": { + "clock": { + "description": "با Drizzle ORM در مسیر خود بمانید. ", + "title": "پایگاه داده" + }, + "cryptography": { + "description": "با App dir، Routing، Layouts، Loading UI، مسیرهای API و موارد دیگر درگیر شوید.", + "title": "Next.js 14" + }, + "currency": { + "description": "اجزای UI با استفاده از Radix UI ساخته شده و با Tailwind CSS استیل داده شده است.", + "title": "اجزاء" + }, + "devtools": { + "description": "اشتراک های رایگان و پولی با استفاده از Stripe.", + "title": "اشتراک ها", + "ambitions-description": "دویدن را از یک استارت به دیگری متوقف کنید. با Relivator، امکانات نامحدودی خواهید داشت. شما می توانید هر چیزی را که می خواهید ایجاد کنید. همه ابزارها از قبل آماده شده اند، فقط برای شما." + }, + "files": { + "description": "احراز هویت میان افزار با استفاده از NextAuth.js.", + "title": "احراز هویت", + "on-the-fly": "سفارشی سازی کامل در پرواز", + "on-the-fly-description": "به فهرست گسترده ای از ویژگی های موجود در مخزن پروژه ما شیرجه بزنید. بدون زحمت بین Clerk/NextAuth.js و MySQL/PostgreSQL جابجا شوید تا مطابق با نیازهای پروژه شما باشد.", + "roadmap": "جاه طلبی های بزرگ: امکانات بی حد و حصر" + }, + "subtitle": "از کد تا طراحی، Relivator دارای قابلیت هایی است که پروژه های وب شما را شارژ می کند.", + "text": { + "description": "برنامه را بدون زحمت با مولفه های سرور و مشتری دستکاری کنید. ", + "title": "واکنش 18" + }, + "title": "امکانات" + }, + "get-started": "امکانات", + "heading": "فروشگاه های آنلاین کارآمدتر، جذاب و سودآورتر بسازید: Relivator تجارت الکترونیک شما را با قدرت Next.js قدرتمند می کند", + "meta": { + "description": "Relivator ساخته شده با Next.js", + "title": "تقویت کننده" + }, + "open-source": { + "stars": "این پروژه {count} ستاره دارد! ", + "stars#few": "این پروژه {count} ستاره دارد! ", + "stars#many": "این پروژه {count} ستاره دارد! ", + "stars#one": "این پروژه فقط یک ستاره دارد... 😢", + "subtitle": { + "first": "Bleverse Relivator از اخلاق منبع باز دفاع می کند و تکامل کد مشترک را تشویق می کند.", + "second": "پایگاه کد ما را در کاوش کنید" + }, + "title": "متن باز را در آغوش بگیرید" + }, + "subtitle": "Bleverse Relivator سفر توسعه شما را ساده می کند. ", + "things": { + "linkText": "به لیست بروید" + }, + "title": "ابزارهای مهم برای React، Next.js و موارد دیگر را کشف کنید. " + }, + "LanguageSwitch": { + "choose-language": "زبان" + }, + "LocaleSwitcher": { + "label": "تغییر زبان", + "selectLocale": "زبان" + }, + "LoginForm": { + "description": "با استفاده از آدرس ایمیل و رمز عبور خود وارد حساب کاربری خود شوید.", + "email": "پست الکترونیک", + "email-placeholder": "آدرس ایمیل خود را وارد کنید", + "error-heading": "امکان ورود به سیستم وجود ندارد.", + "errors": { + "Callback": "با حساب دیگری امضا کنید.", + "CredentialsSignin": "ورود به سیستم انجام نشد. ", + "default": "امکان ورود به سیستم وجود ندارد.", + "Email or password is incorrect": "آدرس ایمیل یا رمز عبور نادرست می باشد.", + "EmailCreateAccount": "با حساب دیگری امضا کنید.", + "EmailSignin": "آدرس ایمیل خود را بررسی کنید.", + "Invalid credentials": "گواهی نامه نامعتبر.", + "OAuthAccountNotLinked": "برای تأیید هویت خود، با همان حسابی که در ابتدا استفاده می کردید وارد شوید.", + "OAuthCallback": "با حساب دیگری امضا کنید.", + "OAuthCreateAccount": "با حساب دیگری امضا کنید.", + "OAuthSignin": "با حساب دیگری امضا کنید.", + "Signin": "با حساب دیگری امضا کنید." + }, + "form": { + "description": "با استفاده از آدرس ایمیل و رمز عبور خود وارد حساب کاربری خود شوید.", + "email": "پست الکترونیک", + "email-placeholder": "آدرس ایمیل خود را وارد کنید", + "error-heading": "امکان ورود به سیستم وجود ندارد.", + "no-account": "حساب کاربری ندارید؟", + "other-options": "با استفاده از:", + "password": "کلمه عبور", + "password-placeholder": "رمز عبور خود را وارد کنید", + "sign-out": "خروج از سیستم", + "signup": "اینجا ثبت نام کنید.", + "submit": "ورود", + "title": "ورود", + "wait": "لطفا صبر کنید..." + }, + "no-account": "حساب کاربری ندارید؟", + "other-options": "با استفاده از:", + "password": "کلمه عبور", + "password-placeholder": "رمز عبور خود را وارد کنید", + "reset-password": "بانشانی رمز عبور", + "signin": "ورود", + "signup": "اینجا ثبت نام کنید.", + "submit": "ورود", + "success-description": "موفقیت", + "success-title": "انجام شده!", + "title": "ورود", + "wait": "لطفا صبر کنید..." + }, + "MainError": { + "error": "خطا", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." + }, + "meta": { + "description": "Next.js 14 Starter", + "title": "تقویت کننده" + }, + "Navbar": { + "home": "صفحه اصلی", + "sign-out": "خروج", + "signin": "ورود" + }, + "pages": { + "about": { + "author": "مجوز", + "credits": { + "title": "وام", + "topics": { + "lucide": "برای نمادهای جالب", + "nextjs": "برای چارچوب وب مبتنی بر React.", + "radix-ui": "برای بدوی های شگفت انگیز", + "shadcn/ui": "برای اجزای شیک", + "tailwind": "برای ساده سازی فوق العاده زندگی CSS ما.", + "typescript": "برای جاوا اسکریپت ایمن تایپ.", + "vercel": "برای استقرار تمام پروژه های من." + } + }, + "subtitle": "Bleverse Relivator یک راه‌انداز قدرتمند Next.js TypeScript Tailwind است. ", + "subtitle-link": "اینجا کلیک کنید", + "title": "در باره" + }, + "home": { + "features": { + "clock": { + "description": "با Drizzle ORM در مسیر خود بمانید. ", + "title": "پایگاه داده" + }, + "cryptography": { + "description": "با App dir، Routing، Layouts، Loading UI، مسیرهای API و موارد دیگر درگیر شوید.", + "title": "Next.js 14" + }, + "currency": { + "description": "اجزای UI با استفاده از Radix UI ساخته شده و با Tailwind CSS استیل داده شده است.", + "title": "اجزاء" + }, + "devtools": { + "description": "اشتراک های رایگان و پولی با استفاده از Stripe.", + "title": "اشتراک ها" + }, + "files": { + "description": "احراز هویت میان افزار با استفاده از NextAuth.js.", + "title": "احراز هویت" + }, + "subtitle": "از کد تا طراحی، Relivator دارای قابلیت هایی است که پروژه های وب شما را شارژ می کند.", + "text": { + "description": "برنامه را بدون زحمت با مولفه های سرور و مشتری دستکاری کنید. ", + "title": "واکنش 18" + }, + "title": "امکانات" + }, + "get-started": "امکانات", + "open-source": { + "stars": "این پروژه {count} ستاره دارد! ", + "stars#few": "این پروژه {count} ستاره دارد! ", + "stars#many": "این پروژه {count} ستاره دارد! ", + "stars#one": "این پروژه فقط یک ستاره دارد... 😢", + "subtitle": { + "first": "Bleverse Relivator از اخلاق منبع باز دفاع می کند و تکامل کد مشترک را تشویق می کند.", + "second": "پایگاه کد ما را در کاوش کنید" + }, + "title": "متن باز را در آغوش بگیرید" + }, + "subtitle": "Bleverse Relivator سفر توسعه شما را ساده می کند. ", + "title": "ابزارهای مهم برای React، Next.js و موارد دیگر را کشف کنید. " + }, + "not-found": { + "description": "منبعی که به دنبال آن هستید ممکن است منتقل شده باشد، نامش تغییر کرده باشد یا هرگز وجود نداشته باشد. ", + "go-home": "بازگشت به صفحه اصلی", + "title": "🫠 صفحه پیدا نشد! " + }, + "tools": { + "binary-code": { + "decode": "باینری به متن", + "encode": "متن به باینری", + "title": "کد باینری" + }, + "caesar-cipher": { + "actions": { + "code": "کد", + "decode": "رمزگشایی" + }, + "decode": "رمز به متن", + "encode": "متن به رمز", + "key": "کلید", + "title": "رمز سزار", + "toast": { + "invalid-key": "لطفا عددی بین 0 تا 25 تایپ کنید" + } + }, + "clock": { + "title": "ساعت" + }, + "color-picker": { + "title": "انتخاب کننده رنگ" + }, + "css-minifier": { + "actions": { + "minify": "کوچک کردن", + "minifying": "کوچک کردن" + }, + "title": "CSS Minifier", + "toast": { + "required": "لطفاً مقداری CSS برای کوچک کردن وارد کنید", + "success": "CSS با موفقیت کوچک شد" + } + }, + "currency": { + "not-found": "ارزی پیدا نشد", + "placeholder": "جستجوی ارز...", + "result": "{from} برابر است با {به}", + "source": "منبع", + "title": "واحد پول" + }, + "hex-code": { + "actions": { + "code": "کد", + "decode": "رمزگشایی" + }, + "decode": "هگز به متن", + "encode": "متن به هگز", + "title": "کد هگز" + }, + "json-formatter": { + "actions": { + "format": "قالب", + "formatting": "قالب بندی" + }, + "placeholder": "تعداد فضاها", + "title": "JSON Formatter", + "toast": { + "invalid-json": "JSON نامعتبر است", + "invalid-number": "لطفا یک شماره معتبر وارد کنید", + "required": "لطفاً مقداری JSON برای قالب بندی وارد کنید", + "success": "JSON با موفقیت فرمت شد" + } + }, + "length": { + "centimeter": "سانتی متر", + "foot": "پا", + "inch": "اینچ", + "kilometer": "کیلومتر", + "meter": "متر", + "micrometers": "میکرومتر", + "mile": "مایل", + "millimeter": "میلی متر", + "nanometers": "نانومتر", + "nautical mile": "مایل دریایی", + "title": "طول", + "yard": "حیاط" + }, + "morse-code": { + "actions": { + "code": "کد", + "decode": "رمزگشایی" + }, + "decode": "مورس به متن", + "encode": "پیامک به مورس", + "title": "کد مورس" + }, + "password-generator": { + "actions": { + "generate": "تولید می کنند" + }, + "length": "طول: {length}", + "placeholder": "کلمه عبور", + "title": "تولید کننده رمز عبور" + }, + "qr-code": { + "actions": { + "download": "دانلود", + "share": { + "twitter": "در توییتر به اشتراک بگذارید", + "whatsapp": "در WhatsApp اپ به اشتراک بگذارید" + } + }, + "hint": "(کد QR شما به صورت خودکار تولید می شود)", + "placeholder": "وب سایت، متن یا لینک خود را اینجا وارد کنید", + "title": "کد QR" + }, + "random-color": { + "generate": "رنگ جدید", + "title": "رنگ تصادفی" + }, + "stopwatch": { + "clear": "پاک کردن", + "start": "شروع کنید", + "stop": "متوقف کردن", + "title": "کرونومتر" + }, + "text-converter": { + "actions": { + "camel-case": "تبدیل به مورد شتر", + "capitalize": "بزرگ کردن", + "kebab-case": "تبدیل به کیس کباب", + "lowercase": "تبدیل به حروف کوچک", + "pascal-case": "تبدیل به حروف پاسکال", + "remove-accents": "لهجه ها را حذف کنید", + "remove-duplicates": "موارد تکراری را حذف کنید", + "remove-empty-lines": "خطوط خالی را حذف کنید", + "remove-spaces": "فاصله ها را حذف کنید", + "remove-special-characters": "حذف کاراکترهای خاص", + "reverse": "معکوس", + "snake-case": "تبدیل به کیس Snake", + "uppercase": "تبدیل به حروف بزرگ" + }, + "clear-input": "ورودی را پاک کنید", + "placeholder": { + "input": "اینجا چیزی تایپ کنید...", + "output": "نتیجه" + }, + "title": "مبدل متن", + "toast": { + "required": "لطفاً مقداری متن برای تبدیل وارد کنید", + "success-camel-case": "با موفقیت به جعبه شتر تبدیل شد", + "success-capitalize": "با موفقیت بزرگ نوشته شد", + "success-kebab-case": "با موفقیت به جعبه کباب تبدیل شد", + "success-lowercase": "با موفقیت به حروف کوچک تبدیل شد", + "success-pascal-case": "با موفقیت به حروف پاسکال تبدیل شد", + "success-remove-accents": "لهجه ها با موفقیت حذف شدند", + "success-remove-duplicates": "موارد تکراری با موفقیت حذف شدند", + "success-remove-empty-lines": "خطوط خالی با موفقیت حذف شدند", + "success-remove-spaces": "فضاها با موفقیت حذف شدند", + "success-remove-special-characters": "کاراکترهای ویژه با موفقیت حذف شدند", + "success-reverse": "با موفقیت معکوس شد", + "success-snake-case": "با موفقیت به کیس Snake تبدیل شد", + "success-uppercase": "با موفقیت به حروف بزرگ تبدیل شد" + } + }, + "timestamp": "-", + "title": "Utils", + "todo": { + "actions": { + "create": "کار جدید ایجاد کنید", + "delete": "وظیفه را حذف کنید" + }, + "placeholder": "کار جدید اضافه کنید", + "title": "انجام دادن" + }, + "unit-converter": { + "actions": "-", + "categories": "-", + "placeholder": "-", + "toast": "-" + }, + "url-encoder-decoder": { + "actions": "-" + }, + "word-counter": "-" + } + }, + "plugins": { + "stars": "با ستاره دار کردن آن در از حمایت کنید ⭐ هدف:" + }, + "pricing": { + "compare": { + "features": { + "enterprise": "کسب و کار", + "features": "امکانات", + "free": "رایگان", + "team": "تیم" + }, + "title": "مقایسه طرح ها" + }, + "cta": { + "get-started": "شروع کنید", + "sign-up": "ثبت نام" + }, + "faq": { + "have-questions": "سوالات؟", + "read-faq": "{faq} ما را بخوانید.", + "title": "سوالات متداول" + }, + "features": { + "features": { + "included": "مشمول", + "not-included": "شامل نمی شود" + }, + "title": "امکانات" + }, + "hero": { + "description": "به انجمن Relivator بپیوندید. ", + "pricing": "قیمت گذاری" + }, + "plans": { + "title": "طرح ها" + }, + "questions": { + "answer-card": "قیمت گذاری A la carte به شما امکان می دهد برنامه خود را بر اساس نیازهای خاص خود سفارشی کنید. ", + "answer-change": "بله، شما می توانید برنامه ها را در هر زمان تغییر دهید.", + "answer-free": "بله، Relivator یک طرح رایگان با مجموعه ویژگی های اساسی ارائه می دهد. ", + "answer-limits": "اگر از محدودیت‌های طرح خود فراتر رفتید، می‌توانید برنامه خود را ارتقا دهید تا منابع بیشتری دریافت کنید یا هزینه‌های اضافی را بر اساس میزان مصرف اضافی خود بپردازید.", + "answer-nonprofit": "بله، ما برای موسسات غیرانتفاعی و آموزشی تخفیف می دهیم. ", + "answer-payment": "ما پرداخت های کارت اعتباری و پرداخت های آنلاین امن را می پذیریم. ", + "answer-prices": "تمامی قیمت ها ماهیانه می باشد.", + "answer-teams": "قیمت گذاری برای تیم ها بر اساس تعداد اعضای تیم است. ", + "are-prices": "قیمت ها ماهانه است یا سالانه؟", + "can-i-change": "آیا می توانم بعداً برنامه ها را تغییر دهم؟", + "do-you-offer": "آیا برای موسسات غیرانتفاعی یا آموزشی تخفیف می دهید؟", + "how-does": "قیمت گذاری à la carte چگونه کار می کند؟", + "how-is": "قیمت گذاری برای تیم ها چگونه محاسبه می شود؟", + "is-there": "آیا نسخه رایگان Relivator وجود دارد؟", + "what-happens": "اگر از محدودیت های برنامه ام تجاوز کنم چه اتفاقی می افتد؟", + "what-payment": "چه روش های پرداختی را می پذیرید؟" + } + }, + "ProfileButton": { + "admin": "پنل مدیریت", + "logout": "خروج", + "my-account": "حساب من", + "new-review": "بررسی جدید", + "profile": "مشخصات", + "settings": "تنظیمات" + }, + "ProfileSettingsForm": { + "description": "تنظیمات پروفایل خود را به روز کنید.", + "errors": { + "update-error": "کاربر نمی تواند به روز شود." + }, + "name": "نام", + "name-min": "نام باید حداقل 2 کاراکتر باشد.", + "name-placeholder": "اسمت را وارد کن", + "submit": "به روز رسانی کاربر", + "title": "تنظیمات پروفایل", + "update-success": "کاربر با موفقیت به روز شد." + }, + "RegisterForm": { + "description": "با استفاده از آدرس ایمیل و رمز عبور خود یک حساب کاربری جدید ایجاد کنید.", + "email": "پست الکترونیک", + "email-placeholder": "آدرس ایمیل خود را وارد کنید", + "error-heading": "امکان ثبت نام وجود ندارد.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "نام کاربری باید حداقل 2 کاراکتر باشد.", + "invalid-email": "آدرس ایمیل نامعتبر است.", + "name-min": "نام باید حداقل 2 کاراکتر باشد.", + "password-min": "رمز عبور باید حداقل 6 کاراکتر باشد." + }, + "have-account": "از قبل حساب کاربری دارید؟", + "name": "نام", + "name-placeholder": "اسمت را وارد کن", + "other-options": "یا با:", + "password": "کلمه عبور", + "password-placeholder": "رمز عبور خود را وارد کنید", + "signin": "اینجا وارد شوید.", + "submit": "ثبت نام", + "success-description": "اکنون می توانید وارد حساب کاربری خود شوید.", + "success-title": "ثبت نام با موفقیت انجام شد!", + "title": "ثبت نام", + "wait": "لطفا صبر کنید..." + }, + "ReviewNewForm": { + "description": "یک بررسی جدید ایجاد کنید.", + "errors": { + "create-error": "ایجاد نظر ممکن نیست." + }, + "grade": "مقطع تحصیلی", + "grade-placeholder": "نمره را وارد کنید", + "item": "مورد", + "item-placeholder": "نام اثر هنری بررسی شده", + "submit": "ایجاد بررسی", + "tags": "برچسب ها", + "tags-placeholder": "برچسب ها را وارد کنید", + "title": "ایجاد بررسی", + "title-field": "عنوان", + "title-field-placeholder": "عنوان را وارد کنید" + }, + "settings-page": { + "description": "تنظیمات خود را مدیریت کنید", + "title": "تنظیمات" + }, + "signIn": { + "heading": "ورود", + "LoginForm": { + "wait": "لطفا صبر کنید..." + }, + "meta": { + "description": "برای تجربه شخصی وارد سیستم شوید", + "title": "ورود" + }, + "providerButtonText": "با {name} وارد شوید", + "providerButtonTextReg": "ثبت نام با {name}" + }, + "TagsSelect": { + "no-options": "هیچ گزینه ای وجود ندارد", + "search": "جستجو کردن...", + "tags": "برچسب ها", + "tags-placeholder": "برچسب ها را وارد کنید" + }, + "ThemeSwitch": { + "dark": "تاریک", + "light": "سبک", + "system": "سیستم" + }, + "things": { + "heading": "احیاگر شما", + "input": { + "placeholder": "عنوانی را وارد کنید", + "submitButtonText": "اضافه کردن به لیست" + }, + "list": { + "createdDate": "ایجاد شده در {createdDate, date, ::yyyyMMddHHmmss}", + "loading": "بارگذاری..." + }, + "meta": { + "description": "لیستی از چیزهای شخصی شما", + "title": "احیاگر شما" + }, + "signIn": "لطفا ورود برای مشاهده آن" + }, + "tools": { + "about": "-", + "categories": "-", + "cta": "-", + "hero": { + "title": "ابزارهای آنلاین رایگان از Relivator" + }, + "title": "ابزار" + }, + "store": { + "product": { + "products": "محصولات", + "buyProductsFromOurStores": "محصولات را از فروشگاه‌های ما بخرید", + "moreProductsFrom": "محصولات بیشتر از {storeName}", + "noDescription": "برای این محصول توضیحی در دسترس نیست.", + "addToCart": "به سبد خرید اضافه کنید", + "description": "شرح" + }, + "categories": { + "buyFromCategories": "از بهترین فروشگاه‌ها {category} بخرید", + "buyTheBest": "بهترین {category} را بخرید", + "buyProducts": "محصولاتی را از دسته ${category} خریداری کنید" + }, + "stores": { + "buy-products": "محصولات را از فروشگاه‌های ما بخرید", + "stores": "فروشگاه‌ها" + } + } +} diff --git a/src/data/i18n/fr-fr.json b/src/data/i18n/fr-fr.json index 370b80f7..3d08970d 100644 --- a/src/data/i18n/fr-fr.json +++ b/src/data/i18n/fr-fr.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Bloquer", - "columns": "Colonnes", - "delete": "Supprimer", - "email": "Email", - "filter-emails-placeholder": "Filtrer les emails", - "id": "ID", - "isadmin": "Est administrateur", - "lastlogintime": "Dernière connexion", - "make-admin": "Rendre administrateur", - "make-non-admin": "Rendre non administrateur", - "name": "Nom", - "next": "Suivant", - "no-results": "Aucun résultat", - "of": "de", - "previous": "Précédent", - "registrationtime": "Heure d'inscription", - "rows-selected": "ligne(s) sélectionnée(s)", - "success-description": "Succès", - "success-title": "Avec succès", - "unblock": "Débloquer", - "view-profile": "Voir le profil" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Ces variables d'environnement sont mal spécifiées ou ne sont pas spécifiées (veuillez vérifier le fichier .env):" - } - }, - "LanguageSwitch": { - "choose-language": "Langue" - }, - "LocaleSwitcher": { - "label": "Changer de langue", - "selectLocale": "Langue" - }, - "LoginForm": { - "description": "Connectez-vous à votre compte en utilisant votre adresse e-mail et votre mot de passe.", - "email": "Email", - "email-placeholder": "Entrez votre adresse e-mail", - "error-heading": "Impossible de se connecter.", - "errors": { - "Callback": "Essayez de vous connecter avec un autre compte.", - "CredentialsSignin": "Échec de la connexion. Vérifiez les informations que vous avez fournies.", - "Email or password is incorrect": "L'adresse e-mail ou le mot de passe est incorrect.", - "EmailCreateAccount": "Essayez de vous connecter avec un autre compte.", - "EmailSignin": "Vérifiez votre adresse e-mail.", - "Invalid credentials": "Informations d'identification non valides.", - "OAuthAccountNotLinked": "Pour confirmer votre identité, connectez-vous avec le même compte que celui que vous avez utilisé initialement.", - "OAuthCallback": "Essayez de vous connecter avec un autre compte.", - "OAuthCreateAccount": "Essayez de vous connecter avec un autre compte.", - "OAuthSignin": "Essayez de vous connecter avec un autre compte.", - "Signin": "Essayez de vous connecter avec un autre compte.", - "default": "Impossible de se connecter." - }, - "form": { - "description": "Connectez-vous à votre compte en utilisant votre adresse e-mail et votre mot de passe.", - "email": "Email", - "email-placeholder": "Entrez votre adresse e-mail", - "error-heading": "Impossible de se connecter.", - "no-account": "Vous n'avez pas de compte?", - "other-options": "Connectez-vous avec :", - "password": "Mot de passe", - "password-placeholder": "Entrez votre mot de passe", - "sign-out": "Déconnexion", - "signup": "Inscrivez-vous ici.", - "submit": "Se connecter", - "title": "Se connecter", - "wait": "Veuillez patienter..." - }, - "no-account": "Vous n'avez pas de compte?", - "other-options": "Connectez-vous avec :", - "password": "Mot de passe", - "password-placeholder": "Entrez votre mot de passe", - "reset-password": "réinitialiser le mot de passe", - "signin": "Se connecter", - "signup": "Inscrivez-vous ici.", - "submit": "Se connecter", - "success-description": "Succès.", - "success-title": "Terminé !", - "title": "Se connecter", - "wait": "Veuillez patienter..." - }, - "MainError": { - "Could not fetch user.": "Impossible de récupérer l'utilisateur.", - "Not authenticated.": "Non authentifié.", - "User not found.": "Utilisateur introuvable.", - "error": "Erreur" - }, - "Navbar": { - "home": "Accueil", - "sign-out": "Déconnexion", - "signin": "Se connecter" - }, - "ProfileButton": { - "admin": "Panneau d'administration", - "logout": "Déconnexion", - "my-account": "Mon compte", - "new-review": "Nouvelle critique", - "profile": "Profil", - "settings": "Paramètres" - }, - "ProfileSettingsForm": { - "description": "Mettez à jour vos paramètres de profil.", - "errors": { - "update-error": "Impossible de mettre à jour l'utilisateur." - }, - "name": "Nom", - "name-min": "Le nom doit comporter au moins 2 caractères.", - "name-placeholder": "Entrez votre nom", - "submit": "Mettre à jour l'utilisateur", - "title": "Paramètres de profil", - "update-success": "Utilisateur mis à jour avec succès." - }, - "RegisterForm": { - "description": "Créez un nouveau compte en utilisant votre adresse e-mail et votre mot de passe.", - "email": "Email", - "email-placeholder": "Entrez votre adresse e-mail", - "error-heading": "Impossible de s'inscrire.", - "errors": { - "Not authenticated.": "Non authentifié.", - "Please fill all fields.": "Veuillez remplir tous les champs.", - "User with this email already exists.": "Un utilisateur avec cette adresse e-mail existe déjà." - }, - "form": { - "email-min": "Le nom d'utilisateur doit comporter au moins 2 caractères.", - "invalid-email": "Adresse e-mail invalide.", - "name-min": "Le nom doit comporter au moins 2 caractères.", - "password-min": "Le mot de passe doit comporter au moins 6 caractères." - }, - "have-account": "Vous avez déjà un compte?", - "name": "Nom", - "name-placeholder": "Entrez votre nom", - "other-options": "Ou inscrivez-vous avec :", - "password": "Mot de passe", - "password-placeholder": "Entrez votre mot de passe", - "signin": "Connectez-vous ici.", - "submit": "S'inscrire", - "success-description": "Vous pouvez maintenant vous connecter à votre compte.", - "success-title": "L'inscription a réussi !", - "title": "S'inscrire", - "wait": "Veuillez patienter..." - }, - "ReviewNewForm": { - "description": "Créez une nouvelle critique.", - "errors": { - "create-error": "Impossible de créer la critique." - }, - "grade": "Note", - "grade-placeholder": "Entrez la note", - "item": "Élément", - "item-placeholder": "Nom de la pièce d'art examinée", - "submit": "Créer une critique", - "tags": "Mots-clés", - "tags-placeholder": "Entrez des mots-clés", - "title": "Créer une critique", - "title-field": "Titre", - "title-field-placeholder": "Entrez le titre" - }, - "TagsSelect": { - "no-options": "Aucune option", - "search": "Rechercher...", - "tags": "Mots-clés", - "tags-placeholder": "Entrez des mots-clés" - }, - "ThemeSwitch": { - "dark": "Sombre", - "light": "Clair", - "system": "Système" - }, "account-page": { - "Settings": "Paramètres", "loggedIn": "Connecté", "loggedOut": "Déconnecté", "login": "Se connecter", "logout": "Se déconnecter", + "Settings": "Paramètres", "title": "Compte" }, "auth": { - "other-options": "Associez plus de comptes:" + "emailSubmitButton": { + "label": "Envoyer" + }, + "error": { + "default": "Essayez de vous connecter avec un autre compte.", + "email": "Email introuvable. Essayez de vous connecter avec un autre fournisseur.", + "oauthNotLinked": "Pour confirmer votre identité, connectez-vous avec le même compte que vous avez utilisé initialement.", + "unknown": "Une erreur s'est produite. Veuillez réessayer.", + "unknown-error": "Quelque chose a mal tourné. Veuillez visiter la page /contact et informer notre équipe d'assistance de cette erreur inconnue." + }, + "legal": "En utilisant les boutons ci-dessus, vous acceptez", + "legal-and": "et", + "legal-privacy": "politique de confidentialité", + "legal-terms": "Conditions d'utilisation", + "magicLink": { + "description": "Assurez-vous de vérifier votre dossier spam.", + "title": "Un email avec un lien magique a été envoyé. 🧙‍♂️" + }, + "noProvider": { + "link": "configurez au moins un fournisseur d'authentification (par ex. Email, Google, GitHub, Facebook, etc.)", + "preLink": "Vous devez" + }, + "orEmailLabel": "Ou avec votre email", + "other-options": "Liez plus de comptes :", + "register": { + "agreeToTerms": "En vous inscrivant, vous acceptez nos conditions d'utilisation et politique de confidentialité.", + "alreadyHaveAccountLabel": { + "link": "Se connecter", + "preLink": "Vous avez déjà un compte ?" + }, + "heading": "Créer un compte" + }, + "signin": { + "heading": "Se Connecter", + "noAccountLabel": { + "link": "Inscrivez-vous gratuitement", + "preLink": "Vous n'avez pas de compte ?" + } + }, + "signinErrorToast": { + "description": "Les inscriptions sont désactivées.", + "title": "Non autorisé", + "tooManyRequests": "Trop de demandes. Réessayez plus tard." + } }, "auth-page": { "error": "Quelque chose ne va pas...", @@ -207,9 +81,37 @@ "signOutText": "Se déconnecter de {userName}" } }, + "DataTable": { + "block": "Bloquer", + "columns": "Colonnes", + "delete": "Supprimer", + "email": "Email", + "filter-emails-placeholder": "Filtrer les emails", + "id": "ID", + "isadmin": "Est administrateur", + "lastlogintime": "Dernière connexion", + "make-admin": "Rendre administrateur", + "make-non-admin": "Rendre non administrateur", + "name": "Nom", + "next": "Suivant", + "no-results": "Aucun résultat", + "of": "de", + "previous": "Précédent", + "registrationtime": "Heure d'inscription", + "rows-selected": "ligne(s) sélectionnée(s)", + "success-description": "Succès", + "success-title": "Avec succès", + "unblock": "Débloquer", + "view-profile": "Voir le profil" + }, "environments": { "auth-button-placeholder": "⚠️ Veuillez spécifier Github/Google/Discord dans les variables d'environnement pour débloquer les fonctionnalités liées à l'authentification." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Ces variables d'environnement sont mal spécifiées ou ne sont pas spécifiées (veuillez vérifier le fichier .env):" + } + }, "general": { "about": "à propos", "pricing": "tarification", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Notre objectif est de créer le starter Next.js le plus riche en fonctionnalités, le plus global et le plus emblématique au monde. Explorez la liste complète des fonctionnalités. Offrant plus qu'un simple code, c'est un voyage. Il est stable et prêt pour la production.", "btn1-products-now": "Produits maintenant", "btn1-sell": "Vendre", "btn2-download": "Download", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Abonnements gratuits et payants via Stripe.", - "title": "Abonnements" + "title": "Abonnements", + "ambitions-description": "Arrêtez de courir d’un démarreur à l’autre. Avec Relivator, vous aurez des possibilités illimitées. Vous pouvez créer tout ce que vous voulez; tous les outils sont déjà préparés, rien que pour vous." }, "files": { "description": "Authentification middleware à l'aide de NextAuth.js.", - "title": "Authentification" + "title": "Authentification", + "on-the-fly": "Personnalisation complète à la volée", + "on-the-fly-description": "Plongez dans une liste complète de fonctionnalités dans notre référentiel de projets. Basculez sans effort entre Clerk/NextAuth.js et MySQL/PostgreSQL pour répondre aux exigences de votre projet.", + "roadmap": "De grandes ambitions: des possibilités illimitées" }, "subtitle": "Du code à la conception, Relivator possède des fonctionnalités qui dynamisent vos projets Web.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Accéder à la liste" }, - "title": "Découvrez les outils primordiaux pour React, Next.js et au-delà. Conçu spécialement pour vous.", - "about": "Notre objectif est de créer le starter Next.js le plus riche en fonctionnalités, le plus global et le plus emblématique au monde. Explorez la liste complète des fonctionnalités. Offrant plus qu'un simple code, c'est un voyage. Il est stable et prêt pour la production." + "title": "Découvrez les outils primordiaux pour React, Next.js et au-delà. Conçu spécialement pour vous." + }, + "LanguageSwitch": { + "choose-language": "Langue" + }, + "LocaleSwitcher": { + "label": "Changer de langue", + "selectLocale": "Langue" + }, + "LoginForm": { + "description": "Connectez-vous à votre compte en utilisant votre adresse e-mail et votre mot de passe.", + "email": "Email", + "email-placeholder": "Entrez votre adresse e-mail", + "error-heading": "Impossible de se connecter.", + "errors": { + "Callback": "Essayez de vous connecter avec un autre compte.", + "CredentialsSignin": "Échec de la connexion. Vérifiez les informations que vous avez fournies.", + "default": "Impossible de se connecter.", + "Email or password is incorrect": "L'adresse e-mail ou le mot de passe est incorrect.", + "EmailCreateAccount": "Essayez de vous connecter avec un autre compte.", + "EmailSignin": "Vérifiez votre adresse e-mail.", + "Invalid credentials": "Informations d'identification non valides.", + "OAuthAccountNotLinked": "Pour confirmer votre identité, connectez-vous avec le même compte que celui que vous avez utilisé initialement.", + "OAuthCallback": "Essayez de vous connecter avec un autre compte.", + "OAuthCreateAccount": "Essayez de vous connecter avec un autre compte.", + "OAuthSignin": "Essayez de vous connecter avec un autre compte.", + "Signin": "Essayez de vous connecter avec un autre compte." + }, + "form": { + "description": "Connectez-vous à votre compte en utilisant votre adresse e-mail et votre mot de passe.", + "email": "Email", + "email-placeholder": "Entrez votre adresse e-mail", + "error-heading": "Impossible de se connecter.", + "no-account": "Vous n'avez pas de compte?", + "other-options": "Connectez-vous avec :", + "password": "Mot de passe", + "password-placeholder": "Entrez votre mot de passe", + "sign-out": "Déconnexion", + "signup": "Inscrivez-vous ici.", + "submit": "Se connecter", + "title": "Se connecter", + "wait": "Veuillez patienter..." + }, + "no-account": "Vous n'avez pas de compte?", + "other-options": "Connectez-vous avec :", + "password": "Mot de passe", + "password-placeholder": "Entrez votre mot de passe", + "reset-password": "réinitialiser le mot de passe", + "signin": "Se connecter", + "signup": "Inscrivez-vous ici.", + "submit": "Se connecter", + "success-description": "Succès.", + "success-title": "Terminé !", + "title": "Se connecter", + "wait": "Veuillez patienter..." + }, + "MainError": { + "error": "Erreur", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Starter Next.js 14", "title": "Relivator" }, + "Navbar": { + "home": "Accueil", + "sign-out": "Déconnexion", + "signin": "Se connecter" + }, "pages": { "about": { "author": "Licence", @@ -331,7 +302,7 @@ } }, "subtitle": "Relivator est un puissant starter Next.js TypeScript Tailwind. Il simplifie le processus de développement et offre une base solide pour la création de projets web. N'hésitez pas à l'utiliser, à l'adapter et à contribuer au projet en cliquant ici.", - "subtitle.link": "cliquant ici", + "subtitle-link": "cliquant ici", "title": "À propos" }, "home": { @@ -379,9 +350,9 @@ "title": "Découvrez les outils tools essentiels pour React, Next.js, et bien plus encore. Spécialement conçus pour vous." }, "not-found": { - "title": "🫠 Page non trouvée ! 🥲 Malheureusement...", "description": "La ressource que vous recherchez a peut-être été déplacée, renommée ou n'a peut-être jamais existé. Veuillez vérifier l'URL ou naviguer vers d'autres sections à l'aide du menu.", - "go-home": "Retourner à la page d'accueil" + "go-home": "Retourner à la page d'accueil", + "title": "🫠 Page non trouvée ! 🥲 Malheureusement..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "S'il te plaît, donne une étoile sur GitHub ⭐ Objectif:" + "stars": "S'il te plaît, donne une étoile ⭐" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "Quels modes de paiement acceptez-vous?" } }, + "ProfileButton": { + "admin": "Panneau d'administration", + "logout": "Déconnexion", + "my-account": "Mon compte", + "new-review": "Nouvelle critique", + "profile": "Profil", + "settings": "Paramètres" + }, + "ProfileSettingsForm": { + "description": "Mettez à jour vos paramètres de profil.", + "errors": { + "update-error": "Impossible de mettre à jour l'utilisateur." + }, + "name": "Nom", + "name-min": "Le nom doit comporter au moins 2 caractères.", + "name-placeholder": "Entrez votre nom", + "submit": "Mettre à jour l'utilisateur", + "title": "Paramètres de profil", + "update-success": "Utilisateur mis à jour avec succès." + }, + "RegisterForm": { + "description": "Créez un nouveau compte en utilisant votre adresse e-mail et votre mot de passe.", + "email": "Email", + "email-placeholder": "Entrez votre adresse e-mail", + "error-heading": "Impossible de s'inscrire.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Le nom d'utilisateur doit comporter au moins 2 caractères.", + "invalid-email": "Adresse e-mail invalide.", + "name-min": "Le nom doit comporter au moins 2 caractères.", + "password-min": "Le mot de passe doit comporter au moins 6 caractères." + }, + "have-account": "Vous avez déjà un compte?", + "name": "Nom", + "name-placeholder": "Entrez votre nom", + "other-options": "Ou inscrivez-vous avec :", + "password": "Mot de passe", + "password-placeholder": "Entrez votre mot de passe", + "signin": "Connectez-vous ici.", + "submit": "S'inscrire", + "success-description": "Vous pouvez maintenant vous connecter à votre compte.", + "success-title": "L'inscription a réussi !", + "title": "S'inscrire", + "wait": "Veuillez patienter..." + }, + "ReviewNewForm": { + "description": "Créez une nouvelle critique.", + "errors": { + "create-error": "Impossible de créer la critique." + }, + "grade": "Note", + "grade-placeholder": "Entrez la note", + "item": "Élément", + "item-placeholder": "Nom de la pièce d'art examinée", + "submit": "Créer une critique", + "tags": "Mots-clés", + "tags-placeholder": "Entrez des mots-clés", + "title": "Créer une critique", + "title-field": "Titre", + "title-field-placeholder": "Entrez le titre" + }, "settings-page": { "description": "Gérez vos paramètres.", "title": "Paramètres" }, "signIn": { + "heading": "Se connecter", "LoginForm": { "wait": "S'il vous plaît, attendez..." }, - "heading": "Se connecter", "meta": { "description": "Connectez-vous pour une expérience personnalisée", "title": "Se connecter" @@ -634,6 +670,17 @@ "providerButtonText": "Connectez-vous avec {name}", "providerButtonTextReg": "Inscrivez-vous avec {name}" }, + "TagsSelect": { + "no-options": "Aucune option", + "search": "Rechercher...", + "tags": "Mots-clés", + "tags-placeholder": "Entrez des mots-clés" + }, + "ThemeSwitch": { + "dark": "Sombre", + "light": "Clair", + "system": "Système" + }, "things": { "heading": "Votre Relivator", "input": { @@ -658,5 +705,24 @@ "title": "Outils gratuits en ligne de Relivator" }, "title": "Outils" + }, + "store": { + "stores": { + "buy-products": "Achetez des produits dans nos magasins", + "stores": "Magasins" + }, + "categories": { + "buyFromCategories": "Achetez {category} dans les meilleurs magasins", + "buyProducts": "Acheter des produits de la catégorie ${category}", + "buyTheBest": "Achetez le meilleur {category}" + }, + "product": { + "products": "Des produits", + "noDescription": "Aucune description n'est disponible pour ce produit.", + "description": "Description", + "moreProductsFrom": "Plus de produits de {storeName}", + "buyProductsFromOurStores": "Achetez des produits dans nos magasins", + "addToCart": "Ajouter au panier" + } } } diff --git a/src/data/i18n/hi-in.json b/src/data/i18n/hi-in.json index f5a7d435..1e839ec7 100644 --- a/src/data/i18n/hi-in.json +++ b/src/data/i18n/hi-in.json @@ -1,178 +1,57 @@ { - "DataTable": { - "block": "अवरोधित करें", - "columns": "स्तंभ", - "delete": "हटाएं", - "email": "ईमेल", - "filter-emails-placeholder": "ईमेल को फ़िल्टर करें", - "id": "आईडी", - "isadmin": "व्यवस्थापक है", - "lastlogintime": "अंतिम लॉगिन समय", - "make-admin": "व्यवस्थापक बनाएं", - "make-non-admin": "गैर-व्यवस्थापक बनाएं", - "name": "नाम", - "next": "अगला", - "no-results": "कोई परिणाम नहीं", - "of": "का", - "previous": "पिछला", - "registrationtime": "पंजीकरण समय", - "rows-selected": "पंक्ति(ओं) का चयन किया गया", - "success-description": "सफलता", - "success-title": "सफलतापूर्वक", - "unblock": "अनवरोधित करें", - "view-profile": "प्रोफ़ाइल देखें" - }, - "LanguageSwitch": { - "choose-language": "भाषा चुनें" - }, - "LocaleSwitcher": { - "label": "भाषा बदलें", - "selectLocale": "भाषा" - }, - "LoginForm": { - "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके अपने खाते में साइन इन करें।", - "email": "ईमेल", - "email-placeholder": "अपना ईमेल पता दर्ज करें", - "error-heading": "साइन इन करने में असमर्थ।", - "errors": { - "Callback": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "CredentialsSignin": "साइन इन विफल। सुनिश्चित करें कि आपने सही विवरण प्रदान किए हैं।", - "Email or password is incorrect": "ईमेल या पासवर्ड गलत है।", - "EmailCreateAccount": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "EmailSignin": "अपना ईमेल पता जांचें।", - "Invalid credentials": "अमान्य प्रमाणीकरण।", - "OAuthAccountNotLinked": "अपनी पहचान की पुष्टि करने के लिए, मौलिक रूप से आपके द्वारा उपयुक्त वही खाता उपयोग करके साइन इन करें।", - "OAuthCallback": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "OAuthCreateAccount": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "OAuthSignin": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "Signin": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", - "default": "साइन इन करने में असमर्थ।" - }, - "form": { - "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके अपने खाते में साइन इन करें।", - "email": "ईमेल", - "email-placeholder": "अपना ईमेल पता दर्ज करें", - "error-heading": "साइन इन करने में असमर्थ।", - "no-account": "क्या आपका खाता नहीं है?", - "other-options": "इसका उपयोग करके साइन इन करें:", - "password": "पासवर्ड", - "password-placeholder": "अपना पासवर्ड दर्ज करें", - "sign-out": "साइन आउट", - "signup": "यहां साइन अप करें।", - "submit": "साइन इन करें", - "title": "साइन इन करें", - "wait": "कृपया प्रतीक्षा करें..." - }, - "no-account": "क्या आपका खाता नहीं है?", - "other-options": "इसका उपयोग करके साइन इन करें:", - "password": "पासवर्ड", - "password-placeholder": "अपना पासवर्ड दर्ज करें", - "reset-password": "पासवर्ड रीसेट करें", - "signin": "साइन इन करें", - "signup": "यहाँ साइन अप करें।", - "submit": "साइन इन करें", - "success-description": "सफलता।", - "success-title": "हो गया!", - "title": "साइन इन करें", - "wait": "कृपया प्रतीक्षा करें..." - }, - "MainError": { - "Could not fetch user.": "उपयोगकर्ता को प्राप्त नहीं कर सकते थे।", - "Not authenticated.": "प्रमाणित नहीं है।", - "User not found.": "उपयोगकर्ता नहीं मिला।", - "error": "त्रुटि" - }, - "Navbar": { - "home": "होम", - "sign-out": "लॉग आउट", - "signin": "साइन इन करें" - }, - "ProfileButton": { - "admin": "व्यवस्थापक पैनल", - "logout": "लॉग आउट", - "my-account": "मेरा खाता", - "new-review": "नया समीक्षा", - "profile": "प्रोफ़ाइल", - "settings": "सेटिंग्स" - }, - "ProfileSettingsForm": { - "description": "अपनी प्रोफ़ाइल सेटिंग्स अपडेट करें।", - "errors": { - "update-error": "उपयोगकर्ता को अपडेट करने में असमर्थ।" - }, - "name": "नाम", - "name-min": "नाम कम से कम 2 अक्षर का होना चाहिए।", - "name-placeholder": "अपना नाम दर्ज करें", - "submit": "उपयोगकर्ता अपडेट करें", - "title": "प्रोफ़ाइल सेटिंग्स", - "update-success": "उपयोगकर्ता सफलतापूर्वक अपडेट हुआ।" - }, - "RegisterForm": { - "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके एक नया खाता बनाएं।", - "email": "ईमेल", - "email-placeholder": "अपना ईमेल पता दर्ज करें", - "error-heading": "साइन अप करने में असमर्थ।", - "errors": { - "Not authenticated.": "प्रमाणित नहीं है।", - "Please fill all fields.": "कृपया सभी फ़ील्ड भरें।", - "User with this email already exists.": "इस ईमेल वाला उपयोगकर्ता पहले ही मौजूद है।" - }, - "form": { - "email-min": "उपयोगकर्ता नाम कम से कम 2 अक्षर का होना चाहिए।", - "invalid-email": "अमान्य ईमेल पता।", - "name-min": "नाम कम से कम 2 अक्षर का होना चाहिए।", - "password-min": "पासवर्ड कम से कम 6 अक्षर का होना चाहिए।" - }, - "have-account": "पहले से ही एक खाता है?", - "name": "नाम", - "name-placeholder": "अपना नाम दर्ज करें", - "other-options": "या साइन अप करें इसके साथ:", - "password": "पासवर्ड", - "password-placeholder": "अपना पासवर्ड दर्ज करें", - "signin": "यहां साइन इन करें।", - "submit": "साइन अप करें", - "success-description": "अब आप अपने खाते में साइन इन कर सकते हैं।", - "success-title": "पंजीकरण सफल था!", - "title": "साइन अप करें", - "wait": "कृपया प्रतीक्षा करें..." - }, - "ReviewNewForm": { - "description": "एक नया समीक्षा बनाएं।", - "errors": { - "create-error": "समीक्षा बनाने में असमर्थ।" - }, - "grade": "ग्रेड", - "grade-placeholder": "ग्रेड दर्ज करें", - "item": "वस्तु", - "item-placeholder": "समीक्षित कला का नाम", - "submit": "समीक्षा बनाएं", - "tags": "टैग्स", - "tags-placeholder": "टैग्स दर्ज करें", - "title": "समीक्षा बनाएं", - "title-field": "शीर्षक", - "title-field-placeholder": "शीर्षक दर्ज करें" - }, - "TagsSelect": { - "no-options": "कोई विकल्प नहीं", - "search": "खोजें...", - "tags": "टैग्स", - "tags-placeholder": "टैग्स दर्ज करें" - }, - "ThemeSwitch": { - "dark": "अंधेरा", - "light": "रोशन", - "system": "सिस्टम" - }, "account-page": { - "Settings": "सेटिंग्स", "loggedIn": "लॉग इन किया हुआ", "loggedOut": "लॉग आउट किया हुआ", "login": "साइन इन करें", "logout": "लॉग आउट", + "Settings": "सेटिंग्स", "title": "खाता" }, "auth": { - "other-options": "और अधिक खाते लिंक करें:" + "emailSubmitButton": { + "label": "जमा करें" + }, + "error": { + "default": "दूसरे खाते के साथ साइन इन करने का प्रयास करें।", + "email": "ईमेल नहीं मिला। दूसरे प्रदाता के साथ साइन इन करने का प्रयास करें।", + "oauthNotLinked": "अपनी पहचान की पुष्टि करने के लिए, उसी खाते के साथ साइन इन करें जिसका आपने मूल रूप से उपयोग किया था।", + "unknown": "एक त्रुटि हुई। कृपया पुनः प्रयास करें।", + "unknown-error": "कुछ गलत हो गया। कृपया /contact पृष्ठ पर जाएँ और हमारी सहायता टीम को इस अज्ञात त्रुटि के बारे में सूचित करें।" + }, + "legal": "उपरोक्त बटनों का उपयोग करके, आप इससे सहमत हैं", + "legal-and": "और", + "legal-privacy": "गोपनीयता नीति", + "legal-terms": "सेवा की शर्तें", + "magicLink": { + "description": "अपने स्पैम फ़ोल्डर की जाँच करना सुनिश्चित करें।", + "title": "एक जादुई लिंक ईमेल भेजा गया था। 🧙‍♂️" + }, + "noProvider": { + "link": "कम से कम एक प्रमाणीकरण प्रदाता को कॉन्फ़िगर करें (जैसे ईमेल, Google, GitHub, Facebook आदि)", + "preLink": "आपको" + }, + "orEmailLabel": "या अपने ईमेल के साथ", + "other-options": "और खाते लिंक करें:", + "register": { + "agreeToTerms": "साइन अप करके, आप हमारी सेवा की शर्तों और गोपनीयता नीति से सहमत होते हैं।", + "alreadyHaveAccountLabel": { + "link": "साइन इन करें", + "preLink": "पहले से ही खाता है?" + }, + "heading": "एक खाता बनाएं" + }, + "signin": { + "heading": "साइन इन करें", + "noAccountLabel": { + "link": "मुफ्त में साइन अप करें", + "preLink": "क्या खाता नहीं है?" + } + }, + "signinErrorToast": { + "description": "साइन अप अक्षम हैं।", + "title": "अनधिकृत", + "tooManyRequests": "बहुत सारे अनुरोध। बाद में पुनः प्रयास करें।" + } }, "auth-page": { "error": "कुछ गलत है...", @@ -186,6 +65,32 @@ "magic-link": "मैजिक लिंक भेजें", "sign-out": "लॉग आउट" }, + "auth-provider": { + "please-wait": "कृपया प्रतीक्षा करें...", + "sign-in": "{नाम} से साइन इन करें", + "sign-in-null": "{नाम}", + "sign-up": "{नाम} के साथ साइन अप करें", + "sign-up-null": "{नाम}" + }, + "store": { + "stores": { + "buy-products": "हमारे स्टोर से उत्पाद खरीदें", + "stores": "स्टोर" + }, + "categories": { + "buyFromCategories": "सर्वोत्तम स्टोर से {श्रेणी} खरीदें", + "buyProducts": "${श्रेणी} श्रेणी से उत्पाद खरीदें", + "buyTheBest": "सर्वोत्तम {category} खरीदें" + }, + "product": { + "products": "उत्पादों", + "noDescription": "इस उत्पाद का कोई विवरण उपलब्ध नहीं है.", + "description": "विवरण", + "moreProductsFrom": "{storeName} से अधिक उत्पाद", + "buyProductsFromOurStores": "हमारे स्टोर से उत्पाद खरीदें", + "addToCart": "कार्ट में जोड़ें" + } + }, "common": { "home": { "linkText": "होमपेज पर वापस जाएं" @@ -195,9 +100,37 @@ "signOutText": "साइन आउट करें {userName}" } }, + "DataTable": { + "block": "अवरोधित करें", + "columns": "स्तंभ", + "delete": "हटाएं", + "email": "ईमेल", + "filter-emails-placeholder": "ईमेल को फ़िल्टर करें", + "id": "आईडी", + "isadmin": "व्यवस्थापक है", + "lastlogintime": "अंतिम लॉगिन समय", + "make-admin": "व्यवस्थापक बनाएं", + "make-non-admin": "गैर-व्यवस्थापक बनाएं", + "name": "नाम", + "next": "अगला", + "no-results": "कोई परिणाम नहीं", + "of": "का", + "previous": "पिछला", + "registrationtime": "पंजीकरण समय", + "rows-selected": "पंक्ति(ओं) का चयन किया गया", + "success-description": "सफलता", + "success-title": "सफलतापूर्वक", + "unblock": "अनवरोधित करें", + "view-profile": "प्रोफ़ाइल देखें" + }, "environments": { "auth-button-placeholder": "⚠️ कृपया ऑथ संबंधित सुविधाओं को अनलॉक करने के लिए वातावरण चर में GitHub या Google या Discord को निर्दिष्ट करें।" }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "ये पर्यावरण चर गलत तरीके से निर्दिष्ट हैं या निर्दिष्ट नहीं हैं (कृपया .env फ़ाइल की जाँच करें):" + } + }, "general": { "about": "बारे में", "pricing": "मूल्य", @@ -243,6 +176,7 @@ } }, "landing": { + "about": "हमारा लक्ष्य दुनिया का सबसे अधिक सुविधा संपन्न, वैश्विक और प्रतिष्ठित नेक्स्ट.जेएस स्टार्टर बनाना है। सुविधाओं की व्यापक सूची का अन्वेषण करें। केवल कोड से अधिक की पेशकश, यह एक यात्रा है। यह स्थिर है और उत्पादन के लिए तैयार है।", "btn1-products-now": "उत्पाद अब", "btn1-sell": "बेचें", "btn2-download": "डाउनलोड करें", @@ -262,11 +196,15 @@ }, "devtools": { "description": "Stripe का उपयोग करके मुफ्त और पेड सब्सक्रिप्शन्स।", - "title": "सब्सक्रिप्शन्स" + "title": "सब्सक्रिप्शन्स", + "ambitions-description": "एक स्टार्टर से दूसरे स्टार्टर तक दौड़ना बंद करें। रिलीवेटर के साथ, आपके पास असीमित संभावनाएँ होंगी। आप अपनी इच्छानुसार कुछ भी बना सकते हैं; सभी उपकरण पहले से ही तैयार हैं, केवल आपके लिए।" }, "files": { "description": "NextAuth.js का उपयोग करके मिडलवेयर प्रमाणीकरण।", - "title": "प्रमाणीकरण" + "title": "प्रमाणीकरण", + "on-the-fly": "पूर्ण ऑन द फ्लाई अनुकूलन", + "on-the-fly-description": "हमारे प्रोजेक्ट रिपॉजिटरी में सुविधाओं की एक विस्तृत सूची पर गौर करें। अपनी परियोजना आवश्यकताओं के अनुरूप आसानी से क्लर्क/नेक्स्टऑथ.जेएस और MySQL/पोस्टग्रेएसक्यूएल के बीच स्विच करें।", + "roadmap": "विशाल महत्वाकांक्षाएँ: असीमित संभावनाएँ" }, "subtitle": "कोड से लेकर डिजाइन तक, Relivator में आपके वेब परियोजनाओं को सुपरचार्ज करने वाले कार्यक्षमता हैं।", "text": { @@ -296,13 +234,77 @@ "things": { "linkText": "सूची पर जाएं" }, - "title": "React, Next.js, और उससे परे के लिए सर्वोत्तम उपकरणों की खोज करें। विशेष रूप से आपके लिए तैयार किया गया।", - "about": "हमारा लक्ष्य दुनिया का सबसे अधिक सुविधा संपन्न, वैश्विक और प्रतिष्ठित नेक्स्ट.जेएस स्टार्टर बनाना है। सुविधाओं की व्यापक सूची का अन्वेषण करें। केवल कोड से अधिक की पेशकश, यह एक यात्रा है। यह स्थिर है और उत्पादन के लिए तैयार है।" + "title": "React, Next.js, और उससे परे के लिए सर्वोत्तम उपकरणों की खोज करें। विशेष रूप से आपके लिए तैयार किया गया।" + }, + "LanguageSwitch": { + "choose-language": "भाषा चुनें" + }, + "LocaleSwitcher": { + "label": "भाषा बदलें", + "selectLocale": "भाषा" + }, + "LoginForm": { + "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके अपने खाते में साइन इन करें।", + "email": "ईमेल", + "email-placeholder": "अपना ईमेल पता दर्ज करें", + "error-heading": "साइन इन करने में असमर्थ।", + "errors": { + "Callback": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", + "CredentialsSignin": "साइन इन विफल। सुनिश्चित करें कि आपने सही विवरण प्रदान किए हैं।", + "default": "साइन इन करने में असमर्थ।", + "Email or password is incorrect": "ईमेल या पासवर्ड गलत है।", + "EmailCreateAccount": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", + "EmailSignin": "अपना ईमेल पता जांचें।", + "Invalid credentials": "अमान्य प्रमाणीकरण।", + "OAuthAccountNotLinked": "अपनी पहचान की पुष्टि करने के लिए, मौलिक रूप से आपके द्वारा उपयुक्त वही खाता उपयोग करके साइन इन करें।", + "OAuthCallback": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", + "OAuthCreateAccount": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", + "OAuthSignin": "कृपया एक अलग खाता उपयोग करके प्रयास करें।", + "Signin": "कृपया एक अलग खाता उपयोग करके प्रयास करें।" + }, + "form": { + "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके अपने खाते में साइन इन करें।", + "email": "ईमेल", + "email-placeholder": "अपना ईमेल पता दर्ज करें", + "error-heading": "साइन इन करने में असमर्थ।", + "no-account": "क्या आपका खाता नहीं है?", + "other-options": "इसका उपयोग करके साइन इन करें:", + "password": "पासवर्ड", + "password-placeholder": "अपना पासवर्ड दर्ज करें", + "sign-out": "साइन आउट", + "signup": "यहां साइन अप करें।", + "submit": "साइन इन करें", + "title": "साइन इन करें", + "wait": "कृपया प्रतीक्षा करें..." + }, + "no-account": "क्या आपका खाता नहीं है?", + "other-options": "इसका उपयोग करके साइन इन करें:", + "password": "पासवर्ड", + "password-placeholder": "अपना पासवर्ड दर्ज करें", + "reset-password": "पासवर्ड रीसेट करें", + "signin": "साइन इन करें", + "signup": "यहाँ साइन अप करें।", + "submit": "साइन इन करें", + "success-description": "सफलता।", + "success-title": "हो गया!", + "title": "साइन इन करें", + "wait": "कृपया प्रतीक्षा करें..." + }, + "MainError": { + "error": "त्रुटि", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 स्टार्टर", "title": "Relivator" }, + "Navbar": { + "home": "होम", + "sign-out": "लॉग आउट", + "signin": "साइन इन करें" + }, "pages": { "about": { "author": "License", @@ -319,7 +321,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -367,9 +369,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 पेज नहीं मिला! 🥲 दुखद...", "description": "जिस संसाधन की आप खोज कर रहे हैं, उसे शायद भूल गया गया हो, नाम बदल दिया गया हो, या कभी मौजूद ही नहीं हो। कृपया URL की पुष्टि करें या मेनू का उपयोग करके अन्य भागों में जाएं।", - "go-home": "होम पेज पर लौटें" + "go-home": "होम पेज पर लौटें", + "title": "🫠 पेज नहीं मिला! 🥲 दुखद..." }, "tools": { "binary-code": { @@ -552,7 +554,7 @@ } }, "plugins": { - "stars": "कृपया! GitHub पर Relivator को स्टार करें ⭐ स्टार्स लक्ष्य:" + "stars": "कृपया! हम एक सितारा मांगते हैं ⭐ लक्ष्य:" }, "pricing": { "compare": { @@ -606,21 +608,97 @@ "what-payment": "What payment methods do you accept?" } }, + "ProfileButton": { + "admin": "व्यवस्थापक पैनल", + "logout": "लॉग आउट", + "my-account": "मेरा खाता", + "new-review": "नया समीक्षा", + "profile": "प्रोफ़ाइल", + "settings": "सेटिंग्स" + }, + "ProfileSettingsForm": { + "description": "अपनी प्रोफ़ाइल सेटिंग्स अपडेट करें।", + "errors": { + "update-error": "उपयोगकर्ता को अपडेट करने में असमर्थ।" + }, + "name": "नाम", + "name-min": "नाम कम से कम 2 अक्षर का होना चाहिए।", + "name-placeholder": "अपना नाम दर्ज करें", + "submit": "उपयोगकर्ता अपडेट करें", + "title": "प्रोफ़ाइल सेटिंग्स", + "update-success": "उपयोगकर्ता सफलतापूर्वक अपडेट हुआ।" + }, + "RegisterForm": { + "description": "अपने ईमेल पते और पासवर्ड का उपयोग करके एक नया खाता बनाएं।", + "email": "ईमेल", + "email-placeholder": "अपना ईमेल पता दर्ज करें", + "error-heading": "साइन अप करने में असमर्थ।", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "उपयोगकर्ता नाम कम से कम 2 अक्षर का होना चाहिए।", + "invalid-email": "अमान्य ईमेल पता।", + "name-min": "नाम कम से कम 2 अक्षर का होना चाहिए।", + "password-min": "पासवर्ड कम से कम 6 अक्षर का होना चाहिए।" + }, + "have-account": "पहले से ही एक खाता है?", + "name": "नाम", + "name-placeholder": "अपना नाम दर्ज करें", + "other-options": "या साइन अप करें इसके साथ:", + "password": "पासवर्ड", + "password-placeholder": "अपना पासवर्ड दर्ज करें", + "signin": "यहां साइन इन करें।", + "submit": "साइन अप करें", + "success-description": "अब आप अपने खाते में साइन इन कर सकते हैं।", + "success-title": "पंजीकरण सफल था!", + "title": "साइन अप करें", + "wait": "कृपया प्रतीक्षा करें..." + }, + "ReviewNewForm": { + "description": "एक नया समीक्षा बनाएं।", + "errors": { + "create-error": "समीक्षा बनाने में असमर्थ।" + }, + "grade": "ग्रेड", + "grade-placeholder": "ग्रेड दर्ज करें", + "item": "वस्तु", + "item-placeholder": "समीक्षित कला का नाम", + "submit": "समीक्षा बनाएं", + "tags": "टैग्स", + "tags-placeholder": "टैग्स दर्ज करें", + "title": "समीक्षा बनाएं", + "title-field": "शीर्षक", + "title-field-placeholder": "शीर्षक दर्ज करें" + }, "settings-page": { "description": "अपनी सेटिंग्स प्रबंधित करें।", "title": "सेटिंग्स" }, "signIn": { "heading": "साइन इन करें", + "LoginForm": { + "wait": "कृपया, प्रतीक्षा करें..." + }, "meta": { "description": "एक व्यक्तिगत अनुभव के लिए साइन इन करें", "title": "साइन इन करें" }, "providerButtonText": "{name} के साथ साइन इन करें", - "providerButtonTextReg": "{name} के साथ साइन अप करें", - "LoginForm": { - "wait": "कृपया, प्रतीक्षा करें..." - } + "providerButtonTextReg": "{name} के साथ साइन अप करें" + }, + "TagsSelect": { + "no-options": "कोई विकल्प नहीं", + "search": "खोजें...", + "tags": "टैग्स", + "tags-placeholder": "टैग्स दर्ज करें" + }, + "ThemeSwitch": { + "dark": "अंधेरा", + "light": "रोशन", + "system": "सिस्टम" }, "things": { "heading": "Your Relivator", @@ -646,17 +724,5 @@ "title": "Free online tools from Relivator" }, "title": "Tools" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "ये पर्यावरण चर गलत तरीके से निर्दिष्ट हैं या निर्दिष्ट नहीं हैं (कृपया .env फ़ाइल की जाँच करें):" - } - }, - "auth-provider": { - "please-wait": "कृपया प्रतीक्षा करें...", - "sign-in": "{नाम} से साइन इन करें", - "sign-in-null": "{नाम}", - "sign-up": "{नाम} के साथ साइन अप करें", - "sign-up-null": "{नाम}" } } diff --git a/src/data/i18n/it-it.json b/src/data/i18n/it-it.json index b4c36780..2d961647 100644 --- a/src/data/i18n/it-it.json +++ b/src/data/i18n/it-it.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Blocca", - "columns": "Colonne", - "delete": "Elimina", - "email": "Email", - "filter-emails-placeholder": "Filtra per email", - "id": "ID", - "isadmin": "Amministratore", - "lastlogintime": "Ultimo accesso", - "make-admin": "Rendi amministratore", - "make-non-admin": "Rendi utente normale", - "name": "Nome", - "next": "Successivo", - "no-results": "Nessun risultato", - "of": "di", - "previous": "Precedente", - "registrationtime": "Data di registrazione", - "rows-selected": "riga(e) selezionata(e)", - "success-description": "Successo", - "success-title": "Operazione completata con successo", - "unblock": "Sblocca", - "view-profile": "Visualizza profilo" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Queste variabili di ambiente sono specificate in modo errato o non specificate (controlla il file .env):" - } - }, - "LanguageSwitch": { - "choose-language": "Lingua" - }, - "LocaleSwitcher": { - "label": "Cambia lingua", - "selectLocale": "Lingua" - }, - "LoginForm": { - "description": "Accedi al tuo account utilizzando il tuo indirizzo email e la password.", - "email": "Email", - "email-placeholder": "Inserisci il tuo indirizzo email", - "error-heading": "Impossibile accedere.", - "errors": { - "Callback": "Prova ad accedere con un account diverso.", - "CredentialsSignin": "Accesso non riuscito. Verifica che i dettagli forniti siano corretti.", - "Email or password is incorrect": "Email o password non corretti.", - "EmailCreateAccount": "Prova ad accedere con un account diverso.", - "EmailSignin": "Controlla il tuo indirizzo email.", - "Invalid credentials": "Credenziali non valide.", - "OAuthAccountNotLinked": "Per confermare la tua identità, accedi con lo stesso account che hai utilizzato inizialmente.", - "OAuthCallback": "Prova ad accedere con un account diverso.", - "OAuthCreateAccount": "Prova ad accedere con un account diverso.", - "OAuthSignin": "Prova ad accedere con un account diverso.", - "Signin": "Prova ad accedere con un account diverso.", - "default": "Impossibile accedere." - }, - "form": { - "description": "Accedi al tuo account utilizzando il tuo indirizzo email e la password.", - "email": "E-mail", - "email-placeholder": "Inserisci il tuo indirizzo email", - "error-heading": "A volte succedono cose brutte...", - "no-account": "Non hai un account?", - "other-options": "Accedi utilizzando:", - "password": "Parola d'ordine", - "password-placeholder": "Inserisci la tua password", - "sign-out": "disconnessione", - "signup": "Iscriviti qui.", - "submit": "Registrazione", - "title": "Registrazione", - "wait": "Attendere prego..." - }, - "no-account": "Non hai un account?", - "other-options": "Accedi utilizzando:", - "password": "Password", - "password-placeholder": "Inserisci la tua password", - "reset-password": "Resetta la password", - "signin": "Registrazione", - "signup": "Registrati qui.", - "submit": "Accedi", - "success-description": "Successo.", - "success-title": "Fatto!", - "title": "Accedi", - "wait": "Attendere prego..." - }, - "MainError": { - "Could not fetch user.": "Impossibile recuperare l'utente.", - "Not authenticated.": "Non autenticato.", - "User not found.": "Utente non trovato.", - "error": "Errore" - }, - "Navbar": { - "home": "Prima", - "sign-out": "Disconnettersi", - "signin": "Accedi" - }, - "ProfileButton": { - "admin": "Pannello di amministrazione", - "logout": "Esci", - "my-account": "Il mio account", - "new-review": "Nuova recensione", - "profile": "Profilo", - "settings": "Impostazioni" - }, - "ProfileSettingsForm": { - "description": "Aggiorna le impostazioni del tuo profilo.", - "errors": { - "update-error": "Impossibile aggiornare l'utente." - }, - "name": "Nome", - "name-min": "Il nome deve essere lungo almeno 2 caratteri.", - "name-placeholder": "Inserisci il tuo nome", - "submit": "Aggiorna utente", - "title": "Impostazioni del profilo", - "update-success": "Aggiornamento dell'utente completato con successo." - }, - "RegisterForm": { - "description": "Crea un nuovo account utilizzando il tuo indirizzo email e la password.", - "email": "Email", - "email-placeholder": "Inserisci il tuo indirizzo email", - "error-heading": "Impossibile registrarsi.", - "errors": { - "Not authenticated.": "Non autenticato.", - "Please fill all fields.": "Si prega di compilare tutti i campi.", - "User with this email already exists.": "Un utente con questa email esiste già." - }, - "form": { - "email-min": "Il nome utente deve essere lungo almeno 2 caratteri.", - "invalid-email": "Indirizzo email non valido.", - "name-min": "Il nome deve essere lungo almeno 2 caratteri.", - "password-min": "La password deve essere lunga almeno 6 caratteri." - }, - "have-account": "Hai già un account?", - "name": "Nome", - "name-placeholder": "Inserisci il tuo nome", - "other-options": "O registrati con:", - "password": "Password", - "password-placeholder": "Inserisci la tua password", - "signin": "Accedi qui.", - "submit": "Registrati", - "success-description": "Ora puoi accedere al tuo account.", - "success-title": "La registrazione è stata completata con successo!", - "title": "Registrati", - "wait": "Attendere prego..." - }, - "ReviewNewForm": { - "description": "Crea una nuova recensione.", - "errors": { - "create-error": "Impossibile creare la recensione." - }, - "grade": "Voto", - "grade-placeholder": "Inserisci il voto", - "item": "Oggetto", - "item-placeholder": "Nome dell'opera recensita", - "submit": "Crea recensione", - "tags": "Tag", - "tags-placeholder": "Inserisci i tag", - "title": "Crea una recensione", - "title-field": "Titolo", - "title-field-placeholder": "Inserisci il titolo" - }, - "TagsSelect": { - "no-options": "Nessuna opzione disponibile", - "search": "Cerca...", - "tags": "Tag", - "tags-placeholder": "Inserisci i tag" - }, - "ThemeSwitch": { - "dark": "Scuro", - "light": "Chiaro", - "system": "Sistema" - }, "account-page": { - "Settings": "Impostazioni", "loggedIn": "Connesso", "loggedOut": "Disconnesso", "login": "Registrazione", "logout": "Disconnettersi", + "Settings": "Impostazioni", "title": "Account" }, "auth": { - "other-options": "Collega più account:" + "emailSubmitButton": { + "label": "Invia" + }, + "error": { + "default": "Prova ad accedere con un altro account.", + "email": "Email non trovata. Prova ad accedere con un altro fornitore.", + "oauthNotLinked": "Per confermare la tua identità, accedi con lo stesso account che hai usato inizialmente.", + "unknown": "Si è verificato un errore. Si prega di riprovare.", + "unknown-error": "Qualcosa è andato storto. Si prega di visitare la pagina /contact e informare il nostro team di supporto su questo errore sconosciuto." + }, + "legal": "Utilizzando i pulsanti sopra accetti", + "legal-and": "E", + "legal-privacy": "politica sulla riservatezza", + "legal-terms": "Termini di servizio", + "magicLink": { + "description": "Assicurati di controllare la cartella spam.", + "title": "È stata inviata un'email con il link magico. 🧙‍♂️" + }, + "noProvider": { + "link": "configura almeno un provider di autenticazione (ad es. Email, Google, GitHub, Facebook, ecc.)", + "preLink": "È necessario" + }, + "orEmailLabel": "Oppure con la tua email", + "other-options": "Collega altri account:", + "register": { + "agreeToTerms": "Registrandoti, accetti i nostri termini di servizio e la politica sulla privacy.", + "alreadyHaveAccountLabel": { + "link": "Accedi", + "preLink": "Hai già un account?" + }, + "heading": "Crea un account" + }, + "signin": { + "heading": "Accedi", + "noAccountLabel": { + "link": "Registrati gratuitamente", + "preLink": "Non hai un account?" + } + }, + "signinErrorToast": { + "description": "Le registrazioni sono disabilitate.", + "title": "Non autorizzato", + "tooManyRequests": "Troppe richieste. Riprova più tardi." + } }, "auth-page": { "error": "Qualcosa non va...", @@ -207,9 +81,37 @@ "signOutText": "Esci {userName}" } }, + "DataTable": { + "block": "Blocca", + "columns": "Colonne", + "delete": "Elimina", + "email": "Email", + "filter-emails-placeholder": "Filtra per email", + "id": "ID", + "isadmin": "Amministratore", + "lastlogintime": "Ultimo accesso", + "make-admin": "Rendi amministratore", + "make-non-admin": "Rendi utente normale", + "name": "Nome", + "next": "Successivo", + "no-results": "Nessun risultato", + "of": "di", + "previous": "Precedente", + "registrationtime": "Data di registrazione", + "rows-selected": "riga(e) selezionata(e)", + "success-description": "Successo", + "success-title": "Operazione completata con successo", + "unblock": "Sblocca", + "view-profile": "Visualizza profilo" + }, "environments": { "auth-button-placeholder": "⚠️ Specifica Github/Google/Discord nelle variabili di ambiente per sbloccare le funzionalità relative all'autenticazione." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Queste variabili di ambiente sono specificate in modo errato o non specificate (controlla il file .env):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Il nostro obiettivo è creare lo starter Next.js più ricco di funzionalità, globale e iconico al mondo. Esplora l'elenco completo delle funzionalità. Offrendo più di un semplice codice, è un viaggio. È stabile e pronto per la produzione.", "btn1-products-now": "Prodotti adesso", "btn1-sell": "Vendere", "btn2-download": "Download", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Abbonamenti gratuiti e a pagamento utilizzando Stripe.", - "title": "Abbonamenti" + "title": "Abbonamenti", + "ambitions-description": "Smettere di correre da un antipasto all'altro. Con Relivator avrai possibilità illimitate. Puoi creare tutto ciò che vuoi; tutti gli strumenti sono già pronti, solo per te." }, "files": { "description": "Autenticazione middleware utilizzando NextAuth.js.", - "title": "Autenticazione" + "title": "Autenticazione", + "on-the-fly": "Personalizzazione completa al volo", + "on-the-fly-description": "Esplora l'ampio elenco di funzionalità nel nostro repository di progetti. Passa facilmente da Clerk/NextAuth.js a MySQL/PostgreSQL per soddisfare i requisiti del tuo progetto.", + "roadmap": "Enormi ambizioni: possibilità illimitate" }, "subtitle": "Dal codice alla progettazione, Relivator ha funzionalità che potenziano i tuoi progetti web.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Vai alla lista" }, - "title": "Scopri gli strumenti fondamentali per React, Next.js e oltre. Su misura per te.", - "about": "Il nostro obiettivo è creare lo starter Next.js più ricco di funzionalità, globale e iconico al mondo. Esplora l'elenco completo delle funzionalità. Offrendo più di un semplice codice, è un viaggio. È stabile e pronto per la produzione." + "title": "Scopri gli strumenti fondamentali per React, Next.js e oltre. Su misura per te." + }, + "LanguageSwitch": { + "choose-language": "Lingua" + }, + "LocaleSwitcher": { + "label": "Cambia lingua", + "selectLocale": "Lingua" + }, + "LoginForm": { + "description": "Accedi al tuo account utilizzando il tuo indirizzo email e la password.", + "email": "Email", + "email-placeholder": "Inserisci il tuo indirizzo email", + "error-heading": "Impossibile accedere.", + "errors": { + "Callback": "Prova ad accedere con un account diverso.", + "CredentialsSignin": "Accesso non riuscito. Verifica che i dettagli forniti siano corretti.", + "default": "Impossibile accedere.", + "Email or password is incorrect": "Email o password non corretti.", + "EmailCreateAccount": "Prova ad accedere con un account diverso.", + "EmailSignin": "Controlla il tuo indirizzo email.", + "Invalid credentials": "Credenziali non valide.", + "OAuthAccountNotLinked": "Per confermare la tua identità, accedi con lo stesso account che hai utilizzato inizialmente.", + "OAuthCallback": "Prova ad accedere con un account diverso.", + "OAuthCreateAccount": "Prova ad accedere con un account diverso.", + "OAuthSignin": "Prova ad accedere con un account diverso.", + "Signin": "Prova ad accedere con un account diverso." + }, + "form": { + "description": "Accedi al tuo account utilizzando il tuo indirizzo email e la password.", + "email": "E-mail", + "email-placeholder": "Inserisci il tuo indirizzo email", + "error-heading": "A volte succedono cose brutte...", + "no-account": "Non hai un account?", + "other-options": "Accedi utilizzando:", + "password": "Parola d'ordine", + "password-placeholder": "Inserisci la tua password", + "sign-out": "disconnessione", + "signup": "Iscriviti qui.", + "submit": "Registrazione", + "title": "Registrazione", + "wait": "Attendere prego..." + }, + "no-account": "Non hai un account?", + "other-options": "Accedi utilizzando:", + "password": "Password", + "password-placeholder": "Inserisci la tua password", + "reset-password": "Resetta la password", + "signin": "Registrazione", + "signup": "Registrati qui.", + "submit": "Accedi", + "success-description": "Successo.", + "success-title": "Fatto!", + "title": "Accedi", + "wait": "Attendere prego..." + }, + "MainError": { + "error": "Errore", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "Rilevatore" }, + "Navbar": { + "home": "Prima", + "sign-out": "Disconnettersi", + "signin": "Accedi" + }, "pages": { "about": { "author": "License", @@ -331,7 +302,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +350,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Pagina non trovata! 🥲 Purtroppo...", "description": "La risorsa che stai cercando potrebbe essere stata spostata, rinominata o forse non è mai esistita. Verifica l'URL o naviga verso altre sezioni utilizzando il menu.", - "go-home": "Torna alla pagina principale" + "go-home": "Torna alla pagina principale", + "title": "🫠 Pagina non trovata! 🥲 Purtroppo..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "Per favore! Lascia una stella su GitHub ⭐ Obiettivo:" + "stars": "Per favore! Lascia una stella ⭐" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "Quali metodi di pagamento accettate?" } }, + "ProfileButton": { + "admin": "Pannello di amministrazione", + "logout": "Esci", + "my-account": "Il mio account", + "new-review": "Nuova recensione", + "profile": "Profilo", + "settings": "Impostazioni" + }, + "ProfileSettingsForm": { + "description": "Aggiorna le impostazioni del tuo profilo.", + "errors": { + "update-error": "Impossibile aggiornare l'utente." + }, + "name": "Nome", + "name-min": "Il nome deve essere lungo almeno 2 caratteri.", + "name-placeholder": "Inserisci il tuo nome", + "submit": "Aggiorna utente", + "title": "Impostazioni del profilo", + "update-success": "Aggiornamento dell'utente completato con successo." + }, + "RegisterForm": { + "description": "Crea un nuovo account utilizzando il tuo indirizzo email e la password.", + "email": "Email", + "email-placeholder": "Inserisci il tuo indirizzo email", + "error-heading": "Impossibile registrarsi.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Il nome utente deve essere lungo almeno 2 caratteri.", + "invalid-email": "Indirizzo email non valido.", + "name-min": "Il nome deve essere lungo almeno 2 caratteri.", + "password-min": "La password deve essere lunga almeno 6 caratteri." + }, + "have-account": "Hai già un account?", + "name": "Nome", + "name-placeholder": "Inserisci il tuo nome", + "other-options": "O registrati con:", + "password": "Password", + "password-placeholder": "Inserisci la tua password", + "signin": "Accedi qui.", + "submit": "Registrati", + "success-description": "Ora puoi accedere al tuo account.", + "success-title": "La registrazione è stata completata con successo!", + "title": "Registrati", + "wait": "Attendere prego..." + }, + "ReviewNewForm": { + "description": "Crea una nuova recensione.", + "errors": { + "create-error": "Impossibile creare la recensione." + }, + "grade": "Voto", + "grade-placeholder": "Inserisci il voto", + "item": "Oggetto", + "item-placeholder": "Nome dell'opera recensita", + "submit": "Crea recensione", + "tags": "Tag", + "tags-placeholder": "Inserisci i tag", + "title": "Crea una recensione", + "title-field": "Titolo", + "title-field-placeholder": "Inserisci il titolo" + }, "settings-page": { "description": "Gestisci le tue impostazioni.", "title": "Impostazioni" }, "signIn": { + "heading": "Accedi", "LoginForm": { "wait": "Attendere prego..." }, - "heading": "Accedi", "meta": { "description": "Accedi per un'esperienza personalizzata", "title": "Accedi" @@ -634,6 +670,17 @@ "providerButtonText": "Accedi con {name}", "providerButtonTextReg": "Iscriviti con {nome}" }, + "TagsSelect": { + "no-options": "Nessuna opzione disponibile", + "search": "Cerca...", + "tags": "Tag", + "tags-placeholder": "Inserisci i tag" + }, + "ThemeSwitch": { + "dark": "Scuro", + "light": "Chiaro", + "system": "Sistema" + }, "things": { "heading": "Il tuo Relivator", "input": { @@ -658,5 +705,24 @@ "title": "Strumenti online gratuiti di Relivator" }, "title": "Utensili" + }, + "store": { + "stores": { + "buy-products": "Acquista i prodotti dai nostri negozi", + "stores": "I negozi" + }, + "categories": { + "buyFromCategories": "Acquista {category} dai migliori negozi", + "buyProducts": "Acquista prodotti dalla categoria ${category}", + "buyTheBest": "Acquista la migliore {category}" + }, + "product": { + "products": "Prodotti", + "noDescription": "Nessuna descrizione è disponibile per questo prodotto.", + "description": "Descrizione", + "moreProductsFrom": "Altri prodotti da {storeName}", + "buyProductsFromOurStores": "Acquista i prodotti dai nostri negozi", + "addToCart": "Aggiungi al carrello" + } } } diff --git a/src/data/i18n/pl-pl.json b/src/data/i18n/pl-pl.json index a0a96050..fef1e4c8 100644 --- a/src/data/i18n/pl-pl.json +++ b/src/data/i18n/pl-pl.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Zablokuj", - "columns": "Kolumny", - "delete": "Usuń", - "email": "E-mail", - "filter-emails-placeholder": "Filtruj adresy e-mail", - "id": "ID", - "isadmin": "Czy jest administratorem", - "lastlogintime": "Ostatnie logowanie", - "make-admin": "Nadaj prawa administratora", - "make-non-admin": "Odbierz prawa administratora", - "name": "Imię", - "next": "Następny", - "no-results": "Brak wyników", - "of": "z", - "previous": "Poprzedni", - "registrationtime": "Czas rejestracji", - "rows-selected": "Liczba wybranych wierszy", - "success-description": "Powodzenie", - "success-title": "Operacja udana", - "unblock": "Odblokuj", - "view-profile": "Zobacz profil" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Następujące zmienne środowiskowe są niepoprawnie zdefiniowane lub niezdefiniowane (sprawdź plik .env):" - } - }, - "LanguageSwitch": { - "choose-language": "Język" - }, - "LocaleSwitcher": { - "label": "Zmień język", - "selectLocale": "Język" - }, - "LoginForm": { - "description": "Zaloguj się na swoje konto, używając adresu e-mail i hasła.", - "email": "E-mail", - "email-placeholder": "Wprowadź swój adres e-mail", - "error-heading": "Logowanie nieudane.", - "errors": { - "Callback": "Spróbuj zalogować się na inne konto.", - "CredentialsSignin": "Logowanie nie powiodło się. Sprawdź, czy podałeś(aś) poprawne dane.", - "Email or password is incorrect": "Adres e-mail lub hasło są niepoprawne.", - "EmailCreateAccount": "Spróbuj zalogować się na inne konto.", - "EmailSignin": "Sprawdź swój adres e-mail.", - "Invalid credentials": "Nieprawidłowe dane uwierzytelniające.", - "OAuthAccountNotLinked": "Aby potwierdzić swoją tożsamość, zaloguj się na to samo konto, które używałeś(aś) wcześniej.", - "OAuthCallback": "Spróbuj zalogować się na inne konto.", - "OAuthCreateAccount": "Spróbuj zalogować się na inne konto.", - "OAuthSignin": "Spróbuj zalogować się na inne konto.", - "Signin": "Spróbuj zalogować się na inne konto.", - "default": "Nie można się zalogować." - }, - "form": { - "description": "Zaloguj się na swoje konto, używając swojego adresu e-mail i hasła.", - "email": "E-mail", - "email-placeholder": "Wpisz swój adres e-mail", - "error-heading": "Czasem zdarzają się złe rzeczy...", - "no-account": "Nie masz konta?", - "other-options": "Zaloguj się przy użyciu:", - "password": "Hasło", - "password-placeholder": "Wprowadź hasło", - "sign-out": "Wyloguj się", - "signup": "Podpisz tutaj.", - "submit": "Zalogować się", - "title": "Zalogować się", - "wait": "Proszę czekać..." - }, - "no-account": "Nie masz konta?", - "other-options": "Inne opcje logowania:", - "password": "Hasło", - "password-placeholder": "Wprowadź hasło", - "reset-password": "Zresetuj hasło", - "signin": "Zalogować się", - "signup": "Zarejestruj się.", - "submit": "Zaloguj się", - "success-description": "Powodzenie.", - "success-title": "Zalogowano pomyślnie", - "title": "Logowanie", - "wait": "Proszę czekać..." - }, - "MainError": { - "Could not fetch user.": "Nie można pobrać użytkownika.", - "Not authenticated.": "Brak uwierzytelnienia.", - "User not found.": "Nie znaleziono użytkownika.", - "error": "Błąd" - }, - "Navbar": { - "home": "Główna", - "sign-out": "Wyloguj", - "signin": "Zaloguj się" - }, - "ProfileButton": { - "admin": "Panel administratora", - "logout": "Wyloguj się", - "my-account": "Moje konto", - "new-review": "Nowa recenzja", - "profile": "Profil", - "settings": "Ustawienia" - }, - "ProfileSettingsForm": { - "description": "Zaktualizuj ustawienia swojego profilu.", - "errors": { - "update-error": "Nie można zaktualizować użytkownika." - }, - "name": "Imię", - "name-min": "Imię musi mieć co najmniej 2 znaki.", - "name-placeholder": "Wprowadź swoje imię", - "submit": "Aktualizuj użytkownika", - "title": "Ustawienia profilu", - "update-success": "Użytkownik został pomyślnie zaktualizowany." - }, - "RegisterForm": { - "description": "Utwórz nowe konto, używając adresu e-mail i hasła.", - "email": "E-mail", - "email-placeholder": "Wprowadź swój adres e-mail", - "error-heading": "Nie można się zarejestrować.", - "errors": { - "Not authenticated.": "Brak uwierzytelnienia.", - "Please fill all fields.": "Proszę wypełnić wszystkie pola.", - "User with this email already exists.": "Użytkownik o tym adresie e-mail już istnieje." - }, - "form": { - "email-min": "Nazwa użytkownika musi mieć co najmniej 2 znaki.", - "invalid-email": "Nieprawidłowy adres e-mail.", - "name-min": "Imię musi mieć co najmniej 2 znaki.", - "password-min": "Hasło musi mieć co najmniej 6 znaków." - }, - "have-account": "Masz już konto?", - "name": "Imię", - "name-placeholder": "Wprowadź swoje imię", - "other-options": "Zarejestruj się przy użyciu:", - "password": "Hasło", - "password-placeholder": "Wprowadź swoje hasło", - "signin": "Zaloguj się tutaj.", - "submit": "Zarejestruj się", - "success-description": "Teraz możesz zalogować się na swoje konto.", - "success-title": "Rejestracja przebiegła pomyślnie!", - "title": "Zarejestruj się", - "wait": "Proszę czekać..." - }, - "ReviewNewForm": { - "description": "Utwórz nową recenzję.", - "errors": { - "create-error": "Nie można utworzyć recenzji." - }, - "grade": "Ocena", - "grade-placeholder": "Wprowadź ocenę", - "item": "Przedmiot", - "item-placeholder": "Nazwa recenzowanego dzieła sztuki", - "submit": "Utwórz recenzję", - "tags": "Tagi", - "tags-placeholder": "Wprowadź tagi", - "title": "Utwórz recenzję", - "title-field": "Tytuł", - "title-field-placeholder": "Wprowadź tytuł" - }, - "TagsSelect": { - "no-options": "Brak opcji", - "search": "Szukaj...", - "tags": "Tagi", - "tags-placeholder": "Wprowadź tagi" - }, - "ThemeSwitch": { - "dark": "Ciemny", - "light": "Jasny", - "system": "Systemowy" - }, "account-page": { - "Settings": "Ustawienia", "loggedIn": "Zalogowany", "loggedOut": "Wylogowano", "login": "Zalogować się", "logout": "Wyloguj", + "Settings": "Ustawienia", "title": "Konto" }, "auth": { - "other-options": "Połącz więcej kont:" + "emailSubmitButton": { + "label": "Wyślij" + }, + "error": { + "default": "Spróbuj zalogować się za pomocą innego konta.", + "email": "E-mail nie został znaleziony. Spróbuj zalogować się za pomocą innego dostawcy.", + "oauthNotLinked": "Aby potwierdzić swoją tożsamość, zaloguj się za pomocą tego samego konta, którego użyłeś przy pierwszym logowaniu.", + "unknown": "Wystąpił błąd. Proszę spróbować ponownie.", + "unknown-error": "Coś poszło nie tak. Proszę odwiedzić stronę /contact i poinformować nasz zespół wsparcia o tym nieznanym błędzie." + }, + "legal": "Korzystając z powyższych przycisków zgadzasz się z naszymi", + "legal-and": "oraz", + "legal-privacy": "Polityką prywatności", + "legal-terms": "Warunkami korzystania z usług", + "magicLink": { + "description": "Upewnij się, że sprawdziłeś folder ze spamem.", + "title": "Wysłano e-mail z magicznym linkiem. 🧙‍♂️" + }, + "noProvider": { + "link": "skonfiguruj przynajmniej jednego dostawcę uwierzytelnienia (np. E-mail, Google, GitHub, Facebook itp.)", + "preLink": "Musisz" + }, + "orEmailLabel": "Lub za pomocą twojego e-maila", + "other-options": "Połącz więcej kont:", + "register": { + "agreeToTerms": "Rejestrując się, zgadzasz się z naszymi warunkami świadczenia usług i polityką prywatności.", + "alreadyHaveAccountLabel": { + "link": "Zaloguj się", + "preLink": "Masz już konto?" + }, + "heading": "Utwórz konto" + }, + "signin": { + "heading": "Zaloguj Się", + "noAccountLabel": { + "link": "Zarejestruj się za darmo", + "preLink": "Nie masz konta?" + } + }, + "signinErrorToast": { + "description": "Rejestracja jest wyłączona.", + "title": "Nieautoryzowany", + "tooManyRequests": "Zbyt wiele prób. Spróbuj ponownie później." + } }, "auth-page": { "error": "Coś źle...", @@ -207,9 +81,37 @@ "signOutText": "Wyloguj się {userName}" } }, + "DataTable": { + "block": "Zablokuj", + "columns": "Kolumny", + "delete": "Usuń", + "email": "E-mail", + "filter-emails-placeholder": "Filtruj adresy e-mail", + "id": "ID", + "isadmin": "Czy jest administratorem", + "lastlogintime": "Ostatnie logowanie", + "make-admin": "Nadaj prawa administratora", + "make-non-admin": "Odbierz prawa administratora", + "name": "Imię", + "next": "Następny", + "no-results": "Brak wyników", + "of": "z", + "previous": "Poprzedni", + "registrationtime": "Czas rejestracji", + "rows-selected": "Liczba wybranych wierszy", + "success-description": "Powodzenie", + "success-title": "Operacja udana", + "unblock": "Odblokuj", + "view-profile": "Zobacz profil" + }, "environments": { "auth-button-placeholder": "⚠️ Proszę wpisać Github/Google/Discord w zmiennych środowiskowych, aby odblokować funkcje związane z uwierzytelnianiem." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Następujące zmienne środowiskowe są niepoprawnie zdefiniowane lub niezdefiniowane (sprawdź plik .env):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Naszym celem jest stworzenie najbardziej bogatego w funkcje, globalnego i kultowego startera Next.js na świecie. Zapoznaj się z obszerną listą funkcji. Oferując coś więcej niż tylko kod, to podróż. Jest stabilny i gotowy do produkcji.", "btn1-products-now": "Produkty", "btn1-sell": "Sprzedawaj", "btn2-download": "Pobierz", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Bezpłatne i płatne subskrypcje za pomocą Stripe.", - "title": "Subskrypcje" + "title": "Subskrypcje", + "ambitions-description": "Przestań biegać od jednego startera do drugiego. Dzięki Relivator będziesz mieć nieograniczone możliwości. Możesz stworzyć wszystko, co chcesz; wszystkie narzędzia są już przygotowane, specjalnie dla Ciebie." }, "files": { "description": "Uwierzytelnianie oprogramowania pośredniczącego przy użyciu NextAuth.js.", - "title": "Uwierzytelnianie" + "title": "Uwierzytelnianie", + "on-the-fly": "Pełna personalizacja projektu on-the-fly", + "on-the-fly-description": "Zapoznaj się z obszerną listą funkcji w repozytorium Relivator. Bezproblemowo przełączaj się między Clerk/NextAuth.js i MySQL/PostgreSQL, aby dostosować się do wymagań Twojego projektu.", + "roadmap": "Ogromne ambicje: nieograniczone możliwości" }, "subtitle": "Od kodu po projekt, Relivator oferuje funkcje, które usprawnią Twoje projekty internetowe.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Przejdź do listy" }, - "title": "Odkryj najważniejsze narzędzia dla React, Next.js i nie tylko. Specjalnie dla Ciebie.", - "about": "Naszym celem jest stworzenie najbardziej bogatego w funkcje, globalnego i kultowego startera Next.js na świecie. Zapoznaj się z obszerną listą funkcji. Oferując coś więcej niż tylko kod, to podróż. Jest stabilny i gotowy do produkcji." + "title": "Odkryj najważniejsze narzędzia dla React, Next.js i nie tylko. Specjalnie dla Ciebie." + }, + "LanguageSwitch": { + "choose-language": "Język" + }, + "LocaleSwitcher": { + "label": "Zmień język", + "selectLocale": "Język" + }, + "LoginForm": { + "description": "Zaloguj się na swoje konto, używając adresu e-mail i hasła.", + "email": "E-mail", + "email-placeholder": "Wprowadź swój adres e-mail", + "error-heading": "Logowanie nieudane.", + "errors": { + "Callback": "Spróbuj zalogować się na inne konto.", + "CredentialsSignin": "Logowanie nie powiodło się. Sprawdź, czy podałeś(aś) poprawne dane.", + "default": "Nie można się zalogować.", + "Email or password is incorrect": "Adres e-mail lub hasło są niepoprawne.", + "EmailCreateAccount": "Spróbuj zalogować się na inne konto.", + "EmailSignin": "Sprawdź swój adres e-mail.", + "Invalid credentials": "Nieprawidłowe dane uwierzytelniające.", + "OAuthAccountNotLinked": "Aby potwierdzić swoją tożsamość, zaloguj się na to samo konto, które używałeś(aś) wcześniej.", + "OAuthCallback": "Spróbuj zalogować się na inne konto.", + "OAuthCreateAccount": "Spróbuj zalogować się na inne konto.", + "OAuthSignin": "Spróbuj zalogować się na inne konto.", + "Signin": "Spróbuj zalogować się na inne konto." + }, + "form": { + "description": "Zaloguj się na swoje konto, używając swojego adresu e-mail i hasła.", + "email": "E-mail", + "email-placeholder": "Wpisz swój adres e-mail", + "error-heading": "Czasem zdarzają się złe rzeczy...", + "no-account": "Nie masz konta?", + "other-options": "Zaloguj się przy użyciu:", + "password": "Hasło", + "password-placeholder": "Wprowadź hasło", + "sign-out": "Wyloguj się", + "signup": "Podpisz tutaj.", + "submit": "Zalogować się", + "title": "Zalogować się", + "wait": "Proszę czekać..." + }, + "no-account": "Nie masz konta?", + "other-options": "Inne opcje logowania:", + "password": "Hasło", + "password-placeholder": "Wprowadź hasło", + "reset-password": "Zresetuj hasło", + "signin": "Zalogować się", + "signup": "Zarejestruj się.", + "submit": "Zaloguj się", + "success-description": "Powodzenie.", + "success-title": "Zalogowano pomyślnie", + "title": "Logowanie", + "wait": "Proszę czekać..." + }, + "MainError": { + "error": "Błąd", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "Relivator" }, + "Navbar": { + "home": "Główna", + "sign-out": "Wyloguj", + "signin": "Zaloguj się" + }, "pages": { "about": { "author": "License", @@ -331,7 +302,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +350,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Strona nie znaleziona! 🥲 Niestety...", "description": "Strona lub media, którego szukasz, mógł zostać przeniesiony, nigdy nie istniał, lub jego nazwa została zmieniona. Sprawdź poprawność adresu URL lub przejdź do innych podstron, korzystając z menu.", - "go-home": "Wróć do strony głównej" + "go-home": "Wróć do strony głównej", + "title": "🫠 Strona nie znaleziona! 🥲 Niestety..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "Prosimy o gwiazdkę dla Relivator na Github ⭐ Cel:" + "stars": "Prosimy o gwiazdkę na GitHub ⭐ Cel:" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "Jakie metody płatności akceptujecie?" } }, + "ProfileButton": { + "admin": "Panel administratora", + "logout": "Wyloguj się", + "my-account": "Moje konto", + "new-review": "Nowa recenzja", + "profile": "Profil", + "settings": "Ustawienia" + }, + "ProfileSettingsForm": { + "description": "Zaktualizuj ustawienia swojego profilu.", + "errors": { + "update-error": "Nie można zaktualizować użytkownika." + }, + "name": "Imię", + "name-min": "Imię musi mieć co najmniej 2 znaki.", + "name-placeholder": "Wprowadź swoje imię", + "submit": "Aktualizuj użytkownika", + "title": "Ustawienia profilu", + "update-success": "Użytkownik został pomyślnie zaktualizowany." + }, + "RegisterForm": { + "description": "Utwórz nowe konto, używając adresu e-mail i hasła.", + "email": "E-mail", + "email-placeholder": "Wprowadź swój adres e-mail", + "error-heading": "Nie można się zarejestrować.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Nazwa użytkownika musi mieć co najmniej 2 znaki.", + "invalid-email": "Nieprawidłowy adres e-mail.", + "name-min": "Imię musi mieć co najmniej 2 znaki.", + "password-min": "Hasło musi mieć co najmniej 6 znaków." + }, + "have-account": "Masz już konto?", + "name": "Imię", + "name-placeholder": "Wprowadź swoje imię", + "other-options": "Zarejestruj się przy użyciu:", + "password": "Hasło", + "password-placeholder": "Wprowadź swoje hasło", + "signin": "Zaloguj się tutaj.", + "submit": "Zarejestruj się", + "success-description": "Teraz możesz zalogować się na swoje konto.", + "success-title": "Rejestracja przebiegła pomyślnie!", + "title": "Zarejestruj się", + "wait": "Proszę czekać..." + }, + "ReviewNewForm": { + "description": "Utwórz nową recenzję.", + "errors": { + "create-error": "Nie można utworzyć recenzji." + }, + "grade": "Ocena", + "grade-placeholder": "Wprowadź ocenę", + "item": "Przedmiot", + "item-placeholder": "Nazwa recenzowanego dzieła sztuki", + "submit": "Utwórz recenzję", + "tags": "Tagi", + "tags-placeholder": "Wprowadź tagi", + "title": "Utwórz recenzję", + "title-field": "Tytuł", + "title-field-placeholder": "Wprowadź tytuł" + }, "settings-page": { "description": "Zarządzaj swoimi ustawieniami.", "title": "Ustawienia" }, "signIn": { + "heading": "Zaloguj się", "LoginForm": { "wait": "Proszę czekać..." }, - "heading": "Zaloguj się", "meta": { "description": "Zaloguj się, aby uzyskać spersonalizowane doświadczenie", "title": "Zaloguj się" @@ -634,6 +670,17 @@ "providerButtonText": "Zaloguj się za pomocą {name}", "providerButtonTextReg": "Zarejestruj się za pomocą {name}" }, + "TagsSelect": { + "no-options": "Brak opcji", + "search": "Szukaj...", + "tags": "Tagi", + "tags-placeholder": "Wprowadź tagi" + }, + "ThemeSwitch": { + "dark": "Ciemny", + "light": "Jasny", + "system": "Systemowy" + }, "things": { "heading": "Twoje Relivator", "input": { @@ -655,8 +702,27 @@ "categories": "-", "cta": "-", "hero": { - "title": "Bezpłatne narzędzia online firmy Relivator" + "title": "Bezpłatne narzędzia online" }, "title": "Narzędzia" + }, + "store": { + "stores": { + "buy-products": "Kupuj produkty w naszych sklepach", + "stores": "Sklepy" + }, + "categories": { + "buyFromCategories": "Kupuj {category} w najlepszych sklepach", + "buyProducts": "Kupuj produkty z kategorii ${category}", + "buyTheBest": "Kup najlepsze {category}" + }, + "product": { + "products": "Produkty", + "noDescription": "Dla tego produktu nie ma dostępnego opisu.", + "description": "Opis produktu", + "moreProductsFrom": "Więcej produktów ze sklepu {storeName}", + "buyProductsFromOurStores": "Kupuj produkty w naszych sklepach", + "addToCart": "Dodaj do koszyka" + } } } diff --git a/src/data/i18n/tr-tr.json b/src/data/i18n/tr-tr.json index 0718953e..92fbe15d 100644 --- a/src/data/i18n/tr-tr.json +++ b/src/data/i18n/tr-tr.json @@ -1,183 +1,57 @@ { - "DataTable": { - "block": "Engelle", - "columns": "Sütunlar", - "delete": "Sil", - "email": "E-posta", - "filter-emails-placeholder": "E-postaları filtrele", - "id": "ID", - "isadmin": "Yönetici Mi", - "lastlogintime": "Son Giriş Zamanı", - "make-admin": "Yönetici Yap", - "make-non-admin": "Yönetici Değil Yap", - "name": "Ad", - "next": "Sonraki", - "no-results": "Sonuç bulunamadı", - "of": "arasından", - "previous": "Önceki", - "registrationtime": "Kayıt Zamanı", - "rows-selected": "satır seçildi", - "success-description": "Başarı", - "success-title": "Başarılı", - "unblock": "Engeli Kaldır", - "view-profile": "Profilini Görüntüle" - }, - "EnvironmentVariables": { - "errors": { - "something-wrong": "Bu ortam değişkenleri yanlış belirtildi veya belirtilmedi (lütfen .env dosyasını kontrol edin):" - } - }, - "LanguageSwitch": { - "choose-language": "Dil" - }, - "LocaleSwitcher": { - "label": "Dil Değiştir", - "selectLocale": "Dil" - }, - "LoginForm": { - "description": "E-posta adresinizi ve şifrenizi kullanarak hesabınıza giriş yapın.", - "email": "E-posta", - "email-placeholder": "E-posta adresinizi girin", - "error-heading": "Giriş yapma işlemi başarısız oldu.", - "errors": { - "Callback": "Farklı bir hesapla giriş yapmayı deneyin.", - "CredentialsSignin": "Giriş yapma işlemi başarısız oldu. Sağladığınız bilgilerin doğru olduğunu kontrol edin.", - "Email or password is incorrect": "E-posta veya şifre yanlış.", - "EmailCreateAccount": "Farklı bir hesapla giriş yapmayı deneyin.", - "EmailSignin": "E-posta adresinizi kontrol edin.", - "Invalid credentials": "Geçersiz kimlik bilgileri.", - "OAuthAccountNotLinked": "Kimliğinizi doğrulamak için, başlangıçta kullandığınız aynı hesapla giriş yapın.", - "OAuthCallback": "Farklı bir hesapla giriş yapmayı deneyin.", - "OAuthCreateAccount": "Farklı bir hesapla giriş yapmayı deneyin.", - "OAuthSignin": "Farklı bir hesapla giriş yapmayı deneyin.", - "Signin": "Farklı bir hesapla giriş yapmayı deneyin.", - "default": "Giriş yapma işlemi başarısız oldu." - }, - "form": { - "description": "E-posta adresinizi ve şifrenizi kullanarak hesabınızda oturum açın.", - "email": "E-posta", - "email-placeholder": "E-posta adresinizi giriniz", - "error-heading": "Bazen Kötü Şeyler Olur...", - "no-account": "Hesabınız yok mu?", - "other-options": "Şunu kullanarak oturum açın:", - "password": "Şifre", - "password-placeholder": "Şifrenizi girin", - "sign-out": "oturumu Kapat", - "signup": "Buradan kaydolun.", - "submit": "Kayıt olmak", - "title": "Kayıt olmak", - "wait": "Lütfen bekleyin..." - }, - "no-account": "Hesabınız yok mu?", - "other-options": "Şunları kullanarak giriş yapın:", - "password": "Şifre", - "password-placeholder": "Şifrenizi girin", - "reset-password": "Şifreyi yenile", - "signin": "Kayıt olmak", - "signup": "Buradan kayıt olun.", - "submit": "Giriş Yap", - "success-description": "Başarı.", - "success-title": "Tamamlamak!", - "title": "Giriş Yap", - "wait": "Lütfen bekleyin..." - }, - "MainError": { - "Could not fetch user.": "Kullanıcı alınamadı.", - "Not authenticated.": "Kimlik doğrulanamadı.", - "User not found.": "Kullanıcı bulunamadı.", - "error": "Hata" - }, - "Navbar": { - "home": "Anasayfa", - "sign-out": "Çıkış Yap", - "signin": "Giriş Yap" - }, - "ProfileButton": { - "admin": "Yönetici Paneli", - "logout": "Çıkış Yap", - "my-account": "Hesabım", - "new-review": "Yeni İnceleme", - "profile": "Profil", - "settings": "Ayarlar" - }, - "ProfileSettingsForm": { - "description": "Profil ayarlarınızı güncelleyin.", - "errors": { - "update-error": "Kullanıcı güncellenemedi." - }, - "name": "Ad", - "name-min": "Ad en az 2 karakter olmalıdır.", - "name-placeholder": "Adınızı girin", - "submit": "Kullanıcıyı Güncelle", - "title": "Profil Ayarları", - "update-success": "Kullanıcı başarıyla güncellendi." - }, - "RegisterForm": { - "description": "E-posta adresinizi ve şifrenizi kullanarak yeni bir hesap oluşturun.", - "email": "E-posta", - "email-placeholder": "E-posta adresinizi girin", - "error-heading": "Kaydolma işlemi başarısız oldu.", - "errors": { - "Not authenticated.": "Kimlik doğrulama başarısız.", - "Please fill all fields.": "Lütfen tüm alanları doldurun.", - "User with this email already exists.": "Bu e-posta adresi ile zaten bir kullanıcı var." - }, - "form": { - "email-min": "Kullanıcı adı en az 2 karakter olmalıdır.", - "invalid-email": "Geçersiz e-posta adresi.", - "name-min": "Ad en az 2 karakter olmalıdır.", - "password-min": "Şifre en az 6 karakter olmalıdır." - }, - "have-account": "Zaten bir hesabınız mı var?", - "name": "Ad", - "name-placeholder": "Adınızı girin", - "other-options": "Veya şunlarla kaydolun:", - "password": "Şifre", - "password-placeholder": "Şifrenizi girin", - "signin": "Buradan giriş yapın.", - "submit": "Kaydol", - "success-description": "Artık hesabınıza giriş yapabilirsiniz.", - "success-title": "Kayıt başarılı!", - "title": "Kaydol", - "wait": "Lütfen bekleyin..." - }, - "ReviewNewForm": { - "description": "Yeni bir inceleme oluşturun.", - "errors": { - "create-error": "İnceleme oluşturulamadı." - }, - "grade": "Puan", - "grade-placeholder": "Puanı girin", - "item": "Öğe", - "item-placeholder": "İncelemesi yapılacak sanat eserinin adı", - "submit": "İnceleme Oluştur", - "tags": "Etiketler", - "tags-placeholder": "Etiketleri girin", - "title": "İnceleme Oluştur", - "title-field": "Başlık", - "title-field-placeholder": "Başlık girin" - }, - "TagsSelect": { - "no-options": "Seçenek yok", - "search": "Ara...", - "tags": "Etiketler", - "tags-placeholder": "Etiketleri girin" - }, - "ThemeSwitch": { - "dark": "Koyu", - "light": "Açık", - "system": "Sistem" - }, "account-page": { - "Settings": "Ayarlar", "loggedIn": "Giriş", "loggedOut": "Çıkış yapıldı", "login": "Kayıt olmak", "logout": "Çıkış Yap", + "Settings": "Ayarlar", "title": "Hesap" }, "auth": { - "other-options": "Daha fazla hesap bağlayın:" + "emailSubmitButton": { + "label": "Gönder" + }, + "error": { + "default": "Farklı bir hesapla giriş yapmayı deneyin.", + "email": "E-posta bulunamadı. Farklı bir sağlayıcı ile giriş yapmayı deneyin.", + "oauthNotLinked": "Kimliğinizi doğrulamak için, başlangıçta kullandığınız aynı hesapla giriş yapın.", + "unknown": "Bir hata oluştu. Lütfen tekrar deneyin.", + "unknown-error": "Bir şeyler yanlış gitti. Lütfen /contact sayfasını ziyaret edin ve destek ekibimize bu bilinmeyen hatayı bildirin." + }, + "legal": "Yukarıdaki düğmeleri kullanarak şunu kabul etmiş olursunuz:", + "legal-and": "Ve", + "legal-privacy": "Gizlilik Politikası", + "legal-terms": "Kullanım Şartları", + "magicLink": { + "description": "Spam klasörünüze kontrol etmeyi unutmayın.", + "title": "Bir sihirli bağlantı e-postası gönderildi. 🧙‍♂️" + }, + "noProvider": { + "link": "en az bir kimlik doğrulama sağlayıcısı yapılandırın (örn. E-posta, Google, GitHub, Facebook vb.)", + "preLink": "Yapmanız gerekiyor" + }, + "orEmailLabel": "Veya e-posta adresinizle", + "other-options": "Daha fazla hesap bağlayın:", + "register": { + "agreeToTerms": "Kayıt olarak, hizmet şartlarımızı ve gizlilik politikamızı kabul etmiş olursunuz.", + "alreadyHaveAccountLabel": { + "link": "Giriş yap", + "preLink": "Zaten bir hesabınız var mı?" + }, + "heading": "Bir hesap oluştur" + }, + "signin": { + "heading": "Giriş Yap", + "noAccountLabel": { + "link": "Ücretsiz kaydol", + "preLink": "Bir hesabınız yok mu?" + } + }, + "signinErrorToast": { + "description": "Kayıtlar devre dışı bırakıldı.", + "title": "Yetkisiz", + "tooManyRequests": "Çok fazla istek. Daha sonra tekrar deneyin." + } }, "auth-page": { "error": "Ters giden birşey mi var...", @@ -207,9 +81,37 @@ "signOutText": "{userName} Çıkış Yap" } }, + "DataTable": { + "block": "Engelle", + "columns": "Sütunlar", + "delete": "Sil", + "email": "E-posta", + "filter-emails-placeholder": "E-postaları filtrele", + "id": "ID", + "isadmin": "Yönetici Mi", + "lastlogintime": "Son Giriş Zamanı", + "make-admin": "Yönetici Yap", + "make-non-admin": "Yönetici Değil Yap", + "name": "Ad", + "next": "Sonraki", + "no-results": "Sonuç bulunamadı", + "of": "arasından", + "previous": "Önceki", + "registrationtime": "Kayıt Zamanı", + "rows-selected": "satır seçildi", + "success-description": "Başarı", + "success-title": "Başarılı", + "unblock": "Engeli Kaldır", + "view-profile": "Profilini Görüntüle" + }, "environments": { "auth-button-placeholder": "⚠️ Kimlik doğrulamaya ilgili özelliklerin kilidini açmak için lütfen ortam değişkenlerinde Github/Google/Discord belirtin." }, + "EnvironmentVariables": { + "errors": { + "something-wrong": "Bu ortam değişkenleri yanlış belirtildi veya belirtilmedi (lütfen .env dosyasını kontrol edin):" + } + }, "general": { "about": "about", "pricing": "pricing", @@ -255,6 +157,7 @@ } }, "landing": { + "about": "Dünyanın en zengin özelliklere sahip, küresel ve ikonik Next.js başlatıcısını oluşturmayı hedefliyoruz. Kapsamlı özellik listesini keşfedin. Koddan daha fazlasını sunan bu bir yolculuktur. Stabildir ve üretime hazırdır.", "btn1-products-now": "Şimdiki Ürünler", "btn1-sell": "Satmak", "btn2-download": "Download", @@ -274,11 +177,15 @@ }, "devtools": { "description": "Stripe kullanarak ücretsiz ve ücretli abonelikler.", - "title": "Abonelikler" + "title": "Abonelikler", + "ambitions-description": "Bir başlangıçtan diğerine koşmayı bırakın. Relivator ile sınırsız olanaklara sahip olacaksınız. Istediğiniz her şeyi yaratabilirsiniz; tüm araçlar zaten sizin için hazırlandı." }, "files": { "description": "NextAuth.js kullanarak ara yazılım kimlik doğrulaması.", - "title": "Kimlik doğrulama" + "title": "Kimlik doğrulama", + "on-the-fly": "Tam Anında Özelleştirme", + "on-the-fly-description": "Proje havuzumuzdaki kapsamlı özellikler listesine göz atın. Proje gereksinimlerinize uyacak şekilde Clerk/NextAuth.js ve MySQL/PostgreSQL arasında zahmetsizce geçiş yapın.", + "roadmap": "Büyük Hırslar: Sınırsız Olasılıklar" }, "subtitle": "Relivator, koddan tasarıma kadar web projelerinizi güçlendiren işlevlere sahiptir.", "text": { @@ -308,13 +215,77 @@ "things": { "linkText": "Listeye Git" }, - "title": "React, Next.js ve ötesine yönelik en önemli araçları keşfedin. Size özel olarak tasarlandı.", - "about": "Dünyanın en zengin özelliklere sahip, küresel ve ikonik Next.js başlatıcısını oluşturmayı hedefliyoruz. Kapsamlı özellik listesini keşfedin. Koddan daha fazlasını sunan bu bir yolculuktur. Stabildir ve üretime hazırdır." + "title": "React, Next.js ve ötesine yönelik en önemli araçları keşfedin. Size özel olarak tasarlandı." + }, + "LanguageSwitch": { + "choose-language": "Dil" + }, + "LocaleSwitcher": { + "label": "Dil Değiştir", + "selectLocale": "Dil" + }, + "LoginForm": { + "description": "E-posta adresinizi ve şifrenizi kullanarak hesabınıza giriş yapın.", + "email": "E-posta", + "email-placeholder": "E-posta adresinizi girin", + "error-heading": "Giriş yapma işlemi başarısız oldu.", + "errors": { + "Callback": "Farklı bir hesapla giriş yapmayı deneyin.", + "CredentialsSignin": "Giriş yapma işlemi başarısız oldu. Sağladığınız bilgilerin doğru olduğunu kontrol edin.", + "default": "Giriş yapma işlemi başarısız oldu.", + "Email or password is incorrect": "E-posta veya şifre yanlış.", + "EmailCreateAccount": "Farklı bir hesapla giriş yapmayı deneyin.", + "EmailSignin": "E-posta adresinizi kontrol edin.", + "Invalid credentials": "Geçersiz kimlik bilgileri.", + "OAuthAccountNotLinked": "Kimliğinizi doğrulamak için, başlangıçta kullandığınız aynı hesapla giriş yapın.", + "OAuthCallback": "Farklı bir hesapla giriş yapmayı deneyin.", + "OAuthCreateAccount": "Farklı bir hesapla giriş yapmayı deneyin.", + "OAuthSignin": "Farklı bir hesapla giriş yapmayı deneyin.", + "Signin": "Farklı bir hesapla giriş yapmayı deneyin." + }, + "form": { + "description": "E-posta adresinizi ve şifrenizi kullanarak hesabınızda oturum açın.", + "email": "E-posta", + "email-placeholder": "E-posta adresinizi giriniz", + "error-heading": "Bazen Kötü Şeyler Olur...", + "no-account": "Hesabınız yok mu?", + "other-options": "Şunu kullanarak oturum açın:", + "password": "Şifre", + "password-placeholder": "Şifrenizi girin", + "sign-out": "oturumu Kapat", + "signup": "Buradan kaydolun.", + "submit": "Kayıt olmak", + "title": "Kayıt olmak", + "wait": "Lütfen bekleyin..." + }, + "no-account": "Hesabınız yok mu?", + "other-options": "Şunları kullanarak giriş yapın:", + "password": "Şifre", + "password-placeholder": "Şifrenizi girin", + "reset-password": "Şifreyi yenile", + "signin": "Kayıt olmak", + "signup": "Buradan kayıt olun.", + "submit": "Giriş Yap", + "success-description": "Başarı.", + "success-title": "Tamamlamak!", + "title": "Giriş Yap", + "wait": "Lütfen bekleyin..." + }, + "MainError": { + "error": "Hata", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found." }, "meta": { "description": "Next.js 14 Starter", "title": "canlandırıcı" }, + "Navbar": { + "home": "Anasayfa", + "sign-out": "Çıkış Yap", + "signin": "Giriş Yap" + }, "pages": { "about": { "author": "License", @@ -331,7 +302,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +350,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Sayfa bulunamadı! 🥲 Maalesef...", "description": "Aradığınız kaynak taşınmış, yeniden adlandırılmış olabilir veya hiç var olmamış olabilir. Lütfen URL'yi doğrulayın veya menüyü kullanarak diğer bölümlere gidin.", - "go-home": "Ana Sayfaya Dön" + "go-home": "Ana Sayfaya Dön", + "title": "🫠 Sayfa bulunamadı! 🥲 Maalesef..." }, "tools": { "binary-code": { @@ -564,7 +535,7 @@ } }, "plugins": { - "stars": "Lütfen! Yıldız Kurtarıcı GitHub'da ⭐ Yıldız Hedefi:" + "stars": "Lütfen GitHub'da yıldız verin ⭐ Hedef:" }, "pricing": { "compare": { @@ -618,15 +589,80 @@ "what-payment": "Hangi ödeme yöntemlerini kabul ediyorsunuz?" } }, + "ProfileButton": { + "admin": "Yönetici Paneli", + "logout": "Çıkış Yap", + "my-account": "Hesabım", + "new-review": "Yeni İnceleme", + "profile": "Profil", + "settings": "Ayarlar" + }, + "ProfileSettingsForm": { + "description": "Profil ayarlarınızı güncelleyin.", + "errors": { + "update-error": "Kullanıcı güncellenemedi." + }, + "name": "Ad", + "name-min": "Ad en az 2 karakter olmalıdır.", + "name-placeholder": "Adınızı girin", + "submit": "Kullanıcıyı Güncelle", + "title": "Profil Ayarları", + "update-success": "Kullanıcı başarıyla güncellendi." + }, + "RegisterForm": { + "description": "E-posta adresinizi ve şifrenizi kullanarak yeni bir hesap oluşturun.", + "email": "E-posta", + "email-placeholder": "E-posta adresinizi girin", + "error-heading": "Kaydolma işlemi başarısız oldu.", + "errors": { + "email-exists": "User with this email already exists.", + "fill-fields": "Please fill all fields.", + "not-authenticated": "Not authenticated." + }, + "form": { + "email-min": "Kullanıcı adı en az 2 karakter olmalıdır.", + "invalid-email": "Geçersiz e-posta adresi.", + "name-min": "Ad en az 2 karakter olmalıdır.", + "password-min": "Şifre en az 6 karakter olmalıdır." + }, + "have-account": "Zaten bir hesabınız mı var?", + "name": "Ad", + "name-placeholder": "Adınızı girin", + "other-options": "Veya şunlarla kaydolun:", + "password": "Şifre", + "password-placeholder": "Şifrenizi girin", + "signin": "Buradan giriş yapın.", + "submit": "Kaydol", + "success-description": "Artık hesabınıza giriş yapabilirsiniz.", + "success-title": "Kayıt başarılı!", + "title": "Kaydol", + "wait": "Lütfen bekleyin..." + }, + "ReviewNewForm": { + "description": "Yeni bir inceleme oluşturun.", + "errors": { + "create-error": "İnceleme oluşturulamadı." + }, + "grade": "Puan", + "grade-placeholder": "Puanı girin", + "item": "Öğe", + "item-placeholder": "İncelemesi yapılacak sanat eserinin adı", + "submit": "İnceleme Oluştur", + "tags": "Etiketler", + "tags-placeholder": "Etiketleri girin", + "title": "İnceleme Oluştur", + "title-field": "Başlık", + "title-field-placeholder": "Başlık girin" + }, "settings-page": { "description": "Ayarlarınızı yönetin.", "title": "Ayarlar" }, "signIn": { + "heading": "Giriş Yap", "LoginForm": { "wait": "Lütfen bekleyin..." }, - "heading": "Giriş Yap", "meta": { "description": "Kişiselleştirilmiş bir deneyim için giriş yapın", "title": "Giriş Yap" @@ -634,6 +670,17 @@ "providerButtonText": "{name} ile Giriş Yap", "providerButtonTextReg": "{name} ile kaydolun" }, + "TagsSelect": { + "no-options": "Seçenek yok", + "search": "Ara...", + "tags": "Etiketler", + "tags-placeholder": "Etiketleri girin" + }, + "ThemeSwitch": { + "dark": "Koyu", + "light": "Açık", + "system": "Sistem" + }, "things": { "heading": "Relivator'unuz", "input": { @@ -658,5 +705,24 @@ "title": "Relivator'dan ücretsiz çevrimini araçlar" }, "title": "Aletler" + }, + "store": { + "stores": { + "buy-products": "Mağazalarımızdan ürün satın alın", + "stores": "Mağazalar" + }, + "categories": { + "buyFromCategories": "En iyi mağazalardan {category} satın alın", + "buyProducts": "${category} kategorisinden ürünler satın alın", + "buyTheBest": "En iyi {category} satın alın" + }, + "product": { + "products": "Ürünler", + "noDescription": "Bu ürün için açıklama mevcut değil.", + "description": "Tanım", + "moreProductsFrom": "{storeName}'dan daha fazla ürün", + "buyProductsFromOurStores": "Mağazalarımızdan ürün satın alın", + "addToCart": "Sepete ekle" + } } } diff --git a/src/data/i18n/uk-ua.json b/src/data/i18n/uk-ua.json index 91425308..ed3d42fb 100644 --- a/src/data/i18n/uk-ua.json +++ b/src/data/i18n/uk-ua.json @@ -82,9 +82,9 @@ "wait": "Будь ласка, зачекайте..." }, "MainError": { - "Could not fetch user.": "Не вдалося отримати дані користувача.", - "Not authenticated.": "Не автентифіковано.", - "User not found.": "Користувача не знайдено.", + "fetch-failed": "Could not fetch user.", + "not-authenticated": "Not authenticated.", + "not-found": "User not found.", "error": "Помилка" }, "Navbar": { @@ -118,9 +118,9 @@ "email-placeholder": "Введіть свою електронну адресу", "error-heading": "Не вдалося зареєструватися.", "errors": { - "Not authenticated.": "Не автентифіковано.", - "Please fill all fields.": "Будь ласка, заповніть всі поля.", - "User with this email already exists.": "Користувач з такою електронною адресою вже існує." + "not-authenticated": "Not authenticated.", + "fill-fields": "Please fill all fields.", + "email-exists": "User with this email already exists." }, "form": { "email-min": "Ім'я повинно містити принаймні 2 символи.", @@ -177,7 +177,50 @@ "title": "Обліковий запис" }, "auth": { - "other-options": "Додати більше обліковок:" + "emailSubmitButton": { + "label": "Відправити" + }, + "error": { + "default": "Спробуйте увійти за допомогою іншого облікового запису.", + "email": "Електронну пошту не знайдено. Спробуйте увійти за допомогою іншого провайдера.", + "oauthNotLinked": "Щоб підтвердити свою особу, увійдіть за допомогою того ж облікового запису, який ви використовували спочатку.", + "unknown": "Сталася помилка. Будь ласка, спробуйте ще раз.", + "unknown-error": "Щось пішло не так. Будь ласка, відвідайте сторінку /contact та повідомте нашу службу підтримки про цю невідому помилку." + }, + "legal": "Використовуючи кнопки вище, ви погоджуєтеся з", + "legal-and": "та", + "legal-privacy": "Політикою конфіденційності", + "legal-terms": "Умовами використання", + "magicLink": { + "description": "Не забудьте перевірити теку зі спамом.", + "title": "Лист з магічним посиланням відправлено. 🧙‍♂️" + }, + "noProvider": { + "link": "налаштувати принаймні один спосіб авторизації (наприклад, електронну пошту, Google, GitHub, Facebook тощо)", + "preLink": "Вам необхідно" + }, + "orEmailLabel": "Або за допомогою вашої електронної пошти", + "other-options": "Підключіть й інші облікові записи:", + "register": { + "agreeToTerms": "Реєструючись, ви погоджуєтесь з нашими умовами обслуговування та політикою конфіденційності.", + "alreadyHaveAccountLabel": { + "link": "Увійти", + "preLink": "Вже маєте обліковий запис?" + }, + "heading": "Створити обліковий запис" + }, + "signin": { + "heading": "Увійти", + "noAccountLabel": { + "link": "Зареєструйтеся безкоштовно", + "preLink": "Не маєте облікового запису?" + } + }, + "signinErrorToast": { + "description": "Реєстрація вимкнена.", + "title": "Не авторизовано", + "tooManyRequests": "Забагато запитів. Спробуйте знову пізніше." + } }, "auth-page": { "error": "Щось не так...", @@ -255,6 +298,7 @@ } }, "landing": { + "about": "Ми прагнемо створити найбагатший у світі, глобальний і культовий шаблон Next.js. Пропонуючи більше ніж просто код, це подорож. Цей стартер Next.js стабільний та готовий до запуску.", "btn1-products-now": "Продукти зараз", "btn1-sell": "Продавайте", "btn2-download": "Завантажити", @@ -270,17 +314,21 @@ }, "currency": { "description": "Компоненти інтерфейсу користувача, створені за допомогою Radix UI та стилізовані за допомогою Tailwind CSS.", - "title": "компоненти" + "title": "Компоненти" }, "devtools": { "description": "Безкоштовні та платні підписки за допомогою Stripe.", - "title": "Підписки" + "title": "Підписки", + "ambitions-description": "Перестаньте бігати від одного стартера до іншого. З Relivator ви матимете необмежені можливості. Ви можете створити все, що завгодно; всі інструменти вже підготовлені, це все для вас." }, "files": { "description": "Аутентифікація проміжного програмного забезпечення за допомогою NextAuth.js.", - "title": "Аутентифікація" + "title": "Аутентифікація", + "on-the-fly": "Повне налаштування додатку на льоту", + "on-the-fly-description": "Ознайомтеся з широким списком функцій у репозиторії Relivator. Легко перемикайтеся між Clerk/NextAuth.js і MySQL/PostgreSQL відповідно до вимог вашого проєкту.", + "roadmap": "Величезні амбіції та безмежні можливості" }, - "subtitle": "Від коду до дизайну, Relivator має функціональність, яка надихає ваші веб-проекти.", + "subtitle": "Від коду до дизайну, Relivator має функціональність, яка надихає ваші веб-проєкти.", "text": { "description": "Легко керуйте програмою за допомогою серверних і клієнтських компонентів, та багато більшого.", "title": "React 18" @@ -308,8 +356,7 @@ "things": { "linkText": "Перейти до списку" }, - "title": "Відкрийте для себе найважливіше з React, Next.js тощо. Спеціально для вас.", - "about": "Ми прагнемо створити найбагатший у світі, глобальний і культовий шаблон Next.js. Пропонуючи більше, ніж просто код, це подорож. Цей стартер Next.js стабільний та готовий до запуску." + "title": "Відкрийте для себе найважливіше з React, Next.js тощо. Спеціально для вас." }, "meta": { "description": "Next.js 14 Starter", @@ -331,7 +378,7 @@ } }, "subtitle": "Bleverse Relivator is a powerful Next.js TypeScript Tailwind starter. It streamlines the development process and provides a solid foundation for creating web projects. Feel free to use, adapt, and contribute to the project by {link}.", - "subtitle.link": "clicking here", + "subtitle-link": "clicking here", "title": "About" }, "home": { @@ -379,9 +426,9 @@ "title": "Discover the paramount tools for React, Next.js, and beyond. Tailored especially for you." }, "not-found": { - "title": "🫠 Сторінку не знайдено! 🥲", "description": "Ресурс який ви шукаєте міг бути переміщений, перейменований або ніколи не існував. Будь ласка, перевірте URL або перейдіть до інших розділів сайту, використовуючи меню.", - "go-home": "Повернутися на головну сторінку" + "go-home": "Повернутися на головну сторінку", + "title": "🫠 Сторінку не знайдено! 🥲" }, "tools": { "binary-code": { @@ -564,7 +611,7 @@ } }, "plugins": { - "stars": "Просимо зіроньку для Relivator на GitHub ⭐ Ціль:" + "stars": "Просимо зіроньку на GitHub ⭐ Ціль:" }, "pricing": { "compare": { @@ -658,5 +705,24 @@ "title": "-" }, "title": "-" + }, + "store": { + "stores": { + "buy-products": "Купуйте продукти в наших магазинах", + "stores": "Магазини" + }, + "categories": { + "buyFromCategories": "Купуйте {category} у найкращих магазинах", + "buyProducts": "Купуйте продукти з категорії ${category}", + "buyTheBest": "Купуйте найкраще {category}" + }, + "product": { + "products": "Продукти", + "noDescription": "Для цього продукту немає опису.", + "description": "Опис продукту", + "moreProductsFrom": "Більше товарів від {storeName}", + "buyProductsFromOurStores": "Купуйте продукти в наших магазинах", + "addToCart": "Додати в кошик" + } } } diff --git a/src/data/mail/auth-user.tsx b/src/data/mail/auth-user.tsx index 9f030dd9..194b75f1 100644 --- a/src/data/mail/auth-user.tsx +++ b/src/data/mail/auth-user.tsx @@ -11,7 +11,7 @@ export default function SignInEmail({ }: SignInEmailProps) { return ( <> -
+
); } diff --git a/src/data/mail/newsletter.tsx b/src/data/mail/newsletter.tsx index b4469568..3198038a 100644 --- a/src/data/mail/newsletter.tsx +++ b/src/data/mail/newsletter.tsx @@ -1,10 +1,13 @@ +import { siteConfig } from "~/app"; +import { env } from "~/env.mjs"; + type NewsletterWelcomeEmailProps = { firstName?: string; fromEmail: string; token: string; }; -const baseUrl = process.env.NEXT_PUBLIC_APP_URL ?? ""; +const baseUrl = env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000"; // For previewing we need to put images in the .react-email/public folder // In production we need to put images in the root public folder @@ -32,11 +35,11 @@ export default function NewsletterWelcomeEmail({ fromEmail, token, }: NewsletterWelcomeEmailProps) { - const previewText = `Hi ${firstName}, welcome to Relivator!`; + const previewText = `Hi ${firstName}, welcome to ${siteConfig.name}!`; return ( <> -
+
); } diff --git a/src/data/mdx/hello.mdx b/src/data/mdx/hello.mdx index 5c4e53fe..a9c62c17 100644 --- a/src/data/mdx/hello.mdx +++ b/src/data/mdx/hello.mdx @@ -1,3 +1,3 @@ -# Hello, Next.js! +# Hello, Relivator! You can _import and use_ **React components** in MDX files. diff --git a/src/data/meta/builder.ts b/src/data/meta/builder.ts index 9b42279f..dedde3a7 100644 --- a/src/data/meta/builder.ts +++ b/src/data/meta/builder.ts @@ -1,22 +1,20 @@ -import { env } from "~/env.mjs"; - /** * Helper function to determine the hostname for the given environment, * with a focus on working with Vercel deployments. Set by Vercel automatically. * @returns the hostname for the given environment. */ export function appHost(includeProtocol = true): string { - const host = env.NEXT_PUBLIC_APP_URL - ? env.NEXT_PUBLIC_APP_URL - : process.env.NEXT_PUBLIC_VERCEL_URL - ? `https://${process.env.NEXT_PUBLIC_VERCEL_URL}` - : process.env.VERCEL_URL - ? `https://${process.env.VERCEL_URL}` + const host = + process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000" ? + process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000" + : process.env.NEXT_PUBLIC_VERCEL_URL ? + `https://${process.env.NEXT_PUBLIC_VERCEL_URL}` + : process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : ""; - return includeProtocol - ? host - : host.replace("https://", "").replace("http://", ""); + return includeProtocol ? host : ( + host.replace("https://", "").replace("http://", "") + ); } /** diff --git a/src/data/meta/default.ts b/src/data/meta/default.ts index aa51790d..666ff30b 100644 --- a/src/data/meta/default.ts +++ b/src/data/meta/default.ts @@ -1,6 +1,6 @@ import { type Metadata } from "next"; -import { siteConfig } from "~/app"; +import { siteConfig } from "~/app"; import { fullURL } from "~/data/meta/builder"; export const DEFAULT_METADATA: Metadata = { diff --git a/src/data/meta/extend.ts b/src/data/meta/extend.ts index 9ba97c93..33c7a277 100644 --- a/src/data/meta/extend.ts +++ b/src/data/meta/extend.ts @@ -1,5 +1,5 @@ import { type Metadata } from "next"; -import { LocaleLayoutParams } from "~/types"; +import type { LocaleLayoutParams } from "~/types"; import merge from "ts-deepmerge"; import { DEFAULT_METADATA } from "./default"; diff --git a/src/data/other/countries.json b/src/data/other/countries.json new file mode 100644 index 00000000..98e3adb9 --- /dev/null +++ b/src/data/other/countries.json @@ -0,0 +1,1709 @@ +[ + { + "cca2": "AW", + "currencies": { "AWG": { "name": "Aruban florin", "symbol": "ƒ" } }, + "languages": { "nld": "Dutch", "pap": "Papiamento" }, + "flag": "🇦🇼" + }, + { + "cca2": "AF", + "currencies": { "AFN": { "name": "Afghan afghani", "symbol": "؋" } }, + "languages": { "prs": "Dari", "pus": "Pashto", "tuk": "Turkmen" }, + "flag": "🇦🇫" + }, + { + "cca2": "AO", + "currencies": { "AOA": { "name": "Angolan kwanza", "symbol": "Kz" } }, + "languages": { "por": "Portuguese" }, + "flag": "🇦🇴" + }, + { + "cca2": "AI", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇦🇮" + }, + { + "cca2": "AX", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "swe": "Swedish" }, + "flag": "🇦🇽" + }, + { + "cca2": "AL", + "currencies": { "ALL": { "name": "Albanian lek", "symbol": "L" } }, + "languages": { "sqi": "Albanian" }, + "flag": "🇦🇱" + }, + { + "cca2": "AD", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "cat": "Catalan" }, + "flag": "🇦🇩" + }, + { + "cca2": "AE", + "currencies": { + "AED": { "name": "United Arab Emirates dirham", "symbol": "د.إ" } + }, + "languages": { "ara": "Arabic" }, + "flag": "🇦🇪" + }, + { + "cca2": "AR", + "currencies": { "ARS": { "name": "Argentine peso", "symbol": "$" } }, + "languages": { "grn": "Guaraní", "spa": "Spanish" }, + "flag": "🇦🇷" + }, + { + "cca2": "AM", + "currencies": { "AMD": { "name": "Armenian dram", "symbol": "֏" } }, + "languages": { "hye": "Armenian" }, + "flag": "🇦🇲" + }, + { + "cca2": "AS", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English", "smo": "Samoan" }, + "flag": "🇦🇸" + }, + { "cca2": "AQ", "currencies": [], "languages": {}, "flag": "🇦🇶" }, + { + "cca2": "TF", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇹🇫" + }, + { + "cca2": "AG", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇦🇬" + }, + { + "cca2": "AU", + "currencies": { "AUD": { "name": "Australian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇦🇺" + }, + { + "cca2": "AT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "bar": "Austro-Bavarian German" }, + "flag": "🇦🇹" + }, + { + "cca2": "AZ", + "currencies": { "AZN": { "name": "Azerbaijani manat", "symbol": "₼" } }, + "languages": { "aze": "Azerbaijani", "rus": "Russian" }, + "flag": "🇦🇿" + }, + { + "cca2": "BI", + "currencies": { "BIF": { "name": "Burundian franc", "symbol": "Fr" } }, + "languages": { "fra": "French", "run": "Kirundi" }, + "flag": "🇧🇮" + }, + { + "cca2": "BE", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "deu": "German", "fra": "French", "nld": "Dutch" }, + "flag": "🇧🇪" + }, + { + "cca2": "BJ", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇧🇯" + }, + { + "cca2": "BF", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇧🇫" + }, + { + "cca2": "BD", + "currencies": { "BDT": { "name": "Bangladeshi taka", "symbol": "৳" } }, + "languages": { "ben": "Bengali" }, + "flag": "🇧🇩" + }, + { + "cca2": "BG", + "currencies": { "BGN": { "name": "Bulgarian lev", "symbol": "лв" } }, + "languages": { "bul": "Bulgarian" }, + "flag": "🇧🇬" + }, + { + "cca2": "BH", + "currencies": { "BHD": { "name": "Bahraini dinar", "symbol": ".د.ب" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇧🇭" + }, + { + "cca2": "BS", + "currencies": { + "BSD": { "name": "Bahamian dollar", "symbol": "$" }, + "USD": { "name": "United States dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇧🇸" + }, + { + "cca2": "BA", + "currencies": { + "BAM": { "name": "Bosnia and Herzegovina convertible mark", "symbol": "" } + }, + "languages": { "bos": "Bosnian", "hrv": "Croatian", "srp": "Serbian" }, + "flag": "🇧🇦" + }, + { + "cca2": "BL", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇧🇱" + }, + { + "cca2": "SH", + "currencies": { + "GBP": { "name": "Pound sterling", "symbol": "£" }, + "SHP": { "name": "Saint Helena pound", "symbol": "£" } + }, + "languages": { "eng": "English" }, + "flag": "🇸🇭" + }, + { + "cca2": "BY", + "currencies": { "BYN": { "name": "Belarusian ruble", "symbol": "Br" } }, + "languages": { "bel": "Belarusian", "rus": "Russian" }, + "flag": "🇧🇾" + }, + { + "cca2": "BZ", + "currencies": { "BZD": { "name": "Belize dollar", "symbol": "$" } }, + "languages": { + "bjz": "Belizean Creole", + "eng": "English", + "spa": "Spanish" + }, + "flag": "🇧🇿" + }, + { + "cca2": "BM", + "currencies": { "BMD": { "name": "Bermudian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇧🇲" + }, + { + "cca2": "BO", + "currencies": { "BOB": { "name": "Bolivian boliviano", "symbol": "Bs." } }, + "languages": { + "aym": "Aymara", + "grn": "Guaraní", + "que": "Quechua", + "spa": "Spanish" + }, + "flag": "🇧🇴" + }, + { + "cca2": "BQ", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English", "nld": "Dutch", "pap": "Papiamento" }, + "flag": "" + }, + { + "cca2": "BR", + "currencies": { "BRL": { "name": "Brazilian real", "symbol": "R$" } }, + "languages": { "por": "Portuguese" }, + "flag": "🇧🇷" + }, + { + "cca2": "BB", + "currencies": { "BBD": { "name": "Barbadian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇧🇧" + }, + { + "cca2": "BN", + "currencies": { + "BND": { "name": "Brunei dollar", "symbol": "$" }, + "SGD": { "name": "Singapore dollar", "symbol": "$" } + }, + "languages": { "msa": "Malay" }, + "flag": "🇧🇳" + }, + { + "cca2": "BT", + "currencies": { + "BTN": { "name": "Bhutanese ngultrum", "symbol": "Nu." }, + "INR": { "name": "Indian rupee", "symbol": "₹" } + }, + "languages": { "dzo": "Dzongkha" }, + "flag": "🇧🇹" + }, + { + "cca2": "BV", + "currencies": [], + "languages": { "nor": "Norwegian" }, + "flag": "🇧🇻" + }, + { + "cca2": "BW", + "currencies": { "BWP": { "name": "Botswana pula", "symbol": "P" } }, + "languages": { "eng": "English", "tsn": "Tswana" }, + "flag": "🇧🇼" + }, + { + "cca2": "CF", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French", "sag": "Sango" }, + "flag": "🇨🇫" + }, + { + "cca2": "CA", + "currencies": { "CAD": { "name": "Canadian dollar", "symbol": "$" } }, + "languages": { "eng": "English", "fra": "French" }, + "flag": "🇨🇦" + }, + { + "cca2": "CC", + "currencies": { "AUD": { "name": "Australian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇨🇨" + }, + { + "cca2": "CH", + "currencies": { "CHF": { "name": "Swiss franc", "symbol": "Fr." } }, + "languages": { + "fra": "French", + "gsw": "Swiss German", + "ita": "Italian", + "roh": "Romansh" + }, + "flag": "🇨🇭" + }, + { + "cca2": "CL", + "currencies": { "CLP": { "name": "Chilean peso", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇨🇱" + }, + { + "cca2": "CN", + "currencies": { "CNY": { "name": "Chinese yuan", "symbol": "¥" } }, + "languages": { "zho": "Chinese" }, + "flag": "🇨🇳" + }, + { + "cca2": "CI", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇨🇮" + }, + { + "cca2": "CM", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "eng": "English", "fra": "French" }, + "flag": "🇨🇲" + }, + { + "cca2": "CD", + "currencies": { "CDF": { "name": "Congolese franc", "symbol": "FC" } }, + "languages": { + "fra": "French", + "kon": "Kikongo", + "lin": "Lingala", + "lua": "Tshiluba", + "swa": "Swahili" + }, + "flag": "🇨🇩" + }, + { + "cca2": "CG", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French", "kon": "Kikongo", "lin": "Lingala" }, + "flag": "🇨🇬" + }, + { + "cca2": "CK", + "currencies": { + "CKD": { "name": "Cook Islands dollar", "symbol": "$" }, + "NZD": { "name": "New Zealand dollar", "symbol": "$" } + }, + "languages": { "eng": "English", "rar": "Cook Islands Māori" }, + "flag": "🇨🇰" + }, + { + "cca2": "CO", + "currencies": { "COP": { "name": "Colombian peso", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇨🇴" + }, + { + "cca2": "KM", + "currencies": { "KMF": { "name": "Comorian franc", "symbol": "Fr" } }, + "languages": { "ara": "Arabic", "fra": "French", "zdj": "Comorian" }, + "flag": "🇰🇲" + }, + { + "cca2": "CV", + "currencies": { "CVE": { "name": "Cape Verdean escudo", "symbol": "Esc" } }, + "languages": { "por": "Portuguese" }, + "flag": "🇨🇻" + }, + { + "cca2": "CR", + "currencies": { "CRC": { "name": "Costa Rican colón", "symbol": "₡" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇨🇷" + }, + { + "cca2": "CU", + "currencies": { + "CUC": { "name": "Cuban convertible peso", "symbol": "$" }, + "CUP": { "name": "Cuban peso", "symbol": "$" } + }, + "languages": { "spa": "Spanish" }, + "flag": "🇨🇺" + }, + { + "cca2": "CW", + "currencies": { + "ANG": { "name": "Netherlands Antillean guilder", "symbol": "ƒ" } + }, + "languages": { "eng": "English", "nld": "Dutch", "pap": "Papiamento" }, + "flag": "🇨🇼" + }, + { + "cca2": "CX", + "currencies": { "AUD": { "name": "Australian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇨🇽" + }, + { + "cca2": "KY", + "currencies": { "KYD": { "name": "Cayman Islands dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇰🇾" + }, + { + "cca2": "CY", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "ell": "Greek", "tur": "Turkish" }, + "flag": "🇨🇾" + }, + { + "cca2": "CZ", + "currencies": { "CZK": { "name": "Czech koruna", "symbol": "Kč" } }, + "languages": { "ces": "Czech", "slk": "Slovak" }, + "flag": "🇨🇿" + }, + { + "cca2": "DE", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "deu": "German" }, + "flag": "🇩🇪" + }, + { + "cca2": "DJ", + "currencies": { "DJF": { "name": "Djiboutian franc", "symbol": "Fr" } }, + "languages": { "ara": "Arabic", "fra": "French" }, + "flag": "🇩🇯" + }, + { + "cca2": "DM", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇩🇲" + }, + { + "cca2": "DK", + "currencies": { "DKK": { "name": "Danish krone", "symbol": "kr" } }, + "languages": { "dan": "Danish" }, + "flag": "🇩🇰" + }, + { + "cca2": "DO", + "currencies": { "DOP": { "name": "Dominican peso", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇩🇴" + }, + { + "cca2": "DZ", + "currencies": { "DZD": { "name": "Algerian dinar", "symbol": "د.ج" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇩🇿" + }, + { + "cca2": "EC", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇪🇨" + }, + { + "cca2": "EG", + "currencies": { "EGP": { "name": "Egyptian pound", "symbol": "£" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇪🇬" + }, + { + "cca2": "ER", + "currencies": { "ERN": { "name": "Eritrean nakfa", "symbol": "Nfk" } }, + "languages": { "ara": "Arabic", "eng": "English", "tir": "Tigrinya" }, + "flag": "🇪🇷" + }, + { + "cca2": "EH", + "currencies": { + "DZD": { "name": "Algerian dinar", "symbol": "دج" }, + "MAD": { "name": "Moroccan dirham", "symbol": "DH" }, + "MRU": { "name": "Mauritanian ouguiya", "symbol": "UM" } + }, + "languages": { "ber": "Berber", "mey": "Hassaniya", "spa": "Spanish" }, + "flag": "🇪🇭" + }, + { + "cca2": "ES", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇪🇸" + }, + { + "cca2": "EE", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "est": "Estonian" }, + "flag": "🇪🇪" + }, + { + "cca2": "ET", + "currencies": { "ETB": { "name": "Ethiopian birr", "symbol": "Br" } }, + "languages": { "amh": "Amharic" }, + "flag": "🇪🇹" + }, + { + "cca2": "FI", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fin": "Finnish", "swe": "Swedish" }, + "flag": "🇫🇮" + }, + { + "cca2": "FJ", + "currencies": { "FJD": { "name": "Fijian dollar", "symbol": "$" } }, + "languages": { "eng": "English", "fij": "Fijian", "hif": "Fiji Hindi" }, + "flag": "🇫🇯" + }, + { + "cca2": "FK", + "currencies": { + "FKP": { "name": "Falkland Islands pound", "symbol": "£" } + }, + "languages": { "eng": "English" }, + "flag": "🇫🇰" + }, + { + "cca2": "FR", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇫🇷" + }, + { + "cca2": "FO", + "currencies": { + "DKK": { "name": "Danish krone", "symbol": "kr" }, + "FOK": { "name": "Faroese króna", "symbol": "kr" } + }, + "languages": { "dan": "Danish", "fao": "Faroese" }, + "flag": "🇫🇴" + }, + { + "cca2": "FM", + "currencies": [], + "languages": { "eng": "English" }, + "flag": "🇫🇲" + }, + { + "cca2": "GA", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇬🇦" + }, + { + "cca2": "GB", + "currencies": { "GBP": { "name": "British pound", "symbol": "£" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇧" + }, + { + "cca2": "GE", + "currencies": { "GEL": { "name": "lari", "symbol": "₾" } }, + "languages": { "kat": "Georgian" }, + "flag": "🇬🇪" + }, + { + "cca2": "GG", + "currencies": { + "GBP": { "name": "British pound", "symbol": "£" }, + "GGP": { "name": "Guernsey pound", "symbol": "£" } + }, + "languages": { "eng": "English", "fra": "French", "nfr": "Guernésiais" }, + "flag": "🇬🇬" + }, + { + "cca2": "GH", + "currencies": { "GHS": { "name": "Ghanaian cedi", "symbol": "₵" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇭" + }, + { + "cca2": "GI", + "currencies": { "GIP": { "name": "Gibraltar pound", "symbol": "£" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇮" + }, + { + "cca2": "GN", + "currencies": { "GNF": { "name": "Guinean franc", "symbol": "Fr" } }, + "languages": { "fra": "French" }, + "flag": "🇬🇳" + }, + { + "cca2": "GP", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇬🇵" + }, + { + "cca2": "GM", + "currencies": { "GMD": { "name": "dalasi", "symbol": "D" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇲" + }, + { + "cca2": "GW", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "por": "Portuguese", "pov": "Upper Guinea Creole" }, + "flag": "🇬🇼" + }, + { + "cca2": "GQ", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French", "por": "Portuguese", "spa": "Spanish" }, + "flag": "🇬🇶" + }, + { + "cca2": "GR", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "ell": "Greek" }, + "flag": "🇬🇷" + }, + { + "cca2": "GD", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇬🇩" + }, + { + "cca2": "GL", + "currencies": { "DKK": { "name": "krone", "symbol": "kr." } }, + "languages": { "kal": "Greenlandic" }, + "flag": "🇬🇱" + }, + { + "cca2": "GT", + "currencies": { "GTQ": { "name": "Guatemalan quetzal", "symbol": "Q" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇬🇹" + }, + { + "cca2": "GF", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇬🇫" + }, + { + "cca2": "GU", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "cha": "Chamorro", "eng": "English", "spa": "Spanish" }, + "flag": "🇬🇺" + }, + { + "cca2": "GY", + "currencies": { "GYD": { "name": "Guyanese dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇾" + }, + { + "cca2": "HK", + "currencies": { "HKD": { "name": "Hong Kong dollar", "symbol": "$" } }, + "languages": { "eng": "English", "zho": "Chinese" }, + "flag": "🇭🇰" + }, + { + "cca2": "HM", + "currencies": [], + "languages": { "eng": "English" }, + "flag": "🇭🇲" + }, + { + "cca2": "HN", + "currencies": { "HNL": { "name": "Honduran lempira", "symbol": "L" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇭🇳" + }, + { + "cca2": "HR", + "currencies": { "HRK": { "name": "Croatian kuna", "symbol": "kn" } }, + "languages": { "hrv": "Croatian" }, + "flag": "🇭🇷" + }, + { + "cca2": "HT", + "currencies": { "HTG": { "name": "Haitian gourde", "symbol": "G" } }, + "languages": { "fra": "French", "hat": "Haitian Creole" }, + "flag": "🇭🇹" + }, + { + "cca2": "HU", + "currencies": { "HUF": { "name": "Hungarian forint", "symbol": "Ft" } }, + "languages": { "hun": "Hungarian" }, + "flag": "🇭🇺" + }, + { + "cca2": "ID", + "currencies": { "IDR": { "name": "Indonesian rupiah", "symbol": "Rp" } }, + "languages": { "ind": "Indonesian" }, + "flag": "🇮🇩" + }, + { + "cca2": "IM", + "currencies": { + "GBP": { "name": "British pound", "symbol": "£" }, + "IMP": { "name": "Manx pound", "symbol": "£" } + }, + "languages": { "eng": "English", "glv": "Manx" }, + "flag": "🇮🇲" + }, + { + "cca2": "IN", + "currencies": { "INR": { "name": "Indian rupee", "symbol": "₹" } }, + "languages": { "eng": "English", "hin": "Hindi", "tam": "Tamil" }, + "flag": "🇮🇳" + }, + { + "cca2": "IO", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇮🇴" + }, + { + "cca2": "IE", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "eng": "English", "gle": "Irish" }, + "flag": "🇮🇪" + }, + { + "cca2": "IR", + "currencies": { "IRR": { "name": "Iranian rial", "symbol": "﷼" } }, + "languages": { "fas": "Persian (Farsi)" }, + "flag": "🇮🇷" + }, + { + "cca2": "IQ", + "currencies": { "IQD": { "name": "Iraqi dinar", "symbol": "ع.د" } }, + "languages": { "ara": "Arabic", "arc": "Aramaic", "ckb": "Sorani" }, + "flag": "🇮🇶" + }, + { + "cca2": "IS", + "currencies": { "ISK": { "name": "Icelandic króna", "symbol": "kr" } }, + "languages": { "isl": "Icelandic" }, + "flag": "🇮🇸" + }, + { + "cca2": "IL", + "currencies": { "ILS": { "name": "Israeli new shekel", "symbol": "₪" } }, + "languages": { "ara": "Arabic", "heb": "Hebrew" }, + "flag": "🇮🇱" + }, + { + "cca2": "IT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "ita": "Italian" }, + "flag": "🇮🇹" + }, + { + "cca2": "JM", + "currencies": { "JMD": { "name": "Jamaican dollar", "symbol": "$" } }, + "languages": { "eng": "English", "jam": "Jamaican Patois" }, + "flag": "🇯🇲" + }, + { + "cca2": "JE", + "currencies": { + "GBP": { "name": "British pound", "symbol": "£" }, + "JEP": { "name": "Jersey pound", "symbol": "£" } + }, + "languages": { "eng": "English", "fra": "French", "nrf": "Jèrriais" }, + "flag": "🇯🇪" + }, + { + "cca2": "JO", + "currencies": { "JOD": { "name": "Jordanian dinar", "symbol": "د.ا" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇯🇴" + }, + { + "cca2": "JP", + "currencies": { "JPY": { "name": "Japanese yen", "symbol": "¥" } }, + "languages": { "jpn": "Japanese" }, + "flag": "🇯🇵" + }, + { + "cca2": "KZ", + "currencies": { "KZT": { "name": "Kazakhstani tenge", "symbol": "₸" } }, + "languages": { "kaz": "Kazakh", "rus": "Russian" }, + "flag": "🇰🇿" + }, + { + "cca2": "KE", + "currencies": { "KES": { "name": "Kenyan shilling", "symbol": "Sh" } }, + "languages": { "eng": "English", "swa": "Swahili" }, + "flag": "🇰🇪" + }, + { + "cca2": "KG", + "currencies": { "KGS": { "name": "Kyrgyzstani som", "symbol": "с" } }, + "languages": { "kir": "Kyrgyz", "rus": "Russian" }, + "flag": "🇰🇬" + }, + { + "cca2": "KH", + "currencies": { + "KHR": { "name": "Cambodian riel", "symbol": "៛" }, + "USD": { "name": "United States dollar", "symbol": "$" } + }, + "languages": { "khm": "Khmer" }, + "flag": "🇰🇭" + }, + { + "cca2": "KI", + "currencies": { + "AUD": { "name": "Australian dollar", "symbol": "$" }, + "KID": { "name": "Kiribati dollar", "symbol": "$" } + }, + "languages": { "eng": "English", "gil": "Gilbertese" }, + "flag": "🇰🇮" + }, + { + "cca2": "KN", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇰🇳" + }, + { + "cca2": "KR", + "currencies": { "KRW": { "name": "South Korean won", "symbol": "₩" } }, + "languages": { "kor": "Korean" }, + "flag": "🇰🇷" + }, + { + "cca2": "XK", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "sqi": "Albanian", "srp": "Serbian" }, + "flag": "🇽🇰" + }, + { + "cca2": "KW", + "currencies": { "KWD": { "name": "Kuwaiti dinar", "symbol": "د.ك" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇰🇼" + }, + { + "cca2": "LA", + "currencies": { "LAK": { "name": "Lao kip", "symbol": "₭" } }, + "languages": { "lao": "Lao" }, + "flag": "🇱🇦" + }, + { + "cca2": "LB", + "currencies": { "LBP": { "name": "Lebanese pound", "symbol": "ل.ل" } }, + "languages": { "ara": "Arabic", "fra": "French" }, + "flag": "🇱🇧" + }, + { + "cca2": "LR", + "currencies": { "LRD": { "name": "Liberian dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇱🇷" + }, + { + "cca2": "LY", + "currencies": { "LYD": { "name": "Libyan dinar", "symbol": "ل.د" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇱🇾" + }, + { + "cca2": "LC", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇱🇨" + }, + { + "cca2": "LI", + "currencies": { "CHF": { "name": "Swiss franc", "symbol": "Fr" } }, + "languages": { "deu": "German" }, + "flag": "🇱🇮" + }, + { + "cca2": "LK", + "currencies": { "LKR": { "name": "Sri Lankan rupee", "symbol": "Rs රු" } }, + "languages": { "sin": "Sinhala", "tam": "Tamil" }, + "flag": "🇱🇰" + }, + { + "cca2": "LS", + "currencies": { + "LSL": { "name": "Lesotho loti", "symbol": "L" }, + "ZAR": { "name": "South African rand", "symbol": "R" } + }, + "languages": { "eng": "English", "sot": "Sotho" }, + "flag": "🇱🇸" + }, + { + "cca2": "LT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "lit": "Lithuanian" }, + "flag": "🇱🇹" + }, + { + "cca2": "LU", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "deu": "German", "fra": "French", "ltz": "Luxembourgish" }, + "flag": "🇱🇺" + }, + { + "cca2": "LV", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "lav": "Latvian" }, + "flag": "🇱🇻" + }, + { + "cca2": "MO", + "currencies": { "MOP": { "name": "Macanese pataca", "symbol": "P" } }, + "languages": { "por": "Portuguese", "zho": "Chinese" }, + "flag": "🇲🇴" + }, + { + "cca2": "MF", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇲🇫" + }, + { + "cca2": "MA", + "currencies": { "MAD": { "name": "Moroccan dirham", "symbol": "د.م." } }, + "languages": { "ara": "Arabic", "ber": "Berber" }, + "flag": "🇲🇦" + }, + { + "cca2": "MC", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇲🇨" + }, + { + "cca2": "MD", + "currencies": { "MDL": { "name": "Moldovan leu", "symbol": "L" } }, + "languages": { "ron": "Moldavian" }, + "flag": "🇲🇩" + }, + { + "cca2": "MG", + "currencies": { "MGA": { "name": "Malagasy ariary", "symbol": "Ar" } }, + "languages": { "fra": "French", "mlg": "Malagasy" }, + "flag": "🇲🇬" + }, + { + "cca2": "MV", + "currencies": { "MVR": { "name": "Maldivian rufiyaa", "symbol": ".ރ" } }, + "languages": { "div": "Maldivian" }, + "flag": "🇲🇻" + }, + { + "cca2": "MX", + "currencies": { "MXN": { "name": "Mexican peso", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇲🇽" + }, + { + "cca2": "MH", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English", "mah": "Marshallese" }, + "flag": "🇲🇭" + }, + { + "cca2": "MK", + "currencies": { "MKD": { "name": "denar", "symbol": "den" } }, + "languages": { "mkd": "Macedonian" }, + "flag": "🇲🇰" + }, + { + "cca2": "ML", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇲🇱" + }, + { + "cca2": "MT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "eng": "English", "mlt": "Maltese" }, + "flag": "🇲🇹" + }, + { + "cca2": "MM", + "currencies": { "MMK": { "name": "Burmese kyat", "symbol": "Ks" } }, + "languages": { "mya": "Burmese" }, + "flag": "🇲🇲" + }, + { + "cca2": "ME", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "cnr": "Montenegrin" }, + "flag": "🇲🇪" + }, + { + "cca2": "MN", + "currencies": { "MNT": { "name": "Mongolian tögrög", "symbol": "₮" } }, + "languages": { "mon": "Mongolian" }, + "flag": "🇲🇳" + }, + { + "cca2": "MP", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "cal": "Carolinian", "cha": "Chamorro", "eng": "English" }, + "flag": "🇲🇵" + }, + { + "cca2": "MZ", + "currencies": { "MZN": { "name": "Mozambican metical", "symbol": "MT" } }, + "languages": { "por": "Portuguese" }, + "flag": "🇲🇿" + }, + { + "cca2": "MR", + "currencies": { "MRU": { "name": "Mauritanian ouguiya", "symbol": "UM" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇲🇷" + }, + { + "cca2": "MS", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇲🇸" + }, + { + "cca2": "MQ", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇲🇶" + }, + { + "cca2": "MU", + "currencies": { "MUR": { "name": "Mauritian rupee", "symbol": "₨" } }, + "languages": { + "eng": "English", + "fra": "French", + "mfe": "Mauritian Creole" + }, + "flag": "🇲🇺" + }, + { + "cca2": "MW", + "currencies": { "MWK": { "name": "Malawian kwacha", "symbol": "MK" } }, + "languages": { "eng": "English", "nya": "Chewa" }, + "flag": "🇲🇼" + }, + { + "cca2": "MY", + "currencies": { "MYR": { "name": "Malaysian ringgit", "symbol": "RM" } }, + "languages": { "eng": "English", "msa": "Malay" }, + "flag": "🇲🇾" + }, + { + "cca2": "YT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇾🇹" + }, + { + "cca2": "NA", + "currencies": { + "NAD": { "name": "Namibian dollar", "symbol": "$" }, + "ZAR": { "name": "South African rand", "symbol": "R" } + }, + "languages": { + "afr": "Afrikaans", + "deu": "German", + "eng": "English", + "her": "Herero", + "hgm": "Khoekhoe", + "kwn": "Kwangali", + "loz": "Lozi", + "ndo": "Ndonga", + "tsn": "Tswana" + }, + "flag": "🇳🇦" + }, + { + "cca2": "NC", + "currencies": { "XPF": { "name": "CFP franc", "symbol": "₣" } }, + "languages": { "fra": "French" }, + "flag": "🇳🇨" + }, + { + "cca2": "NE", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇳🇪" + }, + { + "cca2": "NF", + "currencies": { "AUD": { "name": "Australian dollar", "symbol": "$" } }, + "languages": { "eng": "English", "pih": "Norfuk" }, + "flag": "🇳🇫" + }, + { + "cca2": "NG", + "currencies": { "NGN": { "name": "Nigerian naira", "symbol": "₦" } }, + "languages": { "eng": "English" }, + "flag": "🇳🇬" + }, + { + "cca2": "NI", + "currencies": { "NIO": { "name": "Nicaraguan córdoba", "symbol": "C$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇳🇮" + }, + { + "cca2": "NU", + "currencies": { "NZD": { "name": "New Zealand dollar", "symbol": "$" } }, + "languages": { "eng": "English", "niu": "Niuean" }, + "flag": "🇳🇺" + }, + { + "cca2": "NL", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "nld": "Dutch" }, + "flag": "🇳🇱" + }, + { + "cca2": "NO", + "currencies": { "NOK": { "name": "Norwegian krone", "symbol": "kr" } }, + "languages": { + "nno": "Norwegian Nynorsk", + "nob": "Norwegian Bokmål", + "smi": "Sami" + }, + "flag": "🇳🇴" + }, + { + "cca2": "NP", + "currencies": { "NPR": { "name": "Nepalese rupee", "symbol": "₨" } }, + "languages": { "nep": "Nepali" }, + "flag": "🇳🇵" + }, + { + "cca2": "NR", + "currencies": { "AUD": { "name": "Australian dollar", "symbol": "$" } }, + "languages": { "eng": "English", "nau": "Nauru" }, + "flag": "🇳🇷" + }, + { + "cca2": "NZ", + "currencies": { "NZD": { "name": "New Zealand dollar", "symbol": "$" } }, + "languages": { + "eng": "English", + "mri": "Māori", + "nzs": "New Zealand Sign Language" + }, + "flag": "🇳🇿" + }, + { + "cca2": "OM", + "currencies": { "OMR": { "name": "Omani rial", "symbol": "ر.ع." } }, + "languages": { "ara": "Arabic" }, + "flag": "🇴🇲" + }, + { + "cca2": "PK", + "currencies": { "PKR": { "name": "Pakistani rupee", "symbol": "₨" } }, + "languages": { "eng": "English", "urd": "Urdu" }, + "flag": "🇵🇰" + }, + { + "cca2": "PA", + "currencies": { + "PAB": { "name": "Panamanian balboa", "symbol": "B/." }, + "USD": { "name": "United States dollar", "symbol": "$" } + }, + "languages": { "spa": "Spanish" }, + "flag": "🇵🇦" + }, + { + "cca2": "PN", + "currencies": { "NZD": { "name": "New Zealand dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇵🇳" + }, + { + "cca2": "PE", + "currencies": { "PEN": { "name": "Peruvian sol", "symbol": "S/." } }, + "languages": { "aym": "Aymara", "que": "Quechua", "spa": "Spanish" }, + "flag": "🇵🇪" + }, + { + "cca2": "PH", + "currencies": { "PHP": { "name": "Philippine peso", "symbol": "₱" } }, + "languages": { "eng": "English", "fil": "Filipino" }, + "flag": "🇵🇭" + }, + { + "cca2": "PW", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English", "pau": "Palauan" }, + "flag": "🇵🇼" + }, + { + "cca2": "PG", + "currencies": { + "PGK": { "name": "Papua New Guinean kina", "symbol": "K" } + }, + "languages": { "eng": "English", "hmo": "Hiri Motu", "tpi": "Tok Pisin" }, + "flag": "🇵🇬" + }, + { + "cca2": "PL", + "currencies": { "PLN": { "name": "Polish złoty", "symbol": "zł" } }, + "languages": { "pol": "Polish" }, + "flag": "🇵🇱" + }, + { + "cca2": "PR", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English", "spa": "Spanish" }, + "flag": "🇵🇷" + }, + { + "cca2": "KP", + "currencies": { "KPW": { "name": "North Korean won", "symbol": "₩" } }, + "languages": { "kor": "Korean" }, + "flag": "🇰🇵" + }, + { + "cca2": "PT", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "por": "Portuguese" }, + "flag": "🇵🇹" + }, + { + "cca2": "PY", + "currencies": { "PYG": { "name": "Paraguayan guaraní", "symbol": "₲" } }, + "languages": { "grn": "Guaraní", "spa": "Spanish" }, + "flag": "🇵🇾" + }, + { + "cca2": "PS", + "currencies": { + "EGP": { "name": "Egyptian pound", "symbol": "E£" }, + "ILS": { "name": "Israeli new shekel", "symbol": "₪" }, + "JOD": { "name": "Jordanian dinar", "symbol": "JD" } + }, + "languages": { "ara": "Arabic" }, + "flag": "🇵🇸" + }, + { + "cca2": "PF", + "currencies": { "XPF": { "name": "CFP franc", "symbol": "₣" } }, + "languages": { "fra": "French" }, + "flag": "🇵🇫" + }, + { + "cca2": "QA", + "currencies": { "QAR": { "name": "Qatari riyal", "symbol": "ر.ق" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇶🇦" + }, + { + "cca2": "RE", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇷🇪" + }, + { + "cca2": "RO", + "currencies": { "RON": { "name": "Romanian leu", "symbol": "lei" } }, + "languages": { "ron": "Romanian" }, + "flag": "🇷🇴" + }, + { + "cca2": "RU", + "currencies": { "RUB": { "name": "Russian ruble", "symbol": "₽" } }, + "languages": { "rus": "Russian" }, + "flag": "🇷🇺" + }, + { + "cca2": "RW", + "currencies": { "RWF": { "name": "Rwandan franc", "symbol": "Fr" } }, + "languages": { "eng": "English", "fra": "French", "kin": "Kinyarwanda" }, + "flag": "🇷🇼" + }, + { + "cca2": "SA", + "currencies": { "SAR": { "name": "Saudi riyal", "symbol": "ر.س" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇸🇦" + }, + { + "cca2": "SD", + "currencies": { "SDG": { "name": "Sudanese pound", "symbol": "" } }, + "languages": { "ara": "Arabic", "eng": "English" }, + "flag": "🇸🇩" + }, + { + "cca2": "SN", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇸🇳" + }, + { + "cca2": "SG", + "currencies": { "SGD": { "name": "Singapore dollar", "symbol": "$" } }, + "languages": { + "zho": "Chinese", + "eng": "English", + "msa": "Malay", + "tam": "Tamil" + }, + "flag": "🇸🇬" + }, + { + "cca2": "GS", + "currencies": { "SHP": { "name": "Saint Helena pound", "symbol": "£" } }, + "languages": { "eng": "English" }, + "flag": "🇬🇸" + }, + { + "cca2": "SJ", + "currencies": { "NOK": { "name": "krone", "symbol": "kr" } }, + "languages": { "nor": "Norwegian" }, + "flag": "🇸🇯" + }, + { + "cca2": "SB", + "currencies": { + "SBD": { "name": "Solomon Islands dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇸🇧" + }, + { + "cca2": "SL", + "currencies": { "SLL": { "name": "Sierra Leonean leone", "symbol": "Le" } }, + "languages": { "eng": "English" }, + "flag": "🇸🇱" + }, + { + "cca2": "SV", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇸🇻" + }, + { + "cca2": "SM", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "ita": "Italian" }, + "flag": "🇸🇲" + }, + { + "cca2": "SO", + "currencies": { "SOS": { "name": "Somali shilling", "symbol": "Sh" } }, + "languages": { "ara": "Arabic", "som": "Somali" }, + "flag": "🇸🇴" + }, + { + "cca2": "PM", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "fra": "French" }, + "flag": "🇵🇲" + }, + { + "cca2": "RS", + "currencies": { "RSD": { "name": "Serbian dinar", "symbol": "дин." } }, + "languages": { "srp": "Serbian" }, + "flag": "🇷🇸" + }, + { + "cca2": "SS", + "currencies": { "SSP": { "name": "South Sudanese pound", "symbol": "£" } }, + "languages": { "eng": "English" }, + "flag": "🇸🇸" + }, + { + "cca2": "ST", + "currencies": { + "STN": { "name": "São Tomé and Príncipe dobra", "symbol": "Db" } + }, + "languages": { "por": "Portuguese" }, + "flag": "🇸🇹" + }, + { + "cca2": "SR", + "currencies": { "SRD": { "name": "Surinamese dollar", "symbol": "$" } }, + "languages": { "nld": "Dutch" }, + "flag": "🇸🇷" + }, + { + "cca2": "SK", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "slk": "Slovak" }, + "flag": "🇸🇰" + }, + { + "cca2": "SI", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "slv": "Slovene" }, + "flag": "🇸🇮" + }, + { + "cca2": "SE", + "currencies": { "SEK": { "name": "Swedish krona", "symbol": "kr" } }, + "languages": { "swe": "Swedish" }, + "flag": "🇸🇪" + }, + { + "cca2": "SZ", + "currencies": { + "SZL": { "name": "Swazi lilangeni", "symbol": "L" }, + "ZAR": { "name": "South African rand", "symbol": "R" } + }, + "languages": { "eng": "English", "ssw": "Swazi" }, + "flag": "🇸🇿" + }, + { + "cca2": "SX", + "currencies": { + "ANG": { "name": "Netherlands Antillean guilder", "symbol": "ƒ" } + }, + "languages": { "eng": "English", "fra": "French", "nld": "Dutch" }, + "flag": "🇸🇽" + }, + { + "cca2": "SC", + "currencies": { "SCR": { "name": "Seychellois rupee", "symbol": "₨" } }, + "languages": { + "crs": "Seychellois Creole", + "eng": "English", + "fra": "French" + }, + "flag": "🇸🇨" + }, + { + "cca2": "SY", + "currencies": { "SYP": { "name": "Syrian pound", "symbol": "£" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇸🇾" + }, + { + "cca2": "TC", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇹🇨" + }, + { + "cca2": "TD", + "currencies": { + "XAF": { "name": "Central African CFA franc", "symbol": "Fr" } + }, + "languages": { "ara": "Arabic", "fra": "French" }, + "flag": "🇹🇩" + }, + { + "cca2": "TG", + "currencies": { + "XOF": { "name": "West African CFA franc", "symbol": "Fr" } + }, + "languages": { "fra": "French" }, + "flag": "🇹🇬" + }, + { + "cca2": "TH", + "currencies": { "THB": { "name": "Thai baht", "symbol": "฿" } }, + "languages": { "tha": "Thai" }, + "flag": "🇹🇭" + }, + { + "cca2": "TJ", + "currencies": { "TJS": { "name": "Tajikistani somoni", "symbol": "ЅМ" } }, + "languages": { "rus": "Russian", "tgk": "Tajik" }, + "flag": "🇹🇯" + }, + { + "cca2": "TK", + "currencies": { "NZD": { "name": "New Zealand dollar", "symbol": "$" } }, + "languages": { "eng": "English", "smo": "Samoan", "tkl": "Tokelauan" }, + "flag": "🇹🇰" + }, + { + "cca2": "TM", + "currencies": { "TMT": { "name": "Turkmenistan manat", "symbol": "m" } }, + "languages": { "rus": "Russian", "tuk": "Turkmen" }, + "flag": "🇹🇲" + }, + { + "cca2": "TL", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "por": "Portuguese", "tet": "Tetum" }, + "flag": "🇹🇱" + }, + { + "cca2": "TO", + "currencies": { "TOP": { "name": "Tongan paʻanga", "symbol": "T$" } }, + "languages": { "eng": "English", "ton": "Tongan" }, + "flag": "🇹🇴" + }, + { + "cca2": "TT", + "currencies": { + "TTD": { "name": "Trinidad and Tobago dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇹🇹" + }, + { + "cca2": "TN", + "currencies": { "TND": { "name": "Tunisian dinar", "symbol": "د.ت" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇹🇳" + }, + { + "cca2": "TR", + "currencies": { "TRY": { "name": "Turkish lira", "symbol": "₺" } }, + "languages": { "tur": "Turkish" }, + "flag": "🇹🇷" + }, + { + "cca2": "TV", + "currencies": { + "AUD": { "name": "Australian dollar", "symbol": "$" }, + "TVD": { "name": "Tuvaluan dollar", "symbol": "$" } + }, + "languages": { "eng": "English", "tvl": "Tuvaluan" }, + "flag": "🇹🇻" + }, + { + "cca2": "TW", + "currencies": { "TWD": { "name": "New Taiwan dollar", "symbol": "$" } }, + "languages": { "zho": "Chinese" }, + "flag": "🇹🇼" + }, + { + "cca2": "TZ", + "currencies": { "TZS": { "name": "Tanzanian shilling", "symbol": "Sh" } }, + "languages": { "eng": "English", "swa": "Swahili" }, + "flag": "🇹🇿" + }, + { + "cca2": "UG", + "currencies": { "UGX": { "name": "Ugandan shilling", "symbol": "Sh" } }, + "languages": { "eng": "English", "swa": "Swahili" }, + "flag": "🇺🇬" + }, + { + "cca2": "UA", + "currencies": { "UAH": { "name": "Ukrainian hryvnia", "symbol": "₴" } }, + "languages": { "ukr": "Ukrainian" }, + "flag": "🇺🇦" + }, + { + "cca2": "UM", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇺🇲" + }, + { + "cca2": "UY", + "currencies": { "UYU": { "name": "Uruguayan peso", "symbol": "$" } }, + "languages": { "spa": "Spanish" }, + "flag": "🇺🇾" + }, + { + "cca2": "US", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇺🇸" + }, + { + "cca2": "UZ", + "currencies": { "UZS": { "name": "Uzbekistani soʻm", "symbol": "so'm" } }, + "languages": { "rus": "Russian", "uzb": "Uzbek" }, + "flag": "🇺🇿" + }, + { + "cca2": "VA", + "currencies": { "EUR": { "name": "Euro", "symbol": "€" } }, + "languages": { "ita": "Italian", "lat": "Latin" }, + "flag": "🇻🇦" + }, + { + "cca2": "VC", + "currencies": { + "XCD": { "name": "Eastern Caribbean dollar", "symbol": "$" } + }, + "languages": { "eng": "English" }, + "flag": "🇻🇨" + }, + { + "cca2": "VE", + "currencies": { + "VES": { "name": "Venezuelan bolívar soberano", "symbol": "Bs.S." } + }, + "languages": { "spa": "Spanish" }, + "flag": "🇻🇪" + }, + { + "cca2": "VG", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇻🇬" + }, + { + "cca2": "VI", + "currencies": { "USD": { "name": "United States dollar", "symbol": "$" } }, + "languages": { "eng": "English" }, + "flag": "🇻🇮" + }, + { + "cca2": "VN", + "currencies": { "VND": { "name": "Vietnamese đồng", "symbol": "₫" } }, + "languages": { "vie": "Vietnamese" }, + "flag": "🇻🇳" + }, + { + "cca2": "VU", + "currencies": { "VUV": { "name": "Vanuatu vatu", "symbol": "Vt" } }, + "languages": { "bis": "Bislama", "eng": "English", "fra": "French" }, + "flag": "🇻🇺" + }, + { + "cca2": "WF", + "currencies": { "XPF": { "name": "CFP franc", "symbol": "₣" } }, + "languages": { "fra": "French" }, + "flag": "🇼🇫" + }, + { + "cca2": "WS", + "currencies": { "WST": { "name": "Samoan tālā", "symbol": "T" } }, + "languages": { "eng": "English", "smo": "Samoan" }, + "flag": "🇼🇸" + }, + { + "cca2": "YE", + "currencies": { "YER": { "name": "Yemeni rial", "symbol": "﷼" } }, + "languages": { "ara": "Arabic" }, + "flag": "🇾🇪" + }, + { + "cca2": "ZA", + "currencies": { "ZAR": { "name": "South African rand", "symbol": "R" } }, + "languages": { + "afr": "Afrikaans", + "eng": "English", + "nbl": "Southern Ndebele", + "nso": "Northern Sotho", + "sot": "Southern Sotho", + "ssw": "Swazi", + "tsn": "Tswana", + "tso": "Tsonga", + "ven": "Venda", + "xho": "Xhosa", + "zul": "Zulu" + }, + "flag": "🇿🇦" + }, + { + "cca2": "ZM", + "currencies": { "ZMW": { "name": "Zambian kwacha", "symbol": "ZK" } }, + "languages": { "eng": "English" }, + "flag": "🇿🇲" + }, + { + "cca2": "ZW", + "currencies": { + "BWP": { "name": "Botswana pula", "symbol": "P" }, + "CNY": { "name": "Chinese yuan", "symbol": "¥" }, + "EUR": { "name": "Euro", "symbol": "€" }, + "GBP": { "name": "British pound", "symbol": "£" }, + "INR": { "name": "Indian rupee", "symbol": "₹" }, + "JPY": { "name": "Japanese yen", "symbol": "¥" }, + "USD": { "name": "United States dollar", "symbol": "$" }, + "ZAR": { "name": "South African rand", "symbol": "Rs" }, + "ZWB": { "name": "Zimbabwean bonds", "symbol": "$" } + }, + "languages": { + "bwg": "Chibarwe", + "eng": "English", + "kck": "Kalanga", + "khi": "Khoisan", + "ndc": "Ndau", + "nde": "Northern Ndebele", + "nya": "Chewa", + "sna": "Shona", + "sot": "Sotho", + "toi": "Tonga", + "tsn": "Tswana", + "tso": "Tsonga", + "ven": "Venda", + "xho": "Xhosa", + "zib": "Zimbabwean Sign Language" + }, + "flag": "🇿🇼" + } +] diff --git a/src/data/validations/cart.ts b/src/data/validations/cart.ts index 9057fb10..16c00d2f 100644 --- a/src/data/validations/cart.ts +++ b/src/data/validations/cart.ts @@ -5,6 +5,7 @@ import { products } from "~/data/db/schema"; export const cartItemSchema = z.object({ productId: z.number(), quantity: z.number().min(0), + storeId: z.number(), subcategory: z.string().optional().nullable(), }); @@ -45,4 +46,6 @@ export const deleteCartItemsSchema = z.object({ export const updateCartItemSchema = z.object({ quantity: z.number().min(0).default(1), + storeId: z.number().optional(), + subcategory: z.string().optional().nullable(), }); diff --git a/src/data/validations/error.ts b/src/data/validations/error.ts new file mode 100644 index 00000000..e0edc4f7 --- /dev/null +++ b/src/data/validations/error.ts @@ -0,0 +1,63 @@ +/* eslint-disable no-useless-escape */ +import { ZodSchema, type ZodIssue } from "zod"; +import * as z from "zod"; + +export type ErrorType = { [key: string]: string }; + +export const validate = ( + schema: ZodSchema, + data: FormData, +): { data: z.infer | null; errors: ErrorType | null } => { + try { + const validated = schema.parse(data); + return { data: validated, errors: null }; + } catch (error: any) { + const errors = error?.issues?.reduce( + // biome-ignore lint/performance/noAccumulatingSpread: + (o: any, e: ZodIssue) => ({ ...o, [e.path.join(".")]: e.message }), + {}, + ); + return { data: null, errors }; + } +}; + +export const updateData = ( + data: any, + setData: (arg: any) => void, + keys: (string | number)[], + value: string | number | boolean, +) => { + return setData(setValue(data, keys, value)); +}; + +export const parsePath = (path: string) => + path.split(/[\.\[\]'\"]/).filter((p) => p); + +export const resolveValue = (object: any, path: string) => + parsePath(path).reduce((o, p) => (o ? o[p] : null), object); + +// +// Returns a copy of the provided object with the provided value set +// at path specified in keys +export const setValue = ( + data: any, + keys: any[], + value: string | number | boolean, +) => { + const [key, ...restKeys] = keys; + + let children; + if (restKeys.length > 0) { + children = + data[key] && typeof data[key] === "object" ? data[key] + : Number.isInteger(key) ? [] + : {}; + + children = setValue(children, restKeys, value); + } + + const result = Array.isArray(data) ? [...data] : { ...data }; + result[key] = restKeys.length > 0 ? children : value; + + return result; +}; diff --git a/src/data/validations/params.ts b/src/data/validations/params.ts new file mode 100644 index 00000000..9dc3ad17 --- /dev/null +++ b/src/data/validations/params.ts @@ -0,0 +1,49 @@ +import * as z from "zod"; + +export const searchParamsSchema = z.object({ + page: z.string().default("1"), + per_page: z.string().default("10"), +}); + +export const productsSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("createdAt.desc"), + categories: z.string().optional(), + subcategories: z.string().optional(), + price_range: z.string().optional(), + store_ids: z.string().optional(), + store_page: z.string().optional(), +}); + +export const dashboardProductsSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("createdAt.desc"), + name: z.string().optional(), + category: z.string().optional(), + from: z.string().optional(), + to: z.string().optional(), +}); + +export const storesSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("productCount.desc"), + statuses: z.string().optional(), +}); + +export const purchasesSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("createdAt.desc"), + store: z.string().optional(), + status: z.string().optional(), +}); + +export const ordersSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("createdAt.desc"), + customer: z.string().optional(), + status: z.string().optional(), + from: z.string().optional(), + to: z.string().optional(), +}); + +export const customersSearchParamsSchema = searchParamsSchema.extend({ + sort: z.string().optional().default("createdAt.desc"), + email: z.string().optional(), + from: z.string().optional(), + to: z.string().optional(), +}); diff --git a/src/data/validations/product.ts b/src/data/validations/product.ts index 95cf5f06..568ba18c 100644 --- a/src/data/validations/product.ts +++ b/src/data/validations/product.ts @@ -21,6 +21,7 @@ export const productSchema = z.object({ .unknown() .refine((val) => { if (!Array.isArray(val)) return false; + // eslint-disable-next-line sonarjs/prefer-single-boolean-return if (val.some((file) => !(file instanceof File))) return false; return true; }, "Must be an array of File") @@ -38,32 +39,16 @@ export const getProductSchema = z.object({ storeId: z.number(), }); +export const getProductInventorySchema = z.object({ + id: z.number(), +}); + export const getProductsSchema = z.object({ limit: z.number().default(10), offset: z.number().default(0), - categories: z - .string() - .regex(/^\d+.\d+$/) - .optional() - .nullable(), - subcategories: z - .string() - .regex(/^\d+.\d+$/) - .optional() - .nullable(), - sort: z - .string() - .regex(/^\w+.(asc|desc)$/) - .optional() - .nullable(), - price_range: z - .string() - .regex(/^\d+-\d+$/) - .optional() - .nullable(), - store_ids: z - .string() - .regex(/^\d+.\d+$/) - .optional() - .nullable(), + categories: z.string().optional().nullable(), + subcategories: z.string().optional().nullable(), + sort: z.string().optional().nullable(), + price_range: z.string().optional().nullable(), + store_ids: z.string().optional().nullable(), }); diff --git a/src/env.mjs b/src/env.mjs index 827a2888..8270c3d1 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -2,6 +2,13 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; export const env = createEnv({ + shared: { + VERCEL_URL: z + .string() + .optional() + .transform((v) => (v ? `https://${v}` : undefined)), + PORT: z.coerce.number().optional().default(3000), + }, /** * Specify your server-side environment variables schema here. * This way you can ensure the app isn't built with invalid env. @@ -18,30 +25,43 @@ export const env = createEnv({ (str) => !str.includes("YOUR_MYSQL_URL_HERE"), "You forgot to change the default DATABASE_URL", ), - NEXTAUTH_SECRET: - process.env.NODE_ENV === "production" - ? z.string() - : z.string().optional(), + NEXTAUTH_SECRET: z.string().optional(), NEXTAUTH_URL: z.preprocess( // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL // Since NextAuth.js automatically uses the VERCEL_URL if present. - (str) => process.env.VERCEL_URL ?? str, + (str) => { + // Use Vercel URL if available, otherwise use the provided + // string, or default string to localhost in development. + return ( + process.env.VERCEL_URL ?? + str ?? + (process.env.NODE_ENV === "development" + ? "http://localhost:3000" + : undefined) + ); + }, // VERCEL_URL doesn't include `https` so it can't be validated as a URL process.env.VERCEL ? z.string() : z.string().url(), ), + ADDITIONAL_CSP_ORIGINS: z.string().optional(), + CHECK_BOT_ACTIVITY: z.string().optional(), CLERK_SECRET_KEY: z.string().optional(), + DEV_DEMO_NOTES: z.string().optional(), DISCORD_CLIENT_ID: z.string().optional(), DISCORD_CLIENT_SECRET: z.string().optional(), GITHUB_CLIENT_ID: z.string().optional(), GITHUB_CLIENT_SECRET: z.string().optional(), GOOGLE_CLIENT_ID: z.string().optional(), GOOGLE_CLIENT_SECRET: z.string().optional(), + LOGLIB_SITE_ID: z.string().optional(), STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID: z.string().optional(), STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID: z.string().optional(), STRIPE_SECRET_KEY: z.string().optional(), STRIPE_WEBHOOK_SIGNING_SECRET: z.string().optional(), - DEV_DEMO_NOTES: z.string().optional(), - LOGLIB_SITE_ID: z.string().optional(), + UPLOADTHING_APP_ID: z.string().optional(), + UPLOADTHING_SECRET: z.string().optional(), + UPSTASH_REDIS_REST_TOKEN: z.string().optional(), + UPSTASH_REDIS_REST_URL: z.string().optional(), }, /** @@ -49,14 +69,18 @@ export const env = createEnv({ * isn't built with invalid env vars. To expose them to the client, prefix them with `NEXT_PUBLIC_`. */ client: { - NEXT_PUBLIC_APP_URL: z.string(), - NEXT_PUBLIC_AUTH_PROVIDER: z.string(), + NEXT_PUBLIC_APP_URL: z.string().optional(), + NEXT_PUBLIC_AUTH_PROVIDER: z.string().optional(), NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().optional(), + NEXT_PUBLIC_CSP_XSS: z.string().optional(), NEXT_PUBLIC_CMS_PROVIDER: z.string().optional(), NEXT_PUBLIC_DB_LIBRARY: z.string().optional(), - NEXT_PUBLIC_DB_PROVIDER: z.string(), + NEXT_PUBLIC_DB_PROVIDER: z.string().optional(), NEXT_PUBLIC_INTL_PROVIDER: z.string().optional(), + NEXT_PUBLIC_IS_LIVE: z.string().optional(), NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: z.string().optional(), + NEXT_PUBLIC_HIDE_ENV_INFO: z.string().optional(), + NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY: z.string().optional(), }, /** @@ -64,7 +88,12 @@ export const env = createEnv({ * (for example the middlewares) or client-side so we need to destruct it manually. */ runtimeEnv: { - // Specify server-side environment variables here + PORT: process.env.PORT, + VERCEL_URL: process.env.VERCEL_URL, + + // Specify server-side environment variables here: + ADDITIONAL_CSP_ORIGINS: process.env.ADDITIONAL_CSP_ORIGINS, + CHECK_BOT_ACTIVITY: process.env.CHECK_BOT_ACTIVITY, CLERK_SECRET_KEY: process.env.CLERK_SECRET_KEY, DATABASE_URL: process.env.DATABASE_URL, DEV_DEMO_NOTES: process.env.DEV_DEMO_NOTES, @@ -84,25 +113,37 @@ export const env = createEnv({ process.env.STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID, STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SIGNING_SECRET: process.env.STRIPE_WEBHOOK_SIGNING_SECRET, + UPLOADTHING_APP_ID: process.env.UPLOADTHING_APP_ID, + UPLOADTHING_SECRET: process.env.UPLOADTHING_SECRET, + UPSTASH_REDIS_REST_TOKEN: process.env.UPSTASH_REDIS_REST_TOKEN, + UPSTASH_REDIS_REST_URL: process.env.UPSTASH_REDIS_REST_URL, - // Specify client-side environment variables here + // Specify client-side environment variables here: NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_AUTH_PROVIDER: process.env.NEXT_PUBLIC_AUTH_PROVIDER, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, + NEXT_PUBLIC_CSP_XSS: process.env.NEXT_PUBLIC_CSP_XSS, NEXT_PUBLIC_CMS_PROVIDER: process.env.NEXT_PUBLIC_CMS_PROVIDER, NEXT_PUBLIC_DB_LIBRARY: process.env.NEXT_PUBLIC_DB_LIBRARY, NEXT_PUBLIC_DB_PROVIDER: process.env.NEXT_PUBLIC_DB_PROVIDER, NEXT_PUBLIC_INTL_PROVIDER: process.env.NEXT_PUBLIC_INTL_PROVIDER, + NEXT_PUBLIC_IS_LIVE: process.env.NEXT_PUBLIC_IS_LIVE, NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, + NEXT_PUBLIC_HIDE_ENV_INFO: process.env.NEXT_PUBLIC_HIDE_ENV_INFO, + NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY: + process.env.NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY, }, /** * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. * uThis is especially useful for CI on Github or for the Docker builds. */ - skipValidation: !!process.env.SKIP_ENV_VALIDATION, + skipValidation: + !!process.env.CI || + !!process.env.SKIP_ENV_VALIDATION || + process.env.npm_lifecycle_event === "lint", /** * Makes it so that empty strings are treated as undefined. diff --git a/src/forms/add-product-form.tsx b/src/forms/add-product-form.tsx index ef2c8f3e..d9a18406 100644 --- a/src/forms/add-product-form.tsx +++ b/src/forms/add-product-form.tsx @@ -3,17 +3,15 @@ import * as React from "react"; import Image from "next/image"; import { zodResolver } from "@hookform/resolvers/zod"; -import { generateReactHelpers } from "@uploadthing/react/hooks"; import { type FileWithPreview } from "~/types"; import { catchError, isArrayOfFile } from "~/utils"; import { useForm } from "react-hook-form"; import { toast } from "react-hot-toast"; import type { z } from "zod"; -import { addProductAction, checkProductAction } from "~/server/actions/product"; -import { getSubcategories } from "~/server/config/products"; import { products } from "~/data/db/schema"; import { productSchema } from "~/data/validations/product"; +import { env } from "~/env.mjs"; import { FileDialog } from "~/islands/file-dialog"; import { Icons } from "~/islands/icons"; import { Button } from "~/islands/primitives/button"; @@ -37,27 +35,46 @@ import { } from "~/islands/primitives/select"; import { Textarea } from "~/islands/primitives/textarea"; import { Zoom } from "~/islands/zoom-image"; -import { type OurFileRouter } from "~/app/api/uploadthing/core"; +import { addProductAction, checkProductAction } from "~/server/actions/product"; +import { getSubcategories } from "~/server/config/products"; +import { useUploadThing } from "~/utils/other/uploads/uploadthing"; -type AddProductFormProps = { +interface AddProductFormProps { storeId: number; -}; +} type Inputs = z.infer; -const { useUploadThing } = generateReactHelpers(); - export function AddProductForm({ storeId }: AddProductFormProps) { - const [files, setFiles] = React.useState(null); + // todo: fix strange product images browser console warning message: + // todo: "Ignoring unsupported entryTypes: largest-contentful-paint" + const [files, setFiles] = React.useState(null); const [isPending, startTransition] = React.useTransition(); - const { isUploading, startUpload } = useUploadThing("productImage"); + const { startUpload, isUploading } = useUploadThing("imageUploader", { + onUploadError: (err) => { + const errorMessage = `An unknown error occurred during image upload (${err.message})`; + console.error("❌ Image upload error:", errorMessage); + toast.error(errorMessage); + throw new Error(err.message); + }, + onClientUploadComplete: (res) => { + if (!res) return; + toast.success("Your images were uploaded successfully"); + }, + }); const form = useForm({ resolver: zodResolver(productSchema), defaultValues: { - category: "furniture", + name: "", + description: "", + price: "", + inventory: NaN, + category: "clothing", + subcategory: "", + images: [], }, }); @@ -66,28 +83,53 @@ export function AddProductForm({ storeId }: AddProductFormProps) { function onSubmit(data: Inputs) { startTransition(async () => { try { - await checkProductAction({ + const checkResult = await checkProductAction({ name: data.name, }); - const images = isArrayOfFile(data.images) - ? await startUpload(data.images).then((res) => { - const formattedImages = res?.map((image) => ({ - id: image.key, - name: image.key.split("_")[1] ?? image.key, - url: image.url, - })); - return formattedImages ?? null; - }) - : null; + if (checkResult && checkResult.status === "error") { + toast.error(checkResult.message); + return; // Stop further execution + } - await addProductAction({ - ...data, - storeId, - images, - }); + if (isArrayOfFile(data.images)) { + toast.promise( + startUpload(data.images) + .then((res) => { + const formattedImages = res?.map((image) => ({ + id: image.key, + name: image.key.split("_")[1] ?? image.key, + url: image.url, + })); + return formattedImages ?? null; + }) + .then((images) => { + return addProductAction({ + ...data, + storeId, + images, + }); + }), + { + loading: "Uploading images...", + success: "Product added successfully.", + error: "Error uploading images.", + }, + ); + } else { + const addResult = await addProductAction({ + ...data, + storeId, + images: null, + }); - toast.success("Product added successfully."); + if (addResult && addResult.status === "error") { + toast.error(addResult.message); + return; + } + + toast.success("Product added successfully."); + } form.reset(); setFiles(null); @@ -101,33 +143,37 @@ export function AddProductForm({ storeId }: AddProductFormProps) { void form.handleSubmit(onSubmit)(...args)} + onSubmit={form.handleSubmit(onSubmit)} > - - Name - - - - - - - Description - -