From f670bf76b6e87d5f4d20821df31b5cb4d5eb23cd Mon Sep 17 00:00:00 2001 From: Mayank Date: Sun, 30 Jun 2024 00:16:13 +0530 Subject: [PATCH] Initial commit --- .changeset/README.md | 8 + .changeset/config.json | 11 + .deepsource.toml | 22 + .github/FUNDING.yml | 14 + .github/ISSUE_TEMPLATE/bug_report.md | 40 + .github/ISSUE_TEMPLATE/feature_request.md | 19 + .github/workflows/docs.yml | 45 + .github/workflows/manual-publish.yml | 44 + .github/workflows/publish.yml | 46 + .github/workflows/setup.yml | 32 + .github/workflows/test.yml | 32 + .gitignore | 16 + .npmrc | 1 + .prettierignore | 6 + .prettierrc | 8 + .tkb | 136 + .vscode/extensions.json | 3 + .vscode/settings.json | 17 + CODE_OF_CONDUCT.md | 53 + FEATURED.md | 11 + LICENSE | 373 + README.md | 89 + SECURITY.md | 23 + TODO.md | 52 + contributing.md | 95 + devcontainer.json | 18 + docs/.nojekyll | 1 + docs/assets/highlight.css | 85 + docs/assets/icons.js | 18 + docs/assets/icons.svg | 1 + docs/assets/main.js | 60 + docs/assets/navigation.js | 1 + docs/assets/search.js | 1 + docs/assets/style.css | 1448 ++ ...iner_loader_container.LoaderContainer.html | 2 + .../functions/hooks_use_loader.useLoader.html | 1 + .../server_bars_bars1_bars1.Bars1.html | 8 + .../server_bars_bars2_bars2.Bars2.html | 8 + .../server_common_base_base.Base.html | 3 + .../server_dots_dots1_dots1.Dots1.html | 8 + .../server_dots_dots2_dots2.Dots2.html | 8 + docs/hierarchy.html | 1 + docs/index.html | 69 + ...ainer._internal_.LoaderContainerProps.html | 3 + .../server_common_base_base.BaseProps.html | 8 + ...ommon_base_base._internal_.OtherProps.html | 5 + ...ots_dots2_dots2._internal_.Dots2Props.html | 10 + ...container_loader_container._internal_.html | 2 + ...ent_loader_container_loader_container.html | 3 + docs/modules/constants.html | 2 + docs/modules/hooks_use_loader.html | 2 + docs/modules/server_bars_bars1_bars1.html | 2 + docs/modules/server_bars_bars2_bars2.html | 2 + .../server_common_base_base._internal_.html | 2 + docs/modules/server_common_base_base.html | 4 + docs/modules/server_dots_dots1_dots1.html | 2 + .../server_dots_dots2_dots2._internal_.html | 2 + docs/modules/server_dots_dots2_dots2.html | 3 + docs/variables/constants.LOADER_RGS_KEY.html | 2 + examples/express/.eslintrc.js | 8 + examples/express/package.json | 40 + examples/express/src/__tests__/server.test.ts | 22 + examples/express/src/index.ts | 9 + examples/express/src/server.ts | 23 + examples/express/tsconfig.json | 9 + examples/express/tsup.config.ts | 8 + examples/express/turbo.json | 12 + examples/nextjs/.eslintrc.js | 8 + examples/nextjs/cache/config.json | 6 + examples/nextjs/next-env.d.ts | 5 + examples/nextjs/next.config.js | 3 + examples/nextjs/package.json | 32 + examples/nextjs/public/favicon.ico | Bin 0 -> 15086 bytes examples/nextjs/src/app/button.module.css | 15 + examples/nextjs/src/app/button.tsx | 21 + examples/nextjs/src/app/layout.tsx | 27 + examples/nextjs/src/app/page.tsx | 17 + examples/nextjs/src/app/styles.css | 14 + examples/nextjs/tsconfig.json | 13 + examples/nextjs/turbo.json | 13 + examples/remix/.eslintrc.js | 8 + examples/remix/.gitignore | 11 + examples/remix/README.md | 34 + examples/remix/app/entry.client.tsx | 23 + examples/remix/app/entry.server.tsx | 14 + examples/remix/app/root.tsx | 42 + examples/remix/app/routes/_index.tsx | 11 + examples/remix/app/styles.css | 68 + examples/remix/package.json | 37 + examples/remix/public/favicon.ico | Bin 0 -> 16958 bytes examples/remix/remix.config.js | 9 + examples/remix/remix.env.d.ts | 2 + examples/remix/server.js | 4 + examples/remix/tsconfig.json | 18 + examples/remix/turbo.json | 13 + examples/vite/.eslintrc.js | 8 + examples/vite/index.html | 12 + examples/vite/package.json | 30 + examples/vite/public/favicon.ico | Bin 0 -> 372526 bytes examples/vite/src/app/index.tsx | 28 + examples/vite/src/app/styles.css | 45 + examples/vite/src/index.css | 22 + examples/vite/src/main.tsx | 16 + examples/vite/tsconfig.json | 9 + examples/vite/turbo.json | 12 + examples/vite/vite.config.ts | 6 + lib/.eslintrc.js | 8 + lib/CHANGELOG.md | 91 + lib/README.md | 132 + lib/package.json | 90 + lib/src/client/index.ts | 10 + lib/src/client/loader-container/index.ts | 3 + .../loader-container.module.scss | 28 + .../loader-container.test.tsx | 15 + .../loader-container/loader-container.tsx | 20 + lib/src/constants.ts | 3 + lib/src/declaration.d.ts | 2 + lib/src/hooks/index.ts | 1 + lib/src/hooks/use-loader.test.tsx | 17 + lib/src/hooks/use-loader.ts | 11 + lib/src/index.ts | 9 + lib/src/server/bars/bars1/bars1.module.scss | 28 + lib/src/server/bars/bars1/bars1.test.tsx | 11 + lib/src/server/bars/bars1/bars1.tsx | 14 + lib/src/server/bars/bars1/index.ts | 1 + lib/src/server/bars/bars2/bars2.module.scss | 45 + lib/src/server/bars/bars2/bars2.test.tsx | 11 + lib/src/server/bars/bars2/bars2.tsx | 14 + lib/src/server/bars/bars2/index.ts | 1 + lib/src/server/bars/index.ts | 4 + lib/src/server/common/base/base.test.tsx | 12 + lib/src/server/common/base/base.tsx | 38 + lib/src/server/common/base/index.ts | 1 + lib/src/server/common/index.ts | 3 + lib/src/server/dots/dots1/dots1.module.scss | 16 + lib/src/server/dots/dots1/dots1.test.tsx | 11 + lib/src/server/dots/dots1/dots1.tsx | 14 + lib/src/server/dots/dots1/index.ts | 1 + lib/src/server/dots/dots2/dots2.module.scss | 37 + lib/src/server/dots/dots2/dots2.test.tsx | 11 + lib/src/server/dots/dots2/dots2.tsx | 19 + lib/src/server/dots/dots2/index.ts | 1 + lib/src/server/dots/index.ts | 4 + lib/src/server/index.ts | 9 + lib/tsconfig-build.json | 12 + lib/tsconfig.json | 9 + lib/tsup.config.ts | 23 + lib/turbo.json | 12 + lib/vitest.config.ts | 18 + package.json | 44 + packages/config-eslint/README.md | 3 + packages/config-eslint/index.js | 34 + packages/config-eslint/next.js | 43 + packages/config-eslint/package.json | 13 + packages/config-eslint/react.js | 39 + packages/config-eslint/remix.js | 43 + packages/config-eslint/server.js | 46 + packages/config-typescript/base.json | 24 + packages/config-typescript/nextjs.json | 18 + packages/config-typescript/package.json | 9 + packages/config-typescript/react-app.json | 17 + packages/config-typescript/react-library.json | 12 + packages/config-typescript/remix.json | 18 + packages/config-typescript/vite.json | 17 + packages/jest-presets/browser/jest-preset.js | 14 + packages/jest-presets/node/jest-preset.js | 13 + packages/jest-presets/package.json | 16 + packages/logger/.eslintrc.js | 11 + packages/logger/package.json | 30 + packages/logger/src/__tests__/log.test.ts | 11 + packages/logger/src/index.ts | 4 + packages/logger/tsconfig.json | 10 + packages/logger/tsup.config.ts | 9 + packages/logger/turbo.json | 12 + packages/shared/.eslintrc.js | 8 + packages/shared/CHANGELOG.md | 91 + packages/shared/package.json | 58 + .../shared/src/client/demo/demo.module.scss | 29 + packages/shared/src/client/demo/demo.test.tsx | 11 + packages/shared/src/client/demo/demo.tsx | 24 + packages/shared/src/client/demo/index.ts | 4 + .../drawer-button/drawer-button.module.scss | 42 + .../drawer-button/drawer-button.test.tsx | 12 + .../client/drawer-button/drawer-button.tsx | 25 + .../shared/src/client/drawer-button/index.ts | 4 + .../global-loader/global-loader.test.tsx | 11 + .../client/global-loader/global-loader.tsx | 25 + .../shared/src/client/global-loader/index.ts | 4 + .../src/client/header/header.module.scss | 91 + packages/shared/src/client/header/header.tsx | 34 + packages/shared/src/client/header/index.ts | 4 + .../shared/src/client/header/theme-switch.tsx | 15 + packages/shared/src/client/index.ts | 13 + packages/shared/src/declaration.d.ts | 2 + packages/shared/src/global.scss | 82 + packages/shared/src/index.ts | 3 + packages/shared/src/server/cards/card.tsx | 19 + .../shared/src/server/cards/cards.module.scss | 76 + .../shared/src/server/cards/cards.test.tsx | 11 + packages/shared/src/server/cards/cards.tsx | 13 + packages/shared/src/server/cards/index.ts | 2 + packages/shared/src/server/index.ts | 11 + .../shared/src/server/landing-page/index.ts | 2 + .../landing-page/landing-page.module.scss | 89 + .../server/landing-page/landing-page.test.tsx | 11 + .../src/server/landing-page/landing-page.tsx | 57 + packages/shared/src/server/layout/index.ts | 2 + .../src/server/layout/layout.module.scss | 12 + .../shared/src/server/layout/layout.test.tsx | 11 + packages/shared/src/server/layout/layout.tsx | 32 + packages/shared/src/server/logo/index.ts | 2 + .../shared/src/server/logo/logo.module.scss | 69 + packages/shared/src/server/logo/logo.tsx | 29 + packages/shared/tsconfig-build.json | 12 + packages/shared/tsconfig.json | 9 + packages/shared/tsup.config.ts | 19 + packages/shared/turbo.json | 12 + packages/shared/vitest.config.ts | 18 + plopfile.js | 10 + pnpm-lock.yaml | 14173 ++++++++++++++++ pnpm-workspace.yaml | 5 + popper.png | Bin 0 -> 125685 bytes scripts/.tkb | 162 + scripts/doc.js | 20 + scripts/featured.json | 37 + scripts/hook.js | 62 + scripts/lite.js | 29 + scripts/manual-publish.js | 80 + scripts/package.json | 7 + scripts/publish.js | 51 + scripts/rc.js | 203 + scripts/rebrand.config.json | 5 + scripts/rebrand.js | 133 + scripts/rebrander.js | 166 + scripts/templates/component.hbs | 25 + scripts/templates/component.module.hbs | 3 + scripts/templates/component.test.hbs | 13 + scripts/templates/hook.hbs | 24 + scripts/templates/hook.test.hbs | 14 + scripts/update-pm.js | 16 + scripts/update-security-md.js | 15 + tsconfig.docs.json | 9 + turbo.json | 37 + typedoc.config.js | 20 + 244 files changed, 21537 insertions(+) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json create mode 100644 .deepsource.toml create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/manual-publish.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/setup.yml create mode 100644 .github/workflows/test.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .tkb create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 CODE_OF_CONDUCT.md create mode 100644 FEATURED.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 SECURITY.md create mode 100644 TODO.md create mode 100644 contributing.md create mode 100644 devcontainer.json create mode 100644 docs/.nojekyll create mode 100644 docs/assets/highlight.css create mode 100644 docs/assets/icons.js create mode 100644 docs/assets/icons.svg create mode 100644 docs/assets/main.js create mode 100644 docs/assets/navigation.js create mode 100644 docs/assets/search.js create mode 100644 docs/assets/style.css create mode 100644 docs/functions/client_loader_container_loader_container.LoaderContainer.html create mode 100644 docs/functions/hooks_use_loader.useLoader.html create mode 100644 docs/functions/server_bars_bars1_bars1.Bars1.html create mode 100644 docs/functions/server_bars_bars2_bars2.Bars2.html create mode 100644 docs/functions/server_common_base_base.Base.html create mode 100644 docs/functions/server_dots_dots1_dots1.Dots1.html create mode 100644 docs/functions/server_dots_dots2_dots2.Dots2.html create mode 100644 docs/hierarchy.html create mode 100644 docs/index.html create mode 100644 docs/interfaces/client_loader_container_loader_container._internal_.LoaderContainerProps.html create mode 100644 docs/interfaces/server_common_base_base.BaseProps.html create mode 100644 docs/interfaces/server_common_base_base._internal_.OtherProps.html create mode 100644 docs/interfaces/server_dots_dots2_dots2._internal_.Dots2Props.html create mode 100644 docs/modules/client_loader_container_loader_container._internal_.html create mode 100644 docs/modules/client_loader_container_loader_container.html create mode 100644 docs/modules/constants.html create mode 100644 docs/modules/hooks_use_loader.html create mode 100644 docs/modules/server_bars_bars1_bars1.html create mode 100644 docs/modules/server_bars_bars2_bars2.html create mode 100644 docs/modules/server_common_base_base._internal_.html create mode 100644 docs/modules/server_common_base_base.html create mode 100644 docs/modules/server_dots_dots1_dots1.html create mode 100644 docs/modules/server_dots_dots2_dots2._internal_.html create mode 100644 docs/modules/server_dots_dots2_dots2.html create mode 100644 docs/variables/constants.LOADER_RGS_KEY.html create mode 100644 examples/express/.eslintrc.js create mode 100644 examples/express/package.json create mode 100644 examples/express/src/__tests__/server.test.ts create mode 100644 examples/express/src/index.ts create mode 100644 examples/express/src/server.ts create mode 100644 examples/express/tsconfig.json create mode 100644 examples/express/tsup.config.ts create mode 100644 examples/express/turbo.json create mode 100644 examples/nextjs/.eslintrc.js create mode 100644 examples/nextjs/cache/config.json create mode 100644 examples/nextjs/next-env.d.ts create mode 100644 examples/nextjs/next.config.js create mode 100644 examples/nextjs/package.json create mode 100644 examples/nextjs/public/favicon.ico create mode 100644 examples/nextjs/src/app/button.module.css create mode 100644 examples/nextjs/src/app/button.tsx create mode 100644 examples/nextjs/src/app/layout.tsx create mode 100644 examples/nextjs/src/app/page.tsx create mode 100644 examples/nextjs/src/app/styles.css create mode 100644 examples/nextjs/tsconfig.json create mode 100644 examples/nextjs/turbo.json create mode 100644 examples/remix/.eslintrc.js create mode 100644 examples/remix/.gitignore create mode 100644 examples/remix/README.md create mode 100644 examples/remix/app/entry.client.tsx create mode 100644 examples/remix/app/entry.server.tsx create mode 100644 examples/remix/app/root.tsx create mode 100644 examples/remix/app/routes/_index.tsx create mode 100644 examples/remix/app/styles.css create mode 100644 examples/remix/package.json create mode 100644 examples/remix/public/favicon.ico create mode 100644 examples/remix/remix.config.js create mode 100644 examples/remix/remix.env.d.ts create mode 100644 examples/remix/server.js create mode 100644 examples/remix/tsconfig.json create mode 100644 examples/remix/turbo.json create mode 100644 examples/vite/.eslintrc.js create mode 100644 examples/vite/index.html create mode 100644 examples/vite/package.json create mode 100644 examples/vite/public/favicon.ico create mode 100644 examples/vite/src/app/index.tsx create mode 100644 examples/vite/src/app/styles.css create mode 100644 examples/vite/src/index.css create mode 100644 examples/vite/src/main.tsx create mode 100644 examples/vite/tsconfig.json create mode 100644 examples/vite/turbo.json create mode 100644 examples/vite/vite.config.ts create mode 100644 lib/.eslintrc.js create mode 100644 lib/CHANGELOG.md create mode 100644 lib/README.md create mode 100644 lib/package.json create mode 100644 lib/src/client/index.ts create mode 100644 lib/src/client/loader-container/index.ts create mode 100644 lib/src/client/loader-container/loader-container.module.scss create mode 100644 lib/src/client/loader-container/loader-container.test.tsx create mode 100644 lib/src/client/loader-container/loader-container.tsx create mode 100644 lib/src/constants.ts create mode 100644 lib/src/declaration.d.ts create mode 100644 lib/src/hooks/index.ts create mode 100644 lib/src/hooks/use-loader.test.tsx create mode 100644 lib/src/hooks/use-loader.ts create mode 100644 lib/src/index.ts create mode 100644 lib/src/server/bars/bars1/bars1.module.scss create mode 100644 lib/src/server/bars/bars1/bars1.test.tsx create mode 100644 lib/src/server/bars/bars1/bars1.tsx create mode 100644 lib/src/server/bars/bars1/index.ts create mode 100644 lib/src/server/bars/bars2/bars2.module.scss create mode 100644 lib/src/server/bars/bars2/bars2.test.tsx create mode 100644 lib/src/server/bars/bars2/bars2.tsx create mode 100644 lib/src/server/bars/bars2/index.ts create mode 100644 lib/src/server/bars/index.ts create mode 100644 lib/src/server/common/base/base.test.tsx create mode 100644 lib/src/server/common/base/base.tsx create mode 100644 lib/src/server/common/base/index.ts create mode 100644 lib/src/server/common/index.ts create mode 100644 lib/src/server/dots/dots1/dots1.module.scss create mode 100644 lib/src/server/dots/dots1/dots1.test.tsx create mode 100644 lib/src/server/dots/dots1/dots1.tsx create mode 100644 lib/src/server/dots/dots1/index.ts create mode 100644 lib/src/server/dots/dots2/dots2.module.scss create mode 100644 lib/src/server/dots/dots2/dots2.test.tsx create mode 100644 lib/src/server/dots/dots2/dots2.tsx create mode 100644 lib/src/server/dots/dots2/index.ts create mode 100644 lib/src/server/dots/index.ts create mode 100644 lib/src/server/index.ts create mode 100644 lib/tsconfig-build.json create mode 100644 lib/tsconfig.json create mode 100644 lib/tsup.config.ts create mode 100644 lib/turbo.json create mode 100644 lib/vitest.config.ts create mode 100644 package.json create mode 100644 packages/config-eslint/README.md create mode 100644 packages/config-eslint/index.js create mode 100644 packages/config-eslint/next.js create mode 100644 packages/config-eslint/package.json create mode 100644 packages/config-eslint/react.js create mode 100644 packages/config-eslint/remix.js create mode 100644 packages/config-eslint/server.js create mode 100644 packages/config-typescript/base.json create mode 100644 packages/config-typescript/nextjs.json create mode 100644 packages/config-typescript/package.json create mode 100644 packages/config-typescript/react-app.json create mode 100644 packages/config-typescript/react-library.json create mode 100644 packages/config-typescript/remix.json create mode 100644 packages/config-typescript/vite.json create mode 100644 packages/jest-presets/browser/jest-preset.js create mode 100644 packages/jest-presets/node/jest-preset.js create mode 100644 packages/jest-presets/package.json create mode 100644 packages/logger/.eslintrc.js create mode 100644 packages/logger/package.json create mode 100644 packages/logger/src/__tests__/log.test.ts create mode 100644 packages/logger/src/index.ts create mode 100644 packages/logger/tsconfig.json create mode 100644 packages/logger/tsup.config.ts create mode 100644 packages/logger/turbo.json create mode 100644 packages/shared/.eslintrc.js create mode 100644 packages/shared/CHANGELOG.md create mode 100644 packages/shared/package.json create mode 100644 packages/shared/src/client/demo/demo.module.scss create mode 100644 packages/shared/src/client/demo/demo.test.tsx create mode 100644 packages/shared/src/client/demo/demo.tsx create mode 100644 packages/shared/src/client/demo/index.ts create mode 100644 packages/shared/src/client/drawer-button/drawer-button.module.scss create mode 100644 packages/shared/src/client/drawer-button/drawer-button.test.tsx create mode 100644 packages/shared/src/client/drawer-button/drawer-button.tsx create mode 100644 packages/shared/src/client/drawer-button/index.ts create mode 100644 packages/shared/src/client/global-loader/global-loader.test.tsx create mode 100644 packages/shared/src/client/global-loader/global-loader.tsx create mode 100644 packages/shared/src/client/global-loader/index.ts create mode 100644 packages/shared/src/client/header/header.module.scss create mode 100644 packages/shared/src/client/header/header.tsx create mode 100644 packages/shared/src/client/header/index.ts create mode 100644 packages/shared/src/client/header/theme-switch.tsx create mode 100644 packages/shared/src/client/index.ts create mode 100644 packages/shared/src/declaration.d.ts create mode 100644 packages/shared/src/global.scss create mode 100644 packages/shared/src/index.ts create mode 100644 packages/shared/src/server/cards/card.tsx create mode 100644 packages/shared/src/server/cards/cards.module.scss create mode 100644 packages/shared/src/server/cards/cards.test.tsx create mode 100644 packages/shared/src/server/cards/cards.tsx create mode 100644 packages/shared/src/server/cards/index.ts create mode 100644 packages/shared/src/server/index.ts create mode 100644 packages/shared/src/server/landing-page/index.ts create mode 100644 packages/shared/src/server/landing-page/landing-page.module.scss create mode 100644 packages/shared/src/server/landing-page/landing-page.test.tsx create mode 100644 packages/shared/src/server/landing-page/landing-page.tsx create mode 100644 packages/shared/src/server/layout/index.ts create mode 100644 packages/shared/src/server/layout/layout.module.scss create mode 100644 packages/shared/src/server/layout/layout.test.tsx create mode 100644 packages/shared/src/server/layout/layout.tsx create mode 100644 packages/shared/src/server/logo/index.ts create mode 100644 packages/shared/src/server/logo/logo.module.scss create mode 100644 packages/shared/src/server/logo/logo.tsx create mode 100644 packages/shared/tsconfig-build.json create mode 100644 packages/shared/tsconfig.json create mode 100644 packages/shared/tsup.config.ts create mode 100644 packages/shared/turbo.json create mode 100644 packages/shared/vitest.config.ts create mode 100644 plopfile.js create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 popper.png create mode 100644 scripts/.tkb create mode 100644 scripts/doc.js create mode 100644 scripts/featured.json create mode 100644 scripts/hook.js create mode 100644 scripts/lite.js create mode 100644 scripts/manual-publish.js create mode 100644 scripts/package.json create mode 100644 scripts/publish.js create mode 100644 scripts/rc.js create mode 100644 scripts/rebrand.config.json create mode 100644 scripts/rebrand.js create mode 100644 scripts/rebrander.js create mode 100644 scripts/templates/component.hbs create mode 100644 scripts/templates/component.module.hbs create mode 100644 scripts/templates/component.test.hbs create mode 100644 scripts/templates/hook.hbs create mode 100644 scripts/templates/hook.test.hbs create mode 100644 scripts/update-pm.js create mode 100644 scripts/update-security-md.js create mode 100644 tsconfig.docs.json create mode 100644 turbo.json create mode 100644 typedoc.config.js diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..f7e8ad09 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": ["@changesets/cli/commit", { "skipCI": false }], + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": ["@example/*"] +} diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 00000000..c3cbc5b2 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,22 @@ +version = 1 + +test_patterns = ["**/*.test.*"] + +exclude_patterns = [ + "docs/**", + "**/*.test.*" +] + +[[analyzers]] +name = "javascript" + + [analyzers.meta] + plugins = ["react"] + environment = [ + "nodejs", + "vitest", + "browser" + ] + +[[transformers]] +name = "prettier" \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..95f5d426 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,14 @@ +# These are supported funding model platforms + +github: [mayank1513] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +polar: mayank1513 +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: [https://pages.razorpay.com/mayank1513] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..9b77ea71 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,40 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "" +labels: "" +assignees: "" +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + +- OS: [e.g. iOS] +- Browser [e.g. chrome, safari] +- Version [e.g. 22] + +**Smartphone (please complete the following information):** + +- Device: [e.g. iPhone6] +- OS: [e.g. iOS8.1] +- Browser [e.g. stock browser, safari] +- Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..2bc5d5f7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "" +labels: "" +assignees: "" +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..3798ee78 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,45 @@ +name: Update dependencies and Docs + +on: + push: + branches: [main] + schedule: + - cron: "0 */8 * * *" +jobs: + generate-docs: + if: github.event.repository.owner.login == 'react18-tools' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + registry-url: https://registry.npmjs.org + node-version: 20 + - name: Setup Git + run: | + git config --global user.name "mayank1513" + git config --global user.email "mayank.srmu@gmail.com" + git fetch + git checkout main + git pull + - run: npm i -g pnpm && pnpm i --no-frozen-lockfile + name: Install dependencies + - name: Test + run: npm test + - run: git stash --include-untracked + name: clean up working directory + - run: npx @turbo/codemod update . && pnpm update --latest -r + name: Update dependencies + - run: pnpm build + name: Build all apps to make sure it is not broken due to dependency upgrades + - name: Run unit tests + run: pnpm test + - name: Generate/update docs + run: pnpm doc + - name: Save upgraded packages back to repo + run: git add . && git commit -m "upgrade deps && docs" && git push origin main diff --git a/.github/workflows/manual-publish.yml b/.github/workflows/manual-publish.yml new file mode 100644 index 00000000..19e907aa --- /dev/null +++ b/.github/workflows/manual-publish.yml @@ -0,0 +1,44 @@ +name: Manually publish to NPM - Apply changeset in the workflow. + +# publish only when package json has changed - assuming version upgrade +on: + workflow_dispatch: + +jobs: + publish: + if: github.event.repository.owner.login == 'react18-tools' + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + node-version: 20 + registry-url: https://registry.npmjs.org + - name: Setup Git + run: | + git config --global user.name "mayank1513" + git config --global user.email "mayank.srmu@gmail.com" + - run: npm i -g pnpm && pnpm i + name: Install dependencies + # fail and not publish if any of the unit tests are failing + - name: Test + run: pnpm test + - name: clean up working directory + run: git status && git clean -f -d && git status + # - name: Copy Readme file + # run: cp ./README.md ./lib # todo: uncomment this line while rebranding + - name: Apply changesets, publish and create release, branches and tags + run: node ./scripts/manual-publish.js + env: + BRANCH: ${{ github.ref_name }} + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..5c2216fa --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,46 @@ +name: Publish to NPM + +# publish only when package json has changed - assuming version upgrade +on: + push: + branches: [main] + paths: "lib/package.json" + +jobs: + publish: + # Don't run just after creating repo from template + # Also avoid running after merging set-up PR + if: github.run_number > 2 && github.event.repository.owner.login == 'react18-tools' + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + with: + node-version: 20 + registry-url: https://registry.npmjs.org + - name: Setup Git + run: | + git config --global user.name "mayank1513" + git config --global user.email "mayank.srmu@gmail.com" + - run: npm i -g pnpm && pnpm i + name: Install dependencies + # fail and not publish if any of the unit tests are failing + - name: Test + run: pnpm test + # - name: Copy Readme file + # run: cp ./README.md ./lib # will be uncommented while rebranding + - name: Apply changesets, publish and create release, branches and tags + run: node ./scripts/publish.js + env: + BRANCH: ${{ github.ref_name }} + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml new file mode 100644 index 00000000..fd6f0370 --- /dev/null +++ b/.github/workflows/setup.yml @@ -0,0 +1,32 @@ +name: setup repo + +on: + create: + workflow_dispatch: + +jobs: + setup: + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Setup Git + run: | + git config --global user.name "Mayank Chaudhari" + git config --global user.email "mayank.srmu@gmail.com" + git fetch + git checkout main + - name: Set up repo + run: | + git rm .tkb + mv ./scripts/.tkb ./.tkb + rm -rf ./docs + - name: Push changes back to repo + run: | + git add . + git commit -m 'Craete rebrand config πŸ’– Mayank Kumar Chaudhari [skip ci]' + git push origin main diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..69f8eb80 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,32 @@ +name: test + +on: + push: + pull_request: + schedule: + - cron: "5 */8 * * *" +jobs: + test: + if: github.run_number != 1 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + - run: npm i -g pnpm && pnpm i + name: Install dependencies + - name: Run unit tests + run: pnpm test + - name: Upload coverage reports to Codecov + continue-on-error: true + uses: codecov/codecov-action@v4 + with: + directory: ./lib + token: ${{ secrets.CODECOV_TOKEN }} + - uses: paambaati/codeclimate-action@v8.0.0 + continue-on-error: true + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + with: + coverageLocations: ./lib/coverage/*.xml:clover diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..544fb870 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +.DS_Store +node_modules +.turbo +*.log +.next +dist +dist-ssr +*.local +.env +.cache + +# test coverage +coverage + +# temporary files +tsup.config.bundled* diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..ded82e2f --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +auto-install-peers = true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..e58c2191 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +*lock.* + +# ignore hbs files as prettier removes all spaces and makes it ugly +*hbs +docs +.vscode diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..0b48ac1a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "singleQuote": false, + "printWidth": 100, + "tabWidth": 2, + "arrowParens": "avoid", + "jsxBracketSameLine": true, + "bracketSameLine": true +} diff --git a/.tkb b/.tkb new file mode 100644 index 00000000..91788050 --- /dev/null +++ b/.tkb @@ -0,0 +1,136 @@ +{ + "scope": "Workspace", + "tasks": { + "uUjYvxGR0oOu3Q1iJQler": { + "id": "uUjYvxGR0oOu3Q1iJQler", + "description": "Add use case for r18gs", + "columnId": "column-done" + }, + "hnmDBbQK5q6-GX3eIdtUP": { + "id": "hnmDBbQK5q6-GX3eIdtUP", + "description": "Create/feature a list of projects created from this template", + "columnId": "column-done" + }, + "5FPnfgSKUpHBbORBRtgui": { + "id": "5FPnfgSKUpHBbORBRtgui", + "description": "Optimise mobile view", + "columnId": "column-done" + }, + "iXE3kCY0L1r_4TD-zRgVh": { + "id": "iXE3kCY0L1r_4TD-zRgVh", + "description": "React Loaders\n- improve step by step --- incremental improvements\n- Purposes\n - Provide a good demo - demonstrating the full potential of the setup\n - Give learners opportunity to contribute to open source", + "columnId": "column-done" + }, + "jxGpRnHuqpR8FMho_53Je": { + "id": "jxGpRnHuqpR8FMho_53Je", + "description": "Choose a name for the new library\n- react18-loaders", + "columnId": "column-done" + }, + "W5ouBV1q2_FExuUzGV0aP": { + "id": "W5ouBV1q2_FExuUzGV0aP", + "description": "Update description\n", + "columnId": "column-done" + }, + "rRkFSIcteEvuq6MRX2BN0": { + "id": "rRkFSIcteEvuq6MRX2BN0", + "description": "Create 2 - 3 loaders", + "columnId": "column-done" + }, + "5Br6CU2MKWj0R40obK9Nm": { + "id": "5Br6CU2MKWj0R40obK9Nm", + "description": "ADD CRM form - e.g. to report code of conduct violations", + "columnId": "column-rHWkySHomUOsd93fyS05p" + }, + "P92idHa6fbprwBOYEp5uu": { + "id": "P92idHa6fbprwBOYEp5uu", + "description": "Add a issue - tag it as good-first-issue - create option for avoiding scss module file\n", + "columnId": "column-rHWkySHomUOsd93fyS05p" + }, + "mWXPi1Qzt9zNe6cKb8IZ3": { + "id": "mWXPi1Qzt9zNe6cKb8IZ3", + "description": "Update append pattern -- to avoid extra new lines in barrel files", + "columnId": "column-done" + }, + "-DCBBAzTvSWMDb8whog60": { + "id": "-DCBBAzTvSWMDb8whog60", + "description": "Rebranding experience\n- lauch enquirer.js postinstall\n- rebrand based on options selected", + "columnId": "column-done" + }, + "T1TbmRqXHguxnJv1g_Ot6": { + "id": "T1TbmRqXHguxnJv1g_Ot6", + "description": "Explore GitHub codespace templates", + "columnId": "column-done" + }, + "aCqTM5wgCQC3pY9TA7GtN": { + "id": "aCqTM5wgCQC3pY9TA7GtN", + "description": "Update r18-plugin to minify better - remove multiple jsx imports", + "columnId": "column-done" + }, + "KOQ0LhYPWc6ydZDSbZMGe": { + "id": "KOQ0LhYPWc6ydZDSbZMGe", + "description": "Update manual workflow to craete new branch when published from a tag", + "columnId": "column-done" + }, + "OUXfu0Fbgy4-8mdT_3xH8": { + "id": "OUXfu0Fbgy4-8mdT_3xH8", + "description": "Create lite version", + "columnId": "column-done" + }, + "_KFiy00MBhHgoDP1iiF71": { + "id": "_KFiy00MBhHgoDP1iiF71", + "description": "Use git remote in place of github.event.owner, etc.", + "columnId": "column-done" + }, + "wMuH6tntOhx-FBXWlw_AH": { + "id": "wMuH6tntOhx-FBXWlw_AH", + "description": "Automate Security.md updates", + "columnId": "column-done" + } + }, + "columns": [ + { + "id": "column-rHWkySHomUOsd93fyS05p", + "title": "To do ", + "tasksIds": [ + "5Br6CU2MKWj0R40obK9Nm", + "P92idHa6fbprwBOYEp5uu" + ] + }, + { + "id": "column-doing", + "title": "Doing", + "tasksIds": [] + }, + { + "id": "column-done", + "title": "Done", + "tasksIds": [ + "wMuH6tntOhx-FBXWlw_AH", + "-DCBBAzTvSWMDb8whog60", + "_KFiy00MBhHgoDP1iiF71", + "uUjYvxGR0oOu3Q1iJQler", + "OUXfu0Fbgy4-8mdT_3xH8", + "5FPnfgSKUpHBbORBRtgui", + "T1TbmRqXHguxnJv1g_Ot6", + "KOQ0LhYPWc6ydZDSbZMGe", + "aCqTM5wgCQC3pY9TA7GtN", + "iXE3kCY0L1r_4TD-zRgVh", + "rRkFSIcteEvuq6MRX2BN0", + "mWXPi1Qzt9zNe6cKb8IZ3", + "W5ouBV1q2_FExuUzGV0aP", + "jxGpRnHuqpR8FMho_53Je", + "hnmDBbQK5q6-GX3eIdtUP" + ] + }, + { + "id": "column-S6UGsrZqn5uTUGxNq5qGJ", + "title": "Will not do", + "tasksIds": [] + }, + { + "id": "column-todo", + "title": "Archive", + "tasksIds": [] + } + ] +} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..6315e5c1 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["esbenp.prettier-vscode", "mayank1513.trello-kanban-task-board"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..36db13c4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + // Formatting using Prettier by default for all languages + "editor.defaultFormatter": "esbenp.prettier-vscode", + + // Ensure enough terminal history is preserved when running tests. + "terminal.integrated.scrollback": 10000, + + // Disable TypeScript surveys. + "typescript.surveys.enabled": false, + + "editor.tabSize": 2, + "editor.wordWrap": "on", + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.formatOnSaveMode": "file", + "mayank1513.trello-kanban.Workspace.filePath": ".tkb" +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3b68e0fa --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,53 @@ +## Code of Conduct + +### 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, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +### Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +- 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 + +Examples of unacceptable behavior 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 +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +### Enforcement Responsibilities + +Project maintainers 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. + +Project maintainers 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. + +### 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. + +### Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project team responsible for enforcement at [coc@example.com](mailto:coc@example.com). All complaints will be reviewed and investigated promptly and fairly. + +All project maintainers are obligated to respect the privacy and security of the reporter of any incident. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +### Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, +available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct/][version] + +[homepage]: http://contributor-covenant.org +[version]: https://www.contributor-covenant.org/version/2/1 diff --git a/FEATURED.md b/FEATURED.md new file mode 100644 index 00000000..97909ff2 --- /dev/null +++ b/FEATURED.md @@ -0,0 +1,11 @@ +# Featured packages built with this template. + +> This file is automatically generated. Please refrain from editing it directly. To add your package, update `scripts/featured.json` in alphabetical order. + +- [esbuild-plugin-react18](https://github.com/react18-tools/esbuild-plugin-react18) - An esbuild plugin for compiling libraries compatible with React 18 server and client component, Nextjs13, and Nextjs14 +- [esbuild-plugin-react18-css](https://github.com/react18-tools/esbuild-plugin-react18-css) - ESBuild plugin to handle CSS/SCSS modules, autoprefixer, etc. +- [Nextjs-Themes](https://github.com/react18-tools/nextjs-themes) - 🀟 πŸ‘‰ Theme with confidence and Unleash the Power of React Server Components +- [Persist-And-Sync](https://github.com/react18-tools/persist-and-sync) - Zustand middleware to easily persist and sync Zustand state between tabs / windows / iframes (Same Origin) +- [React 18 Themes](https://github.com/react18-tools/react18-themes) - 🀟 πŸ‘‰ Unleash the Power of React Server Components +- [React18 Global Store](https://github.com/react18-tools/react18-global-store) - A simple yet elegant, light weight, react18 global store to replace Zustand for better tree shaking. +- [Zustand Sync Tabs](https://github.com/react18-tools/zustand-sync-tabs) - Zustand middleware to easily sync Zustand state between tabs / windows / iframes (Same Origin) diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..a612ad98 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.md b/README.md new file mode 100644 index 00000000..a5d246e5 --- /dev/null +++ b/README.md @@ -0,0 +1,89 @@ +# Turborepo Template + +[![test](https://github.com/react18-tools/turborepo-template/actions/workflows/test.yml/badge.svg)](https://github.com/react18-tools/turborepo-template/actions/workflows/test.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/aa896ec14c570f3bb274/maintainability)](https://codeclimate.com/github/react18-tools/turborepo-template/maintainability) [![codecov](https://codecov.io/gh/react18-tools/turborepo-template/graph/badge.svg)](https://codecov.io/gh/react18-tools/turborepo-template) [![Version](https://img.shields.io/npm/v/react18-loaders.svg?colorB=green)](https://www.npmjs.com/package/react18-loaders) [![Downloads](https://img.jsdelivr.com/img.shields.io/npm/d18m/react18-loaders.svg)](https://www.npmjs.com/package/react18-loaders) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/react18-loaders) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/from-referrer/) + +> [Explore featured packages built with this template.](./FEATURED.md) + +> Exciting news! We've launched a new course to help you master this template: [Craft Next Gen UI Libraries for React 18 and Next.js 14](https://www.udemy.com/course/craft-next-gen-ui-libraries-for-react-18-and-nextjs-14/?referralCode=46B8C7845ECCEA99E0EF) + +
+

Features

+ +This template offers the following pre-configured features. Additionally, your repository will automatically be rebranded with the help of workflows and post-install scripts. + +βœ… Monorepo powered by Turborepo and GitHub actions for automating building, testing, and deploying your library + +βœ… Examples with Next.js, Vite, and Remix to showcase how your library can be utilized (Note: Remix is optional due to instability in monorepo setup and folder imports) + +βœ… Examples pre-configured for Light/Dark theme based on user preference + +βœ… Examples ready to be deployed to Vercel + +βœ… Typedoc setup for automatic documentation generation based on tsdoc comments + +βœ… Code of Conduct and contributing files, ready for customization + +βœ… Prettier and linter configured according to modern best practices (Feel free to add your flavor) + +βœ… Recommended VSCode extensions - Prettier and [Kanban board](https://github.com/mayank1513/vscode-extension-trello-kanban-board) for code formatting and project management directly within your IDE + +βœ… Powerful code generators - try `yarn plop` + +βœ… Test setup with Vitest - A modern and fast testing framework supporting Jest-like APIs + +βœ… Workflows to automate testing on every pull-request or code push event + +βœ… Workflow to automatically publish and create GitHub releases when you update your library's `package.json` file. + +βœ… Workflow to automatically rebrand the entire template based on your repository name. (Refer [TODO.md](./TODO.md)) + +βœ… Plus, this readme file includes a quick checklist for configuring Codecov and other badges, setting up your docs website on GitHub pages, and more. See [Checklist](./TODO.md). + +### Creates a library that is + +βœ… Fully Treeshakable (e.g., import {Bars1, Bars2} from `react18-loaders/dist/server/bars`) + +βœ… Fully TypeScript Supported + +βœ… Leverages the power of React 18 Server components + +βœ… Compatible with all React 18 build systems/tools/frameworks + +βœ… Documented with [Typedoc](https://react18-tools.github.io/turborepo-template) ([Docs](https://react18-tools.github.io/turborepo-template)) + +
+ +## Getting Started: + +This template is based on one of the official Turbo Repo starters but comes with a plethora of additional features specifically designed for developing and publishing JavaScript/TypeScript libraries, especially for React 18. + +To get started, simply click on the `"Use this template"` button to create a new repository based on this template, \*\*update [`sripts/rebrand.config.json`](./scripts/rebrand.config.json) if required, and install dependencies(Will automatically trigger rebrand.js). Customize it according to your requirements for your next JavaScript/TypeScript/React/Next.js library or project. + +For detailed instructions and a checklist, please refer to [TODO.md](./TODO.md). + +## What's Different from Turborepo official templates? + +Compared to the default scaffold from create-turbo, this template offers: + +- Unit tests with `vitest` +- Build setup with `tsup` and `esbuild-plugin-react18` that supports React Server components out of the box +- **Automatic file generation** + - Simply run `yarn plop` and follow the prompts to auto-generate your new component with test files and dependency linking, adhering to best practices automatically +- GitHub actions/workflows to auto-publish your package when the version changes +- GitHub action/workflow + pre-install scripts to automatically rebrand your repo on creation + +### 🀩 Don't forget to star [this repository](https://github.com/react18-tools/turborepo-template)! + +Looking for a hands-on course to get started with Turborepo? Check out [React and Next.js with TypeScript](https://mayank-chaudhari.vercel.app/courses/react-and-next-js-with-typescript) and [The Game of Chess with Next.js, React, and TypeScript](https://www.udemy.com/course/game-of-chess-with-nextjs-react-and-typescript/?referralCode=851A28F10B254A8523FE) + +![Repo Stats](https://repobeats.axiom.co/api/embed/2ef1a24385037998386148afe5a98ded6006f410.svg "Repobeats analytics image") + +## License + +Licensed under the MPL-2.0 open-source license. + +> Please consider enrolling in [our courses](https://mayank-chaudhari.vercel.app/courses) or [sponsoring](https://github.com/sponsors/mayank1513) our work. + +
+ +

with πŸ’– by Mayank Kumar Chaudhari

diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..f90e6992 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,23 @@ +# Security Policy + +## Version Support + +We provide support for the latest minor version. Pull requests aimed at fixing security vulnerabilities in the version immediately preceding the latest will be considered. Support for versions prior to this relies entirely on community-driven pull requests. + +| Version | Support Status | +| ------- | ------------------ | +| 1.1.x | :white_check_mark: | +| 1.0.x | :warning: | +| < 1.0 | :x: | + +## Patching Long-Term Support (LTS) Versions + +If you rely on a previous minor version of TypeDoc and need to address security issues, kindly submit a pull request to the `lts` branch. Upon merge, your patch will automatically trigger the publication of a new version. + +Ensure to update the version field in `package.json`. + +Note: We only accept pull requests addressing security vulnerabilities. Additional functionalities and bug fixes for older versions are beyond the scope. + +## Reporting Vulnerabilities + +Kindly report vulnerabilities [here](https://github.com/react18-tools/turborepo-template/security/advisories/new). diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..9368602e --- /dev/null +++ b/TODO.md @@ -0,0 +1,52 @@ +## Step-by-Step Instructions and Checklist + +- [ ] Star [this repository](https://github.com/react18-tools/turborepo-template/) for easy access and to show your support +- [ ] Create a new GitHub repository using this template. + - Click the `Use this template` button at the top right -> `Create a new repository` + - Click `Create repository` and wait for the setup workflow to finish rebranding your repo. +- [ ] Install and set up Node.js and your IDE (VSCode recommended) +- [ ] Install the recommended VSCode extensions: + - [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) + - [Trello Kanban](https://marketplace.visualstudio.com/items?itemName=mayank1513.trello-kanban-task-board) +- [ ] 🌟 **Update [`sripts/rebrand.config.json`](./scripts/rebrand.config.json) if required.** +- [ ] Install `pnpm` using `npm i -g pnpm` +- [ ] Install dependencies using `pnpm` + - Run `pnpm i` to install dependencies; the `rebrand` script will automatically rebrand the repo, adjust workflows, and create a commit +- [ ] Make sure you run `node scripts/rebrand.js` from the root directory to rebrand your repo. +- [ ] Run `yarn plop`, and follow prompts to generate server or client components for your library +- [ ] 🌟 Enable [private vulnerability reporting] +- [ ] Set up `CodeCov` + - Visit Codecov and set up your repo + - Create [repository secret] for `CODECOV_TOKEN` +- [ ] Set up `CodeClimate` + - Visit CodeClimate and set up your repo + - Create [repository secret] for `CC_TEST_REPORTER_ID` + - Add `*.test.*` to ignore patterns on the website + - Update Code Climate badge +- [ ] Add `NPM_AUTH_TOKEN` to repository secrets to automate package publishing + - Log in to your [`npm` account](https://www.npmjs.com/login) and create an automation token + - Create a new repository secret `NPM_AUTH_TOKEN` +- [ ] Update description in `lib/package.json` +- [ ] (Optional) Add Repo Stats by visiting and setting up [repobeats](https://repobeats.axiom.co/) +- [ ] Create your library and update examples +- [ ] Update README as required +- [ ] Set up GitHub pages to deploy docs + - Go to [repo settings] -> pages (On the left panel); Select deploy from a branch; Then Select `main` and `/docs` +- [ ] (Optional) Set up [Deepsource](https://app.deepsource.com/login) for static code analysis +- [ ] Push your changes/Create PR and see your library being automatically tested and published +- [ ] Optionally deploy your examples to Vercel. +- [ ] Feel free to star this template, contribute, and/or sponsor the [`terborepo-template`](https://github.com/react18-tools/turborepo-template) project or my [other open-source work](https://github.com/sponsors/mayank1513) +- [ ] You can also fork the [`terborepo-template`](https://github.com/react18-tools/turborepo-template/fork) and add your package to `scripts/featured.json` + - If approved, your package will be automatically added to FEATURED.md and also published on the home page of this repo. + +## Recommended Repository Settings + +Go to [repository settings] and configure the following: + +- [ ] Enable Discussions +- [ ] Enable `Always suggest updating pull request branches` +- [ ] Enable `Automatically delete head branches` + +
+ +

with πŸ’– by Mayank Kumar Chaudhari

diff --git a/contributing.md b/contributing.md new file mode 100644 index 00000000..f13085b9 --- /dev/null +++ b/contributing.md @@ -0,0 +1,95 @@ +# Contribution Guidelines + +## Overview + +### Included Utilities + +This template is equipped with pre-configured tools to streamline your development process: + +- Monorepo setup powered by TurboRepo + - TurboRepo is renowned for its efficient builds and caching mechanisms, minimizing unnecessary builds. +- [TypeScript](https://www.typescriptlang.org/) for static type checking +- [ESLint](https://eslint.org/) for code linting +- [Prettier](https://prettier.io) for code formatting +- Plop-based code generator for effortlessly scaffolding new components +- Automatic rebranding functionality for this template +- Workflows facilitating testing, documentation, dependency updates, and deployment of your docs and packages +- Build setup capable of creating appropriate CJS and ESM builds to support React 18 server and client component exports from the same library +- Out-of-the-box support for SCSS modules for `lib` and `packages/shared` + +### Apps and Packages + +This TurboRepo comprises the following packages/examples, all written in [TypeScript](https://www.typescriptlang.org/): + +- `@example/nextjs`: a [Next.js](https://nextjs.org/) app +- `@example/vite`: a [Vite.js](https://vitest.dev) app +- `@example/remix`: a Remix app +- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) +- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo +- `@repo/jest-presets`: Jest presets for unit testing +- `@repo/logger`: A configurable shared logger utility +- `@repo/shared`: An internal library of components utilized by the examples +- `react18-loaders`: a React component library (The core package published to NPM) + +## Automated File Generation + +Simply execute `yarn turbo gen` and follow the prompts to automatically generate your new component along with a test file and dependency linking, adhering to best practices. + +### Build + +To build all apps and packages, execute the following command: + +```bash +pnpm build +``` + +### Development + +For development of all apps and packages, run: + +```bash +pnpm dev +``` + +### Running Unit Tests + +To execute unit tests, use: + +```bash +pnpm test +``` + +### Linting and Formatting + +Before creating a PR, ensure that linting passes and format the code properly with: + +```bash +pnpm lint +``` + +and + +```bash +pnpm format +``` + +## Useful Resources + +Explore more about TurboRepo and Next.js through the following links: + +- [React and Next.js with TypeScript](https://www.udemy.com/course/react-and-next-js-with-typescript/?referralCode=7202184A1E57C3DCA8B2) - an interactive Next.js course. +- [The Game of Chess with Next.js, React, and TypeScript](https://www.udemy.com/course/game-of-chess-with-nextjs-react-and-typescrypt/?referralCode=851A28F10B254A8523FE) +- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks) +- [Caching](https://turbo.build/repo/docs/core-concepts/caching) +- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) +- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering) +- [Configuration Options](https://turbo.build/repo/docs/reference/configuration) +- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference) + +> Quick tip: Remove all stale branches with `git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d` + +> Consider enrolling in [our courses](https://mayank-chaudhari.vercel.app/courses) or [sponsoring](https://github.com/sponsors/mayank1513) our work. + +
+ +

with πŸ’– by Mayank Kumar Chaudhari

diff --git a/devcontainer.json b/devcontainer.json new file mode 100644 index 00000000..bf721a6c --- /dev/null +++ b/devcontainer.json @@ -0,0 +1,18 @@ +{ + "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:20", + "hostRequirements": { + "memory": "8gb" + }, + "waitFor": "onCreateCommand", + "updateContentCommand": "", + "postCreateCommand": "", + "postAttachCommand": "", + "customizations": { + "codespaces": { + "openFiles": ["TODO.md", "scripts/rebrand.config.json"] + }, + "vscode": { + "extensions": ["mayank1513.trello-kanban-task-board", "esbenp.prettier-vscode"] + } + } +} diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 00000000..4728edfd --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,85 @@ +:root { + --light-hl-0: #795E26; + --dark-hl-0: #DCDCAA; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #A31515; + --dark-hl-2: #CE9178; + --light-hl-3: #008000; + --dark-hl-3: #6A9955; + --light-hl-4: #AF00DB; + --dark-hl-4: #C586C0; + --light-hl-5: #001080; + --dark-hl-5: #9CDCFE; + --light-hl-6: #0000FF; + --dark-hl-6: #569CD6; + --light-hl-7: #800000; + --dark-hl-7: #808080; + --light-hl-8: #267F99; + --dark-hl-8: #4EC9B0; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/icons.js b/docs/assets/icons.js new file mode 100644 index 00000000..e88e8ca7 --- /dev/null +++ b/docs/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `""`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg new file mode 100644 index 00000000..e371b8b5 --- /dev/null +++ b/docs/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 00000000..7d7f77a0 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,60 @@ +"use strict"; +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Ce=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),Ve(t,i,r,e)}function Ve(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?He(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function He(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",H="mouseup",J={x:0,y:0},me=!1,ne=!1,je=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(je=!0,F="touchstart",ye="touchmove",H="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var qe=new U;Object.defineProperty(window,"app",{value:qe});fe();we();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 00000000..fe758009 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62UUWuDMBDHv0ue7cRs64OMwZxlDyt0dE+jlJBqilJNiollMPrdh0lVYjTVdS/34F1+//9dzmx+gCDfAvggylJChZsxHJNiFjEqcEpJYXwADjhikQAf5CwuM8JddRKpQtQUGh/uEpFnwAGHlMbAhw6IkjSLC0KBv2lsPKVUkILi7PkGIVRD0CjNpTz/Wh//KNiRt+qStcfRHw30wTuuHufn7dkZstM62Zc0EimjE4x0WLrw/EHTjRjlAlPBeyZfp8bNc/USLtZo/faJ3hdfLe2EixTvdJ5eq+PvoeYvYezA3ZKTmWrTtCkrUMnJZRCj3JacLDu8dtAGsam2jpKT4iSBfYI7XHBLynNlNLtTUFRlZfBUHNVkoCPbBoeggYnu9FjVQekVXvcKVRztFY7xWkMDEy296sud54y6O8yJDIOWVSGqamS4+dUa4k58pFYisT1NI1Ragv39CTAn04WaUyZcR1tuthdqXcKYiaF/qUp5royDl1JlZfBUHHUToY40ujCgoYnuaQNKr8P/UoOFKv7XYhrciYtZdQev7otNpSXYFzPU5zM8+FojNOd0eRi25+0vcHBxufsIAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 00000000..f8038131 --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8VbYY+cvBH+L+RLIjkE22Dg1FZq3ryqqkZ6q1SqVJ2i1WbXl6PhYAXsJdEp/72ywYsHe1jY7DVfwLfgx8+Mx88MhnsKmvprG9zcPgVfimof3DASVNsHGdwEu7KQVfemrLd72bze1VW3LSrZOD8EJDg2ZXATPNT7YynbN33HTX/f5nSf80N43z2UAQl25bZtZRvcBMEPYniI+ETkve73mzPe3bHadUVdrRhxAuVhQILDtpFVt8YBI2vLe3XVdtuqa133mCuz9vMR6v0ff333+4fNh7/9a/OP3/9zwnvcNsX2E0SEt54x78TQx/++rr+0b46tfN2b65ihb9gcWzl4eelsHlv5HiKO8+hgnm6eN8Uha42cJFycBt9suu8HuX7kF+OfJ4hlVCyg0fKRHo3Y6BrVo6g+X4FeOEJdTtOYirBtZff+eoQB2jU5M4tw8yibN5+2TasPtD86kd3ft1EX9YH2x6UB/haAji7BYN8i4JblGPMlVrL+eNZK1h/XWMkWWGlg3yLgM1Ya5jNW7uqHh7p682nbSn3ArOzv26hb9GG5la1PLTDUt35o10aHt2VjIsDw/2zqw5hEiqqTzd12N2PaqdPPMgGr/Wux7+4vp/HC9F9FZgTBaN3L4vN99xO8TgBXJrary7r5CV6m/8/TchbNvu5afaD9EVs06qI+0P64dNG8A6DOqnFg3yHgrr0O8yVWsv541krWH9dYOSOADuw7BHzGSsPcZ+WfdEhV2/Ivl9ffG4OxuX4hbKnYpOhGBe0S3j7s6xgTWh7G1vh9Ue4bWT27MS+ska5mlXe4paXps1l6rnB9BkMXLSpMtpeuoXWJ/4/ufmahLOAyAlxEa0Hw9w7/TaFeh+MLiHgpXwsWo76vuw/bfXG8FnEb77q014Smk3FWhuZc2rFCU+exc6E5x2UEuIjWgtBcMr8rGC6f3xmuFuilJfYaym653bX710X7uqjuZVN0cn91+mdL8TX8PWX5sxtwrmRfw98t369I/yMJimovvwU3T8GjbNqiroKbgIU8zAMS3BWy3Kst3d4uEijVUeOQYF/vjrr5cbjt33LX1Y26ub/7TRSQ24jQLExZQqhpMEKTMBXJx4/k1sDpW/UPBnX8RUPRgNxywrIwSmPQUV1ghIUsJbw/xYSGccpJQmgYpZwIwkKRC5IO56y/LR8u04jQMM9yQml/A6RBAQ0WkFvKCOchjyEP5hjAQE+uenJfT3UlJizMGCdUN2JCk+EshnM6nDN9hgNxMFCsBsoJ42GeMcIikofJZMTY4RoDiET5lPq4Jk7PBPQUqqfXP8LpKUDPVNGOCItDEXHQM3V6pqBnpsb0ejZzemagZ656xr6eudMzh+GoolPFsicgo2E+40yQhEShiFM1DUNDRSUXGWFiiD+Wqkt5SlhmfslJFGZUEB4Nv3BqGsw0uGmocBcsIVyNlaeMcIPMFXKWZYRn5tIQ9JMQnyw1FfJx5HMLpY5fKFwgVEV9TL2OYbOOuZY/VriBxHSYjZj1XpzYBpcw1SvVG2mUu46By5KqJcZTJYKMprDzcCkKcypIrCc0FSRWGpBSTmJhfklNIzONfGgkkWlQ02CmwU1DK2PGSKKCkPGUJAY5MciJQU4MsjDIwiCLAXliL9QQqoSBJ4TmYT7xlbrSo+dEKNFOmCAiNo3ENIRpKHIsS4nQ0k0n8kehBFGlKyInjIURhQOrK3r9JYLomMpZH4C6oSdA0N5NjCVq3P4XkWvHkTQazjpsYpKy4cyHczyc9SBTmlDvqBKxVPhophfSXEmPpELfP6EJxZUqxUxTH81smEamZkw1klyo0GIhj4dJ4yImqnOYR5SkavZEmk7Gg5JMlc6muXeNuaJMoSozJWRZ5BMfNq/Kv0J8smgQn4z6xIdBVWZKZzN/6eGqMpuULUrIMm/9xP4/qrzEH9z4w6S0bEiWE9ugKjOls5nwVQ7MVWUGVZkp0cpSr1fdKolBiWNKeJQpns5uocSgTDGBFjzMrZUYFA+W4ja75RKDS5qpFZd5l1h/idAwUz4ZZIJn/Vno1JDEJI8ID+MoJzkdbs11BR5TknPTiE0jMQ1hGqlpZH1jwhYKAlNLPPcWFPoS0+lJcJLnJA5pRmgU6cYEFSoFj7T3vbDcfRbhcC1yirqfu2uRw7XI9Vr0lo760hUzI588gvAZo/mQdOKI6qSTc6oWPQ2jKO7lnabJkHTSrB9ZXeqTTZ4P2UY1uGnEppEMDRoxnR4mNOGa5DGWwPWVX5bAOVz9PMESuL7yyxI4hzrDBZbA9ZWfT+C8lya9jfAom07u/95vJ9zeBgF5CjbD7sJpa+Tpx7iLcPMU0P4X3p9oNJxZf2bD30z//cPadVB/KiLcHoRl2CircTMbl2K4HOtuvuyxuJ32X58CMXQbkXwYW7t7Mu+/qYFUDOfUZzAJ+OBwHg/nBLNkWxUPW/U6EjiEztHxwrR2/xwzh2UowGNd7EFECYxDjGEM3+hYkzLyGFzoixsU6uWh37seATka57NIDBhGLVLMQwoNWg3lkooZRmoGqQXRy1OLU4w5yoq/eOlCUyO5brTnJTk/3GkYNHw+AXMS1CNo7IyvTUeYbNSFgLk0vTD9KylrKeTYUshRKvZ7SxsrGum4wexFqvfAL3G63i/97vSIkdqhkg3y4iqee80DrV5x2dgClcFkAEPjbFc/HLZd8akEBqdoxljC7lBXejPcciC6/mccWLUAg2IYaLaxPhC2YKyE46oIAmM+i7Ykci6mcL2fvk0HzFaHKVwyCRoFg+qcn7z9tpNhVX8FtLCEgvp9L3flttGfGFgxiobA2Rjdy7vtsYQBhckDHlD7umuGV4yWcZHldR7ZVcBZ96sXSCAkUE7TLJCdqT7w+em/+7Kk1tI25glEhuZXDeUmxQwrYeaRQKbOuEXKk6nxrKehPKSw2DmD5AJZCZSvY3Y8lMXOqfhiVCjROJSlfJjIYxphKJN69XxdKr8d6gaAczSpr67+5bdOVqDazDH78ZLjrigl1K31FesdzK3oJJwrf+6OZQlEam39bj5KBA7nV3O4eUdvhYqwyoh0Eg32WNNrHuwG5PwcXWSo+07/LgAkdZTBwC2JfTAFcF8yXyu4D3HLH9qKalce9xJGMDZbuNmn7xZA6KCzfja/mU8QQEhb88wGA5kxmC5zKyyoMRnA7fxv+w1YuP7poJTVZ/WRjBW/6OxePKtuJcWiuRBcvSvQP3Isp7JpPrebL/I7WBVWTlxWXvRY7oORVbCcnoUWTacF+OentvteyjZ0fceXVjHn1WsY0Fc+W95wgxmX2wmim9+thyy2THx6SIAi0HyS2AllbkmfvrG1S82Rmwk03/MfBvmw7e7DZlvt64eXr16FXd12qsZ+ScWrsC2LnXwJijCKPbOiZXv/LZNNGCtL8GfwSkJ1TdbX6VUNANYXWPUdmEz02T3xr34KJhcTorkqffLgj8rmxYpXqw9ZgSigM4WqgcZwF5CVvE995xfQofgmSwCSotugF1usiMqmK2DlKNB67WzOdffWLtskn6sufY+bWDBwdFk2sjs2sMBEzV4t0e2ukXDzDl0uKAT2P59WPh6TfuCmrCWgp3+xtB69LD2lyyoi9F8aLVQ7My1L1Oj/fFlOtZYVXeUB93+srMVqb2Ut9QB4mhDogyeqrq3sPMmNWW5bJhvtfX0sYa5AZQMnUzwc4M4lu+LagIlo/R5we5C74q6YZET0OQHH6aabaSkKcrHCdvfwafDMi7VnS57dvXwAIbo+KjowcfH8tqgXAGYGdJGsDin19rPdNcUB7tCgJq4e4FgVcLsANf7iQDm20vPEZT2VLHvjczzC95YUY4omxsdteZzsJK2Xs68w6jH1wJP88G8gVsDaWi9sr/pngOPcCrg7lWMSNMcOkmOoij3Pm/KPJDgUB1kWlQxubj/++PE/5u2RUg5HAAA="; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 00000000..9d619a64 --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1448 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +footer > p { + margin: 0 1em; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} +a.tsd-anchor-link { + color: var(--color-text); +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; +} + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-navigation .tsd-nav-link { + display: none; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation-section { + margin-left: 10px; +} +.tsd-page-navigation-section > summary { + padding: 0.25rem; +} +.tsd-page-navigation-section > div { + margin-left: 20px; +} +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/functions/client_loader_container_loader_container.LoaderContainer.html b/docs/functions/client_loader_container_loader_container.LoaderContainer.html new file mode 100644 index 00000000..6f75c8fd --- /dev/null +++ b/docs/functions/client_loader_container_loader_container.LoaderContainer.html @@ -0,0 +1,2 @@ +LoaderContainer | React18 Loaders
\ No newline at end of file diff --git a/docs/functions/hooks_use_loader.useLoader.html b/docs/functions/hooks_use_loader.useLoader.html new file mode 100644 index 00000000..321c5690 --- /dev/null +++ b/docs/functions/hooks_use_loader.useLoader.html @@ -0,0 +1 @@ +useLoader | React18 Loaders
  • Returns {
    Β Β Β Β loading: boolean;
    Β Β Β Β setLoading: SetStateAction<boolean>;
    }

    • loading: boolean
    • setLoading: SetStateAction<boolean>
\ No newline at end of file diff --git a/docs/functions/server_bars_bars1_bars1.Bars1.html b/docs/functions/server_bars_bars1_bars1.Bars1.html new file mode 100644 index 00000000..49fece16 --- /dev/null +++ b/docs/functions/server_bars_bars1_bars1.Bars1.html @@ -0,0 +1,8 @@ +Bars1 | React18 Loaders
  • A simple loader with 3 dots.

    +

    Parameters

    Returns Element

    <Bars1 />
    +
    + +
    export function Bars1(props: BaseProps) {
    return <Base {...props} loaderClass={styles.loader} />;
    } +
    + +
\ No newline at end of file diff --git a/docs/functions/server_bars_bars2_bars2.Bars2.html b/docs/functions/server_bars_bars2_bars2.Bars2.html new file mode 100644 index 00000000..d24cfa83 --- /dev/null +++ b/docs/functions/server_bars_bars2_bars2.Bars2.html @@ -0,0 +1,8 @@ +Bars2 | React18 Loaders
  • A simple loader with 3 dots.

    +

    Parameters

    Returns Element

    <Bars2 />
    +
    + +
    export function Bars2(props: BaseProps) {
    return <Base {...props} loaderClass={styles.loader} />;
    } +
    + +
\ No newline at end of file diff --git a/docs/functions/server_common_base_base.Base.html b/docs/functions/server_common_base_base.Base.html new file mode 100644 index 00000000..32ce5992 --- /dev/null +++ b/docs/functions/server_common_base_base.Base.html @@ -0,0 +1,3 @@ +Base | React18 Loaders
  • Base component to avoid code duplication

    +

    default values should be specified in css files - so no need to set them in JSX

    +

    Parameters

    Returns Element

\ No newline at end of file diff --git a/docs/functions/server_dots_dots1_dots1.Dots1.html b/docs/functions/server_dots_dots1_dots1.Dots1.html new file mode 100644 index 00000000..3e6c26fa --- /dev/null +++ b/docs/functions/server_dots_dots1_dots1.Dots1.html @@ -0,0 +1,8 @@ +Dots1 | React18 Loaders
  • A simple loader with 3 dots.

    +

    Parameters

    Returns Element

    <Dots1 />
    +
    + +
    export function Dots1(props: BaseProps) {
    return <Base {...props} loaderClass={styles.loader} />;
    } +
    + +
\ No newline at end of file diff --git a/docs/functions/server_dots_dots2_dots2.Dots2.html b/docs/functions/server_dots_dots2_dots2.Dots2.html new file mode 100644 index 00000000..f3f78424 --- /dev/null +++ b/docs/functions/server_dots_dots2_dots2.Dots2.html @@ -0,0 +1,8 @@ +Dots2 | React18 Loaders
  • A simple loader with 3 dots.

    +

    Parameters

    Returns Element

    <Dots2 />
    +
    + +
    export function Dots2(props: Dots2Props) {
    return <Base {...props} loaderClass={styles.loader} />;
    } +
    + +
\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html new file mode 100644 index 00000000..f81d5401 --- /dev/null +++ b/docs/hierarchy.html @@ -0,0 +1 @@ +React18 Loaders

React18 Loaders

Class Hierarchy

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..5821b4f3 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,69 @@ +React18 Loaders

React18 Loaders

React18 Loaders

test Maintainability codecov Version Downloads npm bundle size Gitpod ready-to-code

+

React18 Loaders is a comprehensive library designed to unlock the full potential of React 18 server components. It provides customizable loading animation components and a fullscreen loader container, seamlessly integrating with React and Next.js.

+

βœ… Fully Treeshakable (import from react18-loaders/client/loader-container)

+

βœ… Fully TypeScript Supported

+

βœ… Leverages the power of React 18 Server components

+

βœ… Compatible with all React 18 build systems/tools/frameworks

+

βœ… Documented with Typedoc (Docs)

+

βœ… Examples for Next.js, Vite, and Remix

+
+

Please consider starring this repository and sharing it with your friends.

+
+
$ pnpm add react18-loaders
+
+ +

or

+
$ npm install react18-loaders
+
+ +

or

+
$ yarn add react18-loaders
+
+ +
$ pnpm add react18-loaders-lite
+
+ +

or

+
$ npm install react18-loaders-lite
+
+ +

or

+
$ yarn add react18-loaders-lite
+
+ +
+

You need r18gs as a peer-dependency

+
+

You can import styles globally or within specific components.

+
/* globals.css */
@import "react18-loaders/dist"; +
+ +
// layout.tsx
import "react18-loaders/dist/index.css"; +
+ +

For selective imports:

+
/* globals.css */
@import "react18-loaders/dist/client"; /** required if you are using LoaderContainer */
@import "react18-loaders/dist/server/bars/bars1"; +
+ +

Using loaders is straightforward.

+
import { Bars1 } from "react18-loaders/dist/server/bars/bars1";

export default function MyComponent() {
return someCondition ? <Bars1 /> : <>Something else...</>;
} +
+ +

For detailed API and options, refer to the API documentation.

+

Using LoaderContainer

+

LoaderContainer is a fullscreen component. You can add this component directly in your layout and then use useLoader hook to toggle its visibility.

+
// layout.tsx
<LoaderContainer />
... +
+ +
// some other page or component
import { useLoader } from "react18-loaders/dist/hooks";

export default MyComponent() {
const { setLoading } = useLoader();
useCallback(()=>{
setLoading(true);
...do some work
setLoading(false);
}, [])
...
} +
+ +

This library is licensed under the MPL-2.0 open-source license.

+
+

This package also serves as an example demonstrating how to build and publish a React.js library compatible with React Server Components.

+
+
+

Please consider enrolling in our courses or sponsoring our work.

+
+
+

with πŸ’– by Mayank Kumar Chaudhari

\ No newline at end of file diff --git a/docs/interfaces/client_loader_container_loader_container._internal_.LoaderContainerProps.html b/docs/interfaces/client_loader_container_loader_container._internal_.LoaderContainerProps.html new file mode 100644 index 00000000..1747b810 --- /dev/null +++ b/docs/interfaces/client_loader_container_loader_container._internal_.LoaderContainerProps.html @@ -0,0 +1,3 @@ +LoaderContainerProps | React18 Loaders
interface LoaderContainerProps {
Β Β Β Β children?: ReactNode;
Β Β Β Β loading?: boolean;
}

Hierarchy

Properties

Properties

children?: ReactNode
loading?: boolean
\ No newline at end of file diff --git a/docs/interfaces/server_common_base_base.BaseProps.html b/docs/interfaces/server_common_base_base.BaseProps.html new file mode 100644 index 00000000..146c8eb6 --- /dev/null +++ b/docs/interfaces/server_common_base_base.BaseProps.html @@ -0,0 +1,8 @@ +BaseProps | React18 Loaders

Interface declaring the common properties of the loaders

+
interface BaseProps {
Β Β Β Β color?: string;
Β Β Β Β height?: string | number;
Β Β Β Β width?: string | number;
}

Hierarchy (view full)

Properties

Properties

color?: string

Color of the dots - CSS compatible color

+
height?: string | number

height of the loader element in pixels or a string with a length unit.

+
width?: string | number

width of the loader element in pixels or a string with a length unit.

+
\ No newline at end of file diff --git a/docs/interfaces/server_common_base_base._internal_.OtherProps.html b/docs/interfaces/server_common_base_base._internal_.OtherProps.html new file mode 100644 index 00000000..1f9348ad --- /dev/null +++ b/docs/interfaces/server_common_base_base._internal_.OtherProps.html @@ -0,0 +1,5 @@ +OtherProps | React18 Loaders

Other props - loaderClass is included here as we will extend BaseProps for other loaders

+
interface OtherProps {
Β Β Β Β dotRadius?: string | number;
Β Β Β Β loaderClass: string;
}

Properties

Properties

dotRadius?: string | number
loaderClass: string

Loader class name

+
\ No newline at end of file diff --git a/docs/interfaces/server_dots_dots2_dots2._internal_.Dots2Props.html b/docs/interfaces/server_dots_dots2_dots2._internal_.Dots2Props.html new file mode 100644 index 00000000..fe25094e --- /dev/null +++ b/docs/interfaces/server_dots_dots2_dots2._internal_.Dots2Props.html @@ -0,0 +1,10 @@ +Dots2Props | React18 Loaders

Interface declaring the common properties of the loaders

+
interface Dots2Props {
Β Β Β Β color?: string;
Β Β Β Β dotRadius?: string | number;
Β Β Β Β height?: string | number;
Β Β Β Β width?: string | number;
}

Hierarchy (view full)

Properties

color?: string

Color of the dots - CSS compatible color

+
dotRadius?: string | number

Radius of the dots in pixels or a string with a length unit.

+
height?: string | number

height of the loader element in pixels or a string with a length unit.

+
width?: string | number

width of the loader element in pixels or a string with a length unit.

+
\ No newline at end of file diff --git a/docs/modules/client_loader_container_loader_container._internal_.html b/docs/modules/client_loader_container_loader_container._internal_.html new file mode 100644 index 00000000..c695d0e2 --- /dev/null +++ b/docs/modules/client_loader_container_loader_container._internal_.html @@ -0,0 +1,2 @@ +<internal> | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/client_loader_container_loader_container.html b/docs/modules/client_loader_container_loader_container.html new file mode 100644 index 00000000..846ce0c3 --- /dev/null +++ b/docs/modules/client_loader_container_loader_container.html @@ -0,0 +1,3 @@ +client/loader-container/loader-container | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/constants.html b/docs/modules/constants.html new file mode 100644 index 00000000..959a85ff --- /dev/null +++ b/docs/modules/constants.html @@ -0,0 +1,2 @@ +constants | React18 Loaders

Module constants

Index

Variables

\ No newline at end of file diff --git a/docs/modules/hooks_use_loader.html b/docs/modules/hooks_use_loader.html new file mode 100644 index 00000000..482cfd10 --- /dev/null +++ b/docs/modules/hooks_use_loader.html @@ -0,0 +1,2 @@ +hooks/use-loader | React18 Loaders

Module hooks/use-loader

Index

Functions

\ No newline at end of file diff --git a/docs/modules/server_bars_bars1_bars1.html b/docs/modules/server_bars_bars1_bars1.html new file mode 100644 index 00000000..b16d0103 --- /dev/null +++ b/docs/modules/server_bars_bars1_bars1.html @@ -0,0 +1,2 @@ +server/bars/bars1/bars1 | React18 Loaders

Module server/bars/bars1/bars1

Index

Functions

\ No newline at end of file diff --git a/docs/modules/server_bars_bars2_bars2.html b/docs/modules/server_bars_bars2_bars2.html new file mode 100644 index 00000000..e5ea2fc9 --- /dev/null +++ b/docs/modules/server_bars_bars2_bars2.html @@ -0,0 +1,2 @@ +server/bars/bars2/bars2 | React18 Loaders

Module server/bars/bars2/bars2

Index

Functions

\ No newline at end of file diff --git a/docs/modules/server_common_base_base._internal_.html b/docs/modules/server_common_base_base._internal_.html new file mode 100644 index 00000000..0d0e04ec --- /dev/null +++ b/docs/modules/server_common_base_base._internal_.html @@ -0,0 +1,2 @@ +<internal> | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/server_common_base_base.html b/docs/modules/server_common_base_base.html new file mode 100644 index 00000000..24f75d65 --- /dev/null +++ b/docs/modules/server_common_base_base.html @@ -0,0 +1,4 @@ +server/common/base/base | React18 Loaders

Module server/common/base/base

Index

Modules

Interfaces

Functions

\ No newline at end of file diff --git a/docs/modules/server_dots_dots1_dots1.html b/docs/modules/server_dots_dots1_dots1.html new file mode 100644 index 00000000..44802316 --- /dev/null +++ b/docs/modules/server_dots_dots1_dots1.html @@ -0,0 +1,2 @@ +server/dots/dots1/dots1 | React18 Loaders

Module server/dots/dots1/dots1

Index

Functions

\ No newline at end of file diff --git a/docs/modules/server_dots_dots2_dots2._internal_.html b/docs/modules/server_dots_dots2_dots2._internal_.html new file mode 100644 index 00000000..44f27b64 --- /dev/null +++ b/docs/modules/server_dots_dots2_dots2._internal_.html @@ -0,0 +1,2 @@ +<internal> | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/server_dots_dots2_dots2.html b/docs/modules/server_dots_dots2_dots2.html new file mode 100644 index 00000000..b703a92a --- /dev/null +++ b/docs/modules/server_dots_dots2_dots2.html @@ -0,0 +1,3 @@ +server/dots/dots2/dots2 | React18 Loaders

Module server/dots/dots2/dots2

Index

Modules

Functions

\ No newline at end of file diff --git a/docs/variables/constants.LOADER_RGS_KEY.html b/docs/variables/constants.LOADER_RGS_KEY.html new file mode 100644 index 00000000..e33e57cb --- /dev/null +++ b/docs/variables/constants.LOADER_RGS_KEY.html @@ -0,0 +1,2 @@ +LOADER_RGS_KEY | React18 Loaders

Variable LOADER_RGS_KEYConst

LOADER_RGS_KEY: "r18-loaders" = "r18-loaders"

const uuid = () => (Date.now() * Math.random()).toString(16).slice(2, 8);

+
\ No newline at end of file diff --git a/examples/express/.eslintrc.js b/examples/express/.eslintrc.js new file mode 100644 index 00000000..c25697c3 --- /dev/null +++ b/examples/express/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/server.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/examples/express/package.json b/examples/express/package.json new file mode 100644 index 00000000..2a86d0a3 --- /dev/null +++ b/examples/express/package.json @@ -0,0 +1,40 @@ +{ + "name": "@example/express", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node dist/index.js", + "dev": "tsup --watch --onSuccess \"node dist/index.js\"", + "build": "tsup", + "clean": "rm -rf dist", + "typecheck": "tsc --noEmit", + "lint": "eslint src/", + "test": "jest --detectOpenHandles" + }, + "jest": { + "preset": "@repo/jest-presets/node" + }, + "dependencies": { + "@repo/logger": "workspace:*", + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "express": "^4.19.2", + "morgan": "^1.10.0" + }, + "devDependencies": { + "@repo/eslint-config": "workspace:*", + "@repo/jest-presets": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/body-parser": "^1.19.5", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.21", + "@types/jest": "^29.5.12", + "@types/morgan": "^1.9.9", + "@types/node": "^20.14.9", + "@types/supertest": "^6.0.2", + "jest": "^29.7.0", + "supertest": "^7.0.0", + "tsup": "^8.1.0", + "typescript": "^5.5.2" + } +} diff --git a/examples/express/src/__tests__/server.test.ts b/examples/express/src/__tests__/server.test.ts new file mode 100644 index 00000000..dbc6a9dc --- /dev/null +++ b/examples/express/src/__tests__/server.test.ts @@ -0,0 +1,22 @@ +import supertest from "supertest"; +import { createServer } from "../server"; + +describe("Server", () => { + it("health check returns 200", async () => { + await supertest(createServer()) + .get("/status") + .expect(200) + .then(res => { + expect(res.ok).toBe(true); + }); + }); + + it("message endpoint says hello", async () => { + await supertest(createServer()) + .get("/message/jared") + .expect(200) + .then(res => { + expect(res.body).toEqual({ message: "hello jared" }); + }); + }); +}); diff --git a/examples/express/src/index.ts b/examples/express/src/index.ts new file mode 100644 index 00000000..e0393743 --- /dev/null +++ b/examples/express/src/index.ts @@ -0,0 +1,9 @@ +import { log } from "@repo/logger"; +import { createServer } from "./server"; + +const port = process.env.PORT || 5001; +const server = createServer(); + +server.listen(port, () => { + log(`api running on ${port}`); +}); diff --git a/examples/express/src/server.ts b/examples/express/src/server.ts new file mode 100644 index 00000000..a144d2a1 --- /dev/null +++ b/examples/express/src/server.ts @@ -0,0 +1,23 @@ +import { json, urlencoded } from "body-parser"; +import express, { type Express } from "express"; +import morgan from "morgan"; +import cors from "cors"; + +/** Create express server. */ +export const createServer = (): Express => { + const app = express(); + app + .disable("x-powered-by") + .use(morgan("dev")) + .use(urlencoded({ extended: true })) + .use(json()) + .use(cors()) + .get("/message/:name", (req, res) => { + return res.json({ message: `hello ${req.params.name}` }); + }) + .get("/status", (_, res) => { + return res.json({ ok: true }); + }); + + return app; +}; diff --git a/examples/express/tsconfig.json b/examples/express/tsconfig.json new file mode 100644 index 00000000..6713bc99 --- /dev/null +++ b/examples/express/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "lib": ["ES2015"], + "outDir": "./dist" + }, + "exclude": ["node_modules"], + "include": ["."] +} diff --git a/examples/express/tsup.config.ts b/examples/express/tsup.config.ts new file mode 100644 index 00000000..40c9e6eb --- /dev/null +++ b/examples/express/tsup.config.ts @@ -0,0 +1,8 @@ +import { defineConfig, type Options } from "tsup"; + +export default defineConfig((options: Options) => ({ + entryPoints: ["src/index.ts"], + clean: true, + format: ["cjs"], + ...options, +})); diff --git a/examples/express/turbo.json b/examples/express/turbo.json new file mode 100644 index 00000000..52e8c763 --- /dev/null +++ b/examples/express/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "dist/**" + ] + } + } +} diff --git a/examples/nextjs/.eslintrc.js b/examples/nextjs/.eslintrc.js new file mode 100644 index 00000000..6582db49 --- /dev/null +++ b/examples/nextjs/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/next.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/examples/nextjs/cache/config.json b/examples/nextjs/cache/config.json new file mode 100644 index 00000000..a544f0f8 --- /dev/null +++ b/examples/nextjs/cache/config.json @@ -0,0 +1,6 @@ +{ + "telemetry": { + "notifiedAt": "1715050199607", + "enabled": false + } +} \ No newline at end of file diff --git a/examples/nextjs/next-env.d.ts b/examples/nextjs/next-env.d.ts new file mode 100644 index 00000000..4f11a03d --- /dev/null +++ b/examples/nextjs/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/nextjs/next.config.js b/examples/nextjs/next.config.js new file mode 100644 index 00000000..da1bb770 --- /dev/null +++ b/examples/nextjs/next.config.js @@ -0,0 +1,3 @@ +module.exports = { + reactStrictMode: true, +}; diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json new file mode 100644 index 00000000..fc640349 --- /dev/null +++ b/examples/nextjs/package.json @@ -0,0 +1,32 @@ +{ + "name": "@example/nextjs", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "next build", + "clean": "rm -rf .next", + "dev": "next dev -p 3002", + "lint": "next lint", + "typecheck": "tsc --noEmit", + "start": "next start" + }, + "dependencies": { + "@repo/shared": "workspace:*", + "next": "^14.2.4", + "nextjs-darkmode": "^1.0.4", + "nextjs-themes": "^4.0.3", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-mouse-trails": "^0.0.3", + "react18-loaders": "workspace:*" + }, + "devDependencies": { + "@next/eslint-plugin-next": "^14.2.4", + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "typescript": "^5.5.2" + } +} diff --git a/examples/nextjs/public/favicon.ico b/examples/nextjs/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..af98450595e8b8efd9e505cddc5ed705b665a4d8 GIT binary patch literal 15086 zcmdU$XN*0PW5y#)gXL_h{3FkJ#X`oXpI?bB5#G)w~S7Qa+`W<1AB#X3C=?&UhvAO=|S+ zQpCR%R9`2h-z)7_x}fw(>6KDpfVd}*GI-!c2H9UDrKwS>=#NU@Ddj7@Q4*g7FEYrY z16}AW?v$zq+9+i!-B+T1{bG*9hmHqIUn`*-8^w`osM0?vVJi}rWb@IzKnYt#l~PpE zZq^t6O{HGFdQ!P^WzlxPHWGIHcd>D{}x={sTUg9&WW6602m zQnBH6>!yx}4jn2B7A%n2vuDesNt2{;dd zh7B@$^l0CFc@ZrPKrArsz@`@AQzbS#)CVarSbb!I8ty{PH zk}X}jv}9#v$)iV)Gb-#m>4qUO6)cT2PV3 zpI*Is$&Ww&XxZfC$&*s6RxM+zLWK&_s8J(BjQt6=fsGRsIez?@ix)2jvEROZTiUm8 zAGA}oYE|jjv7_)^<8Q|B8-jA4x_+h43HdwG`akQZ{rmR^u|IqEOoj~`7J{KpojS(< z>D#xjnZIoEL8L15HMT(z#WR80C=8eJ6m1l4LW@cu}s8OTj^Upsw@4?*W6SJES z?6iS9&)0pV`lp_$Z=3e*+h^9ZUK>rCG?5uIW|;4L`0(N0^@=YH0qjNg{kCh@PHx@0 zWueQ33l}2#^Q~LAHa;_LgYTK1p6(a3o6pAd+gv_56 zTeSG07MmF9|6)G^Q&#}`NMn_Um~~0isUI6)0h8ZU;`^Lf>f{vqND)`@P9?$9TK1fc;tCyQ6!+t!2dtUtke$_><;tw&q0@ECem?{wl!rS3|>b6OetkXT}@W?k_+rGrYh zl>Vi}m;6*0c#P>*l+@N$%>EBBFmQe{Fc#%OC9f_nmD)f~S=dohhj8vYl zv6`=x&=pVWsLX#+q8mig9W$TUxvt*}bzk7L-lNk`>Y+?Gm163T#zTyXvm=~)sb0N0 zaaweuJ6Zx`(zaEHG-%L3KK=Al6T>DZPhLQGq zy?Yqg@b-sP&7-d+WX~-}jDPy{>9TCuG9i8(A^wLgY}(XWZ-_f3WuJ2&?4j-5yH}Ph zSrTpU9$VNX@qMmWifEgC6yB+S|Ng&-_q*kY6P-PKR*oJ$D&4wui>NOkgH3F=P`Ve$ z3oFArk%&op&JP9oiCbR3eqHX}yJupw-hGKM`tJs8Gp0rz*J9ak*s!6TKY!j}B<@Qe z2xHHihfO=4d&@$equD1uh)vR!D_5jhvt}W(F>o+n#QfeP*=Ky4KYza26Uxue7xt`( zwGs1UFEoa2%CXJd6_q!V{lS9=%abQh(nAuU?8F#8U%^agA*f5vUU zO`A5Rzftd-H*XGp=j=}sgJvHomR>El^LJEU_xn@7oB=$3{5YoN^y$-PoVT`!UrwAj z(d>cRyeL=eJNUAXP0n?!TD8j9&dbY_&Ye4l$oA~n)9gP*+v9QJq3wP5KkQGLGDTj# zd};PI#*Q5uVjI0fh76HSn>LxVdoDY_;0u&tn{OaexyiTnfB*h{;fw|QLCcpf4;xpW zFkyme8_o^J(yQeMlzfjrrqcE2$dM!Fd_g$&SWBkEa^gaG!|Jt={ z=KFH#39++i(IT_Yx^(H%ko++GcKr1<|Ih~0rcI04uj!BQ`Z)V#=O2Y;=E9`s-!ShO zsSe!pFZPSf|L}>y>wkcu$o#Ju7{d8q*e4a4|Eapd)ji*PB>xlpq$2UZRgc#`wqyC< z*e8K8>Gg-|00V0nbj5maWeG|22l`3AlJ{NwJ|l|`ufMHXz7k^tYsg%g=)+?N8;M_9LtdS2KI3UcQZk+)cWFG|X4L^R?nKNgM zJp7#1#y{fx7Zcyn1ijH<*t+zGuIF{p8Z6OUCbF zJuqm{AfqFUdUSJ))2_z+s>OeFWelDY)Ji4$N2uccI^tDkzj4ezJD0s z6WNgVqu%*n4eJGq6%4dL{ { + setLoading(true); + setTimeout(() => { + setLoading(false); + }, 3000); + }, []); + return ( + + ); +} diff --git a/examples/nextjs/src/app/layout.tsx b/examples/nextjs/src/app/layout.tsx new file mode 100644 index 00000000..0bf639f7 --- /dev/null +++ b/examples/nextjs/src/app/layout.tsx @@ -0,0 +1,27 @@ +import "./styles.css"; +import "react18-loaders/dist/index.css"; +import { Core } from "nextjs-darkmode"; +import { Layout } from "@repo/shared/dist/server"; +import { GlobalLoader, Header } from "@repo/shared"; +import { Inter } from "next/font/google"; +import Link from "next/link"; +import { MouseTrail } from "react-mouse-trails"; + +const inter = Inter({ subsets: ["latin"] }); + +/** Root layout. */ +export default function RootLayout({ children }: { children: React.ReactNode }): JSX.Element { + return ( + + + + +
+ {children} + + + + + + ); +} diff --git a/examples/nextjs/src/app/page.tsx b/examples/nextjs/src/app/page.tsx new file mode 100644 index 00000000..19c39eb4 --- /dev/null +++ b/examples/nextjs/src/app/page.tsx @@ -0,0 +1,17 @@ +import MyButton from "./button"; +import { LandingPage } from "@repo/shared/dist/server"; +import { Demo } from "@repo/shared"; + +export const metadata = { + title: "React 18 Loaders", +}; + +/** next.js landing page */ +export default function Page(): JSX.Element { + return ( + + + + + ); +} diff --git a/examples/nextjs/src/app/styles.css b/examples/nextjs/src/app/styles.css new file mode 100644 index 00000000..6783fff5 --- /dev/null +++ b/examples/nextjs/src/app/styles.css @@ -0,0 +1,14 @@ +@import "nextjs-darkmode/css"; +@import "@repo/shared/dist/global.css"; +@import "@repo/shared/dist"; +@import "react18-loaders/dist"; +@import "react-mouse-trails/dist"; + +html { + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} diff --git a/examples/nextjs/tsconfig.json b/examples/nextjs/tsconfig.json new file mode 100644 index 00000000..aaddcaa8 --- /dev/null +++ b/examples/nextjs/tsconfig.json @@ -0,0 +1,13 @@ +{ + "exclude": ["node_modules"], + "extends": "@repo/typescript-config/nextjs.json", + "compilerOptions": { + "outDir": "dist", + "plugins": [ + { + "name": "next" + } + ] + }, + "include": ["src", "next.config.js", "next-env.d.ts", ".next/types/**/*.ts"] +} diff --git a/examples/nextjs/turbo.json b/examples/nextjs/turbo.json new file mode 100644 index 00000000..bca04ff0 --- /dev/null +++ b/examples/nextjs/turbo.json @@ -0,0 +1,13 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + ".next/**", + "!.next/cache/**" + ] + } + } +} diff --git a/examples/remix/.eslintrc.js b/examples/remix/.eslintrc.js new file mode 100644 index 00000000..b86550f3 --- /dev/null +++ b/examples/remix/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/remix.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/examples/remix/.gitignore b/examples/remix/.gitignore new file mode 100644 index 00000000..42ec5e40 --- /dev/null +++ b/examples/remix/.gitignore @@ -0,0 +1,11 @@ +node_modules + +.cache +.env +.vercel +.output + +build +public/build +api/index.js* +api/_assets* diff --git a/examples/remix/README.md b/examples/remix/README.md new file mode 100644 index 00000000..944936b3 --- /dev/null +++ b/examples/remix/README.md @@ -0,0 +1,34 @@ +# Welcome to Remix! + +- [Remix Docs](https://remix.run/docs) + +## Deployment + +After having run the `create-remix` command and selected "Vercel" as a deployment target, you only need to [import your Git repository](https://vercel.com/new) into Vercel, and it will be deployed. + +If you'd like to avoid using a Git repository, you can also deploy the directory by running [Vercel CLI](https://vercel.com/cli): + +```sh +npm i -g vercel +vercel +``` + +It is generally recommended to use a Git repository, because future commits will then automatically be deployed by Vercel, through its [Git Integration](https://vercel.com/docs/concepts/git). + +## Development + +To run your Remix app locally, make sure your project's local dependencies are installed: + +```sh +npm install +``` + +Afterwards, start the Remix development server like so: + +```sh +npm run dev +``` + +Open up [http://localhost:3000](http://localhost:3000) and you should be ready to go! + +If you're used to using the `vercel dev` command provided by [Vercel CLI](https://vercel.com/cli) instead, you can also use that, but it's not needed. diff --git a/examples/remix/app/entry.client.tsx b/examples/remix/app/entry.client.tsx new file mode 100644 index 00000000..4a0775b2 --- /dev/null +++ b/examples/remix/app/entry.client.tsx @@ -0,0 +1,23 @@ +import { RemixBrowser } from "@remix-run/react"; +import { startTransition, StrictMode } from "react"; +import { hydrateRoot } from "react-dom/client"; + +/** Hydration */ +function hydrate(): void { + startTransition(() => { + hydrateRoot( + document, + + + , + ); + }); +} + +if (typeof requestIdleCallback === "function") { + requestIdleCallback(hydrate); +} else { + // Safari doesn't support requestIdleCallback + // https://caniuse.com/requestidlecallback + setTimeout(hydrate, 1); +} diff --git a/examples/remix/app/entry.server.tsx b/examples/remix/app/entry.server.tsx new file mode 100644 index 00000000..a66506f8 --- /dev/null +++ b/examples/remix/app/entry.server.tsx @@ -0,0 +1,14 @@ +import handleRequest from "@vercel/remix-entry-server"; +import { RemixServer } from "@remix-run/react"; +import type { EntryContext } from "@remix-run/server-runtime"; + +/** Server entry */ +export default function entry( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, +): Promise { + const remixServer = ; + return handleRequest(request, responseStatusCode, responseHeaders, remixServer); +} diff --git a/examples/remix/app/root.tsx b/examples/remix/app/root.tsx new file mode 100644 index 00000000..26f880a9 --- /dev/null +++ b/examples/remix/app/root.tsx @@ -0,0 +1,42 @@ +import type { MetaFunction, LinksFunction } from "@remix-run/node"; +import { Links, LiveReload, Meta, Outlet, Scripts, ScrollRestoration } from "@remix-run/react"; +import { Analytics } from "@vercel/analytics/react"; +import styles from "./styles.css"; +import { Layout } from "@repo/shared/dist/server"; +import { Core } from "nextjs-darkmode"; +import { Header } from "@repo/shared"; + +/** Page metadata */ +export const meta: MetaFunction = () => [ + { + charset: "utf-8", + title: `Blog | React18 Loaders`, + viewport: "width=device-width,initial-scale=1", + }, +]; + +/** Add links to head */ +export const links: LinksFunction = () => [{ rel: "stylesheet", href: styles }]; + +/** Remix app root */ +export default function App(): JSX.Element { + return ( + + + + + + + + +
+ + + + + + + + + ); +} diff --git a/examples/remix/app/routes/_index.tsx b/examples/remix/app/routes/_index.tsx new file mode 100644 index 00000000..55f230e6 --- /dev/null +++ b/examples/remix/app/routes/_index.tsx @@ -0,0 +1,11 @@ +import { Demo } from "@repo/shared"; +import { LandingPage } from "@repo/shared/dist/server"; + +/** Remix App */ +export default function Index(): JSX.Element { + return ( + + + + ); +} diff --git a/examples/remix/app/styles.css b/examples/remix/app/styles.css new file mode 100644 index 00000000..cb687b23 --- /dev/null +++ b/examples/remix/app/styles.css @@ -0,0 +1,68 @@ +@import "nextjs-darkmode/css"; +@import "@repo/shared/dist/global.css"; +@import "@repo/shared/dist"; +@import "react18-loaders/dist"; + +html { + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Helvetica Neue, + Arial, + sans-serif; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} + +body { + margin: 0; +} + +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + max-width: 100%; + margin: 0 auto; + padding: 0 16px; + text-align: center; +} + +.title { + font-size: 3rem; + font-weight: 700; + margin: 0; +} + +.title span { + display: inline-block; + background-image: linear-gradient(to right, #3b82f6, #ef4444); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.description { + color: #9ca3af; + font-weight: 500; +} + +.description a { + color: #3b82f6; + text-decoration: none; +} + +.description a:hover { + text-decoration: underline; +} diff --git a/examples/remix/package.json b/examples/remix/package.json new file mode 100644 index 00000000..fdb0fff3 --- /dev/null +++ b/examples/remix/package.json @@ -0,0 +1,37 @@ +{ + "name": "@example/remix", + "version": "0.0.0", + "private": true, + "sideEffects": false, + "scripts": { + "build": "remix build", + "dev": "remix dev", + "typecheck": "tsc --noEmit", + "lint": "eslint app/" + }, + "dependencies": { + "@remix-run/node": "^2.10.0", + "@remix-run/react": "^2.10.0", + "@remix-run/serve": "^2.10.0", + "@remix-run/server-runtime": "^2.10.0", + "@repo/shared": "workspace:*", + "@vercel/analytics": "^1.3.1", + "@vercel/remix-entry-server": "^0.1.1", + "nextjs-darkmode": "^1.0.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react18-loaders": "workspace:*", + "react18-themes": "^3.2.0" + }, + "devDependencies": { + "@remix-run/dev": "^2.10.0", + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "typescript": "^5.5.2" + }, + "engines": { + "node": ">=18" + } +} diff --git a/examples/remix/public/favicon.ico b/examples/remix/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8830cf6821b354114848e6354889b8ecf6d2bc61 GIT binary patch literal 16958 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 EKbET!0{{R3 literal 0 HcmV?d00001 diff --git a/examples/remix/remix.config.js b/examples/remix/remix.config.js new file mode 100644 index 00000000..5bdbfd78 --- /dev/null +++ b/examples/remix/remix.config.js @@ -0,0 +1,9 @@ +/** @type {import('@remix-run/dev').AppConfig} */ +module.exports = { + ignoredRouteFiles: ["**/.*"], + serverModuleFormat: "cjs", + // appDirectory: "app", + // assetsBuildDirectory: "public/build", + // serverBuildPath: "build/index.js", + // publicPath: "/build/", +}; diff --git a/examples/remix/remix.env.d.ts b/examples/remix/remix.env.d.ts new file mode 100644 index 00000000..5c938f10 --- /dev/null +++ b/examples/remix/remix.env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/examples/remix/server.js b/examples/remix/server.js new file mode 100644 index 00000000..3b02013a --- /dev/null +++ b/examples/remix/server.js @@ -0,0 +1,4 @@ +import { createRequestHandler } from "@remix-run/server-runtime"; +import * as build from "@remix-run/dev/server-build"; + +export default createRequestHandler({ build, mode: process.env.NODE_ENV }); diff --git a/examples/remix/tsconfig.json b/examples/remix/tsconfig.json new file mode 100644 index 00000000..2770e9c0 --- /dev/null +++ b/examples/remix/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "@repo/typescript-config/remix.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "dist", + "paths": { + "~/*": ["./app/*"] + } + }, + "include": [ + "remix.env.d.ts", + "**/*.ts", + "**/*.tsx", + "server.js", + "remix.config.js" + ], + "exclude": ["node_modules", "build"] +} diff --git a/examples/remix/turbo.json b/examples/remix/turbo.json new file mode 100644 index 00000000..e96fb0bb --- /dev/null +++ b/examples/remix/turbo.json @@ -0,0 +1,13 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "build/**", + "public/build/**" + ] + } + } +} diff --git a/examples/vite/.eslintrc.js b/examples/vite/.eslintrc.js new file mode 100644 index 00000000..d83112c0 --- /dev/null +++ b/examples/vite/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/react.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/examples/vite/index.html b/examples/vite/index.html new file mode 100644 index 00000000..978f2d53 --- /dev/null +++ b/examples/vite/index.html @@ -0,0 +1,12 @@ + + + + + + Admin | Turborepo Template + + +
+ + + diff --git a/examples/vite/package.json b/examples/vite/package.json new file mode 100644 index 00000000..e25d8011 --- /dev/null +++ b/examples/vite/package.json @@ -0,0 +1,30 @@ +{ + "name": "@example/vite", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "vite build", + "start": "vite preview", + "clean": "rm -rf dist", + "dev": "vite --host 0.0.0.0 --port 3001 --clearScreen false", + "typecheck": "tsc --noEmit", + "lint": "eslint src/" + }, + "dependencies": { + "@repo/shared": "workspace:*", + "nextjs-darkmode": "^1.0.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react18-loaders": "workspace:*", + "react18-themes": "^3.2.0" + }, + "devDependencies": { + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "typescript": "^5.5.2", + "vite": "^5.3.2" + } +} diff --git a/examples/vite/public/favicon.ico b/examples/vite/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a3c34a2353ab2ce8839a840f162be03d1a9826d GIT binary patch literal 372526 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 sR3p#5vtdZRf19}h=DTmS$7 literal 0 HcmV?d00001 diff --git a/examples/vite/src/app/index.tsx b/examples/vite/src/app/index.tsx new file mode 100644 index 00000000..623f5688 --- /dev/null +++ b/examples/vite/src/app/index.tsx @@ -0,0 +1,28 @@ +import React, { useCallback } from "react"; +import "./styles.css"; +import { Bars1, Bars2, Dots1, Dots2 } from "react18-loaders/dist/server"; +import { LoaderContainer, useLoader } from "react18-loaders"; +import { LandingPage, Layout } from "@repo/shared/dist/server"; +import { Core } from "nextjs-darkmode"; +import { Demo, Header } from "@repo/shared"; + +/** Vite App */ +function App(): JSX.Element { + const { setLoading } = useLoader(); + const handleClick = useCallback(() => setLoading(true), []); + return ( + + +
+ + + + + + + + + ); +} + +export default App; diff --git a/examples/vite/src/app/styles.css b/examples/vite/src/app/styles.css new file mode 100644 index 00000000..ca59aa6a --- /dev/null +++ b/examples/vite/src/app/styles.css @@ -0,0 +1,45 @@ +@import "react18-loaders/dist"; +@import "nextjs-darkmode/css"; +@import "@repo/shared/dist/global.css"; +@import "@repo/shared/dist"; + +.container { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + max-width: 100%; + margin: 0 auto; + padding: 0 16px; + text-align: center; +} + +.title { + font-size: 3rem; + font-weight: 700; + margin: 0; +} + +.title span { + display: inline-block; + background-image: linear-gradient(to right, #3b82f6, #ef4444); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.description { + color: #9ca3af; + font-weight: 500; +} + +.description a { + color: #3b82f6; + text-decoration: none; +} + +.description a:hover { + text-decoration: underline; +} diff --git a/examples/vite/src/index.css b/examples/vite/src/index.css new file mode 100644 index 00000000..efb82277 --- /dev/null +++ b/examples/vite/src/index.css @@ -0,0 +1,22 @@ +html { + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Helvetica Neue, + Arial, + sans-serif; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + tab-size: 4; +} + +body { + margin: 0; +} diff --git a/examples/vite/src/main.tsx b/examples/vite/src/main.tsx new file mode 100644 index 00000000..9657f6dd --- /dev/null +++ b/examples/vite/src/main.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import App from "./app"; +import "./index.css"; + +const el = document.getElementById("root"); +if (el) { + const root = createRoot(el); + root.render( + + + , + ); +} else { + throw new Error("Could not find root element"); +} diff --git a/examples/vite/tsconfig.json b/examples/vite/tsconfig.json new file mode 100644 index 00000000..c64bb08c --- /dev/null +++ b/examples/vite/tsconfig.json @@ -0,0 +1,9 @@ +{ + "exclude": ["node_modules"], + "extends": "@repo/typescript-config/vite.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "dist" + }, + "include": ["src", "vite.config.ts"] +} diff --git a/examples/vite/turbo.json b/examples/vite/turbo.json new file mode 100644 index 00000000..52e8c763 --- /dev/null +++ b/examples/vite/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "dist/**" + ] + } + } +} diff --git a/examples/vite/vite.config.ts b/examples/vite/vite.config.ts new file mode 100644 index 00000000..58676f78 --- /dev/null +++ b/examples/vite/vite.config.ts @@ -0,0 +1,6 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react()], +}); diff --git a/lib/.eslintrc.js b/lib/.eslintrc.js new file mode 100644 index 00000000..d83112c0 --- /dev/null +++ b/lib/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/react.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/lib/CHANGELOG.md b/lib/CHANGELOG.md new file mode 100644 index 00000000..c64bb410 --- /dev/null +++ b/lib/CHANGELOG.md @@ -0,0 +1,91 @@ +# react18-loaders + +## 1.1.3 + +### Patch Changes + +- 02d5cd9: Use https://www.npmjs.com/package/esbuild-plugin-rdi to better minify the build. + +## 1.1.2 + +### Patch Changes + +- Update peerDependency + +## 1.1.1 + +### Patch Changes + +- 5579416: Publish lite version + +## 1.1.0 + +### Minor Changes + +- 032f2f8: Added loading prop to loader-container and improved styles + +## 1.0.3 + +### Patch Changes + +- Remove uuid as it will result in multiple rgs stores for treeshakable imports + +## 1.0.2 + +### Patch Changes + +- Fix renaming of CSS variables due to react18 plugin + +## 1.0.1 + +### Patch Changes + +- Upgrade esbuild-plugin-reacct18 to beta version for better minification + +## 1.0.0 + +### Minor Changes + +- d80cde0: test minor + +### Patch Changes + +- 6ad42c8: test patch canary + +## 1.0.0-canary.1 + +### Minor Changes + +- d80cde0: test minor + +### Patch Changes + +- 6ad42c8: test patch canary + +## 1.0.0-canary.0 + +### Major Changes + +- b1f029b: test major + +### Minor Changes + +- d80cde0: test minor + +### Patch Changes + +- 6ad42c8: test patch canary + +## 0.0.2 + +### Patch Changes + +- 1d4dec0: debug creation of release and pushing back to the repo +- 52eb814: Test canary +- ea8e4ee: test canary release + +## 0.0.1 + +### Patch Changes + +- 0c17b4a: Fix: add z-index for loader container diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 00000000..fddc7f84 --- /dev/null +++ b/lib/README.md @@ -0,0 +1,132 @@ +# React18 Loaders + +[![test](https://github.com/react18-tools/turborepo-template/actions/workflows/test.yml/badge.svg)](https://github.com/react18-tools/turborepo-template/actions/workflows/test.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/aa896ec14c570f3bb274/maintainability)](https://codeclimate.com/github/react18-tools/turborepo-template/maintainability) [![codecov](https://codecov.io/gh/react18-tools/turborepo-template/graph/badge.svg)](https://codecov.io/gh/react18-tools/turborepo-template) [![Version](https://img.shields.io/npm/v/react18-loaders.svg?colorB=green)](https://www.npmjs.com/package/react18-loaders) [![Downloads](https://img.jsdelivr.com/img.shields.io/npm/d18m/react18-loaders.svg)](https://www.npmjs.com/package/react18-loaders) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/react18-loaders) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/from-referrer/) + +React18 Loaders is a comprehensive library designed to unlock the full potential of React 18 server components. It provides customizable loading animation components and a fullscreen loader container, seamlessly integrating with React and Next.js. + +βœ… Fully Treeshakable (import from `react18-loaders/client/loader-container`) + +βœ… Fully TypeScript Supported + +βœ… Leverages the power of React 18 Server components + +βœ… Compatible with all React 18 build systems/tools/frameworks + +βœ… Documented with [Typedoc](https://react18-tools.github.io/turborepo-template) ([Docs](https://react18-tools.github.io/turborepo-template)) + +βœ… Examples for Next.js, Vite, and Remix + +> Please consider starring [this repository](https://github.com/react18-tools/turborepo-template) and sharing it with your friends. + +## Getting Started + +### Installation + +```bash +$ pnpm add react18-loaders +``` + +**_or_** + +```bash +$ npm install react18-loaders +``` + +**_or_** + +```bash +$ yarn add react18-loaders +``` + +## Want Lite Version? [![npm bundle size](https://img.shields.io/bundlephobia/minzip/react18-loaders-lite)](https://www.npmjs.com/package/react18-loaders-lite) [![Version](https://img.shields.io/npm/v/react18-loaders-lite.svg?colorB=green)](https://www.npmjs.com/package/react18-loaders-lite) [![Downloads](https://img.jsdelivr.com/img.shields.io/npm/d18m/react18-loaders-lite.svg)](https://www.npmjs.com/package/react18-loaders-lite) + +```bash +$ pnpm add react18-loaders-lite +``` + +**or** + +```bash +$ npm install react18-loaders-lite +``` + +**or** + +```bash +$ yarn add react18-loaders-lite +``` + +> You need `r18gs` as a peer-dependency + +### Import Styles + +You can import styles globally or within specific components. + +```css +/* globals.css */ +@import "react18-loaders/dist"; +``` + +```tsx +// layout.tsx +import "react18-loaders/dist/index.css"; +``` + +For selective imports: + +```css +/* globals.css */ +@import "react18-loaders/dist/client"; /** required if you are using LoaderContainer */ +@import "react18-loaders/dist/server/bars/bars1"; +``` + +### Usage + +Using loaders is straightforward. + +```tsx +import { Bars1 } from "react18-loaders/dist/server/bars/bars1"; + +export default function MyComponent() { + return someCondition ? : <>Something else...; +} +``` + +For detailed API and options, refer to [the API documentation](https://react18-tools.github.io/turborepo-template). + +**Using LoaderContainer** + +`LoaderContainer` is a fullscreen component. You can add this component directly in your layout and then use `useLoader` hook to toggle its visibility. + +```tsx +// layout.tsx + + ... +``` + +```tsx +// some other page or component +import { useLoader } from "react18-loaders/dist/hooks"; + +export default MyComponent() { + const { setLoading } = useLoader(); + useCallback(()=>{ + setLoading(true); + ...do some work + setLoading(false); + }, []) + ... +} +``` + +## License + +This library is licensed under the MPL-2.0 open-source license. + +> This package also serves as an example demonstrating how to build and publish a `React.js` library compatible with React Server Components. + +> Please consider enrolling in [our courses](https://mayank-chaudhari.vercel.app/courses) or [sponsoring](https://github.com/sponsors/mayank1513) our work. + +
+ +

with πŸ’– by Mayank Kumar Chaudhari

diff --git a/lib/package.json b/lib/package.json new file mode 100644 index 00000000..b7012b14 --- /dev/null +++ b/lib/package.json @@ -0,0 +1,90 @@ +{ + "name": "react18-loaders", + "author": "Mayank Kumar Chaudhari ", + "private": false, + "version": "1.1.3", + "description": "A comprehensive library that unleashes the full potential of React 18 server components, providing customizable loading animation components alongside a fullscreen loader container. Designed to seamlessly integrate with React and Next.js.", + "license": "MPL-2.0", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "repository": "github:react18-tools/turborepo-template", + "bugs": "https://github.com/react18-tools/turborepo-template/issues", + "homepage": "https://turborepo-template-three.vercel.app/", + "sideEffects": false, + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup && tsc -p tsconfig-build.json", + "clean": "rm -rf dist", + "dev": "tsup --watch && tsc -p tsconfig-build.json -w", + "typecheck": "tsc --noEmit", + "lint": "eslint src/", + "test": "vitest run --coverage" + }, + "devDependencies": { + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@testing-library/react": "^16.0.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "@vitest/coverage-v8": "^1.6.0", + "esbuild-plugin-rdi": "^0.0.0", + "esbuild-plugin-react18": "0.2.4", + "esbuild-plugin-react18-css": "^0.0.4", + "jsdom": "^24.1.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tsup": "^8.1.0", + "typescript": "^5.5.2", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.0" + }, + "dependencies": { + "r18gs": "^1.1.3" + }, + "peerDependencies": { + "@types/react": "16.8 - 19", + "next": "10 - 15", + "react": "16.8 - 19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + } + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mayank1513" + }, + { + "type": "individual", + "url": "https://pages.razorpay.com/mayank1513" + } + ], + "keywords": [ + "Loading animations", + "Fullscreen loader", + "React", + "React Loaders", + "React 18", + "React 19", + "Next.js", + "Next.js 14", + "Next.js 15", + "React server components", + "Customizable", + "Cutting-edge", + "Compatibility", + "Frontend development", + "UI components", + "Web development", + "Progressive", + "Modern", + "Seamless integration" + ] +} diff --git a/lib/src/client/index.ts b/lib/src/client/index.ts new file mode 100644 index 00000000..e7e26776 --- /dev/null +++ b/lib/src/client/index.ts @@ -0,0 +1,10 @@ +"use client"; + +/** + * Server components and client components need to be exported from separate files as + * directive on top of the file from which component is imported takes effect. + * i.e., server component re-exported from file with "use client" will behave as client component + * */ + +// client component exports +export * from "./loader-container"; diff --git a/lib/src/client/loader-container/index.ts b/lib/src/client/loader-container/index.ts new file mode 100644 index 00000000..f262bb1d --- /dev/null +++ b/lib/src/client/loader-container/index.ts @@ -0,0 +1,3 @@ +"use client"; + +export * from "./loader-container"; diff --git a/lib/src/client/loader-container/loader-container.module.scss b/lib/src/client/loader-container/loader-container.module.scss new file mode 100644 index 00000000..c0157d72 --- /dev/null +++ b/lib/src/client/loader-container/loader-container.module.scss @@ -0,0 +1,28 @@ +.container { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; + pointer-events: none; + backdrop-filter: blur(1px); + background: radial-gradient(circle, #535bf200 0%, #535bf200 150%, #8489f685, #535bf255); + opacity: 0; + transition: all 0.5s; + * { + animation-play-state: paused !important; + } +} +.loading { + backdrop-filter: blur(3px); + background: radial-gradient(circle, #535bf200 0%, #535bf200 0%, #8489f6b5 10%, #535bf255 100%); + pointer-events: all; + opacity: 1; + * { + animation-play-state: running !important; + } +} diff --git a/lib/src/client/loader-container/loader-container.test.tsx b/lib/src/client/loader-container/loader-container.test.tsx new file mode 100644 index 00000000..d33dc458 --- /dev/null +++ b/lib/src/client/loader-container/loader-container.test.tsx @@ -0,0 +1,15 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { LoaderContainer } from "./loader-container"; + +describe.concurrent("loader-container", () => { + afterEach(cleanup); + + test("check if renders without erros", () => { + render(); + }); + + test("check if renders without erros", () => { + render(); + }); +}); diff --git a/lib/src/client/loader-container/loader-container.tsx b/lib/src/client/loader-container/loader-container.tsx new file mode 100644 index 00000000..8adf3236 --- /dev/null +++ b/lib/src/client/loader-container/loader-container.tsx @@ -0,0 +1,20 @@ +import styles from "./loader-container.module.scss"; +import useRGS from "r18gs"; +import { LOADER_RGS_KEY } from "../../constants"; + +interface LoaderContainerProps extends React.HTMLProps { + children?: React.ReactNode; + loading?: boolean; +} + +/** + * # LoaderContainer + * A full screen container for the loading animation. + */ +export function LoaderContainer({ children, loading }: LoaderContainerProps) { + const [_loading] = useRGS(LOADER_RGS_KEY, false); + const loading_ = loading ?? _loading; + return ( +
{children}
+ ); +} diff --git a/lib/src/constants.ts b/lib/src/constants.ts new file mode 100644 index 00000000..774e037d --- /dev/null +++ b/lib/src/constants.ts @@ -0,0 +1,3 @@ +/** generate uuid to avoid conflicting keys */ +// const uuid = () => (Date.now() * Math.random()).toString(16).slice(2, 8); +export const LOADER_RGS_KEY = "r18-loaders"; diff --git a/lib/src/declaration.d.ts b/lib/src/declaration.d.ts new file mode 100644 index 00000000..e6c7b7b2 --- /dev/null +++ b/lib/src/declaration.d.ts @@ -0,0 +1,2 @@ +declare module "*.module.css"; +declare module "*.module.scss"; diff --git a/lib/src/hooks/index.ts b/lib/src/hooks/index.ts new file mode 100644 index 00000000..5e7fac64 --- /dev/null +++ b/lib/src/hooks/index.ts @@ -0,0 +1 @@ +export * from "./use-loader"; diff --git a/lib/src/hooks/use-loader.test.tsx b/lib/src/hooks/use-loader.test.tsx new file mode 100644 index 00000000..8f671986 --- /dev/null +++ b/lib/src/hooks/use-loader.test.tsx @@ -0,0 +1,17 @@ +import { cleanup, render, renderHook, act } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { LoaderContainer } from "../client"; +import { useLoader } from "./use-loader"; +import styles from "../client/loader-container/loader-container.module.scss"; + +describe.concurrent("loader-container", () => { + afterEach(cleanup); + + test("Test hook", ({ expect }) => { + const { result } = renderHook(() => useLoader()); + const { container } = render(); + expect(container.children[0].classList).not.toContain(styles.loading); + act(() => result.current.setLoading(true)); + expect(container.children[0].classList).toContain(styles.loading); + }); +}); diff --git a/lib/src/hooks/use-loader.ts b/lib/src/hooks/use-loader.ts new file mode 100644 index 00000000..c14e7a70 --- /dev/null +++ b/lib/src/hooks/use-loader.ts @@ -0,0 +1,11 @@ +import useRGS from "r18gs"; +import { LOADER_RGS_KEY } from "../constants"; + +/** + * + * @returns + */ +export function useLoader() { + const [loading, setLoading] = useRGS(LOADER_RGS_KEY); + return { loading, setLoading }; +} diff --git a/lib/src/index.ts b/lib/src/index.ts new file mode 100644 index 00000000..db127bb1 --- /dev/null +++ b/lib/src/index.ts @@ -0,0 +1,9 @@ +"use client"; +/** + * Don't export client side components from here. + * + * Hooks are okay to export from here as they do not require "use client" directive. + */ + +export * from "./client"; +export * from "./hooks"; diff --git a/lib/src/server/bars/bars1/bars1.module.scss b/lib/src/server/bars/bars1/bars1.module.scss new file mode 100644 index 00000000..9e896efb --- /dev/null +++ b/lib/src/server/bars/bars1/bars1.module.scss @@ -0,0 +1,28 @@ +/* HTML:
*/ +.loader { + width: 45px; + aspect-ratio: 1; + --c: #000; + --b: no-repeat repeating-linear-gradient(90deg, var(--c) 0 calc(100% / 7), #0000 0 calc(200% / 7)); + background: var(--b), var(--b), var(--b), var(--b); + background-size: 140% 26%; + animation: l27 0.75s infinite linear; +} +@keyframes l27 { + 0%, + 20% { + background-position: + 0 calc(0 * 100% / 3), + 100% calc(1 * 100% / 3), + 0 calc(2 * 100% / 3), + 100% calc(3 * 100% / 3); + } + 80%, + 100% { + background-position: + 100% calc(0 * 100% / 3), + 0 calc(1 * 100% / 3), + 100% calc(2 * 100% / 3), + 0 calc(3 * 100% / 3); + } +} diff --git a/lib/src/server/bars/bars1/bars1.test.tsx b/lib/src/server/bars/bars1/bars1.test.tsx new file mode 100644 index 00000000..a840b77d --- /dev/null +++ b/lib/src/server/bars/bars1/bars1.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Bars1 } from "./bars1"; + +describe.concurrent("bars1", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/lib/src/server/bars/bars1/bars1.tsx b/lib/src/server/bars/bars1/bars1.tsx new file mode 100644 index 00000000..f4ffd57b --- /dev/null +++ b/lib/src/server/bars/bars1/bars1.tsx @@ -0,0 +1,14 @@ +import styles from "./bars1.module.scss"; +import { Base, BaseProps } from "../../common"; + +/** + * A simple loader with 3 dots. + * + * @example + * + * + * @source + */ +export function Bars1(props: BaseProps) { + return ; +} diff --git a/lib/src/server/bars/bars1/index.ts b/lib/src/server/bars/bars1/index.ts new file mode 100644 index 00000000..451cb05b --- /dev/null +++ b/lib/src/server/bars/bars1/index.ts @@ -0,0 +1 @@ +export * from "./bars1"; diff --git a/lib/src/server/bars/bars2/bars2.module.scss b/lib/src/server/bars/bars2/bars2.module.scss new file mode 100644 index 00000000..dc655553 --- /dev/null +++ b/lib/src/server/bars/bars2/bars2.module.scss @@ -0,0 +1,45 @@ +/* HTML:
*/ +.loader { + width: 45px; + aspect-ratio: 1; + --c: #000; + --b: no-repeat linear-gradient(var(--c) 0 0); + background: + var(--b) 0% 50%, + var(--b) 50% 50%, + var(--b) 100% 50%; + background-size: 20% 100%; + animation: l1 1s infinite linear; +} +@keyframes l1 { + 0% { + background-size: + 20% 100%, + 20% 100%, + 20% 100%; + } + 33% { + background-size: + 20% 10%, + 20% 100%, + 20% 100%; + } + 50% { + background-size: + 20% 100%, + 20% 10%, + 20% 100%; + } + 66% { + background-size: + 20% 100%, + 20% 100%, + 20% 10%; + } + 100% { + background-size: + 20% 100%, + 20% 100%, + 20% 100%; + } +} diff --git a/lib/src/server/bars/bars2/bars2.test.tsx b/lib/src/server/bars/bars2/bars2.test.tsx new file mode 100644 index 00000000..8372373c --- /dev/null +++ b/lib/src/server/bars/bars2/bars2.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Bars2 } from "./bars2"; + +describe.concurrent("bars2", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/lib/src/server/bars/bars2/bars2.tsx b/lib/src/server/bars/bars2/bars2.tsx new file mode 100644 index 00000000..775640ee --- /dev/null +++ b/lib/src/server/bars/bars2/bars2.tsx @@ -0,0 +1,14 @@ +import styles from "./bars2.module.scss"; +import { Base, BaseProps } from "../../common"; + +/** + * A simple loader with 3 dots. + * + * @example + * + * + * @source + */ +export function Bars2(props: BaseProps) { + return ; +} diff --git a/lib/src/server/bars/bars2/index.ts b/lib/src/server/bars/bars2/index.ts new file mode 100644 index 00000000..9781c2d9 --- /dev/null +++ b/lib/src/server/bars/bars2/index.ts @@ -0,0 +1 @@ +export * from "./bars2"; diff --git a/lib/src/server/bars/index.ts b/lib/src/server/bars/index.ts new file mode 100644 index 00000000..71c72f95 --- /dev/null +++ b/lib/src/server/bars/index.ts @@ -0,0 +1,4 @@ +// bars component exports + +export * from "./bars1"; +export * from "./bars2"; diff --git a/lib/src/server/common/base/base.test.tsx b/lib/src/server/common/base/base.test.tsx new file mode 100644 index 00000000..a39e7763 --- /dev/null +++ b/lib/src/server/common/base/base.test.tsx @@ -0,0 +1,12 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Base } from "./base"; + +describe.concurrent("base", () => { + afterEach(cleanup); + + test("check if h1 heading exists", ({ expect }) => { + const { container } = render(); + expect(container.children[0].classList).toContain("my-clx"); + }); +}); diff --git a/lib/src/server/common/base/base.tsx b/lib/src/server/common/base/base.tsx new file mode 100644 index 00000000..bf276433 --- /dev/null +++ b/lib/src/server/common/base/base.tsx @@ -0,0 +1,38 @@ +import { HTMLProps } from "react"; + +/** Interface declaring the common properties of the loaders */ +export interface BaseProps extends HTMLProps { + /** width of the loader element in pixels or a string with a length unit. */ + width?: number | string; + /** height of the loader element in pixels or a string with a length unit. */ + height?: number | string; + /** Color of the dots - CSS compatible color */ + color?: string; +} + +/** Other props - loaderClass is included here as we will extend BaseProps for other loaders */ +interface OtherProps { + /** Loader class name */ + loaderClass: string; + dotRadius?: number | string; +} + +/** + * Base component to avoid code duplication + * + * default values should be specified in css files - so no need to set them in JSX + */ +export function Base({ + width, + height, + color, + loaderClass, + dotRadius, + ...props +}: BaseProps & OtherProps) { + const style = { ...props.style, width, height, "--c": color }; + // @ts-expect-error -- it is intensional + if (dotRadius) style["--r"] = dotRadius; + const className = [props.className, loaderClass].filter(Boolean).join(" "); + return
; +} diff --git a/lib/src/server/common/base/index.ts b/lib/src/server/common/base/index.ts new file mode 100644 index 00000000..955fdd14 --- /dev/null +++ b/lib/src/server/common/base/index.ts @@ -0,0 +1 @@ +export * from "./base"; diff --git a/lib/src/server/common/index.ts b/lib/src/server/common/index.ts new file mode 100644 index 00000000..40b78e78 --- /dev/null +++ b/lib/src/server/common/index.ts @@ -0,0 +1,3 @@ +// common component exports + +export * from "./base"; diff --git a/lib/src/server/dots/dots1/dots1.module.scss b/lib/src/server/dots/dots1/dots1.module.scss new file mode 100644 index 00000000..c84414f9 --- /dev/null +++ b/lib/src/server/dots/dots1/dots1.module.scss @@ -0,0 +1,16 @@ +/* HTML:
*/ +.loader { + --c: #000; + width: 60px; + aspect-ratio: 4; + background: radial-gradient(circle closest-side, var(--c) 90%, #0000) 0 / calc(100% / 3) 100% + space; + clip-path: inset(0 100% 0 0); + animation: anim 1s steps(4) infinite; +} + +@keyframes anim { + to { + clip-path: inset(0 -34% 0 0); + } +} diff --git a/lib/src/server/dots/dots1/dots1.test.tsx b/lib/src/server/dots/dots1/dots1.test.tsx new file mode 100644 index 00000000..91aae611 --- /dev/null +++ b/lib/src/server/dots/dots1/dots1.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Dots1 } from "./dots1"; + +describe.concurrent("dots1", () => { + afterEach(cleanup); + + test("check if renders without erros", () => { + render(); + }); +}); diff --git a/lib/src/server/dots/dots1/dots1.tsx b/lib/src/server/dots/dots1/dots1.tsx new file mode 100644 index 00000000..ed048956 --- /dev/null +++ b/lib/src/server/dots/dots1/dots1.tsx @@ -0,0 +1,14 @@ +import styles from "./dots1.module.scss"; +import { Base, BaseProps } from "../../common"; + +/** + * A simple loader with 3 dots. + * + * @example + * + * + * @source + */ +export function Dots1(props: BaseProps) { + return ; +} diff --git a/lib/src/server/dots/dots1/index.ts b/lib/src/server/dots/dots1/index.ts new file mode 100644 index 00000000..277e40de --- /dev/null +++ b/lib/src/server/dots/dots1/index.ts @@ -0,0 +1 @@ +export * from "./dots1"; diff --git a/lib/src/server/dots/dots2/dots2.module.scss b/lib/src/server/dots/dots2/dots2.module.scss new file mode 100644 index 00000000..8933d160 --- /dev/null +++ b/lib/src/server/dots/dots2/dots2.module.scss @@ -0,0 +1,37 @@ +/* HTML:
*/ +.loader { + width: 32px; + aspect-ratio: 1; + --c: #000; + --dot-radius: 20%; + --_g: no-repeat radial-gradient(farthest-side, var(--c) 90%, #0000); + background: var(--_g), var(--_g), var(--_g), var(--_g); + background-size: calc(2 * var(--dot-radius)) calc(2 * var(--dot-radius)); + animation: anim 1s infinite; +} + +@keyframes anim { + 0% { + background-position: + 0 0, + 100% 0, + 100% 100%, + 0 100%; + } + 40%, + 50% { + background-position: + 100% 100%, + 100% 0, + 0 0, + 0 100%; + } + 90%, + 100% { + background-position: + 100% 100%, + 0 100%, + 0 0, + 100% 0; + } +} diff --git a/lib/src/server/dots/dots2/dots2.test.tsx b/lib/src/server/dots/dots2/dots2.test.tsx new file mode 100644 index 00000000..87f0284e --- /dev/null +++ b/lib/src/server/dots/dots2/dots2.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Dots2 } from "./dots2"; + +describe.concurrent("dots2", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/lib/src/server/dots/dots2/dots2.tsx b/lib/src/server/dots/dots2/dots2.tsx new file mode 100644 index 00000000..d911fa2b --- /dev/null +++ b/lib/src/server/dots/dots2/dots2.tsx @@ -0,0 +1,19 @@ +import styles from "./dots2.module.scss"; +import { Base, BaseProps } from "../../common"; + +interface Dots2Props extends BaseProps { + /** Radius of the dots in pixels or a string with a length unit. */ + dotRadius?: number | string; +} + +/** + * A simple loader with 3 dots. + * + * @example + * + * + * @source + */ +export function Dots2(props: Dots2Props) { + return ; +} diff --git a/lib/src/server/dots/dots2/index.ts b/lib/src/server/dots/dots2/index.ts new file mode 100644 index 00000000..e7f74741 --- /dev/null +++ b/lib/src/server/dots/dots2/index.ts @@ -0,0 +1 @@ +export * from "./dots2"; diff --git a/lib/src/server/dots/index.ts b/lib/src/server/dots/index.ts new file mode 100644 index 00000000..b7857aaa --- /dev/null +++ b/lib/src/server/dots/index.ts @@ -0,0 +1,4 @@ +// dots component exports + +export * from "./dots1"; +export * from "./dots2"; diff --git a/lib/src/server/index.ts b/lib/src/server/index.ts new file mode 100644 index 00000000..58b74bca --- /dev/null +++ b/lib/src/server/index.ts @@ -0,0 +1,9 @@ +/** + * need to export server components and client components from separate files as + * directive on top of the file from which component is imported takes effect. + * i.e., server component re-exported from file with "use client" will behave as client component + * */ + +// server component exports +export * from "./dots"; +export * from "./bars"; diff --git a/lib/tsconfig-build.json b/lib/tsconfig-build.json new file mode 100644 index 00000000..66cc4082 --- /dev/null +++ b/lib/tsconfig-build.json @@ -0,0 +1,12 @@ +{ + // using tsc for type declarations as "Note that declaration files generated by any tool other than tsc are not guaranteed to be error-free, so it's a good idea to test the output with tsc" - https://tsup.egoist.dev/#generate-declaration-file + "extends": "@repo/typescript-config/react-library.json", + "compilerOptions": { + "outDir": "dist", + "noEmit": false, + "emitDeclarationOnly": true, + "declarationMap": false + }, + "include": ["src"], + "exclude": ["dist", "node_modules", "**/*.test.*", "**/*.spec.*"] +} diff --git a/lib/tsconfig.json b/lib/tsconfig.json new file mode 100644 index 00000000..9430b2f8 --- /dev/null +++ b/lib/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/react-library.json", + "compilerOptions": { + "lib": ["dom", "ES2015"], + "types": ["vitest", "node"] + }, + "include": ["."], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/lib/tsup.config.ts b/lib/tsup.config.ts new file mode 100644 index 00000000..e00b1f29 --- /dev/null +++ b/lib/tsup.config.ts @@ -0,0 +1,23 @@ +import { defineConfig, type Options } from "tsup"; +import react18Plugin from "esbuild-plugin-react18"; +import cssPlugin from "esbuild-plugin-react18-css"; +import { rdiPlugin } from "esbuild-plugin-rdi"; + +export default defineConfig( + (options: Options) => + ({ + format: ["cjs", "esm"], + target: "es2019", + entry: ["./src"], + sourcemap: false, + clean: !options.watch, + bundle: true, + minify: !options.watch, + esbuildPlugins: [ + react18Plugin({ disableJSXRequireDedup: true }), + cssPlugin({ generateScopedName: "[folder]__[local]" }), + rdiPlugin(), + ], + ...options, + }) as Options, +); diff --git a/lib/turbo.json b/lib/turbo.json new file mode 100644 index 00000000..52e8c763 --- /dev/null +++ b/lib/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "dist/**" + ] + } + } +} diff --git a/lib/vitest.config.ts b/lib/vitest.config.ts new file mode 100644 index 00000000..18196779 --- /dev/null +++ b/lib/vitest.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "vitest/config"; +import react from "@vitejs/plugin-react"; +import tsconfigPaths from "vite-tsconfig-paths"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), tsconfigPaths()], + test: { + environment: "jsdom", + globals: true, + setupFiles: [], + coverage: { + include: ["src/**"], + exclude: ["src/**/index.ts", "src/**/declaration.d.ts"], + reporter: ["text", "json", "clover", "html"], + }, + }, +}); diff --git a/package.json b/package.json new file mode 100644 index 00000000..03b11bf3 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "turborepo-template", + "private": true, + "scripts": { + "build": "turbo build", + "clean": "turbo clean", + "dev": "turbo dev", + "doc": "node scripts/doc.js && typedoc", + "format": "prettier --write \"**/*.{ts,tsx,md,css,scss}\"", + "lint": "turbo lint", + "test": "turbo test", + "typecheck": "turbo typecheck", + "preinstall": "node scripts/update-pm.js", + "rebrand": "node scripts/rebrand.js" + }, + "devDependencies": { + "@changesets/cli": "^2.27.6", + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.14.9", + "enquirer": "^2.4.1", + "plop": "^4.0.1", + "prettier": "^3.3.2", + "turbo": "^2.0.6", + "typedoc": "^0.26.3", + "typedoc-plugin-extras": "^3.1.0", + "typedoc-plugin-inline-sources": "^1.0.2", + "typedoc-plugin-mdn-links": "^3.2.1", + "typedoc-plugin-missing-exports": "^3.0.0", + "typedoc-plugin-rename-defaults": "^0.7.1", + "typedoc-plugin-zod": "^1.2.0" + }, + "packageManager": "pnpm@9.4.0", + "engines": { + "node": ">=18" + }, + "pnpm": { + "overrides": { + "eslint": "^8.0.0" + } + }, + "overrides": { + "eslint": "^8.0.0" + } +} \ No newline at end of file diff --git a/packages/config-eslint/README.md b/packages/config-eslint/README.md new file mode 100644 index 00000000..8b42d901 --- /dev/null +++ b/packages/config-eslint/README.md @@ -0,0 +1,3 @@ +# `@turbo/eslint-config` + +Collection of internal eslint configurations. diff --git a/packages/config-eslint/index.js b/packages/config-eslint/index.js new file mode 100644 index 00000000..c667cd10 --- /dev/null +++ b/packages/config-eslint/index.js @@ -0,0 +1,34 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["eslint:recommended", "prettier", "eslint-config-turbo"], + plugins: ["only-warn"], + globals: { + React: true, + JSX: true, + }, + env: { + node: true, + }, + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + ignorePatterns: [ + // Ignore dotfiles + ".*.js", + "node_modules/", + "dist/", + ], + overrides: [ + { + files: ["*.js?(x)", "*.ts?(x)"], + }, + ], +}; diff --git a/packages/config-eslint/next.js b/packages/config-eslint/next.js new file mode 100644 index 00000000..e2ca3886 --- /dev/null +++ b/packages/config-eslint/next.js @@ -0,0 +1,43 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/* + * This is a custom ESLint configuration for use with + * Next.js apps. + * + * This config extends the Vercel Engineering Style Guide. + * For more information, see https://github.com/vercel/style-guide + * + */ + +module.exports = { + extends: [ + "@vercel/style-guide/eslint/node", + "@vercel/style-guide/eslint/typescript", + "@vercel/style-guide/eslint/browser", + "@vercel/style-guide/eslint/react", + "@vercel/style-guide/eslint/next", + "eslint-config-turbo", + ].map(require.resolve), + parserOptions: { + project, + }, + globals: { + React: true, + JSX: true, + }, + plugins: ["only-warn"], + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + ignorePatterns: [".*.js", "node_modules/", "dist/"], + // add rules configurations here + rules: { + "import/no-default-export": "off", + }, +}; diff --git a/packages/config-eslint/package.json b/packages/config-eslint/package.json new file mode 100644 index 00000000..3c9ed7e8 --- /dev/null +++ b/packages/config-eslint/package.json @@ -0,0 +1,13 @@ +{ + "name": "@repo/eslint-config", + "license": "MIT", + "version": "0.0.0", + "private": true, + "devDependencies": { + "@vercel/style-guide": "^6.0.0", + "eslint-config-turbo": "^2.0.6", + "eslint-plugin-mdx": "^3.1.5", + "eslint-plugin-only-warn": "^1.1.0", + "eslint-plugin-storybook": "^0.8.0" + } +} diff --git a/packages/config-eslint/react.js b/packages/config-eslint/react.js new file mode 100644 index 00000000..16f46ee9 --- /dev/null +++ b/packages/config-eslint/react.js @@ -0,0 +1,39 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/* + * This is a custom ESLint configuration for use a library + * that utilizes React. + * + * This config extends the Vercel Engineering Style Guide. + * For more information, see https://github.com/vercel/style-guide + * + */ + +module.exports = { + extends: [ + "@vercel/style-guide/eslint/browser", + "@vercel/style-guide/eslint/typescript", + "@vercel/style-guide/eslint/react", + ].map(require.resolve), + parserOptions: { + project, + }, + globals: { + JSX: true, + }, + plugins: ["only-warn"], + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + ignorePatterns: ["node_modules/", "dist/", ".eslintrc.js", "**/*.css"], + // add rules configurations here + rules: { + "import/no-default-export": "off", + }, +}; diff --git a/packages/config-eslint/remix.js b/packages/config-eslint/remix.js new file mode 100644 index 00000000..bd351154 --- /dev/null +++ b/packages/config-eslint/remix.js @@ -0,0 +1,43 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/* + * This is a custom ESLint configuration for use a library + * that utilizes React. + * + * This config extends the Vercel Engineering Style Guide. + * For more information, see https://github.com/vercel/style-guide + * + */ + +module.exports = { + extends: [ + "@vercel/style-guide/eslint/browser", + "@vercel/style-guide/eslint/typescript", + "@vercel/style-guide/eslint/react", + ].map(require.resolve), + parserOptions: { + project, + }, + env: { + browser: true, + node: true, + }, + plugins: ["only-warn"], + globals: { + JSX: true, + }, + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + ignorePatterns: ["node_modules/", "dist/", ".eslintrc.js", "**/*.css"], + // add rules configurations here + rules: { + "import/no-default-export": "off", + }, +}; diff --git a/packages/config-eslint/server.js b/packages/config-eslint/server.js new file mode 100644 index 00000000..f84343f2 --- /dev/null +++ b/packages/config-eslint/server.js @@ -0,0 +1,46 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +/* + * This is a custom ESLint configuration for use server side + * typescript packages. + * + * This config extends the Vercel Engineering Style Guide. + * For more information, see https://github.com/vercel/style-guide + * + */ + +module.exports = { + extends: ["@vercel/style-guide/eslint/node", "@vercel/style-guide/eslint/typescript"].map( + require.resolve, + ), + parserOptions: { + project, + }, + env: { + node: true, + es6: true, + }, + plugins: ["only-warn"], + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + overrides: [ + { + files: ["**/__tests__/**/*"], + env: { + jest: true, + }, + }, + ], + ignorePatterns: [".*.js", "node_modules/", "dist/"], + // add rules configurations here + rules: { + "import/no-default-export": "off", + }, +}; diff --git a/packages/config-typescript/base.json b/packages/config-typescript/base.json new file mode 100644 index 00000000..56d01edd --- /dev/null +++ b/packages/config-typescript/base.json @@ -0,0 +1,24 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "allowImportingTsExtensions": true, + "inlineSources": false, + "isolatedModules": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "strictNullChecks": true + }, + "exclude": ["node_modules"] +} diff --git a/packages/config-typescript/nextjs.json b/packages/config-typescript/nextjs.json new file mode 100644 index 00000000..b6ef83f8 --- /dev/null +++ b/packages/config-typescript/nextjs.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "extends": "./base.json", + "compilerOptions": { + "plugins": [{ "name": "next" }], + "allowJs": true, + "declaration": false, + "declarationMap": false, + "incremental": true, + "jsx": "preserve", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "noEmit": true, + "resolveJsonModule": true, + "target": "es5" + } +} diff --git a/packages/config-typescript/package.json b/packages/config-typescript/package.json new file mode 100644 index 00000000..27c0e604 --- /dev/null +++ b/packages/config-typescript/package.json @@ -0,0 +1,9 @@ +{ + "name": "@repo/typescript-config", + "version": "0.0.0", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/config-typescript/react-app.json b/packages/config-typescript/react-app.json new file mode 100644 index 00000000..6af13474 --- /dev/null +++ b/packages/config-typescript/react-app.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "extends": "./base.json", + "compilerOptions": { + "allowJs": true, + "declaration": false, + "declarationMap": false, + "incremental": true, + "jsx": "preserve", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "noEmit": true, + "resolveJsonModule": true, + "target": "es5" + } +} diff --git a/packages/config-typescript/react-library.json b/packages/config-typescript/react-library.json new file mode 100644 index 00000000..3cf2d7a2 --- /dev/null +++ b/packages/config-typescript/react-library.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "React Library", + "extends": "./base.json", + "compilerOptions": { + "lib": ["ES2015", "DOM"], + "module": "ESNext", + "target": "ES6", + "jsx": "react-jsx", + "noEmit": true + } +} diff --git a/packages/config-typescript/remix.json b/packages/config-typescript/remix.json new file mode 100644 index 00000000..a4b843ea --- /dev/null +++ b/packages/config-typescript/remix.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Remix", + "extends": "./base.json", + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2019"], + "isolatedModules": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "target": "ES2019", + "strict": true, + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": "." + } +} diff --git a/packages/config-typescript/vite.json b/packages/config-typescript/vite.json new file mode 100644 index 00000000..46c2e55b --- /dev/null +++ b/packages/config-typescript/vite.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "Display": "Vite", + "compilerOptions": { + "allowJs": false, + "esModuleInterop": false, + "jsx": "react", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "ESNext", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": false, + "target": "ESNext", + "types": ["vite/client"] + } +} diff --git a/packages/jest-presets/browser/jest-preset.js b/packages/jest-presets/browser/jest-preset.js new file mode 100644 index 00000000..3173ffd6 --- /dev/null +++ b/packages/jest-presets/browser/jest-preset.js @@ -0,0 +1,14 @@ +module.exports = { + roots: [""], + testEnvironment: "jsdom", + transform: { + "^.+\\.tsx?$": "ts-jest", + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], + modulePathIgnorePatterns: [ + "/test/__fixtures__", + "/node_modules", + "/dist", + ], + preset: "ts-jest", +}; diff --git a/packages/jest-presets/node/jest-preset.js b/packages/jest-presets/node/jest-preset.js new file mode 100644 index 00000000..b6c25930 --- /dev/null +++ b/packages/jest-presets/node/jest-preset.js @@ -0,0 +1,13 @@ +module.exports = { + roots: [""], + transform: { + "^.+\\.tsx?$": "ts-jest", + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], + modulePathIgnorePatterns: [ + "/test/__fixtures__", + "/node_modules", + "/dist", + ], + preset: "ts-jest", +}; diff --git a/packages/jest-presets/package.json b/packages/jest-presets/package.json new file mode 100644 index 00000000..2e41bb45 --- /dev/null +++ b/packages/jest-presets/package.json @@ -0,0 +1,16 @@ +{ + "name": "@repo/jest-presets", + "version": "0.0.0", + "private": true, + "license": "MIT", + "files": [ + "browser/jest-preset.js", + "node/jest-preset.js" + ], + "dependencies": { + "ts-jest": "^29.1.5" + }, + "devDependencies": { + "jest-environment-jsdom": "^29.7.0" + } +} \ No newline at end of file diff --git a/packages/logger/.eslintrc.js b/packages/logger/.eslintrc.js new file mode 100644 index 00000000..49f67f37 --- /dev/null +++ b/packages/logger/.eslintrc.js @@ -0,0 +1,11 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/index.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, + env: { + jest: true, + }, +}; diff --git a/packages/logger/package.json b/packages/logger/package.json new file mode 100644 index 00000000..449a05c7 --- /dev/null +++ b/packages/logger/package.json @@ -0,0 +1,30 @@ +{ + "name": "@repo/logger", + "version": "0.0.0", + "private": true, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "lint": "eslint src/", + "typecheck": "tsc --noEmit", + "test": "jest" + }, + "jest": { + "preset": "@repo/jest-presets/node" + }, + "devDependencies": { + "@repo/eslint-config": "workspace:*", + "@repo/jest-presets": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/jest": "^29.5.12", + "@types/node": "^20.14.9", + "jest": "^29.7.0", + "tsup": "^8.1.0", + "typescript": "^5.5.2" + } +} \ No newline at end of file diff --git a/packages/logger/src/__tests__/log.test.ts b/packages/logger/src/__tests__/log.test.ts new file mode 100644 index 00000000..e196fcc9 --- /dev/null +++ b/packages/logger/src/__tests__/log.test.ts @@ -0,0 +1,11 @@ +import { log } from ".."; + +jest.spyOn(global.console, "log"); + +describe("@repo/logger", () => { + it("prints a message", () => { + log("hello"); + // eslint-disable-next-line no-console -- testing console + expect(console.log).toBeCalledWith("LOGGER: ", "hello"); + }); +}); diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts new file mode 100644 index 00000000..d573ddf4 --- /dev/null +++ b/packages/logger/src/index.ts @@ -0,0 +1,4 @@ +export const log = (...args: unknown[]): void => { + // eslint-disable-next-line no-console -- logger + console.log("LOGGER: ", ...args); +}; diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json new file mode 100644 index 00000000..a7f4e490 --- /dev/null +++ b/packages/logger/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "lib": ["ES2015"], + "outDir": "./dist", + "types": ["jest", "node"] + }, + "include": ["."], + "exclude": ["node_modules", "dist"], +} diff --git a/packages/logger/tsup.config.ts b/packages/logger/tsup.config.ts new file mode 100644 index 00000000..be508ff5 --- /dev/null +++ b/packages/logger/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig, type Options } from "tsup"; + +export default defineConfig((options: Options) => ({ + entryPoints: ["src/index.ts"], + clean: true, + dts: true, + format: ["cjs"], + ...options, +})); diff --git a/packages/logger/turbo.json b/packages/logger/turbo.json new file mode 100644 index 00000000..52e8c763 --- /dev/null +++ b/packages/logger/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "dist/**" + ] + } + } +} diff --git a/packages/shared/.eslintrc.js b/packages/shared/.eslintrc.js new file mode 100644 index 00000000..d83112c0 --- /dev/null +++ b/packages/shared/.eslintrc.js @@ -0,0 +1,8 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ["@repo/eslint-config/react.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md new file mode 100644 index 00000000..213d764d --- /dev/null +++ b/packages/shared/CHANGELOG.md @@ -0,0 +1,91 @@ +# @repo/shared + +## 0.0.10 + +### Patch Changes + +- Updated dependencies [02d5cd9] + - react18-loaders@1.1.3 + +## 0.0.9 + +### Patch Changes + +- Updated dependencies + - react18-loaders@1.1.2 + +## 0.0.8 + +### Patch Changes + +- Updated dependencies [5579416] + - react18-loaders@1.1.1 + +## 0.0.7 + +### Patch Changes + +- Updated dependencies [032f2f8] + - react18-loaders@1.1.0 + +## 0.0.6 + +### Patch Changes + +- Updated dependencies + - react18-loaders@1.0.3 + +## 0.0.5 + +### Patch Changes + +- Updated dependencies + - react18-loaders@1.0.2 + +## 0.0.4 + +### Patch Changes + +- Updated dependencies + - react18-loaders@1.0.1 + +## 0.0.3 + +### Patch Changes + +- Updated dependencies [6ad42c8] +- Updated dependencies [d80cde0] + - react18-loaders@1.0.0 + +## 0.0.3-canary.1 + +### Patch Changes + +- Updated dependencies [6ad42c8] +- Updated dependencies [d80cde0] + - react18-loaders@1.0.0-canary.1 + +## 0.0.3-canary.0 + +### Patch Changes + +- Updated dependencies [6ad42c8] +- Updated dependencies [d80cde0] +- Updated dependencies [b1f029b] + - react18-loaders@1.0.0-canary.0 + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [1d4dec0] +- Updated dependencies [52eb814] +- Updated dependencies [ea8e4ee] + - react18-loaders@0.0.2 + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [0c17b4a] + - react18-loaders@0.0.1 diff --git a/packages/shared/package.json b/packages/shared/package.json new file mode 100644 index 00000000..03e0f5e7 --- /dev/null +++ b/packages/shared/package.json @@ -0,0 +1,58 @@ +{ + "name": "@repo/shared", + "version": "0.0.10", + "private": true, + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup && tsc -p tsconfig-build.json", + "clean": "rm -rf dist", + "dev": "tsup --watch && tsc -p tsconfig-build.json -w", + "typecheck": "tsc --noEmit", + "lint": "eslint src/", + "test": "vitest run --coverage" + }, + "devDependencies": { + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@testing-library/react": "^16.0.0", + "@types/node": "^20.14.9", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "@vitest/coverage-v8": "^1.6.0", + "esbuild-plugin-react18": "^0.2.4", + "esbuild-plugin-react18-css": "^0.0.4", + "jsdom": "^24.1.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tsup": "^8.1.0", + "typescript": "^5.5.2", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.0" + }, + "dependencies": { + "@mayank1513/fork-me": "^2.1.2", + "@repo/scripts": "workspace:*", + "nextjs-darkmode": "^1.0.4", + "nextjs-themes": "^4.0.3", + "r18gs": "^1.1.3", + "react-live": "^4.1.7", + "react18-loaders": "workspace:*" + }, + "peerDependencies": { + "@types/react": "16.8 - 19", + "next": "10 - 14", + "react": "16.8 - 19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + } + } +} diff --git a/packages/shared/src/client/demo/demo.module.scss b/packages/shared/src/client/demo/demo.module.scss new file mode 100644 index 00000000..d519e9d1 --- /dev/null +++ b/packages/shared/src/client/demo/demo.module.scss @@ -0,0 +1,29 @@ +.demo { + width: var(--max-width); + max-width: 95vw; + display: flex; + margin: auto; + margin-bottom: 3rem; + border-radius: 1rem; + overflow: hidden; + box-shadow: 0 0 8px -2px var(--text-color); + & > * { + flex-grow: 1; + } +} + +.preview { + padding: 10px; +} + +.center { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; +} + +.code { + font-family: var(--font-mono); +} diff --git a/packages/shared/src/client/demo/demo.test.tsx b/packages/shared/src/client/demo/demo.test.tsx new file mode 100644 index 00000000..ff21ac54 --- /dev/null +++ b/packages/shared/src/client/demo/demo.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Demo } from "./demo"; + +describe.concurrent("demo", () => { + afterEach(cleanup); + + test("Dummy test - test if renders without errors", () => { + render(); + }); +}); diff --git a/packages/shared/src/client/demo/demo.tsx b/packages/shared/src/client/demo/demo.tsx new file mode 100644 index 00000000..10f8ebdf --- /dev/null +++ b/packages/shared/src/client/demo/demo.tsx @@ -0,0 +1,24 @@ +"use client"; + +import styles from "./demo.module.scss"; +import { LiveProvider, LiveEditor, LivePreview } from "react-live"; +import { Dots1, Dots2, Bars1, Bars2 } from "react18-loaders/dist/server"; + +const code = ` +// available components Dots1, Dots2, Bars1, Bars2 +
+ +
+`; + +/** React live demo */ +export function Demo() { + return ( + +
+ + +
+
+ ); +} diff --git a/packages/shared/src/client/demo/index.ts b/packages/shared/src/client/demo/index.ts new file mode 100644 index 00000000..14920cfb --- /dev/null +++ b/packages/shared/src/client/demo/index.ts @@ -0,0 +1,4 @@ +"use client"; + +// component exports +export * from "./demo"; diff --git a/packages/shared/src/client/drawer-button/drawer-button.module.scss b/packages/shared/src/client/drawer-button/drawer-button.module.scss new file mode 100644 index 00000000..7141cf74 --- /dev/null +++ b/packages/shared/src/client/drawer-button/drawer-button.module.scss @@ -0,0 +1,42 @@ +$tr: 5px; +.drawerBtn { + all: unset; + height: 32px; + width: 45px; + display: inline-flex; + flex-flow: column nowrap; + justify-content: space-evenly; + padding: 0 5px; + margin: 5px; + cursor: pointer; + * { + height: 4px; + background: var(--text-color); + border-radius: 50%; + border: 1px solid #5555; + } + :first-child, + :last-child { + transform: none; + margin: 0 7px; + } + :nth-child(2) { + opacity: 1; + } + + &.open { + transform: rotate(-180deg); + * { + // background: black; + &:first-child { + transform: rotate(45deg) translate($tr, $tr); + } + &:last-child { + transform: rotate(-45deg) translate($tr, -$tr); + } + &:nth-child(2) { + opacity: 0; + } + } + } +} diff --git a/packages/shared/src/client/drawer-button/drawer-button.test.tsx b/packages/shared/src/client/drawer-button/drawer-button.test.tsx new file mode 100644 index 00000000..d092c89d --- /dev/null +++ b/packages/shared/src/client/drawer-button/drawer-button.test.tsx @@ -0,0 +1,12 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { DrawerButton } from "./drawer-button"; + +describe.concurrent("drawer-button", () => { + afterEach(cleanup); + + const dummyFunc = () => {}; + test("check if h1 heading exists", () => { + render(); + }); +}); diff --git a/packages/shared/src/client/drawer-button/drawer-button.tsx b/packages/shared/src/client/drawer-button/drawer-button.tsx new file mode 100644 index 00000000..cc8c42e4 --- /dev/null +++ b/packages/shared/src/client/drawer-button/drawer-button.tsx @@ -0,0 +1,25 @@ +"use client"; +import { Dispatch, SetStateAction, useCallback } from "react"; +import styles from "./drawer-button.module.scss"; + +interface DrawerButtonProps { + open: boolean; + setOpen: Dispatch>; +} + +/** + * # DrawerButton + * Drawer button to toggle side navigation on mobile devices. + */ +export function DrawerButton({ open, setOpen }: DrawerButtonProps) { + const handleClick = useCallback(() => setOpen(open => !open), []); + return ( + + ); +} diff --git a/packages/shared/src/client/drawer-button/index.ts b/packages/shared/src/client/drawer-button/index.ts new file mode 100644 index 00000000..cfe25116 --- /dev/null +++ b/packages/shared/src/client/drawer-button/index.ts @@ -0,0 +1,4 @@ +"use client"; + +// component exports +export * from "./drawer-button"; diff --git a/packages/shared/src/client/global-loader/global-loader.test.tsx b/packages/shared/src/client/global-loader/global-loader.test.tsx new file mode 100644 index 00000000..5c83e943 --- /dev/null +++ b/packages/shared/src/client/global-loader/global-loader.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { GlobalLoader } from "./global-loader"; + +describe.concurrent("global-loader", () => { + afterEach(cleanup); + + test("check if renders", () => { + render(); + }); +}); diff --git a/packages/shared/src/client/global-loader/global-loader.tsx b/packages/shared/src/client/global-loader/global-loader.tsx new file mode 100644 index 00000000..11ff718d --- /dev/null +++ b/packages/shared/src/client/global-loader/global-loader.tsx @@ -0,0 +1,25 @@ +import { LoaderContainer } from "react18-loaders"; +import { Bars1 } from "react18-loaders/dist/server/bars/bars1"; + +/** + * # GlobalLoader + * LoaderContainer with a Loader. + * + * We can't add this directly inside layout if we want to build this shared package and use the generated code from `dist` directory. + * + * Why can't we do this? because doing so will add client side functionality without "use client" directive. And that will fail with Next.js + * + * Why do we want to build this package? + * Remix does not support scss out of the box. All SCSS code in this package will be converted to CSS. + * + * Alternative solution, + * + * Import from `src` directory for use with Next.js and from `dist` for Remix. + */ +export function GlobalLoader() { + return ( + + + + ); +} diff --git a/packages/shared/src/client/global-loader/index.ts b/packages/shared/src/client/global-loader/index.ts new file mode 100644 index 00000000..d0911045 --- /dev/null +++ b/packages/shared/src/client/global-loader/index.ts @@ -0,0 +1,4 @@ +"use client"; + +// component exports +export * from "./global-loader"; diff --git a/packages/shared/src/client/header/header.module.scss b/packages/shared/src/client/header/header.module.scss new file mode 100644 index 00000000..cfc45e18 --- /dev/null +++ b/packages/shared/src/client/header/header.module.scss @@ -0,0 +1,91 @@ +.header { + position: sticky; + top: 0; + width: 100%; + height: 76px; + box-shadow: 0 3px 8px -6px var(--text-color); + backdrop-filter: blur(3px); + z-index: 100; + & > div { + display: flex; + align-items: center; + flex-wrap: nowrap !important; + font-size: 0.85rem; + max-width: var(--max-width); + width: 100%; + height: 100%; + z-index: 2; + padding: 0 10px; + margin: auto; + } + nav { + position: fixed; + top: 76px; + height: calc(100vh - 76px); + left: -300px; + width: 300px; + box-shadow: 0 0 8px -5px var(--text-color); + overflow: auto; + display: flex; + flex-direction: column-reverse; + gap: 20px; + justify-content: space-between; + background: var(--bg-color); + } + .open { + left: 0; + } +} + +.author, +.themeswitch { + all: unset; + box-shadow: 0 1px 8px -5px var(--text-color); + padding: 15px 20px; + gap: 20px; + display: flex; + text-transform: capitalize; + cursor: pointer; + margin: 0; +} +.author { + font-weight: 700; + font-size: 1rem; + justify-content: center; + text-shadow: 0 1px 5px orange; +} + +@media screen and (min-width: 800px) { + .header { + & > div { + justify-content: space-between; + } + nav { + position: relative; + flex-direction: row; + align-items: center; + height: 100%; + width: auto; + top: 0; + left: auto; + background: transparent; + } + nav, + .author, + .themeswitch { + box-shadow: none; + text-shadow: none; + font-weight: 500; + gap: 0; + } + } + .themeswitch { + margin-right: 130px; + } +} + +@media screen and (min-width: 1200px) { + .themeswitch { + margin-right: 80px; + } +} diff --git a/packages/shared/src/client/header/header.tsx b/packages/shared/src/client/header/header.tsx new file mode 100644 index 00000000..7ee75a52 --- /dev/null +++ b/packages/shared/src/client/header/header.tsx @@ -0,0 +1,34 @@ +import { useState } from "react"; +import styles from "./header.module.scss"; +import ThemeSwitch from "./theme-switch"; +import { DrawerButton } from "../drawer-button"; +import { Logo, LogoProps } from "../../server"; + +/** + * # Header + * Header and navigation drawer - creating as client component + * + * This could be a server component with leaf nodes being client components. + * However, we want to reuse as much code as possible across different examples and also optimize for the best use of bleading edge features. + */ +export function Header(logoProps: LogoProps) { + const [open, setOpen] = useState(false); + return ( +
+ +
+ ); +} diff --git a/packages/shared/src/client/header/index.ts b/packages/shared/src/client/header/index.ts new file mode 100644 index 00000000..809a9a69 --- /dev/null +++ b/packages/shared/src/client/header/index.ts @@ -0,0 +1,4 @@ +"use client"; + +// component exports +export * from "./header"; diff --git a/packages/shared/src/client/header/theme-switch.tsx b/packages/shared/src/client/header/theme-switch.tsx new file mode 100644 index 00000000..365c28af --- /dev/null +++ b/packages/shared/src/client/header/theme-switch.tsx @@ -0,0 +1,15 @@ +"use client"; + +import { useMode } from "nextjs-darkmode/hooks"; +import { Switch } from "nextjs-darkmode/switch"; +import styles from "./header.module.scss"; + +/** This is a wrapper around `nextjs-darkmode's ColorSwitch component to improve mobile view. */ +export default function ThemeSwitch(): JSX.Element { + const { mode } = useMode(); + return ( + + {mode} + + ); +} diff --git a/packages/shared/src/client/index.ts b/packages/shared/src/client/index.ts new file mode 100644 index 00000000..9ae49861 --- /dev/null +++ b/packages/shared/src/client/index.ts @@ -0,0 +1,13 @@ +"use client"; + +/** + * Server components and client components need to be exported from separate files as + * directive on top of the file from which component is imported takes effect. + * i.e., server component re-exported from file with "use client" will behave as client component + */ + +// client component exports +export * from "./demo"; +export * from "./header"; +export * from "./global-loader"; +export * from "./drawer-button"; diff --git a/packages/shared/src/declaration.d.ts b/packages/shared/src/declaration.d.ts new file mode 100644 index 00000000..e6c7b7b2 --- /dev/null +++ b/packages/shared/src/declaration.d.ts @@ -0,0 +1,2 @@ +declare module "*.module.css"; +declare module "*.module.scss"; diff --git a/packages/shared/src/global.scss b/packages/shared/src/global.scss new file mode 100644 index 00000000..9349cf75 --- /dev/null +++ b/packages/shared/src/global.scss @@ -0,0 +1,82 @@ +@import "@mayank1513/fork-me/index.css"; + +* { + box-sizing: border-box; + transition: all 0.3s; +} + +:root { + --max-width: 1100px; + --border-radius: 12px; + --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono", "Roboto Mono", + "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", "Fira Mono", "Droid Sans Mono", + "Courier New", monospace; + --tile-border: conic-gradient(#f008, #f004, #f003, #f002, #f001, #f001, #f001); + + --callout-rgb: 238, 240, 241; + --callout-border-rgb: 172, 175, 176; + --card-rgb: 180, 185, 188; + --card-border-rgb: 131, 134, 135; + + --bg-color: #fff; + --text-color: #534c40; + --primary-glow: conic-gradient( + from 180deg at 50% 50%, + #b916ff83 0deg, + #ff08bd53 55deg, + #ff54b583 120deg, + #ff006683 160deg + ); + --secondary-glow: radial-gradient(#aaf5, #f0f0, #f0f0); +} + +/* dark themes */ +.dark { + --bg-color: #000; + --text-color: #9ca3af; + --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0)); + --secondary-glow: linear-gradient( + to bottom right, + rgba(1, 65, 255, 0), + rgba(1, 65, 255, 0), + rgba(1, 65, 255, 0.3) + ); + + --callout-rgb: 20, 20, 20; + --callout-border-rgb: 108, 108, 108; + --card-rgb: 100, 100, 100; + --card-border-rgb: 200, 200, 200; +} + +/* light themes */ + +html { + padding: 0; + margin: 0; +} + +body, +#root /** root element of vite */ { + padding: 0; + margin: 0; + min-height: 100vh; + display: flex; + flex-direction: column; + background: var(--bg-color); +} + +a { + color: inherit; + text-decoration: none; +} + +// utils +.grow { + flex-grow: 1; +} + +@media screen and (min-width: 800px) { + .mb { + display: none !important; + } +} diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts new file mode 100644 index 00000000..eee12947 --- /dev/null +++ b/packages/shared/src/index.ts @@ -0,0 +1,3 @@ +"use client"; + +export * from "./client"; diff --git a/packages/shared/src/server/cards/card.tsx b/packages/shared/src/server/cards/card.tsx new file mode 100644 index 00000000..d051eed0 --- /dev/null +++ b/packages/shared/src/server/cards/card.tsx @@ -0,0 +1,19 @@ +import styles from "./cards.module.scss"; + +export interface CardProps { + href: string; + title: string; + description: string; +} + +/** Display component */ +export function Card({ href, title, description }: CardProps) { + return ( + +

+ {title} -> +

+

{description}

+
+ ); +} diff --git a/packages/shared/src/server/cards/cards.module.scss b/packages/shared/src/server/cards/cards.module.scss new file mode 100644 index 00000000..5a19cfb8 --- /dev/null +++ b/packages/shared/src/server/cards/cards.module.scss @@ -0,0 +1,76 @@ +.cards { + display: flex; + justify-content: space-evenly; + flex-wrap: wrap; + gap: 25px; + width: var(--max-width); + max-width: 95vw; + margin: auto; +} + +.card { + all: unset; + display: flex; + flex-direction: column; + padding: 1rem 1.2rem; + border-radius: var(--border-radius); + background: rgba(var(--card-rgb), 0); + border: 1px solid rgba(var(--card-border-rgb), 0.1); + cursor: pointer; + transition: + background 200ms, + border 200ms; +} + +.card span { + display: inline-block; + transition: transform 200ms; +} + +.card h2 { + font-weight: 600; + margin-top: 0; + text-align: start; +} + +.card p { + margin: 0; + opacity: 0.6; + font-size: 0.9rem; + line-height: 1.5; + width: 34ch; + text-align: justify; +} + +.card nav { + display: flex; + gap: 15px; + padding-top: 10px; +} + +.card nav select { + flex-grow: 1; +} + +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + .card:hover { + background: rgba(var(--card-rgb), 0.1); + border: 1px solid rgba(var(--card-border-rgb), 0.15); + } + + .card:hover span { + transform: translateX(4px); + } +} + +/* Mobile and Tablet */ +@media (max-width: 1023px) { + .card { + padding: 1rem 2.5rem; + } + + .card h2 { + margin-bottom: 0.5rem; + } +} diff --git a/packages/shared/src/server/cards/cards.test.tsx b/packages/shared/src/server/cards/cards.test.tsx new file mode 100644 index 00000000..45532c5b --- /dev/null +++ b/packages/shared/src/server/cards/cards.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Cards } from "./cards"; + +describe.concurrent("cards", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/packages/shared/src/server/cards/cards.tsx b/packages/shared/src/server/cards/cards.tsx new file mode 100644 index 00000000..382cc17a --- /dev/null +++ b/packages/shared/src/server/cards/cards.tsx @@ -0,0 +1,13 @@ +import styles from "./cards.module.scss"; +import { Card, CardProps } from "./card"; + +/** Component to render cards */ +export function Cards({ cards }: { cards: CardProps[] }) { + return ( +
+ {cards.map(card => ( + + ))} +
+ ); +} diff --git a/packages/shared/src/server/cards/index.ts b/packages/shared/src/server/cards/index.ts new file mode 100644 index 00000000..56f6f9cf --- /dev/null +++ b/packages/shared/src/server/cards/index.ts @@ -0,0 +1,2 @@ +// component exports +export * from "./cards"; diff --git a/packages/shared/src/server/index.ts b/packages/shared/src/server/index.ts new file mode 100644 index 00000000..2af43515 --- /dev/null +++ b/packages/shared/src/server/index.ts @@ -0,0 +1,11 @@ +/** + * Server components and client components need to be exported from separate files as + * directive on top of the file from which component is imported takes effect. + * i.e., server component re-exported from file with "use client" will behave as client component + */ + +// server component exports +export * from "./landing-page"; +export * from "./logo"; +export * from "./cards"; +export * from "./layout"; diff --git a/packages/shared/src/server/landing-page/index.ts b/packages/shared/src/server/landing-page/index.ts new file mode 100644 index 00000000..bf589bdb --- /dev/null +++ b/packages/shared/src/server/landing-page/index.ts @@ -0,0 +1,2 @@ +// component exports +export * from "./landing-page"; diff --git a/packages/shared/src/server/landing-page/landing-page.module.scss b/packages/shared/src/server/landing-page/landing-page.module.scss new file mode 100644 index 00000000..d03d4c58 --- /dev/null +++ b/packages/shared/src/server/landing-page/landing-page.module.scss @@ -0,0 +1,89 @@ +.center { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + position: relative; + flex-wrap: wrap; + padding: 3rem; + gap: 20px 50px; + z-index: 2; + a { + transform: scale(1.25); + &::after { + padding: 2px; + } + } +} + +.center::before { + background: var(--secondary-glow); + border-radius: 50%; + width: 480px; + height: 360px; + margin-left: -400px; + pointer-events: none; +} + +.center::after { + background: var(--primary-glow); + width: 240px; + height: 180px; +} + +.center::before, +.center::after { + content: " "; + left: 50%; + position: absolute; + filter: blur(45px); + z-index: -1; +} + +.hero { + h2, + strong { + font-style: italic; + } +} + +.title { + border-radius: var(--border-radius); + background: linear-gradient(to right, #3b82f6, #ef4444); + background-clip: text; + color: transparent; + width: fit-content; + margin: auto; + margin-top: 3rem; + font-size: 3rem; + text-shadow: none; +} + +.featured { + margin: auto; + margin-bottom: 3rem; + width: calc(var(--max-width) + 3rem); + max-width: 95vw; + box-shadow: 0 0 8px -2px var(--text-color); + text-align: center; + border-radius: 20px; + padding: 1rem 0; + hr { + margin: 0 3rem; + margin-bottom: 2rem; + box-shadow: 0 0 8px var(--text-color); + } + & > div { + width: auto; + max-height: calc(100vh - 300px); + overflow: auto; + padding: 20px; + } +} + +@media screen and (min-width: 1000px) { + .featured > div { + padding: 20px 4rem; + } +} diff --git a/packages/shared/src/server/landing-page/landing-page.test.tsx b/packages/shared/src/server/landing-page/landing-page.test.tsx new file mode 100644 index 00000000..50ba06a7 --- /dev/null +++ b/packages/shared/src/server/landing-page/landing-page.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { LandingPage } from "./landing-page"; + +describe.concurrent("landing-page", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/packages/shared/src/server/landing-page/landing-page.tsx b/packages/shared/src/server/landing-page/landing-page.tsx new file mode 100644 index 00000000..aaef858d --- /dev/null +++ b/packages/shared/src/server/landing-page/landing-page.tsx @@ -0,0 +1,57 @@ +import { ReactNode } from "react"; +import styles from "./landing-page.module.scss"; +import { Cards } from "../cards"; +import { Logo } from "../logo"; +import featured from "@repo/scripts/featured.json"; +import rebrandingConfig from "@repo/scripts/rebrand.config.json"; + +interface LandingPageProps { + title: string; + children?: ReactNode; +} + +const { owner, repo } = rebrandingConfig; + +const cards = [ + { + href: `https://${owner}.github.io/${repo}/`, + title: "Docs", + description: "Check out the official documentation for more information.", + }, + { + href: `https://github.com/${owner}/${repo}/tree/main/examples`, + title: "More Examples", + description: + "Check out more examples on the official GitHub Repo. Feel free to suggest additional examples in the discussions section.", + }, + { + href: `https://github.com/${owner}/${repo}`, + title: "Star this repo", + description: + "Star this repo for your new library! This also motivates us and helps us understand that community is interested in this work.", + }, +]; + +/** + * # LandingPage + * library's landing page + */ +export function LandingPage({ title, children }: LandingPageProps) { + return ( +
+

{title}

+
+

Craft your next amazing library using

+ + Harness the full potential of React 18 Server Components! +
+ {children} +
+

Featured packages built with this template.

+
+ +
+ +
+ ); +} diff --git a/packages/shared/src/server/layout/index.ts b/packages/shared/src/server/layout/index.ts new file mode 100644 index 00000000..4810a4eb --- /dev/null +++ b/packages/shared/src/server/layout/index.ts @@ -0,0 +1,2 @@ +// component exports +export * from "./layout"; diff --git a/packages/shared/src/server/layout/layout.module.scss b/packages/shared/src/server/layout/layout.module.scss new file mode 100644 index 00000000..a0c308a4 --- /dev/null +++ b/packages/shared/src/server/layout/layout.module.scss @@ -0,0 +1,12 @@ +.container { + padding-top: 1rem; + background: var(--bg-color); + color: var(--text-color); + footer { + text-align: center; + padding: 10px; + padding-top: 8px; + margin-top: 2rem; + box-shadow: 0 -2px 8px -6px var(--text-color); + } +} diff --git a/packages/shared/src/server/layout/layout.test.tsx b/packages/shared/src/server/layout/layout.test.tsx new file mode 100644 index 00000000..ef7a58d5 --- /dev/null +++ b/packages/shared/src/server/layout/layout.test.tsx @@ -0,0 +1,11 @@ +import { cleanup, render } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { Layout } from "./layout"; + +describe.concurrent("layout", () => { + afterEach(cleanup); + + test("check if renders without errors", () => { + render(); + }); +}); diff --git a/packages/shared/src/server/layout/layout.tsx b/packages/shared/src/server/layout/layout.tsx new file mode 100644 index 00000000..f49ffe89 --- /dev/null +++ b/packages/shared/src/server/layout/layout.tsx @@ -0,0 +1,32 @@ +import { ReactNode } from "react"; +import styles from "./layout.module.scss"; +import { ForkMe } from "@mayank1513/fork-me/server"; +import config from "@repo/scripts/rebrand.config.json"; + +const { owner, repo } = config; +interface LayoutProps { + children?: ReactNode; +} + +/** + * # Layout + * The default layout shared by all examples. + */ +export function Layout({ children }: LayoutProps) { + return ( +
+ {children} + + +
+ ); +} diff --git a/packages/shared/src/server/logo/index.ts b/packages/shared/src/server/logo/index.ts new file mode 100644 index 00000000..ef37ca02 --- /dev/null +++ b/packages/shared/src/server/logo/index.ts @@ -0,0 +1,2 @@ +// component exports +export * from "./logo"; diff --git a/packages/shared/src/server/logo/logo.module.scss b/packages/shared/src/server/logo/logo.module.scss new file mode 100644 index 00000000..75a2e8d5 --- /dev/null +++ b/packages/shared/src/server/logo/logo.module.scss @@ -0,0 +1,69 @@ +.logo { + position: relative; + display: flex; + justify-content: center; + align-items: center; + transform: translateZ(0); + border-radius: var(--border-radius); + overflow: hidden; + box-shadow: 0px 2px 8px -1px #0000001a; + padding: 2px; + width: 180px; + span { + font-weight: 700; + font-family: var(--font-mono); + padding: 0.75rem 1rem; + border-radius: var(--border-radius); + background: linear-gradient(to right, #3b82f6, #3b82f6, #ef4444, #ef4444); + background-size: 200%; + background-clip: text; + color: transparent; + animation: 4s txt infinite linear; + } + &::before, + &::after { + content: " "; + position: absolute; + z-index: -1; + } + /* Conic Gradient Animation */ + &::before { + animation: 3s rotate infinite linear; + width: 800%; + height: 800%; + background: var(--tile-border); + } + + /* Inner Square */ + &::after { + inset: 0; + padding: 1px; + border-radius: var(--border-radius); + background: var(--bg-color); + background-clip: content-box; + } +} + +@keyframes rotate { + from { + transform: rotate(360deg); + } + to { + transform: rotate(0deg); + } +} + +@keyframes txt { + from { + background-position: 100% 50%; + } + to { + background-position: -100% 50%; + } +} + +@media screen and (min-width: 800px) { + .logo { + width: 210px; + } +} diff --git a/packages/shared/src/server/logo/logo.tsx b/packages/shared/src/server/logo/logo.tsx new file mode 100644 index 00000000..6dfff6ae --- /dev/null +++ b/packages/shared/src/server/logo/logo.tsx @@ -0,0 +1,29 @@ +import { FC, HTMLProps } from "react"; +import styles from "./logo.module.scss"; +import rebrandingConfig from "@repo/scripts/rebrand.config.json"; + +const { repo } = rebrandingConfig; + +export interface LogoProps { + href?: string; + linkComponent?: React.ElementType; +} + +/** + * # Logo + * + */ +export function Logo({ href, linkComponent }: LogoProps) { + if (href?.startsWith("http")) + return ( + + {repo} + + ); + const Link = (linkComponent || "a") as FC<{ to?: string } & HTMLProps>; + return ( + + {repo} + + ); +} diff --git a/packages/shared/tsconfig-build.json b/packages/shared/tsconfig-build.json new file mode 100644 index 00000000..66cc4082 --- /dev/null +++ b/packages/shared/tsconfig-build.json @@ -0,0 +1,12 @@ +{ + // using tsc for type declarations as "Note that declaration files generated by any tool other than tsc are not guaranteed to be error-free, so it's a good idea to test the output with tsc" - https://tsup.egoist.dev/#generate-declaration-file + "extends": "@repo/typescript-config/react-library.json", + "compilerOptions": { + "outDir": "dist", + "noEmit": false, + "emitDeclarationOnly": true, + "declarationMap": false + }, + "include": ["src"], + "exclude": ["dist", "node_modules", "**/*.test.*", "**/*.spec.*"] +} diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json new file mode 100644 index 00000000..9430b2f8 --- /dev/null +++ b/packages/shared/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/react-library.json", + "compilerOptions": { + "lib": ["dom", "ES2015"], + "types": ["vitest", "node"] + }, + "include": ["."], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/packages/shared/tsup.config.ts b/packages/shared/tsup.config.ts new file mode 100644 index 00000000..562de8d6 --- /dev/null +++ b/packages/shared/tsup.config.ts @@ -0,0 +1,19 @@ +import { defineConfig, type Options } from "tsup"; +import react18Plugin from "esbuild-plugin-react18"; +import cssPlugin from "esbuild-plugin-react18-css"; + +export default defineConfig( + (options: Options) => + ({ + format: ["cjs", "esm"], + target: "es2019", + entry: ["./src"], + sourcemap: false, + clean: !options.watch, + bundle: true, + minify: !options.watch, + esbuildPlugins: [react18Plugin(), cssPlugin({ generateScopedName: "[folder]__[local]" })], + external: ["react"], + ...options, + }) as Options, +); diff --git a/packages/shared/turbo.json b/packages/shared/turbo.json new file mode 100644 index 00000000..52e8c763 --- /dev/null +++ b/packages/shared/turbo.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "//" + ], + "tasks": { + "build": { + "outputs": [ + "dist/**" + ] + } + } +} diff --git a/packages/shared/vitest.config.ts b/packages/shared/vitest.config.ts new file mode 100644 index 00000000..18196779 --- /dev/null +++ b/packages/shared/vitest.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "vitest/config"; +import react from "@vitejs/plugin-react"; +import tsconfigPaths from "vite-tsconfig-paths"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), tsconfigPaths()], + test: { + environment: "jsdom", + globals: true, + setupFiles: [], + coverage: { + include: ["src/**"], + exclude: ["src/**/index.ts", "src/**/declaration.d.ts"], + reporter: ["text", "json", "clover", "html"], + }, + }, +}); diff --git a/plopfile.js b/plopfile.js new file mode 100644 index 00000000..dea44fd1 --- /dev/null +++ b/plopfile.js @@ -0,0 +1,10 @@ +/** + * Generator function to add a new React component to the internal UI library. + * @param {import('plop').NodePlopAPI} plop - Plop API. + */ +function generator(plop) { + plop.setGenerator("rc", require("./scripts/rc")); + plop.setGenerator("hook", require("./scripts/hook")); +} + +module.exports = generator; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..10009b60 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,14173 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + eslint: ^8.0.0 + +importers: + + .: + devDependencies: + '@changesets/cli': + specifier: ^2.27.6 + version: 2.27.6 + '@repo/typescript-config': + specifier: workspace:* + version: link:packages/config-typescript + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + enquirer: + specifier: ^2.4.1 + version: 2.4.1 + plop: + specifier: ^4.0.1 + version: 4.0.1 + prettier: + specifier: ^3.3.2 + version: 3.3.2 + turbo: + specifier: ^2.0.6 + version: 2.0.6 + typedoc: + specifier: ^0.26.3 + version: 0.26.3(typescript@5.5.2) + typedoc-plugin-extras: + specifier: ^3.1.0 + version: 3.1.0(typedoc@0.26.3(typescript@5.5.2)) + typedoc-plugin-inline-sources: + specifier: ^1.0.2 + version: 1.0.2(typedoc@0.26.3(typescript@5.5.2)) + typedoc-plugin-mdn-links: + specifier: ^3.2.1 + version: 3.2.1(typedoc@0.26.3(typescript@5.5.2)) + typedoc-plugin-missing-exports: + specifier: ^3.0.0 + version: 3.0.0(typedoc@0.26.3(typescript@5.5.2)) + typedoc-plugin-rename-defaults: + specifier: ^0.7.1 + version: 0.7.1(typedoc@0.26.3(typescript@5.5.2)) + typedoc-plugin-zod: + specifier: ^1.2.0 + version: 1.2.0(typedoc@0.26.3(typescript@5.5.2)) + + examples/express: + dependencies: + '@repo/logger': + specifier: workspace:* + version: link:../../packages/logger + body-parser: + specifier: ^1.20.2 + version: 1.20.2 + cors: + specifier: ^2.8.5 + version: 2.8.5 + express: + specifier: ^4.19.2 + version: 4.19.2 + morgan: + specifier: ^1.10.0 + version: 1.10.0 + devDependencies: + '@repo/eslint-config': + specifier: workspace:* + version: link:../../packages/config-eslint + '@repo/jest-presets': + specifier: workspace:* + version: link:../../packages/jest-presets + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/config-typescript + '@types/body-parser': + specifier: ^1.19.5 + version: 1.19.5 + '@types/cors': + specifier: ^2.8.17 + version: 2.8.17 + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/morgan': + specifier: ^1.9.9 + version: 1.9.9 + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + '@types/supertest': + specifier: ^6.0.2 + version: 6.0.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.14.9) + supertest: + specifier: ^7.0.0 + version: 7.0.0 + tsup: + specifier: ^8.1.0 + version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + + examples/nextjs: + dependencies: + '@repo/shared': + specifier: workspace:* + version: link:../../packages/shared + next: + specifier: ^14.2.4 + version: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + nextjs-darkmode: + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.3.3)(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + nextjs-themes: + specifier: ^4.0.3 + version: 4.0.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-mouse-trails: + specifier: ^0.0.3 + version: 0.0.3(@types/react@18.3.3)(react@18.3.1) + react18-loaders: + specifier: workspace:* + version: link:../../lib + devDependencies: + '@next/eslint-plugin-next': + specifier: ^14.2.4 + version: 14.2.4 + '@repo/eslint-config': + specifier: workspace:* + version: link:../../packages/config-eslint + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/config-typescript + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + typescript: + specifier: ^5.5.2 + version: 5.5.2 + + examples/remix: + dependencies: + '@remix-run/node': + specifier: ^2.10.0 + version: 2.10.0(typescript@5.5.2) + '@remix-run/react': + specifier: ^2.10.0 + version: 2.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@remix-run/serve': + specifier: ^2.10.0 + version: 2.10.0(typescript@5.5.2) + '@remix-run/server-runtime': + specifier: ^2.10.0 + version: 2.10.0(typescript@5.5.2) + '@repo/shared': + specifier: workspace:* + version: link:../../packages/shared + '@vercel/analytics': + specifier: ^1.3.1 + version: 1.3.1(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + '@vercel/remix-entry-server': + specifier: ^0.1.1 + version: 0.1.1(react@18.3.1) + nextjs-darkmode: + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react18-loaders: + specifier: workspace:* + version: link:../../lib + react18-themes: + specifier: ^3.2.0 + version: 3.2.0(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + devDependencies: + '@remix-run/dev': + specifier: ^2.10.0 + version: 2.10.0(@remix-run/react@2.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2))(@remix-run/serve@2.10.0(typescript@5.5.2))(@types/node@20.14.9)(sass@1.77.6)(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + '@repo/eslint-config': + specifier: workspace:* + version: link:../../packages/config-eslint + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/config-typescript + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + typescript: + specifier: ^5.5.2 + version: 5.5.2 + + examples/vite: + dependencies: + '@repo/shared': + specifier: workspace:* + version: link:../../packages/shared + nextjs-darkmode: + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react18-loaders: + specifier: workspace:* + version: link:../../lib + react18-themes: + specifier: ^3.2.0 + version: 3.2.0(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + devDependencies: + '@repo/eslint-config': + specifier: workspace:* + version: link:../../packages/config-eslint + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/config-typescript + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + vite: + specifier: ^5.3.2 + version: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + + lib: + dependencies: + next: + specifier: 10 - 15 + version: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + r18gs: + specifier: ^1.1.3 + version: 1.1.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + devDependencies: + '@repo/eslint-config': + specifier: workspace:* + version: link:../packages/config-eslint + '@repo/typescript-config': + specifier: workspace:* + version: link:../packages/config-typescript + '@testing-library/react': + specifier: ^16.0.0 + version: 16.0.0(@testing-library/dom@10.2.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + '@vitest/coverage-v8': + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6)) + esbuild-plugin-rdi: + specifier: ^0.0.0 + version: 0.0.0 + esbuild-plugin-react18: + specifier: 0.2.4 + version: 0.2.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + esbuild-plugin-react18-css: + specifier: ^0.0.4 + version: 0.0.4 + jsdom: + specifier: ^24.1.0 + version: 24.1.0 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + vite-tsconfig-paths: + specifier: ^4.3.2 + version: 4.3.2(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + vitest: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6) + + packages/config-eslint: + devDependencies: + '@vercel/style-guide': + specifier: ^6.0.0 + version: 6.0.0(@next/eslint-plugin-next@14.2.4)(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(prettier@3.3.2)(typescript@5.5.2)(vitest@1.6.0(@types/node@20.14.9)) + eslint-config-turbo: + specifier: ^2.0.6 + version: 2.0.6(eslint@9.6.0) + eslint-plugin-mdx: + specifier: ^3.1.5 + version: 3.1.5(eslint@9.6.0) + eslint-plugin-only-warn: + specifier: ^1.1.0 + version: 1.1.0 + eslint-plugin-storybook: + specifier: ^0.8.0 + version: 0.8.0(eslint@9.6.0)(typescript@5.5.2) + + packages/config-typescript: {} + + packages/jest-presets: + dependencies: + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2) + devDependencies: + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + + packages/logger: + devDependencies: + '@repo/eslint-config': + specifier: workspace:* + version: link:../config-eslint + '@repo/jest-presets': + specifier: workspace:* + version: link:../jest-presets + '@repo/typescript-config': + specifier: workspace:* + version: link:../config-typescript + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.14.9) + tsup: + specifier: ^8.1.0 + version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + + packages/shared: + dependencies: + '@mayank1513/fork-me': + specifier: ^2.1.2 + version: 2.1.2(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + '@repo/scripts': + specifier: workspace:* + version: link:../../scripts + next: + specifier: 10 - 14 + version: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + nextjs-darkmode: + specifier: ^1.0.4 + version: 1.0.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + nextjs-themes: + specifier: ^4.0.3 + version: 4.0.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + r18gs: + specifier: ^1.1.3 + version: 1.1.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react-live: + specifier: ^4.1.7 + version: 4.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react18-loaders: + specifier: workspace:* + version: link:../../lib + devDependencies: + '@repo/eslint-config': + specifier: workspace:* + version: link:../config-eslint + '@repo/typescript-config': + specifier: workspace:* + version: link:../config-typescript + '@testing-library/react': + specifier: ^16.0.0 + version: 16.0.0(@testing-library/dom@10.2.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + '@vitest/coverage-v8': + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6)) + esbuild-plugin-react18: + specifier: ^0.2.4 + version: 0.2.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + esbuild-plugin-react18-css: + specifier: ^0.0.4 + version: 0.0.4 + jsdom: + specifier: ^24.1.0 + version: 24.1.0 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) + typescript: + specifier: ^5.5.2 + version: 5.5.2 + vite-tsconfig-paths: + specifier: ^4.3.2 + version: 4.3.2(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)) + vitest: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6) + + scripts: {} + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.24.7': + resolution: {integrity: sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^8.0.0 + + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.7': + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.7': + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.24.7': + resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.7': + resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.24.7': + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@changesets/apply-release-plan@7.0.3': + resolution: {integrity: sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==} + + '@changesets/assemble-release-plan@6.0.2': + resolution: {integrity: sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==} + + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + + '@changesets/cli@2.27.6': + resolution: {integrity: sha512-PB7KS5JkCQ4WSXlnfThn8CXAHVwYxFdZvYTimhi12fls/tzj9iimUhKsYwkrKSbw1AiVlGCZtihj5Wkt6siIjA==} + hasBin: true + + '@changesets/config@3.0.1': + resolution: {integrity: sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.0': + resolution: {integrity: sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==} + + '@changesets/get-release-plan@4.0.2': + resolution: {integrity: sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.0': + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + + '@changesets/logger@0.1.0': + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + + '@changesets/pre@2.0.0': + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + + '@changesets/read@0.6.0': + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + + '@changesets/should-skip-package@0.1.0': + resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + + '@changesets/write@0.3.1': + resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.6': + resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.6': + resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.6': + resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.6': + resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.6': + resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.6': + resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.6': + resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.6': + resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.6': + resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.6': + resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.6': + resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.6': + resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.6': + resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.6': + resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.6': + resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.6': + resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.6': + resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.6': + resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.6': + resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.6': + resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.6': + resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.6': + resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.17.0': + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.6.0': + resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@inquirer/figures@1.0.3': + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} + engines: {node: '>=18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@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 + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@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} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@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 + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jspm/core@2.0.1': + resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@mayank1513/fork-me@2.1.2': + resolution: {integrity: sha512-TrROXCVu72zrIjtnrIObxySB+/2ObGb6Lycmgp8Ku8OnJdlQl6ZCorbrMpvPCjw++b2ZBx1q9RkOZTtZAZE2ng==} + peerDependencies: + '@types/react': 16.8 - 18 + next: 10 - 14 + react: 16.8 - 18 + peerDependenciesMeta: + next: + optional: true + + '@mdx-js/mdx@2.3.0': + resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + + '@next/env@14.2.4': + resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + + '@next/eslint-plugin-next@14.2.4': + resolution: {integrity: sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==} + + '@next/swc-darwin-arm64@14.2.4': + resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@14.2.4': + resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@14.2.4': + resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.4': + resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@14.2.4': + resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.4': + resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@14.2.4': + resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@14.2.4': + resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.4': + resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@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'} + + '@npmcli/config@8.3.3': + resolution: {integrity: sha512-sIMKHiiYr91ALiHjhPq64F5P/SCaiSyDfpNmgYHtlIJtLY445+3+r3VoREzpdDrOwIqwQ6iEHinbTfaocL0UgA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/git@4.1.0': + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/map-workspaces@3.0.6': + resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/name-from-folder@2.0.0': + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@4.0.1': + resolution: {integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/promise-spawn@6.0.2': + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@remix-run/dev@2.10.0': + resolution: {integrity: sha512-GZE4Rck6/1Q16/QtRSq1SyfVf6KhUvJqHZoTmAl56xRVscyA1alDugXVHihwd0YuoaS6/vZ3Rb4eI5roWVrExw==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@remix-run/react': ^2.10.0 + '@remix-run/serve': ^2.10.0 + typescript: ^5.1.0 + vite: ^5.1.0 + wrangler: ^3.28.2 + peerDependenciesMeta: + '@remix-run/serve': + optional: true + typescript: + optional: true + vite: + optional: true + wrangler: + optional: true + + '@remix-run/express@2.10.0': + resolution: {integrity: sha512-xmHxumbglfbCVJa9a9dMDtOD408DYH27LAHuGfEAPPSf5sc9WMEFBItNxp3bJZ2W2NDeava+h+7BIeR5wNpgxw==} + engines: {node: '>=18.0.0'} + peerDependencies: + express: ^4.19.2 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/node@1.12.0': + resolution: {integrity: sha512-WiyRTEQKTUTf3Z3ke5DOwx+fjCkeD8ilI9kbRws1bG3xfdugaDrV9ra76DOZcrYlmVwjwtKE3mVDSRFtiYTTMw==} + engines: {node: '>=14'} + + '@remix-run/node@2.10.0': + resolution: {integrity: sha512-hFBt431leCEoN84kVj6BExv60+3KHFORTU2t24igJNtXPNCHH/pujMMKYaSrS3a5oKDTwwqbCmSztTyyr7uFLA==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/react@2.10.0': + resolution: {integrity: sha512-XgNpyAoiNCq0jDZb8HPUS6sNJGWx31iJoqOlPy4KkjNexhq+COCN9QzXvsPIm2LpcPG3w7+loKmLMCTsTlH+Eg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/router@1.17.0': + resolution: {integrity: sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==} + engines: {node: '>=14.0.0'} + + '@remix-run/router@1.3.1': + resolution: {integrity: sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==} + engines: {node: '>=14'} + + '@remix-run/serve@2.10.0': + resolution: {integrity: sha512-JOF2x8HwXo4G5hOqKEUEG7Xm2ZYYL0kZJcWdJVIQxaRN/EmbmJCKGLcW21rZ6VZ/FqpEkSnwmiGFoDkPQ9q6lg==} + engines: {node: '>=18.0.0'} + hasBin: true + + '@remix-run/server-runtime@1.12.0': + resolution: {integrity: sha512-7I0165Ns/ffPfCEfuiqD58lMderTn2s/sew1xJ34ONa21mG/7+5T7diHIgxKST8rS3816JPmlwSqUaHgwbmO6Q==} + engines: {node: '>=14'} + + '@remix-run/server-runtime@2.10.0': + resolution: {integrity: sha512-lwgMq3m8U+oz0ZmgOrQeAE3tf6g1LPf2+ff3lgb5xb4bx7bV5VGGwKkzRK4+0fDguHXcW+YcppvdYdnKzQn1YQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/web-blob@3.1.0': + resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} + + '@remix-run/web-fetch@4.4.2': + resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} + engines: {node: ^10.17 || >=12.3} + + '@remix-run/web-file@3.1.0': + resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} + + '@remix-run/web-form-data@3.1.0': + resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} + + '@remix-run/web-stream@1.1.0': + resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@rushstack/eslint-patch@1.10.3': + resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + + '@shikijs/core@1.10.0': + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@testing-library/dom@10.2.0': + resolution: {integrity: sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==} + engines: {node: '>=18'} + + '@testing-library/react@16.0.0': + resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/concat-stream@2.0.3': + resolution: {integrity: sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/cookiejar@2.1.5': + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + + '@types/cors@2.8.17': + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/fined@1.1.5': + resolution: {integrity: sha512-2N93vadEGDFhASTIRbizbl4bNqpMOId5zZfj6hHqYZfEzEfO9onnU4Im8xvzo8uudySDveDHBOOSlTWf38ErfQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/inquirer@9.0.7': + resolution: {integrity: sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==} + + '@types/is-empty@1.2.3': + resolution: {integrity: sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==} + + '@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==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/liftoff@4.0.3': + resolution: {integrity: sha512-UgbL2kR5pLrWICvr8+fuSg0u43LY250q7ZMkC+XKC3E+rs/YBDEnQIzsnhU5dYsLlwMi3R75UvCL87pObP1sxw==} + + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/methods@1.1.4': + resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/morgan@1.9.9': + resolution: {integrity: sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/prismjs@1.26.4': + resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/superagent@8.1.7': + resolution: {integrity: sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==} + + '@types/supertest@6.0.2': + resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} + + '@types/supports-color@8.1.3': + resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} + + '@types/through@0.0.33': + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.14.1': + resolution: {integrity: sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: 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} + + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + 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 + + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^8.0.0 + + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.0.0 + + '@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} + + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vanilla-extract/babel-plugin-debug-ids@1.0.6': + resolution: {integrity: sha512-C188vUEYmw41yxg3QooTs8r1IdbDQQ2mH7L5RkORBnHx74QlmsNfqVmKwAVTgrlYt8JoRaWMtPfGm/Ql0BNQrA==} + + '@vanilla-extract/css@1.15.3': + resolution: {integrity: sha512-mxoskDAxdQAspbkmQRxBvolUi1u1jnyy9WZGm+GeH8V2wwhEvndzl1QoK7w8JfA0WFevTxbev5d+i+xACZlPhA==} + + '@vanilla-extract/integration@6.5.0': + resolution: {integrity: sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==} + + '@vanilla-extract/private@1.0.5': + resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} + + '@vercel/analytics@1.3.1': + resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} + peerDependencies: + next: '>= 13' + react: ^18 || ^19 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + + '@vercel/remix-entry-server@0.1.1': + resolution: {integrity: sha512-rFBfdsWIb1AYQkynRwY/O5Vv9DjNf24vL7n4oc5E3FuiO5p/6Ire9+9ZgrwM3rZjKZGdWkn2xkDu370TYcWmfg==} + peerDependencies: + react: ^18.0.0 + + '@vercel/style-guide@6.0.0': + resolution: {integrity: sha512-tu0wFINGz91EPwaT5VjSqUwbvCY9pvLach7SPG4XyfJKPU9Vku2TFa6+AyzJ4oroGbo9fK+TQhIFHrnFl0nCdg==} + engines: {node: '>=18.18'} + peerDependencies: + '@next/eslint-plugin-next': '>=12.3.0 <15.0.0-0' + eslint: ^8.0.0 + prettier: '>=3.0.0 <4' + typescript: '>=4.8.0 <6' + peerDependenciesMeta: + '@next/eslint-plugin-next': + optional: true + eslint: + optional: true + prettier: + optional: true + typescript: + optional: true + + '@vitejs/plugin-react@4.3.1': + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@web3-storage/multipart-parser@1.0.0': + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + 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'} + + 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'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + 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'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.9.1: + resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} + engines: {node: '>=4'} + + axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + 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} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + 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 + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bundle-require@4.2.1: + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + caniuse-lite@1.0.30001638: + resolution: {integrity: sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + 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'} + + cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + 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==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + del@7.1.0: + resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} + engines: {node: '>=14.16'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.815: + resolution: {integrity: sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild-plugin-rdi@0.0.0: + resolution: {integrity: sha512-wlv4qWPN6SEbQ/nhZpCeTK9JW5aw+DH3SQEvDbhd4fjiOvdQIR3qgrCs4PWiGXoV//Ph9WjIKquB2cZOg5cIZg==} + + esbuild-plugin-react18-css@0.0.4: + resolution: {integrity: sha512-dg/6DB8c0ODubeahYa/4rWO5lk/Bn22lRD6n3+1ZFOvNU4d+Q/gGMiRq01ndrX7p70QYEnrjYmV8p59zrjTtIg==} + + esbuild-plugin-react18@0.2.4: + resolution: {integrity: sha512-b8A/O3en1u5lvFx/kr+KGpuwkphy7m3+Mjy+ZP9QLl9IA2YMWJKGuZbN7W1go+GL8fFFwk7tr1C2HRWytAXI1g==} + peerDependencies: + '@types/react': 16.8 - 19 + next: 10 - 14 + react: 16.8 - 19 + peerDependenciesMeta: + next: + optional: true + + esbuild-plugins-node-modules-polyfill@1.6.4: + resolution: {integrity: sha512-x3MCOvZrKDGAfqAYS/pZUUSwiN+XH7x84A+Prup0CZBJKuGfuGkTAC4g01D6JPs/GCM9wzZVfd8bmiy+cP/iXA==} + engines: {node: '>=14.0.0'} + peerDependencies: + esbuild: ^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 + + esbuild@0.17.6: + resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + 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 + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: ^8.0.0 + + eslint-config-turbo@2.0.6: + resolution: {integrity: sha512-PkRjFnZUZWPcrYT4Xoi5OWOUtnn6xVGh88I6TsayiH4AQZuLs/MDmzfJRK+PiWIrI7Q7sbsVEQP+nUyyRE3uAw==} + peerDependencies: + eslint: ^8.0.0 + + eslint-import-resolver-alias@1.1.2: + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.1: + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: ^8.0.0 + eslint-plugin-import: '*' + + eslint-mdx@3.1.5: + resolution: {integrity: sha512-ynztX0k7CQ3iDL7fDEIeg3g0O/d6QPv7IBI9fdYLhXp5fAp0fi8X22xF/D3+Pk0f90R27uwqa1clHpay6t0l8Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: ^8.0.0 + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + 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 + + eslint-plugin-eslint-comments@3.2.0: + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jest@27.9.0: + resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-jsx-a11y@6.9.0: + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-markdown@3.0.1: + resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-mdx@3.1.5: + resolution: {integrity: sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-only-warn@1.1.0: + resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==} + engines: {node: '>=6'} + + eslint-plugin-playwright@1.6.2: + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: ^8.0.0 + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-react@7.34.3: + resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-storybook@0.8.0: + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-testing-library@6.2.2: + resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-tsdoc@0.2.17: + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + + eslint-plugin-turbo@2.0.6: + resolution: {integrity: sha512-yGnpMvyBxI09ZrF5bGpaniBz57MiExTCsRnNxP+JnbMFD+xU3jG3ukRzehVol8LYNdC/G7E4HoH+x7OEpoSGAQ==} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-unicorn@51.0.1: + resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^8.0.0 + + eslint-plugin-vitest@0.3.26: + resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: ^8.0.0 + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + vitest: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + 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-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.6.0: + resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-attach-comments@2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + + estree-util-build-jsx@2.2.2: + resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + + estree-util-is-identifier-name@1.1.0: + resolution: {integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==} + + estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + + estree-util-value-to-estree@1.3.0: + resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} + engines: {node: '>=12.0.0'} + + estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + 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-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} + + fined@2.0.0: + resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} + engines: {node: '>= 10.13.0'} + + flagged-respawn@2.0.0: + resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} + engines: {node: '>= 10.13.0'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + formidable@3.5.1: + resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + 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'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + 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'} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + + git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + 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'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + 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==} + + gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: 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-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + immutable@4.3.6: + resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + 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'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inquirer@9.3.1: + resolution: {integrity: sha512-A5IdVr1I04XqPlwrGgTJMKmzRg5ropqNpSeqo0vj1ZmluSCNSFaPZz4eazdPrhVcZfej7fCEYvD2NYa1KjkTJA==} + engines: {node: '>=18'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + + is-empty@1.2.0: + resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + 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'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-cwd@3.0.0: + resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + 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'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.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'} + + is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@5.0.2: + resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} + engines: {node: '>= 18.0.0'} + + isbot@3.6.5: + resolution: {integrity: sha512-BchONELXt6yMad++BwGpa0oQxo/uD0keL7N15cYVf0A1oMIoNQ79OqeYdPMFWDrNhCqCbRuw9Y9F3QBjvAxZ5g==} + engines: {node: '>=12'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + 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} + + jest-cli@29.7.0: + 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 + + jest-config@29.7.0: + 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 + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + 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} + + 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 + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.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} + + 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} + + 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} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + 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 + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@24.1.0: + resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + 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'} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + liftoff@4.0.0: + resolution: {integrity: sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==} + engines: {node: '>=10.13.0'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + load-plugin@6.0.3: + resolution: {integrity: sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.3.0: + resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} + engines: {node: 14 || >=16.14} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + markdown-extensions@1.1.1: + resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} + engines: {node: '>=0.10.0'} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + + mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-frontmatter@1.0.1: + resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + + mdast-util-mdx-expression@1.3.2: + resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@2.1.4: + resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} + + mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + + mdast-util-mdx@2.0.1: + resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@1.3.1: + resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + + mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-frontmatter@1.1.1: + resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + + micromark-extension-mdx-expression@1.0.8: + resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + + micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + + micromark-extension-mdx-jsx@1.0.5: + resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + + micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + + micromark-extension-mdx-md@1.0.1: + resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@1.0.5: + resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@1.0.1: + resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-mdx-expression@1.0.9: + resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} + + micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-events-to-acorn@1.2.3: + resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} + + micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + 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'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + 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} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next@14.2.4: + resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + nextjs-darkmode@1.0.4: + resolution: {integrity: sha512-GRpodrZ6NdCef7Ax9SYSMjWvweATcL4wC1PrRJcR07cU7vMOvq4TJLjLwkI7SuEh1aU13AD5iZ6xXhUVV8B1DA==} + peerDependencies: + '@types/react': 16.8 - 19 + react: 16.8 - 19 + + nextjs-themes@4.0.3: + resolution: {integrity: sha512-aLl5ke2tOKfaqnyZ82ux3bJ9MPDm3aJnAfCQA9vZZw36TDwx3HfCfLPXyuyq6Xi7s1SoREWjRVybI+wc2LJOGg==} + peerDependencies: + '@types/react': 16.8 - 19 + react: 16.8 - 19 + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-plop@0.32.0: + resolution: {integrity: sha512-lKFSRSRuDHhwDKMUobdsvaWCbbDRbV3jMUSMiajQSQux1aNUevAZVxUHc2JERI//W8ABPRbi3ebYuSuIzkNIpQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + 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} + + 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} + + npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-pick-manifest@8.0.2: + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-map@5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} + engines: {node: '>=12'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + + parse-ms@2.1.0: + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} + engines: {node: '>=6'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + 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'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + + plop@4.0.1: + resolution: {integrity: sha512-5n8QU93kvL/ObOzBcPAB1siVFtAH1TZM6TntJ3JK5kXT0jIgnQV+j+uaOWWFJlg1cNkzLYm8klgASF65K36q9w==} + engines: {node: '>=18'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@6.0.0: + resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==} + peerDependencies: + postcss: ^8.0.0 + + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-packagejson@2.5.0: + resolution: {integrity: sha512-6XkH3rpin5QEQodBSVNg+rBo4r91g/1mCaRwS1YGdQJZ6jwqrg2UchBsIG9tpS1yK1kNBvOt84OILsX8uHzBGg==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-ms@7.0.1: + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} + engines: {node: '>=10'} + + prism-react-renderer@2.3.1: + resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} + peerDependencies: + react: '>=16.0.0' + + proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + 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'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + r18gs@1.1.3: + resolution: {integrity: sha512-pjBuUsF2yx83nrVwiqJJ/xNuYj8vXzWzZHBNKXS1bPz2MQbjE+i71fXDetr7iJVijN7LaoFtq05a6Hbk5FEBOQ==} + peerDependencies: + '@types/react': 16.8 - 19 + next: '*' + react: 16.8 - 19 + peerDependenciesMeta: + next: + optional: true + + r18gs@2.0.0-alpha.0: + resolution: {integrity: sha512-AwmgZBdctfgITHVcyYLi02zLW40vcBw32eQjHRd7RRBuFDiloDuJTgnF2rzcsj/OPRP8iCosqszQ3FcBjvzQTg==} + peerDependencies: + '@types/react': 16.8 - 19 + next: '*' + react: 16.8 - 19 + peerDependenciesMeta: + next: + optional: true + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + 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==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-live@4.1.7: + resolution: {integrity: sha512-NTzl0POOAW3dkp7+QL30duOrIu2Vzf2LHdx4TaQ0BqOAtQcSTKEXujfm9jR2VoCHko0oi35PYp38yKQBXz4mrg==} + engines: {node: '>= 0.12.0', npm: '>= 2.0.0'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + + react-mouse-trails@0.0.3: + resolution: {integrity: sha512-cEaLlgPfmeTt3nkFdd7zLQ33Tl9vBTcyU+USveX/Pn6ezk95jLNl2plw+terB9P1r6PECIshYx2NuXLM5eZdmA==} + peerDependencies: + '@types/react': 16.8 - 19 + react: 16.8 - 19 + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-router-dom@6.24.0: + resolution: {integrity: sha512-960sKuau6/yEwS8e+NVEidYQb1hNjAYM327gjEyXlc6r3Skf2vtwuJ2l7lssdegD2YjoKG5l8MsVyeTDlVeY8g==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.24.0: + resolution: {integrity: sha512-sQrgJ5bXk7vbcC4BxQxeNa5UmboFm35we1AFK0VvQaz9g0LzxEIuLOhHIoZ8rnu9BO21ishGeL9no1WB76W/eg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react18-themes@3.2.0: + resolution: {integrity: sha512-0Drf0UqSI4CrDc07TQcGzE4fgNMRVjDs531Q4IkH2s3i7lahWdXQGV+MB9p54w7DwNZnoPeCgwC6tslTvaodbg==} + peerDependencies: + '@types/react': 16.8 - 19 + next: '*' + react: 16.8 - 19 + peerDependenciesMeta: + next: + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + + remark-frontmatter@4.0.1: + resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + + remark-mdx-frontmatter@1.1.1: + resolution: {integrity: sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==} + engines: {node: '>=12.2.0'} + + remark-mdx@2.3.0: + resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.77.6: + resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==} + engines: {node: '>=14.0.0'} + hasBin: true + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + + sort-package-json@2.10.0: + resolution: {integrity: sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g==} + hasBin: true + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superagent@9.0.2: + resolution: {integrity: sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==} + engines: {node: '>=14.18.0'} + + supertest@7.0.0: + resolution: {integrity: sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==} + engines: {node: '>=14.18.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.9.0: + resolution: {integrity: sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==} + engines: {node: ^14.18.0 || >=16.0.0} + + 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==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.1.5: + resolution: {integrity: sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@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/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + tsconfck@3.1.1: + resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tsup@8.1.0: + resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsutils@3.21.0: + 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' + + turbo-darwin-64@2.0.6: + resolution: {integrity: sha512-XpgBwWj3Ggmz/gQVqXdMKXHC1iFPMDiuwugLwSzE7Ih0O13JuNtYZKhQnopvbDQnFQCeRq2Vsm5OTWabg/oB/g==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.0.6: + resolution: {integrity: sha512-RfeZYXIAkiA21E8lsvfptGTqz/256YD+eI1x37fedfvnHFWuIMFZGAOwJxtZc6QasQunDZ9TRRREbJNI68tkIw==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.0.6: + resolution: {integrity: sha512-92UDa0xNQQbx0HdSp9ag3YSS3xPdavhc7q9q9mxIAcqyjjD6VElA4Y85m4F/DDGE5SolCrvBz2sQhVmkOd6Caw==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.0.6: + resolution: {integrity: sha512-eQKu6utCVUkIH2kqOzD8OS6E0ba6COjWm6PRDTNCHQRljZW503ycaTUIdMOiJrVg1MkEjDyOReUg8s8D18aJ4Q==} + cpu: [arm64] + os: [linux] + + turbo-stream@2.2.0: + resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} + + turbo-windows-64@2.0.6: + resolution: {integrity: sha512-+9u4EPrpoeHYCQ46dRcou9kbkSoelhOelHNcbs2d86D6ruYD/oIAHK9qgYK8LeARRz0jxhZIA/dWYdYsxJJWkw==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.0.6: + resolution: {integrity: sha512-rdrKL+p+EjtdDVg0wQ/7yTbzkIYrnb0Pw4IKcjsy3M0RqUM9UcEi67b94XOAyTa5a0GqJL1+tUj2ebsFGPgZbg==} + cpu: [arm64] + os: [win32] + + turbo@2.0.6: + resolution: {integrity: sha512-/Ftmxd5Mq//a9yMonvmwENNUN65jOVTwhhBPQjEtNZutYT9YKyzydFGLyVM1nzhpLWahQSMamRc/RDBv5EapzA==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typedoc-plugin-extras@3.1.0: + resolution: {integrity: sha512-8tNeq2fgl2HCUZ6eZuAoLLKEvB/WrRS4He9MtTfo3X3Pa8Iw3TS5D0g8krDhUXUk1uHpXVAVHm8rSOMS2mdJRw==} + peerDependencies: + typedoc: 0.26.x + + typedoc-plugin-inline-sources@1.0.2: + resolution: {integrity: sha512-J1L2Ky6t5EeAI2fTqhcRii/ntxYN6lSPyKiaTKc/MIHgMTDh81elRvXPZFmvy+xMY9EEE9nlkUujfLGNo5c5Tw==} + engines: {node: '>= 10.8.0'} + peerDependencies: + typedoc: ^0.25.7 + + typedoc-plugin-mdn-links@3.2.1: + resolution: {integrity: sha512-l76VJKKhOxCYXnb16aV6nAQG5JCsuStqviNFmgzhS9dW73nqm3/1MO9497+0KlDTOPO3o+R2uVXq87d2cDy/hg==} + peerDependencies: + typedoc: '>= 0.23.14 || 0.24.x || 0.25.x || 0.26.x' + + typedoc-plugin-missing-exports@3.0.0: + resolution: {integrity: sha512-R7D8fYrK34mBFZSlF1EqJxfqiUSlQSmyrCiQgTQD52nNm6+kUtqwiaqaNkuJ2rA2wBgWFecUA8JzHT7x2r7ePg==} + peerDependencies: + typedoc: 0.26.x + + typedoc-plugin-rename-defaults@0.7.1: + resolution: {integrity: sha512-hgg4mAy5IumgUmPOnVVGmGywjTGtUCmRJ2jRbseqtXdlUuYKj652ODL9joUWFt5uvNu4Dr/pNILc/qsKGHJw+w==} + peerDependencies: + typedoc: '>=0.22.x <0.27.x' + + typedoc-plugin-zod@1.2.0: + resolution: {integrity: sha512-eFvPQ4iJsoru4HJP8z7F0NhRxPBjgVPoM0j/xipB7nkGLYhfUjEOlABayaTdBiMocPNCXOCBjFWBHEJGBiMRdw==} + peerDependencies: + typedoc: 0.23.x || 0.24.x || 0.25.x || 0.26.x + + typedoc@0.26.3: + resolution: {integrity: sha512-6d2Sw9disvvpdk4K7VNjKr5/3hzijtfQVHRthhDqJgnhMHy1wQz4yPMJVKXElvnZhFr0nkzo+GzjXDTRV5yLpg==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x + + typescript@5.5.2: + resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + + uglify-js@3.18.0: + resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + 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@6.19.2: + resolution: {integrity: sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==} + engines: {node: '>=18.17'} + + unified-engine@11.2.1: + resolution: {integrity: sha512-xBAdZ8UY2X4R9Hm6X6kMne4Nz0PlpOc1oE6DPeqJnewr5Imkb8uT5Eyvy1h7xNekPL3PSWh3ZJyNrMW6jnNQBg==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + + unist-util-inspect@8.0.0: + resolution: {integrity: sha512-/3Wn/wU6/H6UEo4FoYUeo8KUePN8ERiZpQYFWYoihOsr1DoDuv80PeB0hobVZyYSvALa2e556bG1A1/AbwU4yg==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position-from-estree@1.1.2: + resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + + unist-util-remove-position@4.0.2: + resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-editable@2.3.3: + resolution: {integrity: sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==} + peerDependencies: + react: '>= 16.8.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + v8flags@4.0.1: + resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} + engines: {node: '>= 10.13.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile-reporter@8.1.1: + resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} + + vfile-sort@4.0.0: + resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==} + + vfile-statistics@3.0.0: + resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-tsconfig-paths@4.3.2: + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.0: + resolution: {integrity: sha512-cMojmlnwkAgIXqga+2sXshlgrrcI0QEPJ5n58pEvtuFo4PaekfomlCudArDD7hj8Hkswjl0/x4eu4q+Xa0WFgQ==} + engines: {node: '>=12.20'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.24.7': {} + + '@babel/core@7.24.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.24.7(@babel/core@7.24.7)(eslint@9.6.0)': + dependencies: + '@babel/core': 7.24.7 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 9.6.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.24.7': + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-compilation-targets@7.24.7': + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-member-expression-to-functions@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-plugin-utils@7.24.7': {} + + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/helper-string-parser@7.24.7': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.7': {} + + '@babel/helpers@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.7 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.24.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + '@babel/traverse@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.7': + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@changesets/apply-release-plan@7.0.3': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/config': 3.0.1 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.6.2 + + '@changesets/assemble-release-plan@6.0.2': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.0 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.6.2 + + '@changesets/changelog-git@0.2.0': + dependencies: + '@changesets/types': 6.0.0 + + '@changesets/cli@2.27.6': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/apply-release-plan': 7.0.3 + '@changesets/assemble-release-plan': 6.0.2 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.0 + '@changesets/get-release-plan': 4.0.2 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.1 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.8 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + mri: 1.2.0 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.3 + resolve-from: 5.0.0 + semver: 7.6.2 + spawndamnit: 2.0.0 + term-size: 2.2.1 + + '@changesets/config@3.0.1': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.7 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.0': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.6.2 + + '@changesets/get-release-plan@4.0.2': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/assemble-release-plan': 6.0.2 + '@changesets/config': 3.0.1 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.0': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.7 + spawndamnit: 2.0.0 + + '@changesets/logger@0.1.0': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.4.0': + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.0': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.0': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/should-skip-package@0.1.0': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.0.0': {} + + '@changesets/write@0.3.1': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + + '@emotion/hash@0.9.1': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.17.6': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.17.6': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.17.6': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.17.6': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.17.6': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.17.6': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.17.6': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.17.6': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.17.6': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.17.6': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.17.6': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.17.6': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.17.6': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.17.6': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.17.6': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.17.6': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.17.6': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.17.6': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.17.6': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.17.6': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.17.6': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.17.6': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': + dependencies: + eslint: 9.6.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/config-array@0.17.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.5 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.5 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.5 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.1 + 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@9.6.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@inquirer/figures@1.0.3': {} + + '@isaacs/cliui@8.0.2': + 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': + 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 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0': + 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.14.9 + 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.14.9) + 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.7 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.14.9 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.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 + + '@jest/reporters@29.7.0': + 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.25 + '@types/node': 20.14.9 + 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.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + 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.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.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 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.24.7 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + 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.7 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.14.9 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jspm/core@2.0.1': {} + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.24.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.24.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@mayank1513/fork-me@2.1.2(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1)': + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + '@mdx-js/mdx@2.3.0': + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/mdx': 2.0.13 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.2.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.3 + markdown-extensions: 1.1.1 + periscopic: 3.1.0 + remark-mdx: 2.3.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + + '@microsoft/tsdoc-config@0.16.2': + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + + '@microsoft/tsdoc@0.14.2': {} + + '@next/env@14.2.4': {} + + '@next/eslint-plugin-next@14.2.4': + dependencies: + glob: 10.3.10 + + '@next/swc-darwin-arm64@14.2.4': + optional: true + + '@next/swc-darwin-x64@14.2.4': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.4': + optional: true + + '@next/swc-linux-arm64-musl@14.2.4': + optional: true + + '@next/swc-linux-x64-gnu@14.2.4': + optional: true + + '@next/swc-linux-x64-musl@14.2.4': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.4': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.4': + optional: true + + '@next/swc-win32-x64-msvc@14.2.4': + optional: true + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@npmcli/config@8.3.3': + dependencies: + '@npmcli/map-workspaces': 3.0.6 + ci-info: 4.0.0 + ini: 4.1.3 + nopt: 7.2.1 + proc-log: 4.2.0 + read-package-json-fast: 3.0.2 + semver: 7.6.2 + walk-up-path: 3.0.1 + + '@npmcli/fs@3.1.1': + dependencies: + semver: 7.6.2 + + '@npmcli/git@4.1.0': + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.2 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/map-workspaces@3.0.6': + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.4.2 + minimatch: 9.0.5 + read-package-json-fast: 3.0.2 + + '@npmcli/name-from-folder@2.0.0': {} + + '@npmcli/package-json@4.0.1': + dependencies: + '@npmcli/git': 4.1.0 + glob: 10.4.2 + hosted-git-info: 6.1.1 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 5.0.0 + proc-log: 3.0.0 + semver: 7.6.2 + transitivePeerDependencies: + - bluebird + + '@npmcli/promise-spawn@6.0.2': + dependencies: + which: 3.0.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@remix-run/dev@2.10.0(@remix-run/react@2.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2))(@remix-run/serve@2.10.0(typescript@5.5.2))(@types/node@20.14.9)(sass@1.77.6)(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6))': + dependencies: + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + '@mdx-js/mdx': 2.3.0 + '@npmcli/package-json': 4.0.1 + '@remix-run/node': 2.10.0(typescript@5.5.2) + '@remix-run/react': 2.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@remix-run/router': 1.17.0 + '@remix-run/server-runtime': 2.10.0(typescript@5.5.2) + '@types/mdx': 2.0.13 + '@vanilla-extract/integration': 6.5.0(@types/node@20.14.9)(sass@1.77.6) + arg: 5.0.2 + cacache: 17.1.4 + chalk: 4.1.2 + chokidar: 3.6.0 + cross-spawn: 7.0.3 + dotenv: 16.4.5 + es-module-lexer: 1.5.4 + esbuild: 0.17.6 + esbuild-plugins-node-modules-polyfill: 1.6.4(esbuild@0.17.6) + execa: 5.1.1 + exit-hook: 2.2.1 + express: 4.19.2 + fs-extra: 10.1.0 + get-port: 5.1.1 + gunzip-maybe: 1.4.2 + jsesc: 3.0.2 + json5: 2.2.3 + lodash: 4.17.21 + lodash.debounce: 4.0.8 + minimatch: 9.0.5 + ora: 5.4.1 + picocolors: 1.0.1 + picomatch: 2.3.1 + pidtree: 0.6.0 + postcss: 8.4.38 + postcss-discard-duplicates: 5.1.0(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-modules: 6.0.0(postcss@8.4.38) + prettier: 2.8.8 + pretty-ms: 7.0.1 + react-refresh: 0.14.2 + remark-frontmatter: 4.0.1 + remark-mdx-frontmatter: 1.1.1 + semver: 7.6.2 + set-cookie-parser: 2.6.0 + tar-fs: 2.1.1 + tsconfig-paths: 4.2.0 + ws: 7.5.10 + optionalDependencies: + '@remix-run/serve': 2.10.0(typescript@5.5.2) + typescript: 5.5.2 + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - bluebird + - bufferutil + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + - utf-8-validate + + '@remix-run/express@2.10.0(express@4.19.2)(typescript@5.5.2)': + dependencies: + '@remix-run/node': 2.10.0(typescript@5.5.2) + express: 4.19.2 + optionalDependencies: + typescript: 5.5.2 + + '@remix-run/node@1.12.0': + dependencies: + '@remix-run/server-runtime': 1.12.0 + '@remix-run/web-fetch': 4.4.2 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + cookie-signature: 1.2.1 + source-map-support: 0.5.21 + stream-slice: 0.1.2 + + '@remix-run/node@2.10.0(typescript@5.5.2)': + dependencies: + '@remix-run/server-runtime': 2.10.0(typescript@5.5.2) + '@remix-run/web-fetch': 4.4.2 + '@web3-storage/multipart-parser': 1.0.0 + cookie-signature: 1.2.1 + source-map-support: 0.5.21 + stream-slice: 0.1.2 + undici: 6.19.2 + optionalDependencies: + typescript: 5.5.2 + + '@remix-run/react@2.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': + dependencies: + '@remix-run/router': 1.17.0 + '@remix-run/server-runtime': 2.10.0(typescript@5.5.2) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.24.0(react@18.3.1) + react-router-dom: 6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + turbo-stream: 2.2.0 + optionalDependencies: + typescript: 5.5.2 + + '@remix-run/router@1.17.0': {} + + '@remix-run/router@1.3.1': {} + + '@remix-run/serve@2.10.0(typescript@5.5.2)': + dependencies: + '@remix-run/express': 2.10.0(express@4.19.2)(typescript@5.5.2) + '@remix-run/node': 2.10.0(typescript@5.5.2) + chokidar: 3.6.0 + compression: 1.7.4 + express: 4.19.2 + get-port: 5.1.1 + morgan: 1.10.0 + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + - typescript + + '@remix-run/server-runtime@1.12.0': + dependencies: + '@remix-run/router': 1.3.1 + '@types/cookie': 0.4.1 + '@types/react': 18.3.3 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.4.2 + set-cookie-parser: 2.6.0 + source-map: 0.7.4 + + '@remix-run/server-runtime@2.10.0(typescript@5.5.2)': + dependencies: + '@remix-run/router': 1.17.0 + '@types/cookie': 0.6.0 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.6.0 + set-cookie-parser: 2.6.0 + source-map: 0.7.4 + turbo-stream: 2.2.0 + optionalDependencies: + typescript: 5.5.2 + + '@remix-run/web-blob@3.1.0': + dependencies: + '@remix-run/web-stream': 1.1.0 + web-encoding: 1.1.5 + + '@remix-run/web-fetch@4.4.2': + dependencies: + '@remix-run/web-blob': 3.1.0 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-form-data': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + data-uri-to-buffer: 3.0.1 + mrmime: 1.0.1 + + '@remix-run/web-file@3.1.0': + dependencies: + '@remix-run/web-blob': 3.1.0 + + '@remix-run/web-form-data@3.1.0': + dependencies: + web-encoding: 1.1.5 + + '@remix-run/web-stream@1.1.0': + dependencies: + web-streams-polyfill: 3.3.3 + + '@rollup/rollup-android-arm-eabi@4.18.0': + optional: true + + '@rollup/rollup-android-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-x64@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@rushstack/eslint-patch@1.10.3': {} + + '@shikijs/core@1.10.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@storybook/csf@0.0.1': + dependencies: + lodash: 4.17.21 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.5': + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.3 + + '@testing-library/dom@10.2.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/react@16.0.0(@testing-library/dom@10.2.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@testing-library/dom': 10.2.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@tootallnate/once@2.0.0': {} + + '@types/acorn@4.0.6': + dependencies: + '@types/estree': 1.0.5 + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.24.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.24.7 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.14.9 + + '@types/concat-stream@2.0.3': + dependencies: + '@types/node': 20.14.9 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.14.9 + + '@types/cookie@0.4.1': {} + + '@types/cookie@0.6.0': {} + + '@types/cookiejar@2.1.5': {} + + '@types/cors@2.8.17': + dependencies: + '@types/node': 20.14.9 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.5 + + '@types/estree@1.0.5': {} + + '@types/express-serve-static-core@4.19.5': + dependencies: + '@types/node': 20.14.9 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + + '@types/fined@1.1.5': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 20.14.9 + + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.10 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 + + '@types/http-errors@2.0.4': {} + + '@types/inquirer@9.0.7': + dependencies: + '@types/through': 0.0.33 + rxjs: 7.8.1 + + '@types/is-empty@1.2.3': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.12': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 20.14.9 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/liftoff@4.0.3': + dependencies: + '@types/fined': 1.1.5 + '@types/node': 20.14.9 + + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.10 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.2 + + '@types/mdx@2.0.13': {} + + '@types/methods@1.1.4': {} + + '@types/mime@1.3.5': {} + + '@types/morgan@1.9.9': + dependencies: + '@types/node': 20.14.9 + + '@types/ms@0.7.34': {} + + '@types/node@12.20.55': {} + + '@types/node@20.14.9': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/prismjs@1.26.4': {} + + '@types/prop-types@15.7.12': {} + + '@types/qs@6.9.15': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.3 + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/semver@7.5.8': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.14.9 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.14.9 + '@types/send': 0.17.4 + + '@types/stack-utils@2.0.3': {} + + '@types/superagent@8.1.7': + dependencies: + '@types/cookiejar': 2.1.5 + '@types/methods': 1.1.4 + '@types/node': 20.14.9 + + '@types/supertest@6.0.2': + dependencies: + '@types/methods': 1.1.4 + '@types/superagent': 8.1.7 + + '@types/supports-color@8.1.3': {} + + '@types/through@0.0.33': + dependencies: + '@types/node': 20.14.9 + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@2.0.10': {} + + '@types/unist@3.0.2': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.32': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/type-utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 + eslint: 9.6.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 + debug: 4.3.5 + eslint: 9.6.0 + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/scope-manager@7.14.1': + dependencies: + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 + + '@typescript-eslint/type-utils@7.14.1(eslint@9.6.0)(typescript@5.5.2)': + dependencies: + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + debug: 4.3.5 + eslint: 9.6.0 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/types@7.14.1': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.2 + tsutils: 3.21.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.2)': + dependencies: + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.2) + optionalDependencies: + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@9.6.0)(typescript@5.5.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2) + eslint: 9.6.0 + eslint-scope: 5.1.1 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.14.1(eslint@9.6.0)(typescript@5.5.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + eslint: 9.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.14.1': + dependencies: + '@typescript-eslint/types': 7.14.1 + eslint-visitor-keys: 3.4.3 + + '@vanilla-extract/babel-plugin-debug-ids@1.0.6': + dependencies: + '@babel/core': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@vanilla-extract/css@1.15.3': + dependencies: + '@emotion/hash': 0.9.1 + '@vanilla-extract/private': 1.0.5 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.0.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/integration@6.5.0(@types/node@20.14.9)(sass@1.77.6)': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + '@vanilla-extract/babel-plugin-debug-ids': 1.0.6 + '@vanilla-extract/css': 1.15.3 + esbuild: 0.17.6 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + lodash: 4.17.21 + mlly: 1.7.1 + outdent: 0.8.0 + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + vite-node: 1.6.0(@types/node@20.14.9)(sass@1.77.6) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + '@vanilla-extract/private@1.0.5': {} + + '@vercel/analytics@1.3.1(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1)': + dependencies: + server-only: 0.0.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + react: 18.3.1 + + '@vercel/remix-entry-server@0.1.1(react@18.3.1)': + dependencies: + '@remix-run/node': 1.12.0 + isbot: 3.6.5 + react: 18.3.1 + react-dom: 18.2.0(react@18.3.1) + + '@vercel/style-guide@6.0.0(@next/eslint-plugin-next@14.2.4)(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(prettier@3.3.2)(typescript@5.5.2)(vitest@1.6.0(@types/node@20.14.9))': + dependencies: + '@babel/core': 7.24.7 + '@babel/eslint-parser': 7.24.7(@babel/core@7.24.7)(eslint@9.6.0) + '@rushstack/eslint-patch': 1.10.3 + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + eslint-config-prettier: 9.1.0(eslint@9.6.0) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0)) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.6.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2) + eslint-plugin-jsx-a11y: 6.9.0(eslint@9.6.0) + eslint-plugin-playwright: 1.6.2(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2))(eslint@9.6.0) + eslint-plugin-react: 7.34.3(eslint@9.6.0) + eslint-plugin-react-hooks: 4.6.2(eslint@9.6.0) + eslint-plugin-testing-library: 6.2.2(eslint@9.6.0)(typescript@5.5.2) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-unicorn: 51.0.1(eslint@9.6.0) + eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2)(vitest@1.6.0(@types/node@20.14.9)) + prettier-plugin-packagejson: 2.5.0(prettier@3.3.2) + optionalDependencies: + '@next/eslint-plugin-next': 14.2.4 + eslint: 9.6.0 + prettier: 3.3.2 + typescript: 5.5.2 + transitivePeerDependencies: + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - jest + - supports-color + - vitest + + '@vitejs/plugin-react@4.3.1(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6))': + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.7 + magic-string: 0.30.10 + magicast: 0.3.4 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + vitest: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.4.1 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.10 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@web3-storage/multipart-parser@1.0.0': {} + + '@zxing/text-encoding@0.9.0': + optional: true + + abab@2.0.6: {} + + abbrev@2.0.0: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@7.0.1: + dependencies: + acorn: 8.12.0 + acorn-walk: 8.3.3 + + acorn-jsx@5.3.2(acorn@8.12.0): + dependencies: + acorn: 8.12.0 + + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.0 + + acorn@8.12.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.1: + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + aggregate-error@4.0.1: + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + + ajv@6.12.6: + 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 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-each@1.0.1: {} + + array-flatten@1.1.1: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-slice@1.1.0: {} + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.toreversed@1.1.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + ast-types-flow@0.0.8: {} + + astring@1.8.6: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.19(postcss@8.4.38): + dependencies: + browserslist: 4.23.1 + caniuse-lite: 1.0.30001638 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.9.1: {} + + axobject-query@3.1.1: + dependencies: + deep-equal: 2.2.3 + + babel-jest@29.7.0(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + '@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.24.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.24.7 + '@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 + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + + babel-preset-jest@29.6.3(@babel/core@7.24.7): + dependencies: + '@babel/core': 7.24.7 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + body-parser@1.20.2: + 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 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserify-zlib@0.1.4: + dependencies: + pako: 0.2.9 + + browserslist@4.23.1: + dependencies: + caniuse-lite: 1.0.30001638 + electron-to-chromium: 1.4.815 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + bundle-require@4.2.1(esbuild@0.21.5): + dependencies: + esbuild: 0.21.5 + load-tsconfig: 0.2.5 + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + cacache@17.1.4: + dependencies: + '@npmcli/fs': 3.1.1 + fs-minipass: 3.0.3 + glob: 10.4.2 + lru-cache: 7.18.3 + minipass: 7.1.2 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.6 + tar: 6.2.1 + unique-filename: 3.0.0 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.3 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + camelcase@8.0.0: {} + + caniuse-lite@1.0.30001638: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case-first: 2.0.2 + + ccount@2.0.1: {} + + chai@4.4.1: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + change-case@4.1.2: + 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.3 + + char-regex@1.0.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@1.1.4: {} + + character-entities-legacy@3.0.0: {} + + character-entities@1.2.4: {} + + character-entities@2.0.2: {} + + character-reference-invalid@1.1.4: {} + + character-reference-invalid@2.0.1: {} + + chardet@0.7.0: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + 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: {} + + chownr@2.0.0: {} + + ci-info@3.9.0: {} + + ci-info@4.0.0: {} + + cjs-module-lexer@1.3.1: {} + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + clean-stack@2.2.0: {} + + clean-stack@4.2.0: + dependencies: + escape-string-regexp: 5.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + cli-width@4.1.0: {} + + client-only@0.0.1: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + clsx@2.1.1: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@4.1.1: {} + + component-emitter@1.3.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compression@1.7.4: + 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 + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + confbox@0.1.7: {} + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case: 2.0.2 + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie-signature@1.2.1: {} + + cookie@0.4.2: {} + + cookie@0.6.0: {} + + cookiejar@2.1.4: {} + + core-js-compat@3.37.1: + dependencies: + browserslist: 4.23.1 + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + create-jest@29.7.0(@types/node@20.14.9): + 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.14.9) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@4.0.1: + dependencies: + rrweb-cssom: 0.6.0 + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + data-uri-to-buffer@3.0.1: {} + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.5: + dependencies: + ms: 2.1.2 + + decimal.js@10.4.3: {} + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + dedent@1.5.3: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.0.8 + + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + del@7.1.0: + dependencies: + globby: 13.2.2 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 3.0.0 + is-path-inside: 4.0.0 + p-map: 5.5.0 + rimraf: 3.0.2 + slash: 4.0.0 + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-indent@7.0.1: {} + + detect-newline@3.1.0: {} + + detect-newline@4.0.1: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + + diff-sequences@29.6.3: {} + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + dotenv@16.0.3: {} + + dotenv@16.4.5: {} + + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.815: {} + + emittery@0.13.1: {} + + emoji-regex@10.3.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.17.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@4.5.0: {} + + err-code@2.0.3: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + + es-iterator-helpers@1.0.19: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild-plugin-rdi@0.0.0: {} + + esbuild-plugin-react18-css@0.0.4: + dependencies: + autoprefixer: 10.4.19(postcss@8.4.38) + postcss: 8.4.38 + postcss-modules: 6.0.0(postcss@8.4.38) + sass: 1.77.6 + + esbuild-plugin-react18@0.2.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + esbuild-plugins-node-modules-polyfill@1.6.4(esbuild@0.17.6): + dependencies: + '@jspm/core': 2.0.1 + esbuild: 0.17.6 + local-pkg: 0.5.0 + resolve.exports: 2.0.2 + + esbuild@0.17.6: + optionalDependencies: + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.0(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + + eslint-config-turbo@2.0.6(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + eslint-plugin-turbo: 2.0.6(eslint@9.6.0) + + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0)): + dependencies: + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.14.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0): + dependencies: + debug: 4.3.5 + enhanced-resolve: 5.17.0 + eslint: 9.6.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0))(eslint@9.6.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.5 + is-core-module: 2.14.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-mdx@3.1.5(eslint@9.6.0): + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + eslint: 9.6.0 + espree: 9.6.1 + estree-util-visit: 2.0.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.9.0 + tslib: 2.6.3 + unified: 11.0.5 + unified-engine: 11.2.1 + unist-util-visit: 5.0.0 + uvu: 0.5.6 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0))(eslint@9.6.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + eslint: 9.6.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0) + transitivePeerDependencies: + - supports-color + + eslint-plugin-eslint-comments@3.2.0(eslint@9.6.0): + dependencies: + escape-string-regexp: 1.0.5 + eslint: 9.6.0 + ignore: 5.3.1 + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@9.6.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.6.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint-plugin-import@2.29.1)(eslint@9.6.0))(eslint@9.6.0) + hasown: 2.0.2 + is-core-module: 2.14.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.5.2) + eslint: 9.6.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2) + jest: 29.7.0(@types/node@20.14.9) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsx-a11y@6.9.0(eslint@9.6.0): + dependencies: + aria-query: 5.1.3 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.9.1 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.19 + eslint: 9.6.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 + + eslint-plugin-markdown@3.0.1(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + + eslint-plugin-mdx@3.1.5(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + eslint-mdx: 3.1.5(eslint@9.6.0) + eslint-plugin-markdown: 3.0.1(eslint@9.6.0) + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + tslib: 2.6.3 + unified: 11.0.5 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + eslint-plugin-only-warn@1.1.0: {} + + eslint-plugin-playwright@1.6.2(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2))(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + globals: 13.24.0 + optionalDependencies: + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2) + + eslint-plugin-react-hooks@4.6.2(eslint@9.6.0): + dependencies: + eslint: 9.6.0 + + eslint-plugin-react@7.34.3(eslint@9.6.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 9.6.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + + eslint-plugin-storybook@0.8.0(eslint@9.6.0)(typescript@5.5.2): + dependencies: + '@storybook/csf': 0.0.1 + '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.5.2) + eslint: 9.6.0 + requireindex: 1.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-testing-library@6.2.2(eslint@9.6.0)(typescript@5.5.2): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.5.2) + eslint: 9.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-tsdoc@0.2.17: + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + + eslint-plugin-turbo@2.0.6(eslint@9.6.0): + dependencies: + dotenv: 16.0.3 + eslint: 9.6.0 + + eslint-plugin-unicorn@51.0.1(eslint@9.6.0): + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.37.1 + eslint: 9.6.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.6.2 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2)(vitest@1.6.0(@types/node@20.14.9)): + dependencies: + '@typescript-eslint/utils': 7.14.1(eslint@9.6.0)(typescript@5.5.2) + eslint: 9.6.0 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.6.0)(typescript@5.5.2))(eslint@9.6.0)(typescript@5.5.2) + vitest: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.0.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.6.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.17.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.6.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.5 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + 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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.1.0: + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + eslint-visitor-keys: 4.0.0 + + espree@9.6.1: + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@2.1.1: + dependencies: + '@types/estree': 1.0.5 + + estree-util-build-jsx@2.2.2: + dependencies: + '@types/estree-jsx': 1.0.5 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@1.1.0: {} + + estree-util-is-identifier-name@2.1.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-to-js@1.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.8.6 + source-map: 0.7.4 + + estree-util-value-to-estree@1.3.0: + dependencies: + is-plain-obj: 3.0.0 + + estree-util-visit@1.2.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 2.0.10 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eval@0.1.8: + dependencies: + '@types/node': 20.14.9 + require-like: 0.1.2 + + event-target-shim@5.0.1: {} + + execa@5.1.1: + 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 + + execa@8.0.1: + 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.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exit-hook@2.2.1: {} + + exit@0.1.2: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + expect@29.7.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 + + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.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 + + extend@3.0.2: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + 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.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-safe-stringify@2.1.1: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + 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 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.7 + pkg-dir: 4.2.0 + + findup-sync@5.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.7 + resolve-dir: 1.0.1 + + fined@2.0.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 5.0.0 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + flagged-respawn@2.0.0: {} + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreground-child@3.2.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + format@0.2.2: {} + + formidable@3.5.1: + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.2.0: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-package-type@0.1.0: {} + + get-port@5.1.1: {} + + get-stdin@9.0.0: {} + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.7.5: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-hooks-list@3.1.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.3.10: + dependencies: + foreground-child: 3.2.1 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + + glob@10.4.2: + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.0 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + glob@7.2.3: + 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 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + + globrex@0.1.2: {} + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gunzip-maybe@1.4.2: + dependencies: + 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 + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.18.0 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-estree@2.3.3: + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-whitespace@2.0.1: {} + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.6.3 + + hexoid@1.0.0: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hosted-git-info@6.1.1: + dependencies: + lru-cache: 7.18.3 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + + html-escaper@2.0.2: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.1 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + human-id@1.0.2: {} + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + ieee754@1.2.1: {} + + ignore@5.3.1: {} + + immutable@4.3.6: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.1.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indent-string@5.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.3: {} + + inline-style-parser@0.1.1: {} + + inquirer@9.3.1: + dependencies: + '@inquirer/figures': 1.0.3 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + external-editor: 3.1.0 + mute-stream: 1.0.0 + ora: 5.4.1 + picocolors: 1.0.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + interpret@3.1.1: {} + + ipaddr.js@1.9.1: {} + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-alphabetical@1.0.4: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-buffer@2.0.5: {} + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + + is-callable@1.2.7: {} + + is-core-module@2.14.0: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-decimal@1.0.4: {} + + is-decimal@2.0.1: {} + + is-deflate@1.0.0: {} + + is-empty@1.2.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-gzip@1.0.0: {} + + is-hexadecimal@1.0.4: {} + + is-hexadecimal@2.0.1: {} + + is-interactive@1.0.0: {} + + is-interactive@2.0.0: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-cwd@3.0.0: {} + + is-path-inside@3.0.3: {} + + is-path-inside@4.0.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.0.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-windows@1.0.2: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@5.0.2: {} + + isbot@3.6.5: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.2: + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-source-maps@5.0.4: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterator.prototype@1.1.2: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@3.4.0: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-stringify@2.1.0: {} + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.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.14.9 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + 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.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@20.14.9): + 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.14.9) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.14.9) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@20.14.9): + dependencies: + '@babel/core': 7.24.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + 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.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.9 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + 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 + + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.14.9 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.14.9 + 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.7 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.24.7 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + 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 + + jest-runner@29.7.0: + 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.14.9 + 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 + + jest-runtime@29.7.0: + 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.14.9 + chalk: 4.1.2 + cjs-module-lexer: 1.3.1 + 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 + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/types': 7.24.7 + '@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.24.7) + 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.6.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + 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 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.9 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 20.14.9 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@20.14.9): + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.14.9) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jju@1.4.0: {} + + joycon@3.1.1: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.12.0 + 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.10 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + 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.17.1 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@24.1.0: + dependencies: + cssstyle: 4.0.1 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.10 + parse5: 7.1.2 + rrweb-cssom: 0.7.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.17.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + jsesc@3.0.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.2: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + liftoff@4.0.0: + dependencies: + extend: 3.0.2 + findup-sync: 5.0.0 + fined: 2.0.0 + flagged-respawn: 2.0.0 + is-plain-object: 5.0.0 + object.map: 1.0.1 + rechoir: 0.8.0 + resolve: 1.22.8 + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + load-plugin@6.0.3: + dependencies: + '@npmcli/config': 8.3.3 + import-meta-resolve: 4.1.0 + + load-tsconfig@0.2.5: {} + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-utils@3.3.1: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.get@4.4.2: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.sortby@4.7.0: {} + + lodash.startcase@4.4.0: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lower-case@2.0.2: + dependencies: + tslib: 2.6.3 + + lru-cache@10.3.0: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@7.18.3: {} + + lunr@2.3.9: {} + + lz-string@1.5.0: {} + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magicast@0.3.4: + dependencies: + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + source-map-js: 1.2.0 + + make-dir@4.0.0: + dependencies: + semver: 7.6.2 + + make-error@1.3.6: {} + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-cache@0.2.2: {} + + markdown-extensions@1.1.1: {} + + markdown-it@14.1.0: + 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.1.0 + + mdast-util-definitions@5.1.2: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + unist-util-visit: 4.1.2 + + mdast-util-from-markdown@0.8.5: + 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 + + mdast-util-from-markdown@1.3.1: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + '@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 + + mdast-util-frontmatter@1.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-extension-frontmatter: 1.1.1 + + mdast-util-mdx-expression@1.3.2: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@2.1.4: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + ccount: 2.0.1 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.2: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@2.0.1: + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 2.1.4 + mdast-util-mdxjs-esm: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@1.3.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@12.3.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + + mdast-util-to-markdown@1.5.0: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.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 + + mdast-util-to-string@2.0.0: {} + + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdurl@2.0.0: {} + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.24.7 + + media-typer@0.3.0: {} + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromark-core-commonmark@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-core-commonmark@2.0.1: + 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.1.0 + 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.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-frontmatter@1.1.1: + dependencies: + fault: 2.0.1 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-mdx-expression@1.0.8: + dependencies: + '@types/estree': 1.0.5 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-mdx-expression@3.0.0: + 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.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-jsx@1.0.5: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + + micromark-extension-mdx-jsx@3.0.0: + 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.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdx-md@1.0.1: + dependencies: + micromark-util-types: 1.1.0 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-mdxjs-esm@1.0.5: + dependencies: + '@types/estree': 1.0.5 + micromark-core-commonmark: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + 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 + + micromark-extension-mdxjs@1.0.1: + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-jsx: 1.0.5 + micromark-extension-mdx-md: 1.0.1 + micromark-extension-mdxjs-esm: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + 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 + + micromark-factory-destination@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-mdx-expression@1.0.9: + dependencies: + '@types/estree': 1.0.5 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + + micromark-factory-mdx-expression@2.0.1: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + 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 + + micromark-factory-space@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@1.2.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@1.1.0: {} + + micromark-util-encode@2.0.0: {} + + micromark-util-events-to-acorn@1.2.3: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 2.0.10 + estree-util-visit: 1.2.1 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + + micromark-util-events-to-acorn@2.0.2: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + 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 + + micromark-util-html-tag-name@1.2.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@1.1.0: + dependencies: + micromark-util-types: 1.1.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@1.2.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@1.1.0: {} + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@1.1.0: {} + + micromark-util-types@2.0.0: {} + + micromark@2.11.4: + dependencies: + debug: 4.3.5 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromark@3.2.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.5 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.5 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + 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.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mlly@1.7.1: + dependencies: + acorn: 8.12.0 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 + + modern-ahocorasick@1.0.1: {} + + morgan@1.10.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + + mri@1.2.0: {} + + mrmime@1.0.1: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + mute-stream@1.0.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6): + dependencies: + '@next/env': 14.2.4 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001638 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.24.7)(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.4 + '@next/swc-darwin-x64': 14.2.4 + '@next/swc-linux-arm64-gnu': 14.2.4 + '@next/swc-linux-arm64-musl': 14.2.4 + '@next/swc-linux-x64-gnu': 14.2.4 + '@next/swc-linux-x64-musl': 14.2.4 + '@next/swc-win32-arm64-msvc': 14.2.4 + '@next/swc-win32-ia32-msvc': 14.2.4 + '@next/swc-win32-x64-msvc': 14.2.4 + sass: 1.77.6 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + nextjs-darkmode@1.0.4(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + r18gs: 1.1.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - next + + nextjs-darkmode@1.0.4(@types/react@18.3.3)(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + r18gs: 1.1.3(@types/react@18.3.3)(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - next + + nextjs-themes@4.0.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + r18gs: 2.0.0-alpha.0(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - next + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.3 + + node-int64@0.4.0: {} + + node-plop@0.32.0: + dependencies: + '@types/inquirer': 9.0.7 + change-case: 4.1.2 + del: 7.1.0 + globby: 13.2.2 + handlebars: 4.7.8 + inquirer: 9.3.1 + isbinaryfile: 5.0.2 + lodash.get: 4.4.2 + lower-case: 2.0.2 + mkdirp: 3.0.1 + resolve: 1.22.8 + title-case: 3.0.3 + upper-case: 2.0.2 + + node-releases@2.0.14: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@5.0.0: + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.14.0 + semver: 7.6.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-install-checks@6.3.0: + dependencies: + semver: 7.6.2 + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@10.1.0: + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.6.2 + validate-npm-package-name: 5.0.1 + + npm-pick-manifest@8.0.2: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 + semver: 7.6.2 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nwsapi@2.2.10: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.hasown@1.1.4: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + 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 + + ora@8.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.1.0 + strip-ansi: 7.1.0 + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + outdent@0.8.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@5.5.0: + dependencies: + aggregate-error: 4.0.1 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.0: {} + + pako@0.2.9: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@2.0.0: + 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 + + parse-entities@4.0.1: + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@7.1.1: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.2 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + + parse-ms@2.1.0: {} + + parse-passwd@1.0.0: {} + + parse5@7.1.2: + dependencies: + entities: 4.5.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.3.0 + minipass: 7.1.2 + + path-to-regexp@0.1.7: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + peek-stream@1.1.3: + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@4.0.1: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.1.1: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + plop@4.0.1: + dependencies: + '@types/liftoff': 4.0.3 + chalk: 5.3.0 + interpret: 3.1.1 + liftoff: 4.0.0 + minimist: 1.2.8 + node-plop: 0.32.0 + ora: 8.0.1 + v8flags: 4.0.1 + + pluralize@8.0.0: {} + + possible-typed-array-names@1.0.0: {} + + postcss-discard-duplicates@5.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-load-config@4.0.2(postcss@8.4.38): + dependencies: + lilconfig: 3.1.2 + yaml: 2.4.5 + optionalDependencies: + postcss: 8.4.38 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-modules-values@4.0.0(postcss@8.4.38): + dependencies: + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 + + postcss-modules@6.0.0(postcss@8.4.38): + dependencies: + generic-names: 4.0.0 + icss-utils: 5.1.0(postcss@8.4.38) + lodash.camelcase: 4.3.0 + postcss: 8.4.38 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) + postcss-modules-scope: 3.2.0(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) + string-hash: 1.1.3 + + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + preferred-pm@3.1.3: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + + prelude-ls@1.2.1: {} + + prettier-plugin-packagejson@2.5.0(prettier@3.3.2): + dependencies: + sort-package-json: 2.10.0 + synckit: 0.9.0 + optionalDependencies: + prettier: 3.3.2 + + prettier@2.8.8: {} + + prettier@3.3.2: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-ms@7.0.1: + dependencies: + parse-ms: 2.1.0 + + prism-react-renderer@2.3.1(react@18.3.1): + dependencies: + '@types/prismjs': 1.26.4 + clsx: 2.1.1 + react: 18.3.1 + + proc-log@3.0.0: {} + + proc-log@4.2.0: {} + + process-nextick-args@2.0.1: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@6.5.0: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + pseudomap@1.0.2: {} + + psl@1.9.0: {} + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + qs@6.12.1: + dependencies: + side-channel: 1.0.6 + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + r18gs@1.1.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + r18gs@1.1.3(@types/react@18.3.3)(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + r18gs@2.0.0-alpha.0(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-dom@18.2.0(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-live@4.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + prism-react-renderer: 2.3.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sucrase: 3.35.0 + use-editable: 2.3.3(react@18.3.1) + + react-mouse-trails@0.0.3(@types/react@18.3.3)(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + + react-refresh@0.14.2: {} + + react-router-dom@6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.17.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.24.0(react@18.3.1) + + react-router@6.24.0(react@18.3.1): + dependencies: + '@remix-run/router': 1.17.0 + react: 18.3.1 + + react18-themes@3.2.0(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1): + dependencies: + '@types/react': 18.3.3 + r18gs: 1.1.3(@types/react@18.3.3)(next@14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6))(react@18.3.1) + react: 18.3.1 + optionalDependencies: + next: 14.2.4(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.6) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + readable-stream@2.3.8: + 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 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + rechoir@0.8.0: + dependencies: + resolve: 1.22.8 + + reflect.getprototypeof@1.0.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.3 + + regenerator-runtime@0.14.1: {} + + regexp-tree@0.1.27: {} + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + + remark-frontmatter@4.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-frontmatter: 1.0.1 + micromark-extension-frontmatter: 1.1.1 + unified: 10.1.2 + + remark-mdx-frontmatter@1.1.1: + dependencies: + estree-util-is-identifier-name: 1.1.0 + estree-util-value-to-estree: 1.3.0 + js-yaml: 4.1.0 + toml: 3.0.0 + + remark-mdx@2.3.0: + dependencies: + mdast-util-mdx: 2.0.1 + micromark-extension-mdxjs: 1.0.1 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.0.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@10.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@10.1.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 + + require-directory@2.1.1: {} + + require-like@0.1.2: {} + + requireindex@1.2.0: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.19.0: + dependencies: + is-core-module: 2.14.0 + path-parse: 1.0.7 + + resolve@1.22.8: + dependencies: + is-core-module: 2.14.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.14.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.18.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + + rrweb-cssom@0.6.0: {} + + rrweb-cssom@0.7.1: {} + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.6.3 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + sass@1.77.6: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.6 + source-map-js: 1.2.0 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.2: {} + + send@0.18.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 + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case-first: 2.0.2 + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + server-only@0.0.1: {} + + set-cookie-parser@2.6.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shiki@1.10.0: + dependencies: + '@shikijs/core': 1.10.0 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + + sort-object-keys@1.1.3: {} + + sort-package-json@2.10.0: + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + semver: 7.6.2 + sort-object-keys: 1.1.3 + + source-map-js@1.2.0: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + space-separated-tokens@2.0.2: {} + + spawndamnit@2.0.0: + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + + sprintf-js@1.0.3: {} + + ssri@10.0.6: + dependencies: + minipass: 7.1.2 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stdin-discarder@0.2.2: {} + + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + + stream-shift@1.0.3: {} + + stream-slice@0.1.2: {} + + streamsearch@1.1.0: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.3.0 + strip-ansi: 7.1.0 + + string-width@7.1.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.matchall@4.0.11: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + style-to-object@0.4.4: + dependencies: + inline-style-parser: 0.1.1 + + styled-jsx@5.1.1(@babel/core@7.24.7)(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + optionalDependencies: + '@babel/core': 7.24.7 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.2 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superagent@9.0.2: + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.3.5 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 3.5.1 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.12.1 + transitivePeerDependencies: + - supports-color + + supertest@7.0.0: + dependencies: + methods: 1.1.2 + superagent: 9.0.2 + transitivePeerDependencies: + - supports-color + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + synckit@0.9.0: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.3 + + tapable@2.2.1: {} + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + 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 + + tar@6.2.1: + 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 + + term-size@2.2.1: {} + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + tinybench@2.8.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + title-case@3.0.3: + dependencies: + tslib: 2.6.3 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml@3.0.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + tr46@5.0.0: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@1.3.0(typescript@5.5.2): + dependencies: + typescript: 5.5.2 + + ts-dedent@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.9))(typescript@5.5.2): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.14.9) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.2 + typescript: 5.5.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.24.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.7) + + tsconfck@3.1.1(typescript@5.5.2): + optionalDependencies: + typescript: 5.5.2 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.6.3: {} + + tsup@8.1.0(postcss@8.4.38)(typescript@5.5.2): + dependencies: + bundle-require: 4.2.1(esbuild@0.21.5) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.3.5 + esbuild: 0.21.5 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2(postcss@8.4.38) + resolve-from: 5.0.0 + rollup: 4.18.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.4.38 + typescript: 5.5.2 + transitivePeerDependencies: + - supports-color + - ts-node + + tsutils@3.21.0(typescript@5.5.2): + dependencies: + tslib: 1.14.1 + typescript: 5.5.2 + + turbo-darwin-64@2.0.6: + optional: true + + turbo-darwin-arm64@2.0.6: + optional: true + + turbo-linux-64@2.0.6: + optional: true + + turbo-linux-arm64@2.0.6: + optional: true + + turbo-stream@2.2.0: {} + + turbo-windows-64@2.0.6: + optional: true + + turbo-windows-arm64@2.0.6: + optional: true + + turbo@2.0.6: + optionalDependencies: + turbo-darwin-64: 2.0.6 + turbo-darwin-arm64: 2.0.6 + turbo-linux-64: 2.0.6 + turbo-linux-arm64: 2.0.6 + turbo-windows-64: 2.0.6 + turbo-windows-arm64: 2.0.6 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@3.13.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typedarray@0.0.6: {} + + typedoc-plugin-extras@3.1.0(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + typedoc: 0.26.3(typescript@5.5.2) + + typedoc-plugin-inline-sources@1.0.2(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + typedoc: 0.26.3(typescript@5.5.2) + + typedoc-plugin-mdn-links@3.2.1(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + typedoc: 0.26.3(typescript@5.5.2) + + typedoc-plugin-missing-exports@3.0.0(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + typedoc: 0.26.3(typescript@5.5.2) + + typedoc-plugin-rename-defaults@0.7.1(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + camelcase: 8.0.0 + typedoc: 0.26.3(typescript@5.5.2) + + typedoc-plugin-zod@1.2.0(typedoc@0.26.3(typescript@5.5.2)): + dependencies: + typedoc: 0.26.3(typescript@5.5.2) + + typedoc@0.26.3(typescript@5.5.2): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.10.0 + typescript: 5.5.2 + yaml: 2.4.5 + + typescript@5.5.2: {} + + uc.micro@2.1.0: {} + + ufo@1.5.3: {} + + uglify-js@3.18.0: + optional: true + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + unc-path-regex@0.1.2: {} + + undici-types@5.26.5: {} + + undici@6.19.2: {} + + unified-engine@11.2.1: + dependencies: + '@types/concat-stream': 2.0.3 + '@types/debug': 4.1.12 + '@types/is-empty': 1.2.3 + '@types/node': 20.14.9 + '@types/unist': 3.0.2 + concat-stream: 2.0.0 + debug: 4.3.5 + extend: 3.0.2 + glob: 10.4.2 + ignore: 5.3.1 + is-empty: 1.2.0 + is-plain-obj: 4.1.0 + load-plugin: 6.0.3 + parse-json: 7.1.1 + trough: 2.2.0 + unist-util-inspect: 8.0.0 + vfile: 6.0.1 + vfile-message: 4.0.2 + vfile-reporter: 8.1.1 + vfile-statistics: 3.0.0 + yaml: 2.4.5 + transitivePeerDependencies: + - supports-color + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.5: + dependencies: + '@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.2.0 + vfile: 6.0.1 + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + unist-util-generated@2.0.1: {} + + unist-util-inspect@8.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.10 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position-from-estree@1.1.2: + dependencies: + '@types/unist': 2.0.10 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.10 + + unist-util-remove-position@4.0.2: + dependencies: + '@types/unist': 2.0.10 + unist-util-visit: 4.1.2 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@2.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.0.16(browserslist@4.23.1): + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.6.3 + + upper-case@2.0.2: + dependencies: + tslib: 2.6.3 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-editable@2.3.3(react@18.3.1): + dependencies: + react: 18.3.1 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utils-merge@1.0.1: {} + + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + v8flags@4.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.1: {} + + vary@1.1.2: {} + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + + vfile-reporter@8.1.1: + dependencies: + '@types/supports-color': 8.1.3 + string-width: 6.1.0 + supports-color: 9.4.0 + unist-util-stringify-position: 4.0.0 + vfile: 6.0.1 + vfile-message: 4.0.2 + vfile-sort: 4.0.0 + vfile-statistics: 3.0.0 + + vfile-sort@4.0.0: + dependencies: + vfile: 6.0.1 + vfile-message: 4.0.2 + + vfile-statistics@3.0.0: + dependencies: + vfile: 6.0.1 + vfile-message: 4.0.2 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + + vite-node@1.6.0(@types/node@20.14.9)(sass@1.77.6): + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-tsconfig-paths@4.3.2(typescript@5.5.2)(vite@5.3.2(@types/node@20.14.9)(sass@1.77.6)): + dependencies: + debug: 4.3.5 + globrex: 0.1.2 + tsconfck: 3.1.1(typescript@5.5.2) + optionalDependencies: + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + transitivePeerDependencies: + - supports-color + - typescript + + vite@5.3.2(@types/node@20.14.9)(sass@1.77.6): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 20.14.9 + fsevents: 2.3.3 + sass: 1.77.6 + + vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(sass@1.77.6): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.3 + chai: 4.4.1 + debug: 4.3.5 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.3.2(@types/node@20.14.9)(sass@1.77.6) + vite-node: 1.6.0(@types/node@20.14.9)(sass@1.77.6) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.14.9 + jsdom: 24.1.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + walk-up-path@3.0.1: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@4.0.2: {} + + webidl-conversions@7.0.0: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@14.0.0: + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-builtin-type@1.1.3: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.2.2: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@7.5.10: {} + + ws@8.17.1: {} + + xml-name-validator@4.0.0: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.4.5: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.0: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..a7594d70 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +packages: + - "examples/*" + - "packages/*" + - "lib" + - "scripts" diff --git a/popper.png b/popper.png new file mode 100644 index 0000000000000000000000000000000000000000..e91cc83630a300e91689110aecb689e15a9a737b GIT binary patch literal 125685 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ⅆ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 pages (On the left panel); Select deploy from a branch; Then Select `main` and `/docs`", + "columnId": "column-todo" + }, + "55DAZwduwTvlaxaJC8hlX": { + "id": "55DAZwduwTvlaxaJC8hlX", + "description": "(Optional) Set up [Deepsource](https://app.deepsource.com/login) for static code analysis", + "columnId": "column-todo" + }, + "FDFqCQvLm2mUlnTJ3Gna5": { + "id": "FDFqCQvLm2mUlnTJ3Gna5", + "description": "Push your changes/Create PR and see your library being automatically tested and published", + "columnId": "column-todo" + }, + "O1qAByMoxhHOR-a_guL91": { + "id": "O1qAByMoxhHOR-a_guL91", + "description": "Optionally deploy your examples to Vercel.", + "columnId": "column-todo" + }, + "0499BqWDwJ5cxqtC9Nr82": { + "id": "0499BqWDwJ5cxqtC9Nr82", + "description": "Feel free to star this template, contribute, and/or sponsor the [`terborepo-template`](https://github.com/react18-tools/turborepo-template) project or my [other open-source work](https://github.com/sponsors/mayank1513)", + "columnId": "column-todo" + }, + "IjuAtNquJ4-Ut874rHKIW": { + "id": "IjuAtNquJ4-Ut874rHKIW", + "description": "You can also fork the [`terborepo-template`](https://github.com/react18-tools/turborepo-template/fork) and add your package to `scripts/featured.json`\n - If approved, your package will be automatically added to FEATURED.md and also published on the home page of this repo.", + "columnId": "column-todo" + }, + "_JiH9RZLmUF5nxD7lBC5B": { + "id": "_JiH9RZLmUF5nxD7lBC5B", + "description": "Create a new GitHub repository using this template.\n - Click the `Use this template` button at the top right -> `Create a new repository`\n - Click `Create repository` and wait for the setup workflow to finish rebranding your repo.", + "columnId": "column-done" + }, + "t5d22lVYbF7GuQHzv6DRO": { + "id": "t5d22lVYbF7GuQHzv6DRO", + "description": "Install and set up Node.js and your IDE (VSCode recommended)", + "columnId": "column-done" + }, + "wkDDELNeOfYSVmWI1eWu0": { + "id": "wkDDELNeOfYSVmWI1eWu0", + "description": "Install the recommended VSCode extensions:\n - [Trello Kanban](https://marketplace.visualstudio.com/items?itemName=mayank1513.trello-kanban-task-board)", + "columnId": "column-done" + }, + "J5lp9I5d12B4tpGKawaqF": { + "id": "J5lp9I5d12B4tpGKawaqF", + "description": "Run `node scripts/rebrand.js` to rebrand this repo.", + "columnId": "column-todo" + } + }, + "columns": [ + { + "id": "column-todo", + "title": "To do", + "tasksIds": [ + "G-1H47JpSI69kav1qZ-kp", + "gbzyhx0FwFfzRoE-iqVeu", + "Y5__aEZl3Pbxp7r90HKpV", + "jcpymbi71e702p7n6fwvZ", + "J5lp9I5d12B4tpGKawaqF", + "jdZxwLymOo7w2eZeNpvsN", + "RX4J5v4y5IOe_ucf8pMRT", + "EdPbrbJLllUHfZmCS80f7", + "MLLUsAhCKaKxvEXFY0HSq", + "gMYfaAh2RABMP8uZRQgNx", + "_BfuX7quWBANpDK1bI7YM", + "dC7QDBLH8BmHUfaYmIt81", + "P_NrSJQ8m91Odgz8E1fS6", + "1dRWJhy45E1Rq5wZAmPHt", + "5vS1JNXoMhDl5IBljwh2v", + "55DAZwduwTvlaxaJC8hlX", + "FDFqCQvLm2mUlnTJ3Gna5", + "O1qAByMoxhHOR-a_guL91", + "0499BqWDwJ5cxqtC9Nr82", + "IjuAtNquJ4-Ut874rHKIW" + ] + }, + { + "id": "column-doing", + "title": "Doing", + "tasksIds": [] + }, + { + "id": "column-done", + "title": "Done", + "tasksIds": [ + "_JiH9RZLmUF5nxD7lBC5B", + "t5d22lVYbF7GuQHzv6DRO", + "wkDDELNeOfYSVmWI1eWu0" + ] + } + ] +} diff --git a/scripts/doc.js b/scripts/doc.js new file mode 100644 index 00000000..c98dcaa1 --- /dev/null +++ b/scripts/doc.js @@ -0,0 +1,20 @@ +const fs = require("fs"); +const path = require("path"); + +const featured = require("./featured.json"); +featured.sort((f1, f2) => f1.title.localeCompare(f2.title)); + +const readMeLines = [ + "# Featured packages built with this template.", + "", + "> This file is automatically generated. Please refrain from editing it directly. To add your package, update `scripts/featured.json` in alphabetical order.", + "", +]; + +featured.forEach(f => { + readMeLines.push(`- [${f.title}](${f.href}) - ${f.description}`); +}); + +readMeLines.push(""); + +fs.writeFileSync(path.resolve(__dirname, "..", "FEATURED.md"), readMeLines.join("\n")); diff --git a/scripts/featured.json b/scripts/featured.json new file mode 100644 index 00000000..8831ae2e --- /dev/null +++ b/scripts/featured.json @@ -0,0 +1,37 @@ +[ + { + "title": "React18 Global Store", + "description": "A simple yet elegant, light weight, react18 global store to replace Zustand for better tree shaking.", + "href": "https://github.com/react18-tools/react18-global-store" + }, + { + "title": "Nextjs-Themes", + "description": "🀟 πŸ‘‰ Theme with confidence and Unleash the Power of React Server Components", + "href": "https://github.com/react18-tools/nextjs-themes" + }, + { + "title": "esbuild-plugin-react18", + "description": "An esbuild plugin for compiling libraries compatible with React 18 server and client component, Nextjs13, and Nextjs14", + "href": "https://github.com/react18-tools/esbuild-plugin-react18" + }, + { + "title": "Zustand Sync Tabs", + "description": "Zustand middleware to easily sync Zustand state between tabs / windows / iframes (Same Origin)", + "href": "https://github.com/react18-tools/zustand-sync-tabs" + }, + { + "title": "Persist-And-Sync", + "description": "Zustand middleware to easily persist and sync Zustand state between tabs / windows / iframes (Same Origin)", + "href": "https://github.com/react18-tools/persist-and-sync" + }, + { + "title": "React 18 Themes", + "description": "🀟 πŸ‘‰ Unleash the Power of React Server Components", + "href": "https://github.com/react18-tools/react18-themes" + }, + { + "title": "esbuild-plugin-react18-css", + "description": "ESBuild plugin to handle CSS/SCSS modules, autoprefixer, etc.", + "href": "https://github.com/react18-tools/esbuild-plugin-react18-css" + } +] diff --git a/scripts/hook.js b/scripts/hook.js new file mode 100644 index 00000000..0df12b00 --- /dev/null +++ b/scripts/hook.js @@ -0,0 +1,62 @@ +const fs = require("fs"); +const path = require("path"); + +const __dir = path.resolve(__dirname, ".."); +const TEMPLATE_DIR = "scripts/templates/"; + +/** + * Gets actions based on the provided data. + * @param {InquirerDataType} data - Input data. + * @returns {import('plop').ActionType[]} Actions. + */ +function getActions(data) { + const actions = []; + if (!fs.existsSync(path.resolve(__dir, `${data.pkgPath}/src/hooks`, "index.ts"))) { + actions.push({ + type: "add", + path: `${data.pkgPath}/src/hooks/index.ts`, + template: '// hooks exports\nexport * from "./{{kebabCase name}}";', + }); + } else { + actions.push({ + type: "append", + pattern: /(? hooks exports)/, + path: `${data.pkgPath}/src/hooks/index.ts`, + template: 'export * from "./{{kebabCase name}}";', + }); + } + + ["", ".test"].forEach(suffix => { + actions.push({ + type: "add", + path: `${data.pkgPath}/src/hooks/{{kebabCase name}}${suffix}.ts`, + templateFile: `${TEMPLATE_DIR}hook${suffix}.hbs`, + }); + }); + + return actions; +} + +module.exports = { + description: "Add a new React hook.", + prompts: [ + { + type: "list", + name: "pkgPath", + choices: ["lib", "packages/shared"], + default: "lib", + message: "Select the package", + }, + { + type: "input", + name: "name", + message: "What is the name of the hook?", + }, + { + type: "input", + name: "description", + message: "Describe your custom hook. (This will be added as js-doc comment.)", + }, + ], + actions: data => (data ? getActions(data) : []), +}; diff --git a/scripts/lite.js b/scripts/lite.js new file mode 100644 index 00000000..ee52e333 --- /dev/null +++ b/scripts/lite.js @@ -0,0 +1,29 @@ +"use strict"; + +const fs = require("node:fs"); +const path = require("node:path"); +const config = require("./rebrand.config.json"); + +const packageJson = require("../lib/package.json"); + +const ref = packageJson.name; +packageJson.peerDependencies.r18gs = `${packageJson.dependencies.r18gs.split(".")[0]}`; +delete packageJson.dependencies.r18gs; +if (Object.keys(packageJson.dependencies).length === 0) delete packageJson.dependencies; +packageJson.name = `${ref}-lite`; + +fs.writeFileSync( + path.resolve(__dirname, "../lib/package.json"), + JSON.stringify(packageJson, null, 2), +); + +const readMePath = path.resolve(__dirname, "../lib", "README.md"); + +let readMe = fs.readFileSync(readMePath, { encoding: "utf8" }); +const tmp = "!---"; +const { owner, repo } = config; +readMe = readMe.replace(new RegExp(`${owner}/${repo}`, "g"), tmp); +readMe = readMe.replace(new RegExp(ref, "g"), packageJson.name); +readMe = readMe.replace(new RegExp(tmp, "g"), `${owner}/${repo}`); +readMe = readMe.replace(/## Want Lite Version(.|\n|\r)*You need `r18gs` as a peer-dependency/m, ""); +fs.writeFileSync(readMePath, readMe); diff --git a/scripts/manual-publish.js b/scripts/manual-publish.js new file mode 100644 index 00000000..d7daaeaa --- /dev/null +++ b/scripts/manual-publish.js @@ -0,0 +1,80 @@ +/** + * allow only patch changes from release branches. + * Major and minor changes allowed only from main branch. + * pre-release only from branch containing dev or alpha in the branchname + */ + +/** Let the following error be thrown by npm. There are situations where publish could have failed for different reasons. */ +// throws an exception if process.env.oldv === process.env.v The library version is not up to date, error(" Not able to release to the same version. + +const { execSync } = require("child_process"); +const fs = require("fs"); +const path = require("path"); + +const BRANCH = process.env.BRANCH; +const DEFAULT_BRANCH = process.env.DEFAULT_BRANCH; + +const isLatestRelease = BRANCH === DEFAULT_BRANCH || BRANCH.includes("release-"); +let tag = "latest"; + +const OLD_VERSION = require("../lib/package.json").version; +if (!isLatestRelease) { + /** pre-release branch name should be the tag name (e.g., beta, canery, etc.) or tag name followed by a '-' and version or other specifiers. e.g. beta-2.0 */ + tag = BRANCH.split("-")[0]; + try { + execSync(`pnpm changeset pre enter ${tag}`); + } catch (e) { + console.log({ e }); + } +} +/** Apply changeset */ +execSync("pnpm changeset version"); + +// exit pre mode -- to avoid collision with full releases +try { + execSync("pnpm changeset pre exit"); +} catch { + // empty +} + +/** not requiring as require is cached by npm/node */ +const NEW_VERSION = JSON.parse( + fs.readFileSync(path.resolve(__dirname, "..", "lib", "package.json")), +).version; + +const [newMajor, newMinor] = NEW_VERSION.split("."); +const [oldMajor, oldMinor] = OLD_VERSION.split("."); + +const isNotPatch = newMajor !== oldMajor || newMinor !== oldMinor; + +const pushCmd = `git add . && git commit -m "Apply changesets and update CHANGELOG" && git push origin ${BRANCH}`; + +if (isNotPatch && BRANCH === DEFAULT_BRANCH) { + execSync(pushCmd); + require("./update-security-md")(`${newMajor}.${newMinor}`, `${oldMajor}.${oldMinor}`); + /** Create new release branch for every Major or Minor release */ + const releaseBranch = `release-${newMajor}.${newMinor}`; + execSync(`git checkout -b ${releaseBranch} && git push origin ${releaseBranch}`); +} else if (isLatestRelease) { + /** New version must be valid SEMVER version. No pre-release (beta/alpha etc.) */ + if (!/^\d+\.\d+.\d+$/.test(NEW_VERSION)) throw new Error("Invalid version"); + + if (isNotPatch) + throw new Error("Major or Minor changes can be published only from the default branch."); + + // Push changes back to the repo + execSync(pushCmd); +} else { + execSync(pushCmd); +} + +/** Create release */ +execSync(`cd lib && pnpm build && npm publish --provenance --access public --tag ${tag}`); + +/** Create GitHub release */ +execSync( + `gh release create ${NEW_VERSION} --generate-notes${isLatestRelease ? " --latest" : ""} -n "$(sed '1,/^## /d;/^## /,$d' CHANGELOG.md)" --title "Release v${NEW_VERSION}"`, +); + +execSync("node ./scripts/lite.js"); +execSync(`cd lib && pnpm build && npm publish --provenance --access public --tag ${tag}`); diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 00000000..cecf59af --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,7 @@ +{ + "name": "@repo/scripts", + "version": "0.0.0", + "description": "", + "main": "rebrand.js", + "scripts": {} +} diff --git a/scripts/publish.js b/scripts/publish.js new file mode 100644 index 00000000..9fcb9d05 --- /dev/null +++ b/scripts/publish.js @@ -0,0 +1,51 @@ +/** It is assumed that this is called only from the default branch. */ +const { execSync } = require("child_process"); + +// Apply changesets if any -- e.g., coming from pre-release branches +try { + execSync("pnpm changeset pre exit"); +} catch { + // empty +} +try { + execSync("pnpm changeset version"); + execSync( + `git add . && git commit -m "Apply changesets and update CHANGELOG" && git push origin ${process.env.BRANCH}`, + ); +} catch { + // no changesets to be applied +} + +const { version: VERSION, name } = require("../lib/package.json"); +let LATEST_VERSION = "0.0.-1"; + +try { + LATEST_VERSION = execSync(`npm view ${name} version`).toString().trim() ?? "0.0.-1"; +} catch { + // empty +} + +console.log({ VERSION, LATEST_VERSION }); + +const [newMajor, newMinor] = VERSION.split("."); +const [oldMajor, oldMinor] = LATEST_VERSION.split("."); + +const isPatch = newMajor === oldMajor && newMinor === oldMinor; + +if (!isPatch) { + require("./update-security-md")(`${newMajor}.${newMinor}`, `${oldMajor}.${oldMinor}`); + /** Create new release branch for every Major or Minor release */ + const releaseBranch = `release-${newMajor}.${newMinor}`; + execSync(`git checkout -b ${releaseBranch} && git push origin ${releaseBranch}`); +} + +/** Create release */ +execSync("cd lib && pnpm build && npm publish --provenance --access public"); + +/** Create GitHub release */ +execSync( + `gh release create ${VERSION} --generate-notes --latest -n "$(sed '1,/^## /d;/^## /,$d' CHANGELOG.md)" --title "Release v${VERSION}"`, +); + +execSync("node ./scripts/lite.js"); +execSync("cd lib && pnpm build && npm publish --provenance --access public"); diff --git a/scripts/rc.js b/scripts/rc.js new file mode 100644 index 00000000..a26ca323 --- /dev/null +++ b/scripts/rc.js @@ -0,0 +1,203 @@ +const fs = require("fs"); +const path = require("path"); + +const __dir = path.resolve(__dirname, ".."); +const TEMPLATE_DIR = "scripts/templates/"; + +/** + * @typedef {Object} InquirerDataType + * @property {boolean} isClient - Indicates whether a client component should be created. + * @property {string} name - Component name along with the relative path from either the client or server directory. + * @property {string} pkgPath - Package path. + */ + +/** + * Updates index files if needed based on the provided parameters. + * @param {import('plop').ActionType} nestedRouteActions - Nested route actions. + * @param {string[]} rootSegments - Root segments. + * @param {string[]} currentDirSegments - Current directory segments. + * @param {boolean} isClient - Indicates whether it's a client component. + */ +function updateIndexFilesIfNeeded(nestedRouteActions, rootSegments, currentDirSegments, isClient) { + const indexFilePath = path.resolve(__dir, ...rootSegments, ...currentDirSegments, "index.ts"); + const root = rootSegments.join("/"); + if (!fs.existsSync(indexFilePath)) { + const content = + `${isClient ? '"use client";\n' : ""}// ${currentDirSegments.join("/")}` + + " component exports\n"; + nestedRouteActions.push({ + type: "add", + path: `${root + currentDirSegments.join("/")}/index.ts`, + template: content, + }); + const length = currentDirSegments.length; + nestedRouteActions.push({ + type: "append", + pattern: /(? component exports)/, + path: `${ + root + (length === 1 ? "" : `${currentDirSegments.slice(0, length - 1).join("/")}/`) + }index.ts`, + template: `export * from "./${currentDirSegments[length - 1]}"`, + }); + } +} + +/** + * Converts a string to kebab-case. + * @param {string} str - The input string. + * @returns {string} The string in kebab-case. + */ +function toKebabCase(str) { + return str + .trim() + .replace(/([a-z])([A-Z])/g, "$1-$2") + .toLowerCase() + .replace(/ +/g, "-"); +} + +/** + * createRootIndexAndDeclarations if not present. + * @param {InquirerDataType} data - Input data. + */ +function createRootIndexAndDeclarations(data) { + const nestedRouteActions = []; + const { isClient } = data; + const srcDir = path.resolve(__dir, `${data.pkgPath}/src`); + const [banner, target] = isClient ? ['"use client";\n\n', "client"] : ["", "server"]; + const root = `${data.pkgPath}/src/${target}/`; + + /** Create index.ts in src directory if not present. */ + if (!fs.existsSync(path.resolve(srcDir, "index.ts"))) + nestedRouteActions.push({ + type: "add", + path: `${data.pkgPath}/src/index.ts`, + template: `${banner}export * from "./${target}";\n`, + }); + + /** Create declaration if not present. */ + if (!fs.existsSync(path.resolve(srcDir, "declaration.d.ts"))) + nestedRouteActions.push({ + type: "add", + path: `${data.pkgPath}/src/declaration.d.ts`, + template: 'declare module "*.module.css";\ndeclare module "*.module.scss";\n', + }); + + /** Create index.ts in src/client or src/server directory if not present. */ + if (!fs.existsSync(path.resolve(__dir, root, "index.ts"))) + nestedRouteActions.push({ + type: "add", + path: `${root}index.ts`, + template: `${banner}/**\n * Server components and client components need to be exported from separate files as\n * directive on top of the file from which component is imported takes effect.\n * i.e., server component re-exported from file with "use client" will behave as client component\n */\n\n// ${target} component exports\n`, + }); + + return { nestedRouteActions, root, isClient }; +} + +/** + * Gets nested route actions based on the provided data. + * @param {InquirerDataType} data - Input data. + * @returns {Object} Nested route actions and parent directory. + */ +function getNestedRouteActions(data) { + const name = data.name.replace(/\/+/g, "/").replace(/\/$/, "").trim(); + const { nestedRouteActions, root, isClient } = createRootIndexAndDeclarations(data); + + if (!name.includes("/")) return { nestedRouteActions, parentDir: root }; + + const lastSlashInd = name.lastIndexOf("/") || name.lastIndexOf("\\"); + data.name = name.slice(lastSlashInd + 1); + + const directories = toKebabCase(name.slice(0, lastSlashInd)).split(/\/|\\/); + const rootSegments = [...root.split(/\/|\\/)]; + + for (let i = 1; i <= directories.length; i++) + updateIndexFilesIfNeeded(nestedRouteActions, rootSegments, directories.slice(0, i), isClient); + + return { nestedRouteActions, parentDir: `${root + directories.join("/")}/` }; +} + +/** + * Gets the index action based on the provided data and parent directory. + * @param {InquirerDataType} data - Input data. + * @param {string} parentDir - Parent directory. + * @returns {Object} Index action. + */ +function getIndexAction(data, parentDir) { + const indFilePath = path.resolve(__dir, parentDir, toKebabCase(data.name), "index.ts"); + if (fs.existsSync(indFilePath)) + return { + type: "append", + pattern: /(? component exports)/, + path: `${parentDir}{{kebabCase name}}/index.ts`, + template: 'export * from "./{{kebabCase name}}";', + }; + return { + type: "add", + path: `${parentDir}{{kebabCase name}}/index.ts`, + template: `${data.isClient ? '"use client";\n\n' : ""}// component exports\nexport * from "./{{kebabCase name}}";\n`, + }; +} + +/** + * Gets actions based on the provided data. + * @param {InquirerDataType} data - Input data. + * @returns {Array} Actions. + */ +function getActions(data) { + const { nestedRouteActions, parentDir } = getNestedRouteActions(data); + + return nestedRouteActions.concat([ + getIndexAction(data, parentDir), + { + type: "add", + path: `${parentDir}{{kebabCase name}}/{{kebabCase name}}.tsx`, + templateFile: `${TEMPLATE_DIR}component.hbs`, + }, + { + type: "add", + path: `${parentDir}{{kebabCase name}}/{{kebabCase name}}.test.tsx`, + templateFile: `${TEMPLATE_DIR}component.test.hbs`, + }, + { + type: "add", + path: `${parentDir}{{kebabCase name}}/{{kebabCase name}}.module.scss`, + templateFile: `${TEMPLATE_DIR}component.module.hbs`, + }, + { + type: "append", + pattern: /(? component exports)/, + path: `${parentDir}index.ts`, + template: 'export * from "./{{kebabCase name}}";', + }, + ]); +} + +/** Export rc generator */ +module.exports = { + description: "Adds a new React component to the selected package.", + prompts: [ + { + type: "list", + name: "pkgPath", + choices: ["lib", "packages/shared"], + default: "lib", + message: "Select the package", + }, + { + type: "input", + name: "name", + message: "What is the name of the component?", + }, + { + type: "confirm", + name: "isClient", + message: 'Is this a client component? (Should we add "use client" directive?)', + }, + { + type: "input", + name: "description", + message: "Describe your component. (This will be added as js-doc comment.)", + }, + ], + actions: data => (data ? getActions(data) : []), +}; diff --git a/scripts/rebrand.config.json b/scripts/rebrand.config.json new file mode 100644 index 00000000..7e561757 --- /dev/null +++ b/scripts/rebrand.config.json @@ -0,0 +1,5 @@ +{ + "owner": "react18-tools", + "repo": "turborepo-template", + "packageName": "react18-loaders" +} diff --git a/scripts/rebrand.js b/scripts/rebrand.js new file mode 100644 index 00000000..6dfcbc57 --- /dev/null +++ b/scripts/rebrand.js @@ -0,0 +1,133 @@ +const fs = require("node:fs"); +const path = require("node:path"); +// skipcq: JS-0258 +const { prompt } = require("enquirer"); +const { execSync } = require("child_process"); + +const [owner, repo] = execSync( + 'git remote get-url --push origin | sed "s/https:\\/\\/github.com\\///" | sed "s/.git//"', +) + .toString() + .trim() + .split("/"); + +const packageName = repo; + +/** avoiding IIFE as formettter keeps misformettting IIFEs */ +const rebrandFn = async () => { + const { shouldRebrand } = await prompt({ + type: "confirm", + name: "shouldRebrand", + message: "Do you want to rebrand this repo?", + initial: true, + }); + + if (!shouldRebrand) return; + + // if .tkb is not moved - setup workflow was not triggered or could not create the required commit + if (fs.existsSync(path.resolve(process.cwd(), "scripts", ".tkb"))) { + `rm .tkb + mv ./scripts/.tkb ./.tkb + rm -rf ./docs` + .split("\n") + .forEach(cmd => execSync(cmd.trim())); + } + + const { installExt, ...answers } = await prompt([ + { + type: "input", + name: "packageName", + message: "What is the name of your library?", + initial: packageName, + }, + { + type: "input", + name: "owner", + message: + "Who is the owner of this repo? (GitHub user or organization login, .e.g, mayank1513)", + initial: owner, + }, + { + type: "input", + name: "repo", + message: "What is the name of your repository?", + initial: repo, + }, + { + type: "confirm", + name: "installExt", + message: "Do you want to install the recommended VS Code extensions?", + initial: true, + }, + ]); + + if (installExt) { + execSync("code --install-extension mayank1513.trello-kanban-task-board"); + execSync("code --install-extension esbenp.prettier-vscode"); + } + + fs.writeFileSync( + path.resolve(process.cwd(), "scripts", "rebrand.config.json"), + JSON.stringify(answers, null, 2), + ); + + execSync("node ./scripts/rebrander.js"); + + console.log("\x1b[32m", "..."); + console.log("\x1b[32m", "..."); + console.log("\x1b[32m", "..."); + console.log("\x1b[32m", "Clean up repo by removing things that you don't need"); + + const { pkgs } = await prompt({ + type: "multiselect", + name: "pkgs", + message: "Select the examples or packages to remove", + choices: [ + { + name: "examples/express", + message: + "Express.js example at examples/express -- You might want to keep this for server or API related functionality provided by your app.", + }, + { name: "examples/remix", message: "Remix example at examples/remix." }, + { + name: "packages/logger", + message: + "Logger package at packages/logger. The express example uses logger - handle it if needed.", + }, + { + name: "packages/jest-presets", + message: + "We use vitest. You can keep this in case you want to use Jest. Note that the express example and logger package are set up to use jest with this jest-presets.", + }, + ], + }); + + pkgs.forEach(pkg => execSync(`rm -rf ${pkg}`)); + + console.log("\x1b[32m", "90% of rebranding completed!"); + console.log("\x1b[36m%s", "."); + console.log("\x1b[36m%s", "."); + console.log( + "\x1b[36m", + "Please open TKB (Workspace) and clear the Kanban Board to complete setting up your repo.", + ); + console.log("\x1b[36m", "."); + console.log( + "\x1b[35m", + "To open TKB (Workspace) click on the `TKB (Workspace)` button on the vscode taskbar or follow these steps.", + ); + console.log("\x1b[36m", "."); + console.log("\x1b[36m", " 1. Press `Ctrl/command` + `Shift` + `P` to open the command palette."); + console.log( + "\x1b[36m", + " 2. Type 'TrelloKanban: Workspace' and hit Enter to open the TKB (Workspace).", + ); + console.log("\x1b[36m", "."); + console.log("\x1b[36m", "."); + console.log( + "\x1b[33m", + "If you have any issues, please raise an issue at https://github.com/react18-tools/turborepo-template/issues", + ); +}; + +rebrandFn(); diff --git a/scripts/rebrander.js b/scripts/rebrander.js new file mode 100644 index 00000000..4865909d --- /dev/null +++ b/scripts/rebrander.js @@ -0,0 +1,166 @@ +const fs = require("fs"); +const path = require("path"); +const { packageName, owner, repo } = require("./rebrand.config.json"); +const packageJSON = require("../lib/package.json"); + +const rootDir = process.cwd(); +const oldPkgName = packageJSON.name; +const [oldOwner, oldRepo] = packageJSON.repository.split(":")[1].split("/"); + +// Rebrand lib packageJSON +packageJSON.name = packageName; +packageJSON.description = ""; +packageJSON.version = "0.0.0"; +packageJSON.repository = `github:${owner}/${repo}`; +packageJSON.funding.pop(); +packageJSON.bugs = `https://github.com/${owner}/${repo}/issues`; +packageJSON.homepage = `https://github.com/${owner}/${repo}/#readme`; +packageJSON.funding.unshift({ + type: "github", + url: `https://github.com/sponsors/${owner}`, +}); +packageJSON.keywords = packageJSON.keywords.slice(2); + +fs.writeFileSync( + path.resolve(rootDir, "lib", "package.json"), + JSON.stringify(packageJSON, null, 2), +); + +const updatePkgAndRemoveChangelogs = dir => { + // update package.json for packages and examples + const pkgPath = path.resolve(dir, "package.json"); + const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8")); + pkg.version = "0.0.0"; + if (pkg.dependencies?.[oldPkgName]) { + pkg.dependencies[oldPkgName] = "latest"; + pkg.dependencies[packageJSON.name] = "workspace:*"; + } else if (pkg.devDependencies?.[oldPkgName]) { + pkg.devDependencies[oldPkgName] = "latest"; + pkg.dependencies[packageJSON.name] = "workspace:*"; + } + + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2)); + + // Delete old changelogs + try { + fs.unlinkSync(path.resolve(dir, "CHANGELOG.md")); + } catch { + /* empty */ + } +}; + +["examples", "packages"].forEach(dir => { + fs.readdirSync(path.resolve(rootDir, dir)).forEach(f => + updatePkgAndRemoveChangelogs(path.resolve(rootDir, dir, f)), + ); +}); + +try { + fs.unlinkSync(path.resolve(rootDir, "lib", "CHANGELOG.md")); +} catch { + /* empty */ +} + +// Update README +const title = packageName + .split("-") + .map(w => w[0].toUpperCase() + w.slice(1)) + .join(" "); +const readme = fs + .readFileSync(path.resolve(rootDir, "lib", "README.md"), "utf-8") + .replace(new RegExp(oldPkgName, "g"), packageName) + .replace(new RegExp(oldOwner, "g"), owner) + .replace(new RegExp(oldRepo, "g"), repo) + .replace(new RegExp(oldPkgName.replace("-", " "), "ig"), title) + .replace(/> This package also.*[^\n]/, ""); +fs.writeFileSync(path.resolve(rootDir, "README.md"), readme); +fs.writeFileSync(path.resolve(rootDir, "lib", "README.md"), readme); + +// Update page title +const pageFilePath = path.resolve(rootDir, "examples", "nextjs", "src", "app", "page.tsx"); +const pageCode = fs.readFileSync(pageFilePath, "utf-8").replace("React 18 Loaders", title); +fs.writeFileSync(pageFilePath, pageCode); + +// Update TODO.md +const touchupTodo = content => + content + .replace( + "[repo settings]", + `[repo settings](https://github.com/${owner}/${repo}/settings/pages)`, + ) + .replace( + "[repository secret]", + `[repository secret]((https://github.com/${owner}/${repo}/settings/secrets/actions))`, + ) + .replace( + "[private vulnerability reporting]", + `[private vulnerability reporting](https://github.com/${owner}/${repo}/security)`, + ) + .replace("- [ ] Create a new GitHub repository", "- [x] Create a new GitHub repository"); + +const todoPath = path.resolve(rootDir, "TODO.md"); +fs.writeFileSync(todoPath, touchupTodo(fs.readFileSync(todoPath, "utf-8"))); + +const tkbPath = path.resolve(rootDir, ".tkb"); +fs.writeFileSync(tkbPath, touchupTodo(fs.readFileSync(tkbPath, "utf-8"))); +fs.renameSync(tkbPath, tkbPath); + +// Update Funding +const fundingPath = path.resolve(rootDir, ".github", "FUNDING.yml"); +fs.writeFileSync( + fundingPath, + fs + .readFileSync(fundingPath, "utf-8") + .replace("github: [mayank1513]", `github: [${owner}, mayank1513]`), +); + +// Update workflows +const workflowsPath = path.resolve(rootDir, ".github", "workflows"); +/** Update publish and manual-publish workflows */ +const updatePublishFlow = name => { + const publishWorkflowPath = path.resolve(workflowsPath, name); + const publishWorkflow = fs + .readFileSync(publishWorkflowPath, "utf-8") + .replace("# - name", "- name") + .replace("# run", " run") + .replace(oldOwner, owner); + fs.writeFileSync(publishWorkflowPath, publishWorkflow); +}; + +updatePublishFlow("publish.yml"); +updatePublishFlow("manual-publish.yml"); + +fs.unlinkSync(path.resolve(workflowsPath, "setup.yml")); + +const docsWorkflowPath = path.resolve(workflowsPath, "docs.yml"); +fs.writeFileSync( + docsWorkflowPath, + fs.readFileSync(docsWorkflowPath, "utf-8").replace(oldOwner, owner), +); + +// Update SECURITY.md +const secFile = path.resolve(rootDir, "SECURITY.md"); +fs.writeFileSync( + secFile, + fs.readFileSync(secFile, "utf-8").replace(`${oldOwner}/${oldRepo}`, `${owner}/${repo}`), +); +// clean up +const rootPackageJSON = require("../package.json"); +const { execSync } = require("child_process"); +delete rootPackageJSON.scripts.postinstall; +try { + fs.writeFileSync(path.resolve(rootDir, "package.json"), JSON.stringify(rootPackageJSON, null, 2)); +} catch (e) { + console.error(e); +} + +// update typedoc config +execSync(`sed -i -e 's/name:.*/name: "${title}",/' typedoc.config.js`); + +// reinstall dependencies --> this will update the pnpm-lock file as well which we need to add to commit +execSync("pnpm i"); + +// clean lib/src and craete commit +execSync( + 'rm -rf ./lib/src/ && git add . && git commit -m "Rebrand πŸ’– Mayank Kumar Chaudhari [skip ci]" && turbo telemetry disable', +); diff --git a/scripts/templates/component.hbs b/scripts/templates/component.hbs new file mode 100644 index 00000000..d5acbe28 --- /dev/null +++ b/scripts/templates/component.hbs @@ -0,0 +1,25 @@ +import { HTMLProps, ReactNode } from "react"; +import styles from "./{{ kebabCase name }}.module.scss"; + +export interface {{ pascalCase name }}Props extends HTMLProps { + children?: ReactNode; +} + +/** + * {{ description }} + * + * @example + * ```tsx + * <{{ pascalCase name }} /> + * ``` + * + * @source - Source code + */ +export const {{ pascalCase name }} = ({ children, ...props }: {{ pascalCase name }}Props) => { + const className = [props.className, styles["{{ kebabCase name }}"]].filter(Boolean).join(" "); + return ( +
+ {children} +
+ ); +} diff --git a/scripts/templates/component.module.hbs b/scripts/templates/component.module.hbs new file mode 100644 index 00000000..686b6082 --- /dev/null +++ b/scripts/templates/component.module.hbs @@ -0,0 +1,3 @@ +.{{ kebabCase name }} { + /* create your container styles here */ +} \ No newline at end of file diff --git a/scripts/templates/component.test.hbs b/scripts/templates/component.test.hbs new file mode 100644 index 00000000..47d5a426 --- /dev/null +++ b/scripts/templates/component.test.hbs @@ -0,0 +1,13 @@ +import { cleanup, render, screen } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { {{ pascalCase name }} } from "./{{ kebabCase name }}"; + +describe.concurrent("{{ kebabCase name }}", () => { + afterEach(cleanup); + + test("Dummy test - test if renders without errors", ({ expect }) => { + const clx = "my-class"; + render(<{{ pascalCase name }} className={clx} />); + expect(screen.getByTestId("{{ kebabCase name }}").classList).toContain(clx); + }); +}); diff --git a/scripts/templates/hook.hbs b/scripts/templates/hook.hbs new file mode 100644 index 00000000..c7b3b954 --- /dev/null +++ b/scripts/templates/hook.hbs @@ -0,0 +1,24 @@ +import { useState } from "react"; + +export interface {{ pascalCase name }}Options { + /** this is a dummy option */ + dummy?: string; +} + +/** + * {{ description }} + * + * @example + * ```tsx + * const [] = {{ camelCase name }}(options); + * ``` + * + * @source - Source code + */ + +export const {{ camelCase name }} = (options?: {{ pascalCase name }}Options) => { + const [value, setValue] = useState(0); + return { + value, setValue + } +} \ No newline at end of file diff --git a/scripts/templates/hook.test.hbs b/scripts/templates/hook.test.hbs new file mode 100644 index 00000000..7c961389 --- /dev/null +++ b/scripts/templates/hook.test.hbs @@ -0,0 +1,14 @@ +import { cleanup, renderHook, act } from "@testing-library/react"; +import { afterEach, describe, test } from "vitest"; +import { {{ camelCase name }} } from "./{{ kebabCase name }}"; + +describe.concurrent("{{ camelCase name }}", () => { + afterEach(cleanup); + + test("Dummy test - test if renders without errors", ({ expect }) => { + const { result } = renderHook(() => {{ camelCase name }}()); + act(() => result.current.setValue(10)); + expect(result.current.value).toBe(10); + }); +}); + diff --git a/scripts/update-pm.js b/scripts/update-pm.js new file mode 100644 index 00000000..9f87a18e --- /dev/null +++ b/scripts/update-pm.js @@ -0,0 +1,16 @@ +const { execSync } = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const packageJSON = require("../package.json"); + +const PNPM_VERSION = execSync("pnpm -v").toString().trim(); +packageJSON.packageManager = `pnpm@${PNPM_VERSION}`; + +fs.writeFileSync(path.resolve(__dirname, "../package.json"), JSON.stringify(packageJSON, null, 2)); + +// commit to repo +try { + execSync("git add ./package.json && git commit -m 'Update package.json with pnpm version'"); +} catch { + // no changesets to be applied +} diff --git a/scripts/update-security-md.js b/scripts/update-security-md.js new file mode 100644 index 00000000..67f8944a --- /dev/null +++ b/scripts/update-security-md.js @@ -0,0 +1,15 @@ +const { execSync } = require("child_process"); + +module.exports = (newMajor_minor, oldMajor_minor) => { + /** Update SECURITY.md */ + execSync( + `sed -i -e "s/.*| :white_check_mark:.*/| ${newMajor_minor}.x | :white_check_mark: |/" SECURITY.md`, + ); + execSync( + `sed -i -e "s/.*| :warning:.*/| ${oldMajor_minor}.x | :warning: |/" SECURITY.md`, + ); + execSync(`sed -i -e "s/.*| :x:.*/| < ${oldMajor_minor} | :x: |/" SECURITY.md`); + execSync( + `git add SECURITY.md && git commit -m 'Update SECURITY.md [skip ci]' && git push origin ${process.env.BRANCH}`, + ); +}; diff --git a/tsconfig.docs.json b/tsconfig.docs.json new file mode 100644 index 00000000..54d11d9d --- /dev/null +++ b/tsconfig.docs.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/react-library.json", + "compilerOptions": { + "lib": ["dom", "ES2015"], + "types": ["node"] + }, + "include": ["./lib/src/**/*.*"], + "exclude": ["**/*.test.tsx", "**/index.ts", "dist", "build", "node_modules"] +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..dd2f7974 --- /dev/null +++ b/turbo.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "build": { + "dependsOn": [ + "^build" + ] + }, + "test": { + "outputs": [ + "coverage/**" + ], + "dependsOn": [ + "^build" + ] + }, + "lint": { + "dependsOn": [ + "^build" + ] + }, + "typecheck": { + "dependsOn": [ + "^build" + ] + }, + "dev": { + "dependsOn": [ + "^build" + ], + "persistent": true + }, + "clean": { + "cache": false + } + } +} diff --git a/typedoc.config.js b/typedoc.config.js new file mode 100644 index 00000000..db6843c8 --- /dev/null +++ b/typedoc.config.js @@ -0,0 +1,20 @@ +/** @type {import('typedoc').TypeDocOptions} */ +module.exports = { + tsconfig: "tsconfig.docs.json", + name: "React18 Loaders", + entryPoints: ["./lib/src"], + exclude: ["**/*.test.tsx", "**/index.ts", "**/declaration.d.ts"], + entryPointStrategy: "Expand", + out: "./docs", + commentStyle: "all", + searchInComments: true, + excludeExternals: true, + plugin: [ + "typedoc-plugin-mdn-links", + "typedoc-plugin-rename-defaults", + "typedoc-plugin-missing-exports", + "typedoc-plugin-zod", + "typedoc-plugin-inline-sources", + // "typedoc-plugin-extras", + ], +};