From edfa5a3c2ca9b73bca5d671e5a40b7845fd95e85 Mon Sep 17 00:00:00 2001 From: Alec Date: Wed, 1 Nov 2023 23:28:47 -0400 Subject: [PATCH] battle test commands --- .changeset/itchy-dancers-refuse.md | 21 + .changeset/swift-drinks-doubt.md | 8 + .commonality/config.json | 30 - .commonality/config.ts | 71 + .eslintignore | 5 +- .github/CODEOWNERS | 1 + .github/workflows/ci.yml | 2 +- .gitignore | 1 - .husky/pre-commit | 8 +- .prettierignore | 3 +- apps/workshop/.storybook/main.ts | 6 +- apps/workshop/CHANGELOG.md | 17 - apps/workshop/README.md | 19 +- apps/workshop/package.json | 37 +- .../feature-graph-toolbar.stories.tsx | 130 +- .../feature-graph/feature-graph.stories.tsx | 11 +- .../ui-graph/tooltip-dependency.stories.tsx | 2 - .../ui-package/packages-table.stories.tsx | 5 +- package.json | 28 +- .../.eslintrc.cjs | 4 + .../commonality-conform-recommended/README.md | 7 + .../commonality.json | 1 + .../package.json | 39 + .../src/ensure-codeowner.ts | 9 + .../src/ensure-package-name.ts | 14 + .../src/ensure-readme.ts | 20 + .../src/ensure-sorted-dependencies.ts | 50 + .../src/ensure-version.ts | 95 + .../src/index.ts | 5 + .../test/ensure-codeowner.test.ts | 52 + .../test/ensure-package-name.test.ts | 46 + .../test/ensure-readme.test.ts | 96 + .../test/ensure-sorted-dependencies.test.ts | 124 + .../test/ensure-version.test.ts | 200 + .../tsconfig.json | 8 + .../vitest.config.ts | 3 + packages/commonality/CHANGELOG.md | 6 - packages/commonality/README.md | 8 +- packages/commonality/bin.js | 2 +- packages/commonality/package.json | 64 +- .../scripts/{build.js => copy-studio.js} | 19 - packages/commonality/src/cli/cli.ts | 24 + .../commonality/src/cli/commands/conform.tsx | 312 + .../src/cli/commands/constrain/constrain.tsx | 334 ++ .../commands/constrain/dependency-message.tsx | 86 + .../src/{ => cli}/commands/init.ts | 0 .../src/{ => cli}/commands/link.ts | 40 +- .../src/{ => cli}/commands/publish.ts | 24 +- .../src/{ => cli}/commands/studio.ts | 2 +- .../src/cli/components/check-conformers.tsx | 53 + .../src/cli/components/check-constraints.tsx | 49 + .../src/cli/components/check-dependencies.tsx | 40 + .../src/cli/components/check-packages.tsx | 40 + .../src/cli/components/check-tags-data.tsx | 42 + .../src/cli/components/check-workspaces.tsx | 36 + .../src/cli/components/error-message.tsx | 23 + .../cli/components/message-package-title.tsx | 38 + .../src/cli/components/total-message.tsx | 29 + .../commonality/src/cli/utils/use-async-fn.ts | 86 + .../utils/validate-project-structure.ts | 0 packages/commonality/src/commands/validate.ts | 165 - packages/commonality/src/define-config.ts | 5 + packages/commonality/src/define-conformer.ts | 5 + packages/commonality/src/index.ts | 24 +- .../commonality/test/integration/link.test.ts | 2 +- .../test/integration/studio.test.ts | 2 +- .../test/unit/cli/check-constraints.test.tsx | 114 + .../test/unit/cli/conform.test.tsx | 435 ++ .../test/unit/cli/constrain.test.tsx | 496 ++ .../test/unit/cli/dependency-message.test.tsx | 91 + .../test/unit/{ => cli}/publish.test.ts | 5 +- .../validate-project-structure.test.ts | 16 +- .../commonality/test/unit/validate.test.ts | 242 - packages/commonality/tsconfig.json | 8 +- packages/commonality/tsup.config.cli.ts | 31 + packages/commonality/tsup.config.ts | 10 - packages/commonality/tsup.config.utilities.ts | 13 + packages/config-tailwind/commonality.json | 1 - packages/data-codeowners/CHANGELOG.md | 6 - packages/data-codeowners/README.md | 7 + packages/data-codeowners/commonality.json | 2 +- packages/data-codeowners/package.json | 72 +- .../src/get-codeowners-data.ts | 2 +- packages/data-codeowners/tsconfig.json | 9 +- packages/data-codeowners/vitest.config.ts | 4 +- packages/data-conformance/.eslintrc.cjs | 4 + packages/data-conformance/README.md | 7 + packages/data-conformance/commonality.json | 1 + packages/data-conformance/package.json | 30 + .../src/get-conformance-results.ts | 85 + packages/data-conformance/src/index.ts | 1 + .../test/get-conformance-results.test.ts | 204 + packages/data-conformance/tsconfig.json | 8 + packages/data-conformance/vitest.config.ts | 3 + packages/data-documents/CHANGELOG.md | 8 - packages/data-documents/README.md | 7 + packages/data-documents/package.json | 70 +- .../src/core/get-documents-from-directory.ts | 2 +- .../data-documents/src/get-documents-data.ts | 2 +- packages/data-documents/tsconfig.json | 9 +- packages/data-documents/vitest.config.ts | 4 +- packages/data-graph-worker/CHANGELOG.md | 9 - packages/data-graph-worker/README.md | 7 + packages/data-graph-worker/package.json | 72 +- packages/data-graph-worker/src/index.ts | 1 - packages/data-graph-worker/tsconfig.json | 2 +- packages/data-graph-worker/vitest.config.ts | 3 + packages/data-graph/CHANGELOG.md | 10 - packages/data-graph/README.md | 7 + packages/data-graph/package.json | 86 +- packages/data-graph/tsconfig.json | 2 +- packages/data-graph/vitest.config.ts | 3 + packages/data-packages/CHANGELOG.md | 9 - packages/data-packages/README.md | 7 + packages/data-packages/commonality.json | 2 +- packages/data-packages/package.json | 70 +- .../data-packages/src/get-dependencies.ts | 2 +- packages/data-packages/src/get-package.ts | 2 +- packages/data-packages/src/get-packages.ts | 2 +- .../src/get-root-package-name.ts | 2 +- packages/data-packages/tsconfig.json | 9 +- packages/data-packages/vitest.config.ts | 4 +- packages/data-project/CHANGELOG.md | 8 - packages/data-project/README.md | 7 + packages/data-project/commonality.json | 6 +- packages/data-project/package.json | 82 +- .../data-project/src/get-package-manager.ts | 4 + .../data-project/src/get-project-config.ts | 90 +- .../data-project/src/get-root-directory.ts | 6 +- .../data-project/src/get-workspace-globs.ts | 3 +- .../.commonality/config.json | 24 - .../.commonality/config.ts | 26 + .../test/fixtures/uninitialized/package.json | 3 + .../.commonality/config.json | 25 - .../.commonality/config.ts | 27 + .../test/get-project-config.test.ts | 64 +- packages/data-project/tsconfig.json | 9 +- packages/data-project/vitest.config.ts | 4 +- packages/data-tags/CHANGELOG.md | 9 - packages/data-tags/README.md | 7 + packages/data-tags/package.json | 72 +- packages/data-tags/src/get-tags-data.ts | 6 +- packages/data-tags/src/set-tags.ts | 8 +- packages/data-tags/tsconfig.json | 9 +- packages/data-tags/vitest.config.ts | 9 +- packages/data-violations/README.md | 7 + .../benchmark/get-violations.bench.ts | 37 + packages/data-violations/commonality.json | 4 +- packages/data-violations/package.json | 1 + .../data-violations/src/get-violations.ts | 86 +- .../test/get-violations.test.ts | 114 +- packages/data-violations/tsconfig.json | 7 +- packages/data-violations/vitest.config.ts | 4 +- packages/data-workspaces/.eslintrc.cjs | 4 + packages/data-workspaces/CHANGELOG.md | 80 + packages/data-workspaces/README.md | 7 + packages/data-workspaces/commonality.json | 1 + packages/data-workspaces/package.json | 32 + .../data-workspaces/src/get-workspaces.ts | 66 + packages/data-workspaces/src/index.ts | 1 + packages/data-workspaces/tsconfig.json | 8 + packages/data-workspaces/vitest.config.ts | 3 + packages/feature-graph/CHANGELOG.md | 13 - packages/feature-graph/README.md | 7 + packages/feature-graph/package.json | 12 +- .../feature-graph/src/feature-graph-chart.tsx | 4 +- .../src/feature-graph-dependency-tooltip.tsx | 40 +- .../src/feature-graph-toolbar.tsx | 4 +- packages/feature-graph/tsconfig.json | 3 +- packages/feature-graph/vitest.config.ts | 3 + packages/studio/CHANGELOG.md | 25 - packages/studio/README.md | 43 +- packages/studio/commonality.json | 2 +- packages/studio/package.json | 46 +- packages/studio/server.js | 3 +- .../studio/src/app/(graph)/@chart/page.tsx | 8 +- .../src/app/(graph)/@chart/studio-chart.tsx | 2 +- packages/studio/src/app/(graph)/page.tsx | 17 +- .../src/app/(graph)/studio-graph-overlays.tsx | 11 +- .../src/app/(packages)/packages/page.tsx | 6 +- .../packages/studio-packages-table.tsx | 12 +- packages/studio/src/app/layout.tsx | 10 +- packages/studio/src/app/studio-navigation.tsx | 8 +- .../src/components/create-tags-button.tsx | 2 +- .../src/components/edit-tags-dialog.tsx | 3 +- packages/studio/src/data/constraints.ts | 12 - packages/studio/src/data/project.ts | 13 +- packages/studio/src/data/violations.ts | 2 +- packages/studio/tsconfig.json | 3 +- packages/types/README.md | 7 + packages/types/package.json | 12 +- packages/types/src/index.ts | 100 +- packages/types/tsconfig.json | 4 +- packages/types/vitest.config.ts | 3 + packages/ui-core/README.md | 7 + packages/ui-core/package.json | 17 +- packages/ui-core/src/bun-logo.tsx | 102 + packages/ui-core/src/download.svg | 1 + packages/ui-core/src/index.ts | 1 + packages/ui-core/tsconfig.json | 3 +- packages/ui-core/vitest.config.ts | 9 +- packages/ui-design-system/CHANGELOG.md | 6 - packages/ui-design-system/README.md | 7 + packages/ui-design-system/package.json | 10 +- packages/ui-design-system/src/badge.tsx | 2 +- packages/ui-design-system/src/index.ts | 141 +- packages/ui-design-system/tsconfig.json | 3 +- packages/ui-design-system/vitest.config.ts | 3 + packages/ui-graph/CHANGELOG.md | 11 - packages/ui-graph/README.md | 7 + packages/ui-graph/package.json | 126 +- .../components/constraint-accordion-item.tsx | 17 - .../constraint-accordion-trigger.test.tsx | 43 - .../constraint-accordion-trigger.tsx | 35 - .../src/components/constraint-result.test.tsx | 9 +- .../ui-graph/src/components/graph-toolbar.tsx | 162 +- packages/ui-graph/src/graph-layout.tsx | 14 +- packages/ui-graph/src/sidebar.tsx | 1 - packages/ui-graph/src/tooltip-dependency.tsx | 66 +- packages/ui-graph/tsconfig.json | 3 +- packages/ui-graph/vitest.config.ts | 1 + packages/ui-package/CHANGELOG.md | 6 - packages/ui-package/README.md | 7 + packages/ui-package/package.json | 97 +- .../test/tags-filter-button.test.tsx | 9 +- packages/ui-package/tsconfig.json | 3 +- packages/ui-package/vitest.config.ts | 2 + packages/utils-conformance/.eslintrc.cjs | 4 + packages/utils-conformance/README.md | 7 + packages/utils-conformance/commonality.json | 1 + packages/utils-conformance/package.json | 28 + packages/utils-conformance/src/index.ts | 1 + packages/utils-conformance/src/run-fixes.ts | 87 + .../utils-conformance/test/run-fixes.test.ts | 174 + packages/utils-conformance/tsconfig.json | 7 + packages/utils-conformance/vitest.config.ts | 3 + packages/utils-core/CHANGELOG.md | 6 - packages/utils-core/README.md | 7 + packages/utils-core/package.json | 63 +- packages/utils-core/src/constants.ts | 3 +- packages/utils-core/tsconfig.json | 5 +- packages/utils-core/vitest.config.ts | 4 +- packages/utils-file/.eslintrc.cjs | 4 + packages/utils-file/CHANGELOG.md | 55 + packages/utils-file/README.md | 7 + packages/utils-file/commonality.json | 1 + packages/utils-file/package.json | 42 + packages/utils-file/src/file.ts | 38 + packages/utils-file/src/index.ts | 3 + packages/utils-file/src/json.ts | 71 + packages/utils-file/src/text.ts | 74 + packages/utils-file/src/yaml.ts | 72 + packages/utils-file/test/file.test.ts | 75 + .../kitchen-sink/packages/pkg-one/README.md | 1 + .../kitchen-sink/packages/pkg-one/config.yaml | 4 + .../packages/pkg-one/multi-line.md | 5 + .../packages/pkg-one/package.json | 9 + packages/utils-file/test/json.test.ts | 109 + packages/utils-file/test/text.test.ts | 182 + packages/utils-file/test/yaml.test.ts | 80 + packages/utils-file/tsconfig.json | 7 + packages/utils-file/vitest.config.ts | 3 + packages/utils-graph/CHANGELOG.md | 8 - packages/utils-graph/README.md | 7 + packages/utils-graph/package.json | 10 +- packages/utils-graph/tsconfig.json | 3 +- packages/utils-graph/vitest.config.ts | 4 +- packages/utils-package/CHANGELOG.md | 7 - packages/utils-package/README.md | 7 + packages/utils-package/package.json | 80 +- packages/utils-package/tsconfig.json | 3 +- packages/utils-package/vitest.config.ts | 4 +- pnpm-lock.yaml | 5030 +++++++++-------- .../config-eslint/.eslintrc.js | 8 +- .../config-eslint/CHANGELOG.md | 0 tooling/config-eslint/README.md | 7 + .../config-eslint}/commonality.json | 0 .../config-eslint/package.json | 4 +- .../config-tailwind/CHANGELOG.md | 6 - tooling/config-tailwind/README.md | 7 + .../config-tailwind}/commonality.json | 0 .../config-tailwind/globals.css | 0 .../config-tailwind/package.json | 2 +- .../config-tailwind/tailwind.config.js | 0 .../config-tsconfig/CHANGELOG.md | 6 - tooling/config-tsconfig/README.md | 7 + tooling/config-tsconfig/commonality.json | 1 + .../config-tsconfig/node.json | 2 + .../config-tsconfig/package.json | 4 +- .../config-tsconfig/react.json | 4 +- tsconfig.json | 67 - turbo.json | 11 +- 292 files changed, 9421 insertions(+), 4519 deletions(-) create mode 100644 .changeset/itchy-dancers-refuse.md create mode 100644 .changeset/swift-drinks-doubt.md delete mode 100644 .commonality/config.json create mode 100644 .commonality/config.ts create mode 100644 packages/commonality-conform-recommended/.eslintrc.cjs create mode 100644 packages/commonality-conform-recommended/README.md create mode 100644 packages/commonality-conform-recommended/commonality.json create mode 100644 packages/commonality-conform-recommended/package.json create mode 100644 packages/commonality-conform-recommended/src/ensure-codeowner.ts create mode 100644 packages/commonality-conform-recommended/src/ensure-package-name.ts create mode 100644 packages/commonality-conform-recommended/src/ensure-readme.ts create mode 100644 packages/commonality-conform-recommended/src/ensure-sorted-dependencies.ts create mode 100644 packages/commonality-conform-recommended/src/ensure-version.ts create mode 100644 packages/commonality-conform-recommended/src/index.ts create mode 100644 packages/commonality-conform-recommended/test/ensure-codeowner.test.ts create mode 100644 packages/commonality-conform-recommended/test/ensure-package-name.test.ts create mode 100644 packages/commonality-conform-recommended/test/ensure-readme.test.ts create mode 100644 packages/commonality-conform-recommended/test/ensure-sorted-dependencies.test.ts create mode 100644 packages/commonality-conform-recommended/test/ensure-version.test.ts create mode 100644 packages/commonality-conform-recommended/tsconfig.json create mode 100644 packages/commonality-conform-recommended/vitest.config.ts rename packages/commonality/scripts/{build.js => copy-studio.js} (80%) create mode 100644 packages/commonality/src/cli/cli.ts create mode 100644 packages/commonality/src/cli/commands/conform.tsx create mode 100644 packages/commonality/src/cli/commands/constrain/constrain.tsx create mode 100644 packages/commonality/src/cli/commands/constrain/dependency-message.tsx rename packages/commonality/src/{ => cli}/commands/init.ts (100%) rename packages/commonality/src/{ => cli}/commands/link.ts (57%) rename packages/commonality/src/{ => cli}/commands/publish.ts (90%) rename packages/commonality/src/{ => cli}/commands/studio.ts (97%) create mode 100644 packages/commonality/src/cli/components/check-conformers.tsx create mode 100644 packages/commonality/src/cli/components/check-constraints.tsx create mode 100644 packages/commonality/src/cli/components/check-dependencies.tsx create mode 100644 packages/commonality/src/cli/components/check-packages.tsx create mode 100644 packages/commonality/src/cli/components/check-tags-data.tsx create mode 100644 packages/commonality/src/cli/components/check-workspaces.tsx create mode 100644 packages/commonality/src/cli/components/error-message.tsx create mode 100644 packages/commonality/src/cli/components/message-package-title.tsx create mode 100644 packages/commonality/src/cli/components/total-message.tsx create mode 100644 packages/commonality/src/cli/utils/use-async-fn.ts rename packages/commonality/src/{ => cli}/utils/validate-project-structure.ts (100%) delete mode 100644 packages/commonality/src/commands/validate.ts create mode 100644 packages/commonality/src/define-config.ts create mode 100644 packages/commonality/src/define-conformer.ts create mode 100644 packages/commonality/test/unit/cli/check-constraints.test.tsx create mode 100644 packages/commonality/test/unit/cli/conform.test.tsx create mode 100644 packages/commonality/test/unit/cli/constrain.test.tsx create mode 100644 packages/commonality/test/unit/cli/dependency-message.test.tsx rename packages/commonality/test/unit/{ => cli}/publish.test.ts (94%) rename packages/commonality/test/unit/{ => cli}/validate-project-structure.test.ts (91%) delete mode 100644 packages/commonality/test/unit/validate.test.ts create mode 100644 packages/commonality/tsup.config.cli.ts delete mode 100644 packages/commonality/tsup.config.ts create mode 100644 packages/commonality/tsup.config.utilities.ts delete mode 100644 packages/config-tailwind/commonality.json create mode 100644 packages/data-codeowners/README.md create mode 100644 packages/data-conformance/.eslintrc.cjs create mode 100644 packages/data-conformance/README.md create mode 100644 packages/data-conformance/commonality.json create mode 100644 packages/data-conformance/package.json create mode 100644 packages/data-conformance/src/get-conformance-results.ts create mode 100644 packages/data-conformance/src/index.ts create mode 100644 packages/data-conformance/test/get-conformance-results.test.ts create mode 100644 packages/data-conformance/tsconfig.json create mode 100644 packages/data-conformance/vitest.config.ts create mode 100644 packages/data-documents/README.md create mode 100644 packages/data-graph-worker/README.md create mode 100644 packages/data-graph-worker/vitest.config.ts create mode 100644 packages/data-graph/README.md create mode 100644 packages/data-graph/vitest.config.ts create mode 100644 packages/data-packages/README.md create mode 100644 packages/data-project/README.md delete mode 100644 packages/data-project/test/fixtures/invalid-project-config/.commonality/config.json create mode 100644 packages/data-project/test/fixtures/invalid-project-config/.commonality/config.ts create mode 100644 packages/data-project/test/fixtures/uninitialized/package.json delete mode 100644 packages/data-project/test/fixtures/valid-project-config/.commonality/config.json create mode 100644 packages/data-project/test/fixtures/valid-project-config/.commonality/config.ts create mode 100644 packages/data-tags/README.md create mode 100644 packages/data-violations/README.md create mode 100644 packages/data-violations/benchmark/get-violations.bench.ts create mode 100644 packages/data-workspaces/.eslintrc.cjs create mode 100644 packages/data-workspaces/CHANGELOG.md create mode 100644 packages/data-workspaces/README.md create mode 100644 packages/data-workspaces/commonality.json create mode 100644 packages/data-workspaces/package.json create mode 100644 packages/data-workspaces/src/get-workspaces.ts create mode 100644 packages/data-workspaces/src/index.ts create mode 100644 packages/data-workspaces/tsconfig.json create mode 100644 packages/data-workspaces/vitest.config.ts create mode 100644 packages/feature-graph/README.md create mode 100644 packages/feature-graph/vitest.config.ts delete mode 100644 packages/studio/src/data/constraints.ts create mode 100644 packages/types/README.md create mode 100644 packages/types/vitest.config.ts create mode 100644 packages/ui-core/README.md create mode 100644 packages/ui-core/src/bun-logo.tsx create mode 100644 packages/ui-core/src/download.svg create mode 100644 packages/ui-design-system/README.md create mode 100644 packages/ui-design-system/vitest.config.ts create mode 100644 packages/ui-graph/README.md delete mode 100644 packages/ui-graph/src/components/constraint-accordion-item.tsx delete mode 100644 packages/ui-graph/src/components/constraint-accordion-trigger.test.tsx delete mode 100644 packages/ui-graph/src/components/constraint-accordion-trigger.tsx create mode 100644 packages/ui-package/README.md create mode 100644 packages/utils-conformance/.eslintrc.cjs create mode 100644 packages/utils-conformance/README.md create mode 100644 packages/utils-conformance/commonality.json create mode 100644 packages/utils-conformance/package.json create mode 100644 packages/utils-conformance/src/index.ts create mode 100644 packages/utils-conformance/src/run-fixes.ts create mode 100644 packages/utils-conformance/test/run-fixes.test.ts create mode 100644 packages/utils-conformance/tsconfig.json create mode 100644 packages/utils-conformance/vitest.config.ts create mode 100644 packages/utils-core/README.md create mode 100644 packages/utils-file/.eslintrc.cjs create mode 100644 packages/utils-file/CHANGELOG.md create mode 100644 packages/utils-file/README.md create mode 100644 packages/utils-file/commonality.json create mode 100644 packages/utils-file/package.json create mode 100644 packages/utils-file/src/file.ts create mode 100644 packages/utils-file/src/index.ts create mode 100644 packages/utils-file/src/json.ts create mode 100644 packages/utils-file/src/text.ts create mode 100644 packages/utils-file/src/yaml.ts create mode 100644 packages/utils-file/test/file.test.ts create mode 100644 packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/README.md create mode 100644 packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/config.yaml create mode 100644 packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/multi-line.md create mode 100644 packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/package.json create mode 100644 packages/utils-file/test/json.test.ts create mode 100644 packages/utils-file/test/text.test.ts create mode 100644 packages/utils-file/test/yaml.test.ts create mode 100644 packages/utils-file/tsconfig.json create mode 100644 packages/utils-file/vitest.config.ts create mode 100644 packages/utils-graph/README.md create mode 100644 packages/utils-package/README.md rename packages/config-eslint/.eslintrc.cjs => tooling/config-eslint/.eslintrc.js (86%) rename {packages => tooling}/config-eslint/CHANGELOG.md (100%) create mode 100644 tooling/config-eslint/README.md rename {packages/config-tsconfig => tooling/config-eslint}/commonality.json (100%) rename {packages => tooling}/config-eslint/package.json (89%) rename {packages => tooling}/config-tailwind/CHANGELOG.md (81%) create mode 100644 tooling/config-tailwind/README.md rename {packages/config-eslint => tooling/config-tailwind}/commonality.json (100%) rename {packages => tooling}/config-tailwind/globals.css (100%) rename {packages => tooling}/config-tailwind/package.json (96%) rename {packages => tooling}/config-tailwind/tailwind.config.js (100%) rename {packages => tooling}/config-tsconfig/CHANGELOG.md (91%) create mode 100644 tooling/config-tsconfig/README.md create mode 100644 tooling/config-tsconfig/commonality.json rename packages/config-tsconfig/node16.json => tooling/config-tsconfig/node.json (85%) rename {packages => tooling}/config-tsconfig/package.json (87%) rename {packages => tooling}/config-tsconfig/react.json (88%) delete mode 100644 tsconfig.json diff --git a/.changeset/itchy-dancers-refuse.md b/.changeset/itchy-dancers-refuse.md new file mode 100644 index 00000000..eedd401d --- /dev/null +++ b/.changeset/itchy-dancers-refuse.md @@ -0,0 +1,21 @@ +--- +'@commonalityco/data-graph-worker': patch +'@commonalityco/ui-design-system': patch +'@commonalityco/config-tailwind': patch +'@commonalityco/config-tsconfig': patch +'@commonalityco/data-codeowners': patch +'@commonalityco/data-documents': patch +'@commonalityco/data-packages': patch +'@commonalityco/feature-graph': patch +'@commonalityco/data-project': patch +'commonality': patch +'@commonalityco/utils-graph': patch +'@commonalityco/data-graph': patch +'@commonalityco/ui-package': patch +'@commonalityco/utils-core': patch +'@commonalityco/data-tags': patch +'@commonalityco/ui-graph': patch +'@commonalityco/studio': patch +--- + +update dependencies diff --git a/.changeset/swift-drinks-doubt.md b/.changeset/swift-drinks-doubt.md new file mode 100644 index 00000000..13744fc4 --- /dev/null +++ b/.changeset/swift-drinks-doubt.md @@ -0,0 +1,8 @@ +--- +'@commonalityco/data-graph-worker': patch +'@commonalityco/data-graph': patch +'@commonalityco/studio': patch +'workshop': patch +--- + +cache graph calculations diff --git a/.commonality/config.json b/.commonality/config.json deleted file mode 100644 index a7cd659f..00000000 --- a/.commonality/config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "projectId": "me9y6ztiy87f0", - "constraints": [ - { "applyTo": "*", "disallow": ["deliverable"] }, - { - "applyTo": "feature", - "allow": "*" - }, - { - "applyTo": "config", - "allow": ["config"], - "disallow": ["feature"] - }, - { - "applyTo": "ui", - "allow": ["ui", "utility", "config"], - "disallow": ["feature"] - }, - { - "applyTo": "data", - "allow": ["data", "utility", "config"], - "disallow": ["feature"] - }, - { - "applyTo": "utility", - "allow": ["data", "utility", "config"], - "disallow": ["feature"] - } - ] -} diff --git a/.commonality/config.ts b/.commonality/config.ts new file mode 100644 index 00000000..50d6dc7d --- /dev/null +++ b/.commonality/config.ts @@ -0,0 +1,71 @@ +import { defineConfig, defineConformer } from 'commonality'; +import * as recommended from 'commonality-conform-recommended'; + +const ensureScript = defineConformer<{ name: string; value: string }>( + (options) => ({ + name: 'COMMONALITY/ENSURE_SCRIPT', + validate: async ({ json }) => { + return Boolean( + await json('package.json').get(`scripts[${options?.name}]`), + ); + }, + fix: async ({ json }) => { + return json('package.json').set( + `scripts[${options?.name}]`, + options?.value ?? '', + ); + }, + message: `Packages must include a "${options?.name}" script.`, + }), +); + +export default defineConfig({ + projectId: '123', + conformers: { + buildable: [ + ensureScript({ + name: 'type-check', + value: 'tsc --noEmit', + }), + ensureScript({ name: 'lint', value: 'eslint .' }), + ensureScript({ + name: 'lint:fix', + value: 'eslint . --fix', + }), + ], + '*': [ + recommended.ensureReadme(), + recommended.ensureCodeowner(), + recommended.ensurePackageName(), + recommended.ensureSortedDependencies(), + recommended.ensureVersion({ + dependencies: ['next'], + version: '13.4.19', + type: ['production', 'development'], + }), + recommended.ensureVersion({ + dependencies: ['typescript'], + version: '^5.2.2', + type: ['development'], + }), + recommended.ensureVersion({ + dependencies: ['react', 'react-dom'], + version: '^18.2.0', + type: ['production', 'development'], + }), + recommended.ensureVersion({ + dependencies: ['react', 'react-dom'], + version: '>=18', + type: ['peer'], + }), + ], + }, + constraints: { + feature: { allow: '*' }, + deliverable: { disallow: ['deliverable'] }, + config: { allow: ['config'], disallow: ['feature'] }, + ui: { allow: ['ui', 'utility', 'config'], disallow: ['feature'] }, + data: { allow: ['data', 'utility', 'config'], disallow: ['feature'] }, + utility: { allow: ['data', 'utility', 'config'], disallow: ['feature'] }, + }, +}); diff --git a/.eslintignore b/.eslintignore index 34eb0ebd..ed9f9cc1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1 @@ -graph-machine.typegen.d.ts -graph-machine.typegen.ts -tailwind.config.js -vitest.workspace.ts \ No newline at end of file +coverage \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 66a5d4ef..a2f59a1c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,3 @@ packages/ @package-team apps/ @app-team +tooling/ @tooling-team \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6fb85679..575aca81 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,6 @@ name: Continuous Integration -on: [pull_request] +on: [pull_request, push] jobs: CI: diff --git a/.gitignore b/.gitignore index 6252c46b..a1d8c314 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,5 @@ lib-cov # Build lib -dist .next .turbo \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index af603b86..dd323696 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,6 +1,4 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -pnpm exec lint-staged - +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" +pnpm run lint:fix \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 966dd631..15d934f0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,4 +9,5 @@ db/migrations .pnp.* node_modules dist -.turbo \ No newline at end of file +.turbo +.next \ No newline at end of file diff --git a/apps/workshop/.storybook/main.ts b/apps/workshop/.storybook/main.ts index 76a66198..ed5ff68f 100644 --- a/apps/workshop/.storybook/main.ts +++ b/apps/workshop/.storybook/main.ts @@ -14,11 +14,7 @@ const config: StorybookConfig = { return mergeConfig(config, { define: { 'process.env': {} }, optimizeDeps: { - include: [ - '@commonalityco/utils-core', - '@commonalityco/utils-package', - // '@commonalityco/utils-graph', - ], + include: ['@commonalityco/utils-core', '@commonalityco/utils-package'], }, }); }, diff --git a/apps/workshop/CHANGELOG.md b/apps/workshop/CHANGELOG.md index aa9c095f..59ceeb78 100644 --- a/apps/workshop/CHANGELOG.md +++ b/apps/workshop/CHANGELOG.md @@ -1,22 +1,5 @@ # workshop -## 1.0.17 - -### Patch Changes - -- 0f60d9b: cache graph calculations -- Updated dependencies [51411d8] -- Updated dependencies [0f60d9b] - - @commonalityco/data-graph-worker@0.0.10 - - @commonalityco/ui-design-system@0.0.13 - - @commonalityco/feature-graph@0.0.14 - - @commonalityco/utils-graph@0.0.12 - - @commonalityco/ui-package@0.0.16 - - @commonalityco/utils-core@0.0.11 - - @commonalityco/ui-graph@0.0.16 - - @commonalityco/ui-core@0.0.14 - - @commonalityco/types@0.0.14 - ## 1.0.16 ### Patch Changes diff --git a/apps/workshop/README.md b/apps/workshop/README.md index c3198beb..6c32deda 100644 --- a/apps/workshop/README.md +++ b/apps/workshop/README.md @@ -1,16 +1,7 @@ -# Workshop +# workshop +> The Storybook application for developing Commonality UI components +## Installation -This is a Storybook application that allows modular development of UI components throughout the Commonality monorepo. - -## Get started -Run the project - -```bash -pnpm run dev -``` - -More code - -```javascript -(num) => num + 1 +```sh +npm install workshop ``` \ No newline at end of file diff --git a/apps/workshop/package.json b/apps/workshop/package.json index ba683f46..c0f147a3 100644 --- a/apps/workshop/package.json +++ b/apps/workshop/package.json @@ -2,11 +2,12 @@ "name": "workshop", "description": "The Storybook application for developing Commonality UI components", "private": true, - "version": "1.0.17", + "version": "1.0.16", "scripts": { - "dev": "storybook dev -p 6006", + "app-dev": "storybook dev -p 6006", "lint": "eslint .", - "lint:fix": "eslint . --fix" + "lint:fix": "eslint . --fix", + "type-check": "tsc --noEmit" }, "dependencies": { "@commonalityco/data-graph-worker": "workspace:*", @@ -26,32 +27,32 @@ }, "devDependencies": { "@commonalityco/config-tailwind": "workspace:*", - "@storybook/addon-a11y": "^7.4.0", - "@storybook/addon-docs": "^7.4.0", - "@storybook/addon-essentials": "^7.4.0", - "@storybook/addon-interactions": "^7.4.0", - "@storybook/addon-links": "^7.4.0", + "@storybook/addon-a11y": "^7.4.3", + "@storybook/addon-docs": "^7.4.3", + "@storybook/addon-essentials": "^7.4.3", + "@storybook/addon-interactions": "^7.4.3", + "@storybook/addon-links": "^7.4.3", "@storybook/addon-styling": "^1.3.7", - "@storybook/addons": "^7.4.0", - "@storybook/blocks": "^7.4.0", - "@storybook/cli": "^7.4.0", - "@storybook/react": "^7.4.0", - "@storybook/react-vite": "^7.4.0", + "@storybook/addons": "^7.4.3", + "@storybook/blocks": "^7.4.3", + "@storybook/cli": "^7.4.3", + "@storybook/react": "^7.4.3", + "@storybook/react-vite": "^7.4.3", "@storybook/testing-library": "0.2.0", - "@types/react": "^18.2.21", + "@types/react": "^18.2.22", "@types/react-dom": "^18.2.7", "@vitejs/plugin-react": "^4.0.4", "@vitejs/plugin-react-swc": "^3.3.2", - "autoprefixer": "^10.4.15", + "autoprefixer": "^10.4.16", "eslint-config-commonality": "workspace:*", - "postcss": "^8.4.29", + "postcss": "^8.4.30", "postcss-loader": "^7.3.3", "prop-types": "^15.8.1", - "storybook": "^7.4.0", + "storybook": "^7.4.3", "storybook-dark-mode": "^3.0.1", "tailwindcss": "^3.3.3", "typescript": "^5.2.2", "vite": "^4.4.9", "webpack": "^5.88.2" } -} +} \ No newline at end of file diff --git a/apps/workshop/src/stories/feature-graph/feature-graph-toolbar.stories.tsx b/apps/workshop/src/stories/feature-graph/feature-graph-toolbar.stories.tsx index f1e748f0..11fb7d34 100644 --- a/apps/workshop/src/stories/feature-graph/feature-graph-toolbar.stories.tsx +++ b/apps/workshop/src/stories/feature-graph/feature-graph-toolbar.stories.tsx @@ -3,7 +3,6 @@ import { FeatureGraphToolbar, GraphProvider, } from '@commonalityco/feature-graph'; -import { PackageManager } from '@commonalityco/utils-core'; import { Violation } from '@commonalityco/types'; // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction @@ -33,13 +32,10 @@ type Story = StoryObj; export const KitchenSink: Story = { args: { - packageManager: PackageManager.PNPM, - getPackages: async () => [], - getProjectConfig: async () => ({ - constraints: [ + packages: [], + constraints: { + 'tag-one-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg': { - applyTo: - 'tag-one-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', allow: [ 'tag-two-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', 'tag-three-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', @@ -51,77 +47,63 @@ export const KitchenSink: Story = { 'bar-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', ], }, - { - applyTo: 'tag-two', - allow: ['tag-two', 'tag-three'], - disallow: ['tag-four'], - }, - { - applyTo: 'tag-three', - disallow: ['tag-four'], - }, - { - applyTo: 'tag-four', - allow: '*', - disallow: ['tag-four'], - }, - ], - }), - getViolations: async () => - [ - { - sourcePackageName: - 'pkg-a-looooooooooooooooooooooooooooooonnnnnnnnnnnnnnnnnnnngggggggggggggggggggggggg', - targetPackageName: - 'pkg-b-looooooooooooooooooooooooooooooonnnnnnnnnnnnnnnnnnnngggggggggggggggggggggggg', - appliedTo: - 'tag-one-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', - allowed: [ - 'tag-two-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', - 'tag-three-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', - ], - disallowed: [], - found: [ - 'bar-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', - 'foo-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', - 'one', - 'two', - 'three', - ], - }, - { - sourcePackageName: 'pkg-b', - targetPackageName: 'pkg-c', - appliedTo: 'tag-two', - allowed: ['tag-two', 'tag-three'], - disallowed: [], - found: ['tag-bar'], - }, - { - sourcePackageName: 'pkg-b', - targetPackageName: 'pkg-d', - appliedTo: 'tag-two', - allowed: ['tag-two', 'tag-three'], - disallowed: [], - found: [], - }, - { - sourcePackageName: 'pkg-c', - targetPackageName: 'pkg-d', - appliedTo: 'tag-one', - allowed: ['tag-two', 'tag-three'], - disallowed: [], - found: [], - }, - ] satisfies Violation[], + 'tag-two': { allow: ['tag-two', 'tag-three'], disallow: ['tag-four'] }, + 'tag-three': { disallow: ['tag-four'] }, + 'tag-four': { allow: '*', disallow: ['tag-four'] }, + }, + violations: [ + { + sourcePackageName: + 'pkg-a-looooooooooooooooooooooooooooooonnnnnnnnnnnnnnnnnnnngggggggggggggggggggggggg', + targetPackageName: + 'pkg-b-looooooooooooooooooooooooooooooonnnnnnnnnnnnnnnnnnnngggggggggggggggggggggggg', + appliedTo: + 'tag-one-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', + allowed: [ + 'tag-two-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', + 'tag-three-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', + ], + disallowed: [], + found: [ + 'bar-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', + 'foo-loooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnggggggggggggg', + 'one', + 'two', + 'three', + ], + }, + { + sourcePackageName: 'pkg-b', + targetPackageName: 'pkg-c', + appliedTo: 'tag-two', + allowed: ['tag-two', 'tag-three'], + disallowed: [], + found: ['tag-bar'], + }, + { + sourcePackageName: 'pkg-b', + targetPackageName: 'pkg-d', + appliedTo: 'tag-two', + allowed: ['tag-two', 'tag-three'], + disallowed: [], + found: [], + }, + { + sourcePackageName: 'pkg-c', + targetPackageName: 'pkg-d', + appliedTo: 'tag-one', + allowed: ['tag-two', 'tag-three'], + disallowed: [], + found: [], + }, + ] satisfies Violation[], }, }; export const NoConstraints: Story = { args: { - packageManager: PackageManager.PNPM, - getPackages: async () => [], - getProjectConfig: async () => ({}), - getViolations: async () => [], + packages: [], + constraints: {}, + violations: [], }, }; diff --git a/apps/workshop/src/stories/feature-graph/feature-graph.stories.tsx b/apps/workshop/src/stories/feature-graph/feature-graph.stories.tsx index 95de1d42..f42eabde 100644 --- a/apps/workshop/src/stories/feature-graph/feature-graph.stories.tsx +++ b/apps/workshop/src/stories/feature-graph/feature-graph.stories.tsx @@ -119,7 +119,7 @@ export const Default: Story = { packages, dependencies, violations: [], - constraints: [], + constraints: {}, }, }; @@ -138,13 +138,12 @@ export const ConstraintsAndViolations: Story = { args: { packages, dependencies, - constraints: [ - { - applyTo: 'foo', + constraints: { + foo: { allow: ['bar'], disallow: ['baz'], }, - ], + }, violations, }, }; @@ -153,7 +152,7 @@ export const Zero: Story = { args: { packages: [], dependencies: [], - constraints: [], + constraints: {}, violations: [], }, }; diff --git a/apps/workshop/src/stories/ui-graph/tooltip-dependency.stories.tsx b/apps/workshop/src/stories/ui-graph/tooltip-dependency.stories.tsx index d3bea823..43ace84e 100644 --- a/apps/workshop/src/stories/ui-graph/tooltip-dependency.stories.tsx +++ b/apps/workshop/src/stories/ui-graph/tooltip-dependency.stories.tsx @@ -20,8 +20,6 @@ type Story = StoryObj; export const Simple: Story = { args: { - constraints: [], - violations: [], dependency: { type: DependencyType.PRODUCTION, version: '1.0.0', diff --git a/apps/workshop/src/stories/ui-package/packages-table.stories.tsx b/apps/workshop/src/stories/ui-package/packages-table.stories.tsx index 4050d61e..5419aebd 100644 --- a/apps/workshop/src/stories/ui-package/packages-table.stories.tsx +++ b/apps/workshop/src/stories/ui-package/packages-table.stories.tsx @@ -10,6 +10,7 @@ import { TagsCell, } from '@commonalityco/ui-package'; import { PackageType } from '@commonalityco/utils-core'; +import { Package } from '@commonalityco/types'; const columns = [ { @@ -30,14 +31,14 @@ const columns = [ { accessorKey: 'tags', header: 'Tags', - cell: TagsCell, + cell: (props) => {}} />, }, { accessorKey: 'codeowners', header: 'Codeowners', cell: CodeownersCell, }, -] satisfies PackageTableColumns; +] satisfies PackageTableColumns; const meta = { title: 'ui-package/PackagesTable', diff --git a/package.json b/package.json index a380292e..48fecdf9 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,16 @@ { "name": "@commonalityco/monorepo", "version": "0.0.1", - "description": "", "packageManager": "pnpm@8.7.1", + "description": "", "contributors": [ "Alec Ortega (https://github.com/alecortega)" ], "scripts": { - "co:open": "pnpm exec commonality open", + "commonality:studio": "commonality studio", + "commonality:validate": "commonality validate", + "dev": "turbo run dev --parallel", + "conform": "commonality conform", "build": "turbo run build", "clean": "rimraf ./packages/**/dist ./packages/**/.turbo ./packages/*/node_modules ./coverage ./node_modules", "test": "vitest run --coverage", @@ -31,26 +34,27 @@ "@changesets/cli": "^2.26.2", "@commonalityco/config-tsconfig": "workspace:*", "@manypkg/cli": "^0.21.0", - "@types/node": "^20.6.0", - "@typescript-eslint/eslint-plugin": "^6.6.0", - "@typescript-eslint/parser": "^6.6.0", + "@types/node": "^20.6.3", + "@typescript-eslint/eslint-plugin": "^6.7.2", + "@typescript-eslint/parser": "^6.7.2", "@vitest/coverage-v8": "^0.34.4", + "commonality": "workspace:*", + "commonality-conform-recommended": "workspace:*", "eslint": "^8.49.0", - "eslint-config-commonality": "workspace:^", + "eslint-config-commonality": "workspace:*", "eslint-plugin-unused-imports": "^3.0.0", - "execa": "^8.0.1", + "execa": "^7.2.0", "husky": "^8.0.3", - "lint-staged": "^14.0.1", "prettier": "^3.0.3", "prettier-plugin-tailwindcss": "^0.5.4", "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "turbo": "^1.10.13", + "turbo": "^1.10.14", "typescript": "^5.2.2", "vitest": "^0.34.4" }, - "lint-staged": { - "*.{js,jsx,ts,tsx}": "eslint --cache --fix", - "*.{js,jsx,ts,tsx,css,md}": "prettier --write" + "devDependencies": { + "@types/fs-extra": "^11.0.2", + "fs-extra": "^11.1.1" } } diff --git a/packages/commonality-conform-recommended/.eslintrc.cjs b/packages/commonality-conform-recommended/.eslintrc.cjs new file mode 100644 index 00000000..97414f7d --- /dev/null +++ b/packages/commonality-conform-recommended/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['commonality'], +}; diff --git a/packages/commonality-conform-recommended/README.md b/packages/commonality-conform-recommended/README.md new file mode 100644 index 00000000..bed77665 --- /dev/null +++ b/packages/commonality-conform-recommended/README.md @@ -0,0 +1,7 @@ +# commonality-conform-recommended +> Commonality's recommended conformers. +## Installation + +```sh +npm install commonality-conform-recommended +``` \ No newline at end of file diff --git a/packages/commonality-conform-recommended/commonality.json b/packages/commonality-conform-recommended/commonality.json new file mode 100644 index 00000000..e0c2a0ae --- /dev/null +++ b/packages/commonality-conform-recommended/commonality.json @@ -0,0 +1 @@ +{ "tags": ["deliverable"] } diff --git a/packages/commonality-conform-recommended/package.json b/packages/commonality-conform-recommended/package.json new file mode 100644 index 00000000..c602def7 --- /dev/null +++ b/packages/commonality-conform-recommended/package.json @@ -0,0 +1,39 @@ +{ + "name": "commonality-conform-recommended", + "description": "Commonality's recommended conformers.", + "private": true, + "version": "0.0.0", + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "peerDependencies": { + "commonality": "*" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/data-codeowners": "workspace:*", + "@commonalityco/data-documents": "workspace:*", + "@commonalityco/data-packages": "workspace:*", + "@commonalityco/data-project": "workspace:*", + "@commonalityco/data-tags": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "commonality": "workspace:*", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "semver": "^7.5.4" + } +} \ No newline at end of file diff --git a/packages/commonality-conform-recommended/src/ensure-codeowner.ts b/packages/commonality-conform-recommended/src/ensure-codeowner.ts new file mode 100644 index 00000000..d9b21b20 --- /dev/null +++ b/packages/commonality-conform-recommended/src/ensure-codeowner.ts @@ -0,0 +1,9 @@ +import { defineConformer } from 'commonality'; + +export const ensureCodeowner = defineConformer(() => ({ + name: 'COMMONALITY/ENSURE_CODEOWNER', + validate: async ({ workspace }) => { + return workspace.codeowners.length > 0; + }, + message: 'Packages must have a codeowner', +})); diff --git a/packages/commonality-conform-recommended/src/ensure-package-name.ts b/packages/commonality-conform-recommended/src/ensure-package-name.ts new file mode 100644 index 00000000..a3c7518e --- /dev/null +++ b/packages/commonality-conform-recommended/src/ensure-package-name.ts @@ -0,0 +1,14 @@ +import { defineConformer } from 'commonality'; + +export const ensurePackageName = defineConformer(() => ({ + name: 'COMMONALITY/ENSURE_PACKAGE_NAME', + validate: ({ workspace }) => { + if (!workspace.packageJson.name) { + return false; + } + + return true; + }, + type: 'error' as const, + message: 'Package must have a name property', +})); diff --git a/packages/commonality-conform-recommended/src/ensure-readme.ts b/packages/commonality-conform-recommended/src/ensure-readme.ts new file mode 100644 index 00000000..ca71a3b4 --- /dev/null +++ b/packages/commonality-conform-recommended/src/ensure-readme.ts @@ -0,0 +1,20 @@ +import { defineConformer } from 'commonality'; + +export const ensureReadme = defineConformer(() => ({ + name: 'COMMONALITY/ENSURE_README', + validate: async ({ text }) => text('README.md').exists(), + fix: async ({ workspace, text }) => { + const README = text('README.md'); + + await README.set([ + `# ${workspace.packageJson.name}`, + `> ${workspace.packageJson.description}`, + '## Installation', + '', + '```sh', + `npm install ${workspace.packageJson.name}`, + '```', + ]); + }, + message: `Package must have a README.md file`, +})); diff --git a/packages/commonality-conform-recommended/src/ensure-sorted-dependencies.ts b/packages/commonality-conform-recommended/src/ensure-sorted-dependencies.ts new file mode 100644 index 00000000..d00a9ade --- /dev/null +++ b/packages/commonality-conform-recommended/src/ensure-sorted-dependencies.ts @@ -0,0 +1,50 @@ +import { defineConformer } from 'commonality'; + +const DEPENDENCY_TYPES = [ + 'dependencies', + 'devDependencies', + 'peerDependencies', +] as const; + +const sortObjectKeys = (obj: Record) => { + return obj ? Object.fromEntries(Object.entries(obj).sort()) : {}; +}; + +export const ensureSortedDependencies = defineConformer(() => ({ + name: 'COMMONALITY/ENSURE_SORTED_DEPENDENCIES', + validate: async ({ workspace }) => { + const packageJson = workspace.packageJson; + + return DEPENDENCY_TYPES.every((depType) => { + const deps = packageJson[depType] ?? {}; + const sortedKeys = Object.keys(sortObjectKeys(deps)); + const originalKeys = Object.keys(deps); + const hasSortedKeys = sortedKeys.every( + (value, index) => value === originalKeys[index], + ); + + return deps && hasSortedKeys; + }); + }, + fix: async ({ workspace, json }) => { + const packageJson = workspace.packageJson; + + for (const depType of DEPENDENCY_TYPES) { + const deps = packageJson[depType]; + + if (deps) { + const sortedDeps = sortObjectKeys(deps); + const originalKeys = Object.keys(deps); + const sortedKeys = Object.keys(sortedDeps); + const hasSortedKeys = sortedKeys.every( + (value, index) => value === originalKeys[index], + ); + + if (!hasSortedKeys) { + await json('package.json').set(depType, sortedDeps); + } + } + } + }, + message: 'Dependencies in package.json must be sorted alphabetically', +})); diff --git a/packages/commonality-conform-recommended/src/ensure-version.ts b/packages/commonality-conform-recommended/src/ensure-version.ts new file mode 100644 index 00000000..34bbb22d --- /dev/null +++ b/packages/commonality-conform-recommended/src/ensure-version.ts @@ -0,0 +1,95 @@ +import { defineConformer } from 'commonality'; + +const propertyNameByType = { + peer: 'peerDependencies', + development: 'devDependencies', + production: 'dependencies', +} as const; + +export const ensureVersion = defineConformer<{ + version: string; + dependencies: string[]; + type?: Array<'peer' | 'development' | 'production'>; +}>((options) => ({ + name: 'COMMONALITY/ENSURE_VERSION', + validate: async ({ workspace }) => { + if (!options) { + return false; + } + + const dependencyTypes = options.type || [ + 'production', + 'development', + 'peer', + ]; + + for (const dependencyType of dependencyTypes) { + const propertyName = propertyNameByType[dependencyType]; + const dependencyMap = workspace.packageJson[propertyName] ?? {}; + const dependencyNames = Object.keys(dependencyMap); + + for (const dependencyName of dependencyNames) { + const dependencyVersion = dependencyMap[dependencyName]; + + if ( + !dependencyVersion || + !options.dependencies.includes(dependencyName) + ) { + continue; + } + + if (dependencyVersion !== options.version) { + return false; + } + } + } + + return true; + }, + fix: async ({ workspace, json }) => { + if (!options) { + return; + } + + const packageJson = json('package.json'); + const dependencyTypes = options.type || [ + 'production', + 'development', + 'peer', + ]; + + for (const dependencyType of dependencyTypes) { + const propertyName = propertyNameByType[dependencyType]; + const dependencyMap = workspace.packageJson[propertyName] ?? {}; + const dependencyNames = Object.keys(dependencyMap); + + await Promise.all( + dependencyNames.map((dependencyName) => { + const dependencyVersion = dependencyMap[dependencyName]; + const isApplicableDependency = + options.dependencies.includes(dependencyName); + + if ( + !dependencyVersion || + !isApplicableDependency || + dependencyVersion === options.version + ) { + return; + } + + if (dependencyVersion !== options.version) { + return packageJson.set( + `${propertyName}.${dependencyName}`, + options.version, + ); + } + }), + ); + } + }, + message: options + ? `Packages with dependencies ${JSON.stringify( + options.dependencies, + )} must match version ${options.version}` + : 'Invalid version', +})); diff --git a/packages/commonality-conform-recommended/src/index.ts b/packages/commonality-conform-recommended/src/index.ts new file mode 100644 index 00000000..05655f81 --- /dev/null +++ b/packages/commonality-conform-recommended/src/index.ts @@ -0,0 +1,5 @@ +export * from './ensure-codeowner.js'; +export * from './ensure-package-name.js'; +export * from './ensure-readme.js'; +export * from './ensure-sorted-dependencies.js'; +export * from './ensure-version.js'; diff --git a/packages/commonality-conform-recommended/test/ensure-codeowner.test.ts b/packages/commonality-conform-recommended/test/ensure-codeowner.test.ts new file mode 100644 index 00000000..17cc2a47 --- /dev/null +++ b/packages/commonality-conform-recommended/test/ensure-codeowner.test.ts @@ -0,0 +1,52 @@ +import { describe, expect, it, vi } from 'vitest'; +import { ensureCodeowner } from '../src/ensure-codeowner'; + +describe('ensureCodeowner', () => { + describe('validate', () => { + it('should return false if codeowners are not present', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: [], + packageJson: { + dependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + devDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + peerDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + }, + }; + + const conformer = ensureCodeowner(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(false); + }); + + it('should return true if codeowners are present', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + dependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + devDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + peerDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + }, + }; + + const conformer = ensureCodeowner(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(true); + }); + }); +}); diff --git a/packages/commonality-conform-recommended/test/ensure-package-name.test.ts b/packages/commonality-conform-recommended/test/ensure-package-name.test.ts new file mode 100644 index 00000000..3c292da0 --- /dev/null +++ b/packages/commonality-conform-recommended/test/ensure-package-name.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, it, vi } from 'vitest'; +import { ensurePackageName } from '../src/ensure-package-name'; + +describe('ensurePackageName', () => { + describe('validate', () => { + it('should return false if package name is not present', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: {}, + }; + + const conformer = ensurePackageName(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(false); + }); + + it('should return true if package name is present', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + name: 'workspaceName', + }, + }; + + const conformer = ensurePackageName(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(true); + }); + }); +}); diff --git a/packages/commonality-conform-recommended/test/ensure-readme.test.ts b/packages/commonality-conform-recommended/test/ensure-readme.test.ts new file mode 100644 index 00000000..a65e8011 --- /dev/null +++ b/packages/commonality-conform-recommended/test/ensure-readme.test.ts @@ -0,0 +1,96 @@ +import { describe, expect, it, vi } from 'vitest'; +import { ensureReadme } from '../src/ensure-readme'; + +describe('ensureReadme', () => { + describe('validate', () => { + it('should return true if README.md exists', async () => { + const text = vi.fn().mockImplementation(() => ({ + exists: () => true, + })); + + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + name: 'workspaceName', + description: 'workspaceDescription', + }, + }; + + const conformer = ensureReadme(); + const result = await conformer.validate({ + text, + json: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + workspace: workspace, + }); + expect(result).toBe(true); + }); + + it('should return false if README.md does not exist', async () => { + const text = vi.fn().mockImplementation(() => ({ + exists: () => false, + })); + + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + name: 'workspaceName', + description: 'workspaceDescription', + }, + }; + + const conformer = ensureReadme(); + const result = await conformer.validate({ + text, + json: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + workspace: workspace, + }); + expect(result).toBe(false); + }); + }); + + describe('fix', () => { + it('should create README.md with correct content', async () => { + const setMock = vi.fn(); + const text = vi.fn().mockImplementation(() => ({ + set: setMock, + })); + + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + name: 'workspaceName', + description: 'workspaceDescription', + }, + }; + + const conformer = ensureReadme(); + await conformer?.fix?.({ + workspace, + text, + json: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + + expect(setMock).toHaveBeenCalledWith([ + '# workspaceName', + '> workspaceDescription', + '## Installation', + '', + '```sh', + 'npm install workspaceName', + '```', + ]); + }); + }); +}); diff --git a/packages/commonality-conform-recommended/test/ensure-sorted-dependencies.test.ts b/packages/commonality-conform-recommended/test/ensure-sorted-dependencies.test.ts new file mode 100644 index 00000000..10808fd0 --- /dev/null +++ b/packages/commonality-conform-recommended/test/ensure-sorted-dependencies.test.ts @@ -0,0 +1,124 @@ +import { describe, expect, it, vi } from 'vitest'; +import { ensureSortedDependencies } from '../src/ensure-sorted-dependencies'; + +describe('ensureSortedDependencies', () => { + describe('validate', () => { + it('should return false if dependencies are not sorted', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + dependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + devDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + peerDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + }, + }; + + const projectWorkspaces = []; + const conformer = ensureSortedDependencies(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces, + }); + expect(result).toBe(false); + }); + + it('should return true if dependencies are already sorted', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + dependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + devDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + peerDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + }, + }; + + const projectWorkspaces = []; + const conformer = ensureSortedDependencies(); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces, + }); + expect(result).toBe(true); + }); + }); + + describe('fix', () => { + it('should not call set if dependencies are already sorted', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + dependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + devDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + peerDependencies: { 'a-dep': '1.0.0', 'b-dep': '1.0.0' }, + }, + }; + const setMock = vi.fn(); + const json = vi.fn().mockImplementation(() => ({ + set: setMock, + })); + + const conformer = ensureSortedDependencies(); + await conformer?.fix?.({ + workspace, + json, + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + + expect(setMock).not.toHaveBeenCalled(); + }); + + it('should fix unsorted dependencies', async () => { + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + dependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + devDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + peerDependencies: { 'b-dep': '1.0.0', 'a-dep': '1.0.0' }, + }, + }; + const setMock = vi.fn(); + const json = vi.fn().mockImplementation(() => ({ + set: setMock, + })); + + const conformer = ensureSortedDependencies(); + await conformer?.fix?.({ + workspace, + json, + yaml: vi.fn(), + text: vi.fn(), + projectWorkspaces: [], + }); + + expect(setMock).toHaveBeenCalledTimes(3); + expect(setMock).toHaveBeenCalledWith('dependencies', { + 'a-dep': '1.0.0', + 'b-dep': '1.0.0', + }); + expect(setMock).toHaveBeenCalledWith('devDependencies', { + 'a-dep': '1.0.0', + 'b-dep': '1.0.0', + }); + expect(setMock).toHaveBeenCalledWith('peerDependencies', { + 'a-dep': '1.0.0', + 'b-dep': '1.0.0', + }); + }); + }); +}); diff --git a/packages/commonality-conform-recommended/test/ensure-version.test.ts b/packages/commonality-conform-recommended/test/ensure-version.test.ts new file mode 100644 index 00000000..f15b1580 --- /dev/null +++ b/packages/commonality-conform-recommended/test/ensure-version.test.ts @@ -0,0 +1,200 @@ +import { describe, expect, it, vi } from 'vitest'; +import { ensureVersion } from '../src/ensure-version'; + +describe('ensureVersion', () => { + describe('validate', () => { + it('should return true if the dependency is not a dependency of the package at all', async () => { + const options = { + version: '1.0.0', + dependencies: ['dep3'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + workspaces: ['workspace1', 'workspace2'], + name: 'workspaceName', + description: 'workspaceDescription', + version: 'workspaceVersion', + dependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + devDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + peerDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + }, + }; + const conformer = ensureVersion(options); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + text: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(true); + }); + + it('should return true if none of the dependencies in options.dependencies are present', async () => { + const options = { + version: '2.0.0', + dependencies: ['dep3', 'dep4'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + workspaces: ['workspace1', 'workspace2'], + name: 'workspaceName', + description: 'workspaceDescription', + version: 'workspaceVersion', + dependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + devDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + peerDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + }, + }; + const conformer = ensureVersion(options); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + text: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(true); // This will fail with the current implementation + }); + + it('should return true if the package matches the options.version', async () => { + const options = { + version: '1.0.0', + dependencies: ['dep1'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + workspaces: ['workspace1', 'workspace2'], + name: 'workspaceName', + description: 'workspaceDescription', + version: 'workspaceVersion', + dependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + devDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + peerDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + }, + }; + const conformer = ensureVersion(options); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + text: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(true); + }); + + it('should return false if the dependency exists in the package.json but does not match options.version', async () => { + const options = { + version: '2.0.0', + dependencies: ['dep1'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + workspaces: ['workspace1', 'workspace2'], + name: 'workspaceName', + description: 'workspaceDescription', + version: 'workspaceVersion', + dependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + devDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + peerDependencies: { dep1: '1.0.0', dep2: '1.0.0' }, + }, + }; + const conformer = ensureVersion(options); + const result = await conformer.validate({ + workspace, + json: vi.fn(), + text: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + expect(result).toBe(false); + }); + }); + + describe('fix', () => { + it('should fix version correctly', async () => { + const options = { + version: '1.0.0', + dependencies: ['dep1', 'dep2'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const workspace = { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['owner1', 'owner2'], + packageJson: { + workspaces: ['workspace1', 'workspace2'], + name: 'workspaceName', + description: 'workspaceDescription', + version: 'workspaceVersion', + dependencies: { dep1: '0.9.0', dep2: '0.9.0', dep3: '2.0.0' }, + devDependencies: { + dep1: '0.9.0', + dep2: '0.9.0', + 'name.dep': '3.0.0', + }, + peerDependencies: { dep1: '0.9.0', dep2: '0.9.0' }, + }, + }; + + const setMock = vi.fn(); + const json = vi.fn().mockImplementation(() => ({ + set: setMock, + })); + + const conformer = ensureVersion(options); + + await conformer?.fix?.({ + workspace, + json, + text: vi.fn(), + yaml: vi.fn(), + projectWorkspaces: [], + }); + + expect(setMock).toHaveBeenCalledTimes(6); + expect(setMock).toHaveBeenCalledWith('dependencies.dep1', '1.0.0'); + expect(setMock).toHaveBeenCalledWith('dependencies.dep2', '1.0.0'); + expect(setMock).toHaveBeenCalledWith('devDependencies.dep1', '1.0.0'); + expect(setMock).toHaveBeenCalledWith('devDependencies.dep2', '1.0.0'); + expect(setMock).toHaveBeenCalledWith('peerDependencies.dep1', '1.0.0'); + expect(setMock).toHaveBeenCalledWith('peerDependencies.dep2', '1.0.0'); + }); + }); + + describe('message', () => { + it('should return correct message if options are provided', () => { + const options = { + version: '1.0.0', + dependencies: ['dep1', 'dep2'], + type: ['production' as const, 'development' as const, 'peer' as const], + }; + const conformer = ensureVersion(options); + expect(conformer.message).toBe( + 'Packages with dependencies ["dep1","dep2"] must match version 1.0.0', + ); + }); + + it('should return "Invalid version" if options are not provided', () => { + const conformer = ensureVersion(); + expect(conformer.message).toBe('Invalid version'); + }); + }); +}); diff --git a/packages/commonality-conform-recommended/tsconfig.json b/packages/commonality-conform-recommended/tsconfig.json new file mode 100644 index 00000000..bdbfbc40 --- /dev/null +++ b/packages/commonality-conform-recommended/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@commonalityco/config-tsconfig/node.json", + "include": ["src/**/*.ts", "src/**/*.tsx"], + "compilerOptions": { + "outDir": "./dist", + "typeRoots": ["./node_modules/@types"] + } +} diff --git a/packages/commonality-conform-recommended/vitest.config.ts b/packages/commonality-conform-recommended/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/commonality-conform-recommended/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/commonality/CHANGELOG.md b/packages/commonality/CHANGELOG.md index 21b254cc..8864fc9b 100644 --- a/packages/commonality/CHANGELOG.md +++ b/packages/commonality/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/cli -## 0.2.23 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.2.22 ### Patch Changes diff --git a/packages/commonality/README.md b/packages/commonality/README.md index 447f6f45..c626fe2f 100644 --- a/packages/commonality/README.md +++ b/packages/commonality/README.md @@ -1 +1,7 @@ -# Commonality CLI +# commonality +> Infinitely scalable front-end ecosystems +## Installation + +```sh +npm install commonality +``` \ No newline at end of file diff --git a/packages/commonality/bin.js b/packages/commonality/bin.js index 95025e16..5223a285 100755 --- a/packages/commonality/bin.js +++ b/packages/commonality/bin.js @@ -15,4 +15,4 @@ const notifier = updateNotifier({ pkg: packageJson }); notifier.notify({ isGlobal: true }); -import('./dist/index.js'); +import('./dist/cli/cli.js'); diff --git a/packages/commonality/package.json b/packages/commonality/package.json index 70001d36..789de787 100644 --- a/packages/commonality/package.json +++ b/packages/commonality/package.json @@ -1,6 +1,6 @@ { "name": "commonality", - "version": "0.2.23", + "version": "0.2.22", "bin": { "commonality": "./bin.js" }, @@ -8,6 +8,11 @@ "engines": { "node": ">=16" }, + "types": "./dist/utilities/index.d.ts", + "main": "./dist/utilities/index.js", + "exports": { + ".": "./dist/utilities/index.js" + }, "description": "Infinitely scalable front-end ecosystems", "repository": "https://github.com/commonalityco/commonalityco", "bugs": "https://github.com/commonalityco/commonalityco/issues", @@ -17,14 +22,25 @@ "access": "public" }, "scripts": { - "build": "scripts/build.js", + "clean": "rimraf ./dist", + "build:cli": "tsup --config tsup.config.cli.ts", + "build:utilities": "tsup --config tsup.config.utilities.ts", + "copy:studio": "node ./scripts/copy-studio.js", + "build": "npm-run-all clean build:* copy:studio", + "dev:cli": "tsup --config tsup.config.cli.ts --watch", + "dev:utilities": "tsup --config tsup.config.utilities.ts --watch", + "dev": "pnpm run clean && npm-run-all --parallel dev:*", + "postbuild": "tsc --emitDeclarationOnly --declaration", "lint": "eslint ./src --fix", - "test": "vitest --config=vite.config.ts", + "test": "vitest", "test:integration": "vitest --config=vite.integration.config.ts", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "lint:fix": "eslint . --fix" }, "dependencies": { - "@next/bundle-analyzer": "^13.4.19", + "@next/bundle-analyzer": "^13.5.2", + "@testing-library/react": "^14.0.0", + "@types/prompts": "^2.4.4", "chalk": "^5.3.0", "chokidar": "^3.5.3", "cliui": "^8.0.1", @@ -32,38 +48,60 @@ "fs-extra": "^11.1.1", "get-port": "^7.0.0", "got": "^13.0.0", + "ink": "^4.4.1", + "ink-link": "^3.0.0", + "ink-spinner": "^5.0.0", + "ink-testing-library": "^3.0.0", "kill-port": "^2.0.1", + "lodash.get": "^4.4.2", + "lodash.omit": "^4.5.0", + "lodash.set": "^4.3.2", "next": "13.4.19", + "npm-run-all": "^4.1.5", "open": "^9.1.0", "ora": "^7.0.1", + "prompts": "^2.4.2", + "react": "^18.2.0", + "react-devtools-core": "^4.28.4", "socket.io": "^4.7.2", "update-notifier": "^6.0.2", - "wait-on": "^7.0.1" + "wait-on": "^7.0.1", + "yaml": "^2.3.2", + "zod": "^3.22.2" }, "devDependencies": { "@commonalityco/config-tsconfig": "workspace:*", "@commonalityco/data-codeowners": "workspace:*", + "@commonalityco/data-conformance": "workspace:*", "@commonalityco/data-documents": "workspace:*", "@commonalityco/data-packages": "workspace:*", "@commonalityco/data-project": "workspace:*", "@commonalityco/data-tags": "workspace:*", "@commonalityco/data-violations": "workspace:*", + "@commonalityco/data-workspaces": "workspace:*", "@commonalityco/studio": "workspace:*", "@commonalityco/types": "workspace:*", + "@commonalityco/utils-conformance": "workspace:*", "@commonalityco/utils-core": "workspace:*", - "@swc/core": "^1.3.83", + "@commonalityco/utils-file": "workspace:*", + "@swc/core": "^1.3.86", "@types/configstore": "^6.0.0", - "@types/fs-extra": "^11.0.1", - "@types/kill-port": "^2.0.0", - "@types/node": "^20.6.0", + "@types/fs-extra": "^11.0.2", + "@types/kill-port": "^2.0.1", + "@types/lodash.get": "^4.4.7", + "@types/lodash.omit": "^4.5.7", + "@types/lodash.set": "^4.3.7", + "@types/node": "^20.6.3", + "@types/react": "^18.2.22", "@types/update-notifier": "^6.0.5", "@types/wait-on": "^5.3.1", - "esbuild": "^0.19.2", - "eslint-config-commonality": "workspace:^", + "esbuild": "^0.19.3", + "eslint-config-commonality": "workspace:*", "ncp": "^2.0.0", - "resolve": "^1.22.4", + "resolve": "^1.22.6", "strip-ansi": "^7.1.0", "ts-node": "^10.9.1", + "tsup": "^7.2.0", "typescript": "^5.2.2" } } diff --git a/packages/commonality/scripts/build.js b/packages/commonality/scripts/copy-studio.js similarity index 80% rename from packages/commonality/scripts/build.js rename to packages/commonality/scripts/copy-studio.js index 2b886f5e..d6379b23 100755 --- a/packages/commonality/scripts/build.js +++ b/packages/commonality/scripts/copy-studio.js @@ -5,29 +5,10 @@ import fs from 'fs-extra'; import { fileURLToPath } from 'node:url'; import path from 'node:path'; import resolve from 'resolve'; -import { rimraf } from 'rimraf'; -import * as esbuild from 'esbuild'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); try { - await rimraf(path.join(__dirname, '../dist')); - console.log('Successfully cleaned /dist'); - - await esbuild.build({ - format: 'esm', - bundle: true, - banner: { - js: "import { createRequire } from 'module'; const require = createRequire(import.meta.url);", - }, - platform: 'node', - minify: true, - entryPoints: ['./src/index.ts'], - outdir: './dist', - }); - - console.log('Successfully built CLI'); - resolve( '@commonalityco/studio' + '/package.json', async (error, packagePath) => { diff --git a/packages/commonality/src/cli/cli.ts b/packages/commonality/src/cli/cli.ts new file mode 100644 index 00000000..48bbf12a --- /dev/null +++ b/packages/commonality/src/cli/cli.ts @@ -0,0 +1,24 @@ +import { Command } from 'commander'; +import { publish } from './commands/publish.js'; +import { init } from './commands/init.js'; +import { constrain } from './commands/constrain/constrain.js'; +import { studio } from './commands/studio.js'; +import { link } from './commands/link.js'; +import { conform } from './commands/conform.js'; +import packageJson from '../../package.json'; + +const program = new Command(); + +program + .name('commonality') + .description('Infinitely scalable front-end ecosystems') + .version(packageJson.version); + +program.addCommand(init); +program.addCommand(publish); +program.addCommand(constrain); +program.addCommand(studio); +program.addCommand(link); +program.addCommand(conform); + +program.parse(process.argv); diff --git a/packages/commonality/src/cli/commands/conform.tsx b/packages/commonality/src/cli/commands/conform.tsx new file mode 100644 index 00000000..600745f8 --- /dev/null +++ b/packages/commonality/src/cli/commands/conform.tsx @@ -0,0 +1,312 @@ +/* eslint-disable unicorn/no-process-exit */ +import React, { useMemo } from 'react'; +import { runFixes } from '@commonalityco/utils-conformance'; +import { getConformanceResults } from '@commonalityco/data-conformance'; +import { Command } from 'commander'; +import { getRootDirectory } from '@commonalityco/data-project'; +import { + ConformanceResult, + Conformer, + TagsData, + Workspace, +} from '@commonalityco/types'; +import { createJson, createText, createYaml } from '@commonalityco/utils-file'; +import { Box, render, Text, useApp, useInput } from 'ink'; +import { useState } from 'react'; +import Spinner from 'ink-spinner'; +import { useAsyncFn } from '../utils/use-async-fn.js'; +import { CheckTagsData } from '../components/check-tags-data.js'; +import { TotalMessage } from '../components/total-message.js'; +import { CheckConformers } from '../components/check-conformers.js'; +import { CheckWorkspaces } from '../components/check-workspaces.js'; + +const command = new Command(); + +export const PackageTitleMessage = ({ + verbose, + result, + packageName, + checkCount, +}: { + verbose: boolean; + result: 'pass' | 'fail'; + packageName: string; + checkCount: number; +}) => { + return ( + + {result === 'fail' || verbose ? ( + + ) : ( + + )} + {packageName} + {`(${checkCount})`} + + ); +}; + +export const AutoFixMessage = ({ + autoFixCount, + onAccept = () => {}, +}: { + autoFixCount: number; + onAccept: () => void; +}) => { + const { exit } = useApp(); + + useInput((input, key) => { + if (input.toLocaleLowerCase() === 'y' || key.return) { + onAccept(); + } else if (key.escape || input === 'n') { + exit(); + } + }); + + return ( + + {`Found ${autoFixCount} fixable issues, run fix functions?`} + + press + y + or + enter + to run conformers + + + press + n + or + esc + to exit + + + ); +}; + +export const CheckSpinner = () => ( + + + + + Running checks... + +); + +export const CheckResultMessage = ({ + isValid, + message, +}: { + isValid: boolean; + message: string; +}) => { + return ( + + + {isValid ? '✓' : '✘'} {message} + + + ); +}; + +export const ConformRunner = ({ + verbose, + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + onError = () => {}, +}: { + verbose: boolean; + conformersByPattern: Record; + rootDirectory: string; + workspaces: Workspace[]; + tagsData: TagsData[]; + onError?: (error: Error) => void; +}) => { + const [autoFixRunCount, setAutoFixRunCount] = useState(0); + const { data, refetch, status, isLoading, error } = useAsyncFn(async () => { + return await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson, + createYaml, + createText, + }); + }); + + const results = data ?? []; + + const resultsByPackageName: Record = {}; + for (const result of results) { + const packageName = result.workspace.packageJson.name as string; + if (!resultsByPackageName[packageName]) { + resultsByPackageName[packageName] = []; + } + resultsByPackageName[packageName].push(result); + } + + const packageNames = Object.keys(resultsByPackageName).sort(); + + const getFailPackageCount = () => { + let failPackageCount = 0; + for (const packageName of packageNames) { + const packageResults = resultsByPackageName[packageName]; + if (packageResults.some((result) => !result.isValid)) { + failPackageCount++; + } + } + return failPackageCount; + }; + const failPackageCount = getFailPackageCount(); + + const failCheckCount = results.filter((result) => !result.isValid).length; + + const autoFixCount = results.filter( + (result) => !result.isValid && result.fix, + ).length; + + if (error) { + onError(error); + + return; + } + + if (isLoading) { + return ; + } + + return ( + + + + {packageNames.map((packageName, index) => { + const checkResults = resultsByPackageName[packageName]; + const hasInvalidResults = checkResults.some( + (result) => !result.isValid, + ); + + return ( + + + + {checkResults.map((checkResult, index) => { + return !checkResult.isValid || verbose ? ( + + ) : undefined; + })} + + + ); + })} + + + {isLoading ? undefined : ( + + + + + + + + + )} + {autoFixCount > 0 && failPackageCount > 0 && !isLoading ? ( + + { + await runFixes({ + rootDirectory, + workspaces, + conformanceResults: results, + createYaml, + createJson, + createText, + }); + + setAutoFixRunCount(autoFixRunCount + 1); + await refetch(); + }} + /> + + ) : undefined} + {failPackageCount === 0 && autoFixRunCount > 0 ? ( + Successfully fixed issues + ) : undefined} + + ); +}; + +export const ConformCommand = ({ + verbose = false, + rootDirectory, +}: { + verbose: boolean; + rootDirectory: string; +}) => { + return ( + + }> + {({ conformers }) => { + return ( + }> + {({ workspaces }) => ( + }> + {({ tagsData }) => ( + { + process.exit(1); + }} + /> + )} + + )} + + ); + }} + + + ); +}; + +export const conform = command + .name('conform') + .description('Run conforming functions against your project') + .option('--verbose', 'Show the result of all conformance checks') + .action(async (options: { verbose: boolean }) => { + const rootDirectory = await getRootDirectory(); + + render( + , + ); + }); diff --git a/packages/commonality/src/cli/commands/constrain/constrain.tsx b/packages/commonality/src/cli/commands/constrain/constrain.tsx new file mode 100644 index 00000000..e711814e --- /dev/null +++ b/packages/commonality/src/cli/commands/constrain/constrain.tsx @@ -0,0 +1,334 @@ +import React from 'react'; +import { Command } from 'commander'; +import { getViolations } from '@commonalityco/data-violations'; +import { + Constraint, + Dependency, + Package, + ProjectConfig, + TagsData, + Violation, +} from '@commonalityco/types'; +import { Box, render, Text, useApp } from 'ink'; +import { useAsyncFn } from '../../utils/use-async-fn.js'; +import Spinner from 'ink-spinner'; +import { useMemo } from 'react'; +import { CheckTagsData } from '../../components/check-tags-data.js'; +import { CheckDependencies } from '../../components/check-dependencies.js'; +import { CheckConstraints } from '../../components/check-constraints.js'; +import { TotalMessage } from '../../components/total-message.js'; +import { CheckPackages } from '../../components/check-packages.js'; +import { MessagePackageTitle } from '../../components/message-package-title.js'; +import { DependencyMessage } from './dependency-message.js'; +import { formatTagName } from '@commonalityco/utils-core'; + +export const ConstraintSpinner = () => ( + + + + + Validating constraints... + +); + +const command = new Command(); + +function DependencyList({ + dependencies, + violations, + packages, + constraint, + verbose, + filter, +}: { + dependencies: Dependency[]; + packages: Package[]; + violations: Violation[]; + constraint: Constraint; + verbose: boolean; + filter: string; +}) { + if (dependencies.length === 0) { + return ( + + + + {' PASS '} + + {filter === '*' ? 'All packages' : formatTagName(filter)} + + + No matching dependencies + + + ); + } + + return dependencies.map((dependency) => { + const violationForDependency = violations.find( + (violation) => + violation.targetPackageName === dependency.target && + violation.sourcePackageName === dependency.source, + ); + const targetPackage = packages.find( + (pkg) => pkg.name === dependency.target, + ); + + if (!violationForDependency && !verbose) { + return; + } + + if (!targetPackage) { + return; + } + + return ( + + ); + }); +} + +function ConstraintList({ + dependencies, + constraints, + violations, + verbose, + packages, +}: { + packages: Package[]; + dependencies: Dependency[]; + violations: Violation[]; + constraints: Array<[string, Constraint]>; + verbose: boolean; +}) { + if (constraints.length === 0 && verbose) { + return ( + + No constraints + + ); + } + + if (dependencies.length === 0 && verbose && constraints.length === 0) { + return ( + + No local dependencies + + ); + } + + const sortedConstraints = constraints.sort((a, b) => (a < b ? -1 : 0)); + + return sortedConstraints.map(([key, constraint]) => { + return ( + + + + + + ); + }); +} + +export function ConstraintValidator({ + constraints = {}, + tagsData = [], + dependencies = [], + packages = [], + verbose, +}: { + constraints: ProjectConfig['constraints']; + packages: Package[]; + tagsData: TagsData[]; + dependencies: Dependency[]; + verbose: boolean; +}) { + const { exit } = useApp(); + const { data, isLoading, error } = useAsyncFn(async () => { + return await getViolations({ + dependencies, + constraints, + tagsData, + }); + }); + + const violations = data ?? []; + + const violationsByPackageName = useMemo(() => { + if (!violations) { + return {}; + } + + const acc: Record = {}; + for (const violation of violations) { + if (!acc[violation.sourcePackageName]) { + acc[violation.sourcePackageName] = []; + } + acc[violation.sourcePackageName].push(violation); + } + return acc; + }, [violations]); + + const constraintsByPackage: Record< + string, + ProjectConfig['constraints'] | Record + > = useMemo(() => { + const acc: + | Record + | Record = {}; + const tagsDataByPackageName = new Map( + tagsData.map((data) => [data.packageName, data.tags]), + ); + + for (const filter of Object.keys(constraints)) { + for (const [packageName, tags] of tagsDataByPackageName.entries()) { + if (tags.includes(filter)) { + if (!acc[packageName]) { + acc[packageName] = {}; + } + + acc[packageName]![filter] = constraints[filter]; + } + } + } + return acc; + }, [constraints, tagsData]); + + const constraintsWithViolationCount = Object.keys(constraints).filter( + (filter) => violations.some((violation) => violation.appliedTo === filter), + ).length; + + const packageNames = Object.keys(violationsByPackageName); + + if (error) { + exit(error); + return; + } + + if (isLoading) { + return ; + } + + return ( + + + {packages.map((pkg) => { + const violationsForPackage = violations.filter( + (violation) => violation.sourcePackageName === pkg.name, + ); + const constraintsForPackage: ProjectConfig['constraints'] = + constraintsByPackage[pkg.name] ?? {}; + const shownConstraints: Array<[string, Constraint]> = Object.keys( + constraintsForPackage, + ) + .filter((filter) => { + if (verbose) { + return true; + } + + const matchingViolations = violationsForPackage.filter( + (violation) => violation.appliedTo === filter, + ); + + return matchingViolations.length; + }) + .map((filter) => [filter, constraints[filter]]); + + const dependenciesForPackage = dependencies + .filter((dep) => dep.source === pkg.name) + .sort((a, b) => a.target.localeCompare(b.target)); + + const result = violationsForPackage.length > 0 ? 'fail' : 'pass'; + + const itemCount = + dependenciesForPackage.length * shownConstraints.length; + + return ( + + 0} + /> + + + ); + })} + + + + + + + ); +} + +function ConstraintCommandHandler({ verbose }: { verbose: boolean }) { + return ( + }> + {({ constraints }) => ( + }> + {({ tagsData }) => ( + }> + {({ dependencies }) => ( + + {({ packages }) => ( + + )} + + )} + + )} + + )} + + ); +} + +export const constrain = command + .name('constrain') + .description('Validate that local dependencies adhere to your constraints') + .option('--verbose', 'Show the result of all conformance checks') + .action(async (options: { verbose: boolean }) => { + render(); + }); diff --git a/packages/commonality/src/cli/commands/constrain/dependency-message.tsx b/packages/commonality/src/cli/commands/constrain/dependency-message.tsx new file mode 100644 index 00000000..cbe55bbe --- /dev/null +++ b/packages/commonality/src/cli/commands/constrain/dependency-message.tsx @@ -0,0 +1,86 @@ +import { Constraint, Package, Violation } from '@commonalityco/types'; +import { DependencyType, formatTagName } from '@commonalityco/utils-core'; +import { Box, Text } from 'ink'; +import React from 'react'; + +export function DependencyMessage({ + isValid, + violation, + constraint, + targetPkg, + type, + filter, +}: { + isValid: boolean; + type: DependencyType; + targetPkg: Package; + filter: string; + constraint: Constraint; + violation?: Violation; +}) { + const color = isValid ? 'green' : 'red'; + const width = 'disallow' in constraint ? 11 : 8; + + return ( + + + + {isValid ? ' PASS ' : ' FAIL '} + + + + {filter === '*' ? 'All packages' : formatTagName(filter)} + + + + -→ + + {targetPkg.name} + {`${type}`} + + {violation?.found ? ( + + {`${targetPkg.path}/commonality.json`} + + ) : undefined} + + {'allow' in constraint ? ( + + + Allowed: + + + {constraint.allow === '*' + ? 'All packages' + : constraint.allow.map((tag) => formatTagName(tag))} + + + ) : undefined} + {'disallow' in constraint ? ( + + + Disallowed: + + + {constraint.disallow === '*' + ? 'All packages' + : constraint.disallow.map((tag) => formatTagName(tag))} + + + ) : undefined} + {violation?.found ? ( + + + Found: + + + {violation.found + ? violation.found.map((tag) => formatTagName(tag)) + : 'No tags'} + + + ) : undefined} + + + ); +} diff --git a/packages/commonality/src/commands/init.ts b/packages/commonality/src/cli/commands/init.ts similarity index 100% rename from packages/commonality/src/commands/init.ts rename to packages/commonality/src/cli/commands/init.ts diff --git a/packages/commonality/src/commands/link.ts b/packages/commonality/src/cli/commands/link.ts similarity index 57% rename from packages/commonality/src/commands/link.ts rename to packages/commonality/src/cli/commands/link.ts index 5c79d463..b622cc97 100644 --- a/packages/commonality/src/commands/link.ts +++ b/packages/commonality/src/cli/commands/link.ts @@ -1,6 +1,8 @@ import { Command } from 'commander'; -import { getRootDirectory } from '@commonalityco/data-project'; -import path from 'node:path'; +import { + getProjectConfig, + getRootDirectory, +} from '@commonalityco/data-project'; import fs from 'fs-extra'; import { validateProjectStructure } from '../utils/validate-project-structure.js'; import chalk from 'chalk'; @@ -15,27 +17,23 @@ export const linkAction = async (options: { project: string }) => { }); const rootDirectory = await getRootDirectory(); - const projectConfigPath = path.join( - rootDirectory, - '.commonality/config.json', - ); - - const hasConfigFile = await fs.exists(projectConfigPath); - - if (hasConfigFile) { - const existingConfig = await fs.readJson(projectConfigPath); - await fs.writeJson(projectConfigPath, { - ...existingConfig, - projectId: options.project, - }); - } else { - await fs.outputJson(projectConfigPath, { - projectId: options.project, - }); - } + const projectConfig = await getProjectConfig({ rootDirectory }); + + if (!projectConfig) return; + + const hasConfig = projectConfig && !projectConfig.isEmpty; + + await (hasConfig + ? fs.writeJson(projectConfig.filepath, { + ...projectConfig.config, + projectId: options.project, + }) + : fs.outputJson(projectConfig?.filepath, { + projectId: options.project, + })); console.log(chalk.green.bold('Successfully updated configuration file')); - console.log(chalk.dim(projectConfigPath)); + console.log(chalk.dim(projectConfig.filepath)); } catch (error) { console.log(error); command.error('Failed to link project'); diff --git a/packages/commonality/src/commands/publish.ts b/packages/commonality/src/cli/commands/publish.ts similarity index 90% rename from packages/commonality/src/commands/publish.ts rename to packages/commonality/src/cli/commands/publish.ts index 35e35cd6..1e831ff2 100644 --- a/packages/commonality/src/commands/publish.ts +++ b/packages/commonality/src/cli/commands/publish.ts @@ -12,7 +12,6 @@ import { getDocumentsData } from '@commonalityco/data-documents'; import { getCodeownersData } from '@commonalityco/data-codeowners'; import { getViolations } from '@commonalityco/data-violations'; import got, { HTTPError } from 'got'; -import path from 'node:path'; const command = new Command(); @@ -21,9 +20,7 @@ export const actionHandler = async ({ snapshot, key, action, - rootDirectory, }: { - rootDirectory: string; apiOrigin: string; key?: string; snapshot: SnapshotData; @@ -32,12 +29,9 @@ export const actionHandler = async ({ const { default: ora } = await import('ora'); if (!snapshot.projectConfig.projectId) { - const configPath = path.join(rootDirectory, '.commonality/config.json'); - action.error( chalk.red.bold('No projectId found') + - `\nYou must include a projectId in your project configuration` + - `\n${chalk.dim(configPath)}`, + `\nYou must include a projectId in your project configuration`, ); return; } @@ -104,18 +98,25 @@ export const publish = command '--cwd ', "A relative path to the root of your monorepo. We will attempt to automatically detect this by looking for your package manager's lockfile.", ) - .action(async (options: { key: string }) => { + .action(async (options: { key: string; cwd?: string }) => { + const projectConfig = await getProjectConfig({ + rootDirectory: options.cwd, + }); + + if (!projectConfig || projectConfig.isEmpty) { + return; + } + const rootDirectory = await getRootDirectory(); const packages = await getPackages({ rootDirectory }); const documentsData = await getDocumentsData({ rootDirectory }); - const projectConfig = await getProjectConfig({ rootDirectory }); const dependencies = await getDependencies({ rootDirectory }); const codeownersData = await getCodeownersData({ rootDirectory, packages }); const tagsData = await getTagsData({ rootDirectory, packages }); const violations = await getViolations({ - constraints: projectConfig.constraints, + constraints: projectConfig.config.constraints, dependencies, tagsData, }); @@ -123,7 +124,7 @@ export const publish = command const snapshot = { packages, violations, - projectConfig, + projectConfig: projectConfig.config, documentsData, codeownersData, tagsData, @@ -131,7 +132,6 @@ export const publish = command } satisfies SnapshotData; await actionHandler({ - rootDirectory, key: options.key, action: command, snapshot, diff --git a/packages/commonality/src/commands/studio.ts b/packages/commonality/src/cli/commands/studio.ts similarity index 97% rename from packages/commonality/src/commands/studio.ts rename to packages/commonality/src/cli/commands/studio.ts index fc869268..05a83091 100644 --- a/packages/commonality/src/commands/studio.ts +++ b/packages/commonality/src/cli/commands/studio.ts @@ -40,7 +40,7 @@ export const studio = command const isDebug = Boolean(options.debug); try { - const pathToStudio = path.resolve(__dirname, './studio'); + const pathToStudio = path.resolve(__dirname, '../studio'); const studioExists = await fs.exists(pathToStudio); if (!studioExists) { diff --git a/packages/commonality/src/cli/components/check-conformers.tsx b/packages/commonality/src/cli/components/check-conformers.tsx new file mode 100644 index 00000000..d8aba74b --- /dev/null +++ b/packages/commonality/src/cli/components/check-conformers.tsx @@ -0,0 +1,53 @@ +import { Text } from 'ink'; +import { ErrorMessage } from './error-message.js'; +import { Conformer } from '@commonalityco/types'; +import React from 'react'; +import { + getProjectConfig, + getRootDirectory, +} from '@commonalityco/data-project'; +import { useAsyncFn } from '../utils/use-async-fn.js'; + +export const CheckConformers = ({ + children, + loadingMessage = Loading..., +}: { + loadingMessage: React.ReactNode; + children: (options: { + conformers: Record; + }) => React.ReactNode; +}) => { + const { data, error, isLoading, isError } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + const projectConfig = await getProjectConfig({ rootDirectory }); + return projectConfig; + }); + + const isValid = !data?.isEmpty && data?.config; + + if (isError) { + return ( + + ); + } + + if (isLoading) { + return loadingMessage; + } + + if (!isValid) { + return No project configuration found; + } + + if ( + !data.config.conformers || + Object.keys(data.config.conformers).length === 0 + ) { + return No checks found; + } + + return children({ conformers: data.config.conformers }); +}; diff --git a/packages/commonality/src/cli/components/check-constraints.tsx b/packages/commonality/src/cli/components/check-constraints.tsx new file mode 100644 index 00000000..a4c5d3b7 --- /dev/null +++ b/packages/commonality/src/cli/components/check-constraints.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { + getProjectConfig, + getRootDirectory, +} from '@commonalityco/data-project'; +import { Text, useApp } from 'ink'; +import { useAsyncFn } from '../utils/use-async-fn.js'; +import { ProjectConfig } from '@commonalityco/types'; + +export const CheckConstraints = ({ + children, + loadingMessage = Loading..., +}: { + children: (options: { + constraints: ProjectConfig['constraints']; + }) => React.ReactNode; + loadingMessage?: React.ReactNode; +}) => { + const { exit } = useApp(); + const { data, error, isLoading } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + const projectConfig = await getProjectConfig({ rootDirectory }); + return projectConfig; + }); + + const isValid = !data?.isEmpty && data?.config; + + if (error) { + exit(error); + return; + } + + if (isLoading) { + return loadingMessage; + } + + if (!isValid) { + return No project configuration found; + } + + if ( + !data.config.constraints || + Object.keys(data.config.constraints).length === 0 + ) { + return No checks found; + } + + return children({ constraints: data.config.constraints }); +}; diff --git a/packages/commonality/src/cli/components/check-dependencies.tsx b/packages/commonality/src/cli/components/check-dependencies.tsx new file mode 100644 index 00000000..89550c0c --- /dev/null +++ b/packages/commonality/src/cli/components/check-dependencies.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { getDependencies } from '@commonalityco/data-packages'; +import { getRootDirectory } from '@commonalityco/data-project'; +import { ErrorMessage } from './error-message.js'; +import { Text } from 'ink'; +import { Dependency } from '@commonalityco/types'; +import { useAsyncFn } from '../utils/use-async-fn.js'; + +export const CheckDependencies = ({ + children, + loadingMessage = Loading..., +}: { + children: (options: { dependencies: Dependency[] }) => React.ReactNode; + loadingMessage?: React.ReactNode; +}) => { + const { + data: dependencies, + error, + isLoading, + isError, + } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + + return await getDependencies({ rootDirectory }); + }); + + if (isError) { + return ; + } + + if (isLoading) { + return loadingMessage; + } + + if (!dependencies?.length || dependencies.length === 0) { + return There are no internal dependencies in this project; + } + + return children({ dependencies }); +}; diff --git a/packages/commonality/src/cli/components/check-packages.tsx b/packages/commonality/src/cli/components/check-packages.tsx new file mode 100644 index 00000000..555a2998 --- /dev/null +++ b/packages/commonality/src/cli/components/check-packages.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { getRootDirectory } from '@commonalityco/data-project'; +import { ErrorMessage } from './error-message.js'; +import { Text } from 'ink'; +import { useAsyncFn } from '../utils/use-async-fn.js'; +import { Package } from '@commonalityco/types'; +import { getPackages } from '@commonalityco/data-packages'; + +export const CheckPackages = ({ + children, + loadingMessage = Loading..., +}: { + children: (options: { packages: Package[] }) => React.ReactNode; + loadingMessage?: React.ReactNode; +}) => { + const { + data: packages, + error, + isLoading, + isError, + } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + const packages = await getPackages({ rootDirectory }); + return packages; + }); + + if (isError) { + return ; + } + + if (isLoading) { + return loadingMessage; + } + + if (!packages || packages.length === 0) { + return No packages found in project; + } + + return children({ packages }); +}; diff --git a/packages/commonality/src/cli/components/check-tags-data.tsx b/packages/commonality/src/cli/components/check-tags-data.tsx new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/packages/commonality/src/cli/components/check-tags-data.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { getPackages } from '@commonalityco/data-packages'; +import { getRootDirectory } from '@commonalityco/data-project'; +import { getTagsData } from '@commonalityco/data-tags'; +import { ErrorMessage } from './error-message.js'; +import { Text } from 'ink'; +import { TagsData } from '@commonalityco/types'; +import { useAsyncFn } from '../utils/use-async-fn.js'; + +export const CheckTagsData = ({ + children, + loadingMessage = Loading..., +}: { + children: (options: { tagsData: TagsData[] }) => React.ReactNode; + loadingMessage?: React.ReactNode; +}) => { + const { data, error, isLoading, isError } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + const packages = await getPackages({ + rootDirectory, + }); + + return await getTagsData({ + rootDirectory, + packages: packages, + }); + }); + + if (isError) { + return ; + } + + if (isLoading) { + return loadingMessage; + } + + if (!data?.length || data.length === 0) { + return No tags found; + } + + return children({ tagsData: data }); +}; diff --git a/packages/commonality/src/cli/components/check-workspaces.tsx b/packages/commonality/src/cli/components/check-workspaces.tsx new file mode 100644 index 00000000..457e483b --- /dev/null +++ b/packages/commonality/src/cli/components/check-workspaces.tsx @@ -0,0 +1,36 @@ +import { getRootDirectory } from '@commonalityco/data-project'; +import { Workspace } from '@commonalityco/types'; +import { ErrorMessage } from './error-message.js'; +import { Text } from 'ink'; +import React from 'react'; +import { useAsyncFn } from '../utils/use-async-fn.js'; +import { getWorkspaces } from '@commonalityco/data-workspaces'; + +export const CheckWorkspaces = ({ + loadingMessage, + children, +}: { + loadingMessage: React.ReactNode; + children: (options: { workspaces: Workspace[] }) => React.ReactNode; +}) => { + const { data, error, isLoading, isError } = useAsyncFn(async () => { + const rootDirectory = await getRootDirectory(); + return await getWorkspaces({ + rootDirectory, + }); + }); + + if (isError) { + return ; + } + + if (isLoading) { + return loadingMessage; + } + + if (!data?.length || data.length === 0) { + return No packages found; + } + + return children({ workspaces: data }); +}; diff --git a/packages/commonality/src/cli/components/error-message.tsx b/packages/commonality/src/cli/components/error-message.tsx new file mode 100644 index 00000000..772da0cd --- /dev/null +++ b/packages/commonality/src/cli/components/error-message.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { Box, Text } from 'ink'; + +export const ErrorMessage = ({ + error, + title, +}: { + error?: Error; + title: string; +}) => ( + <> + + Error + {title} + + {error ? ( + + {String(error.name)} + {String(error.message)} + + ) : undefined} + +); diff --git a/packages/commonality/src/cli/components/message-package-title.tsx b/packages/commonality/src/cli/components/message-package-title.tsx new file mode 100644 index 00000000..504b029d --- /dev/null +++ b/packages/commonality/src/cli/components/message-package-title.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { Package } from '@commonalityco/types'; +import { Box, Text } from 'ink'; + +export const MessagePackageTitle = ({ + verbose, + result, + pkg, + countMessage, +}: { + verbose: boolean; + result: 'pass' | 'fail'; + countMessage: string; + pkg: Package; +}) => { + const isExpanded = result === 'fail' || verbose; + + return ( + + + {isExpanded ? ( + + ) : ( + + )} + + {pkg.name} + + {countMessage} + + {isExpanded && result === 'fail' ? ( + + {`${pkg.path}/commonality.json`} + + ) : undefined} + + ); +}; diff --git a/packages/commonality/src/cli/components/total-message.tsx b/packages/commonality/src/cli/components/total-message.tsx new file mode 100644 index 00000000..890dcaa9 --- /dev/null +++ b/packages/commonality/src/cli/components/total-message.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Box, Text } from 'ink'; + +export const TotalMessage = ({ + title, + totalCount, + passCount, + failCount, +}: { + title: string; + totalCount: number; + passCount: number; + failCount: number; +}) => { + return ( + + {title} + 0 ? 'red' : undefined} + dimColor={failCount === 0} + >{`${failCount} failed`} + 0 ? 'green' : undefined} + dimColor={passCount === 0} + >{`${passCount} passed`} + {`(${totalCount})`} + + ); +}; diff --git a/packages/commonality/src/cli/utils/use-async-fn.ts b/packages/commonality/src/cli/utils/use-async-fn.ts new file mode 100644 index 00000000..2cf357b9 --- /dev/null +++ b/packages/commonality/src/cli/utils/use-async-fn.ts @@ -0,0 +1,86 @@ +import { useReducer, useEffect, useRef, useCallback } from 'react'; + +type State = { + status: 'loading' | 'success' | 'error'; + data: T | undefined; + error: Error | undefined; + isLoading: boolean; + isSuccess: boolean; + isError: boolean; + refetch: () => Promise; +}; + +type Action = + | { type: 'LOADING' } + | { type: 'SUCCESS'; data: T } + | { type: 'ERROR'; error: Error }; + +function reducer(state: State, action: Action): State { + switch (action.type) { + case 'LOADING': { + return { + ...state, + status: 'loading', + isLoading: true, + isSuccess: false, + isError: false, + }; + } + case 'SUCCESS': { + return { + ...state, + status: 'success', + data: action.data, + isLoading: false, + isSuccess: true, + isError: false, + }; + } + case 'ERROR': { + return { + ...state, + status: 'error', + error: action.error, + isLoading: false, + isSuccess: false, + isError: true, + }; + } + default: { + return state; + } + } +} + +export function useAsyncFn(asyncFn: () => Promise): State { + const intialState: State = { + status: 'loading', + data: undefined, + error: undefined, + isLoading: true, + isSuccess: false, + isError: false, + refetch: async () => {}, + }; + const [state, dispatch] = useReducer(reducer, intialState); + + const asyncFnRef = useRef(asyncFn); + asyncFnRef.current = asyncFn; + + const executeAsyncFn = useCallback(async () => { + dispatch({ type: 'LOADING' }); + + try { + const data = await asyncFnRef.current(); + dispatch({ type: 'SUCCESS', data }); + } catch (error) { + dispatch({ type: 'ERROR', error: error as Error }); + } + }, []); + + useEffect(() => { + executeAsyncFn(); + }, [executeAsyncFn]); + + return { ...state, refetch: executeAsyncFn }; +} diff --git a/packages/commonality/src/utils/validate-project-structure.ts b/packages/commonality/src/cli/utils/validate-project-structure.ts similarity index 100% rename from packages/commonality/src/utils/validate-project-structure.ts rename to packages/commonality/src/cli/utils/validate-project-structure.ts diff --git a/packages/commonality/src/commands/validate.ts b/packages/commonality/src/commands/validate.ts deleted file mode 100644 index 94b75df0..00000000 --- a/packages/commonality/src/commands/validate.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { - getProjectConfig, - getRootDirectory, -} from '@commonalityco/data-project'; -import { getDependencies, getPackages } from '@commonalityco/data-packages'; -import { getTagsData } from '@commonalityco/data-tags'; -import { Command } from 'commander'; -import { getViolations } from '@commonalityco/data-violations'; -import chalk from 'chalk'; -import path from 'node:path'; -import { formatTagName } from '@commonalityco/utils-core'; -import cliuiUntyped from 'cliui'; -import { ProjectConfig, Violation } from '@commonalityco/types'; - -const cliui = cliuiUntyped as unknown as typeof cliuiUntyped.default; -const ui = cliui({ width: process.stdout.columns }); - -const getText = (application?: string[] | '*'): string => { - if (application === '*') { - return 'All packages'; - } else if (application?.length === 0) { - return 'No tags found'; - } else { - return JSON.stringify(application); - } -}; - -export const validateAction = async ({ - rootDirectory, - projectConfig, - violations, - command, -}: { - rootDirectory: string; - projectConfig: ProjectConfig; - violations: Violation[]; - command: Command; -}) => { - const constraints = projectConfig.constraints; - - if (!constraints) { - ui.div({ - text: 'No constraints found', - padding: [1, 0, 1, 0], - }); - console.log(ui.toString()); - return; - } - - console.log( - `Validating constraints...\n` + - chalk.dim(path.join(rootDirectory, '.commonality/config.json')), - ); - - const constraintsWithViolationCount = constraints.filter((constraint) => - violations.some((violation) => violation.appliedTo === constraint.applyTo), - ).length; - - for (const constraint of constraints) { - const violationsForConstraint = violations.filter( - (violation) => violation.appliedTo === constraint.applyTo, - ); - - const hasViolations = violationsForConstraint.length > 0; - - if (hasViolations) { - const tagText = chalk.inverse( - chalk.red.bold( - ` ${ - constraint.applyTo === '*' - ? getText(constraint.applyTo) - : formatTagName(constraint.applyTo) - } `, - ), - ); - - const violationsText = chalk.red( - `${violationsForConstraint.length} violations`, - ); - console.log(`\n${tagText} ${violationsText}`); - - for (const violation of violationsForConstraint) { - const sourcePackageLink = violation.sourcePackageName; - - const targetPackageLink = violation.targetPackageName; - - ui.div(`${sourcePackageLink} ${chalk.red('→')} ${targetPackageLink}`); - - const allowedText = - violation.allowed.length > 0 - ? `${chalk.dim('Allowed')} \t${getText(violation.allowed)}\n` - : ''; - const disallowedText = - violation.disallowed.length > 0 - ? `${chalk.dim('Disallowed')} \t${getText(violation.disallowed)}\n` - : ''; - const foundText = violation.found - ? `${chalk.red('Found')} \t${getText(violation.found)}\n` - : ''; - - ui.div(allowedText + disallowedText + foundText); - console.log(ui.toString()); - ui.resetOutput(); - } - } else { - const tagText = chalk.green.inverse.bold( - ` ${ - constraint.applyTo === '*' - ? 'All packages' - : formatTagName(constraint.applyTo) - } `, - ); - - console.log(`\n${tagText} ${chalk.dim('No violations')}`); - } - } - ui.resetOutput(); - const constraintPrefix = chalk.dim('Constraints'); - const constraintPrimaryText = constraintsWithViolationCount - ? `${chalk.red.bold(`${constraintsWithViolationCount} failed`)}` - : `${chalk.green.bold(`${constraints.length} passed`)}`; - - const constraintSuffix = chalk.gray(`(${constraints.length})`); - - const violationsText = - violations.length > 0 - ? chalk.red.bold(`${violations.length} violations`) - : chalk.green.bold(`No violations`); - - ui.div( - `\n${constraintPrefix}\t ${constraintPrimaryText} ${constraintSuffix}` + - `\n${chalk.dim('Violations')}\t ${violationsText}`, - ); - - if (violations.length > 0) { - command.error(ui.toString(), { exitCode: 1 }); - } - - console.log(ui.toString()); -}; - -const command = new Command(); - -export const validate = command - .name('validate') - .description('Validate that local dependencies adhere to your constraints') - .action(async () => { - const rootDirectory = await getRootDirectory(); - const packages = await getPackages({ rootDirectory }); - const dependencies = await getDependencies({ rootDirectory }); - const tagsData = await getTagsData({ rootDirectory, packages }); - const projectConfig = await getProjectConfig({ rootDirectory }); - const violations = await getViolations({ - dependencies, - constraints: projectConfig.constraints, - tagsData, - }); - - await validateAction({ - rootDirectory, - projectConfig, - violations, - command, - }); - }); diff --git a/packages/commonality/src/define-config.ts b/packages/commonality/src/define-config.ts new file mode 100644 index 00000000..8aced931 --- /dev/null +++ b/packages/commonality/src/define-config.ts @@ -0,0 +1,5 @@ +import type { ProjectConfig } from '@commonalityco/types'; + +export function defineConfig(config: ProjectConfig) { + return config; +} diff --git a/packages/commonality/src/define-conformer.ts b/packages/commonality/src/define-conformer.ts new file mode 100644 index 00000000..87cf60c3 --- /dev/null +++ b/packages/commonality/src/define-conformer.ts @@ -0,0 +1,5 @@ +import type { ConformerCreator } from '@commonalityco/types'; + +export function defineConformer(conformerCreator: ConformerCreator) { + return conformerCreator; +} diff --git a/packages/commonality/src/index.ts b/packages/commonality/src/index.ts index 7a684322..3d23fec3 100644 --- a/packages/commonality/src/index.ts +++ b/packages/commonality/src/index.ts @@ -1,22 +1,2 @@ -import { Command } from 'commander'; -import { publish } from './commands/publish.js'; -import { init } from './commands/init.js'; -import { validate } from './commands/validate.js'; -import { studio } from './commands/studio.js'; -import { link } from './commands/link.js'; -import packageJson from '../package.json'; - -const program = new Command(); - -program - .name('commonality') - .description('Infinitely scalable front-end ecosystems') - .version(packageJson.version); - -program.addCommand(init); -program.addCommand(publish); -program.addCommand(validate); -program.addCommand(studio); -program.addCommand(link); - -program.parse(process.argv); +export * from './define-config.js'; +export * from './define-conformer.js'; diff --git a/packages/commonality/test/integration/link.test.ts b/packages/commonality/test/integration/link.test.ts index ee7a3097..9844f768 100644 --- a/packages/commonality/test/integration/link.test.ts +++ b/packages/commonality/test/integration/link.test.ts @@ -1,4 +1,4 @@ -import { afterAll, describe, test, expect, beforeEach } from 'vitest'; +import { describe, test, expect } from 'vitest'; import fs from 'fs-extra'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; diff --git a/packages/commonality/test/integration/studio.test.ts b/packages/commonality/test/integration/studio.test.ts index be8081f5..fe844172 100644 --- a/packages/commonality/test/integration/studio.test.ts +++ b/packages/commonality/test/integration/studio.test.ts @@ -19,7 +19,7 @@ describe('studio', () => { await fs.remove(temporaryPath); }); - test('logs the URL to open Commonality Studio', async (done) => { + test('logs the URL to open Commonality Studio', async () => { const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), '../../test/fixtures/kitchen-sink', diff --git a/packages/commonality/test/unit/cli/check-constraints.test.tsx b/packages/commonality/test/unit/cli/check-constraints.test.tsx new file mode 100644 index 00000000..266a51a7 --- /dev/null +++ b/packages/commonality/test/unit/cli/check-constraints.test.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { render, cleanup } from 'ink-testing-library'; +import { afterEach, describe, expect, it } from 'vitest'; +import { CheckConstraints } from '../../../src/cli/components/check-constraints.js'; +import { useAsyncFn } from '../../../src/cli/utils/use-async-fn.js'; +import { vi } from 'vitest'; +import * as ink from 'ink'; +import { ProjectConfig } from '@commonalityco/types'; + +vi.mock('../../../src/cli/utils/use-async-fn.js', () => { + return { useAsyncFn: vi.fn() }; +}); + +vi.mock('ink', async () => { + return { + ...(await vi.importActual('ink')), + useApp: vi.fn().mockReturnValue({}), + }; +}); + +describe('CheckConstraints', () => { + afterEach(() => { + cleanup(); + }); + + it('should render loading message when loading', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'loading', + data: undefined, + error: undefined, + isLoading: true, + isSuccess: false, + isError: false, + refetch: () => Promise.resolve(), + }); + + const { lastFrame } = render( + {() =>
}, + ); + expect(lastFrame()).toContain('Loading...'); + }); + + it('should render no project configuration found when there is no valid data', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: { isEmpty: true }, + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + const { lastFrame } = render( + {() =>
}, + ); + expect(lastFrame()).toContain('No project configuration found'); + }); + + it('should render no checks found when there are no constraints', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: { config: { constraints: {} } satisfies ProjectConfig }, + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + const { lastFrame } = render( + {() =>
}, + ); + expect(lastFrame()).toContain('No checks found'); + }); + + it('should render children when there are constraints', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: { + config: { + constraints: { '*': { allow: ['tag-one'] } }, + } satisfies ProjectConfig, + }, + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + const { lastFrame } = render( + + {() => Test Constraint} + , + ); + const result = lastFrame(); + + expect(result).toContain('Test Constraint'); + }); + + it('should call exit when there is an error', () => { + const exitMock = vi.fn(); + vi.mocked(ink.useApp).mockReturnValue({ exit: exitMock }); + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'error', + data: undefined, + error: new Error('Test Error'), + isLoading: false, + isSuccess: false, + isError: true, + refetch: () => Promise.resolve(), + }); + render({() =>
}); + expect(exitMock).toHaveBeenCalledWith(new Error('Test Error')); + }); +}); diff --git a/packages/commonality/test/unit/cli/conform.test.tsx b/packages/commonality/test/unit/cli/conform.test.tsx new file mode 100644 index 00000000..9c689866 --- /dev/null +++ b/packages/commonality/test/unit/cli/conform.test.tsx @@ -0,0 +1,435 @@ +import React from 'react'; +import { cleanup, render } from 'ink-testing-library'; +import { describe, expect, it, vi } from 'vitest'; +import { ConformRunner } from '../../../src/cli/commands/conform.js'; +import stripAnsi from 'strip-ansi'; +import { beforeEach } from 'node:test'; +import { useAsyncFn } from '../../../src/cli/utils/use-async-fn.js'; +import { ConformanceResult } from '@commonalityco/types'; +import { getConformanceResults } from '@commonalityco/data-conformance'; +import * as ink from 'ink'; +import { runFixes } from '@commonalityco/utils-conformance'; + +vi.mock('../../../src/cli/utils/use-async-fn.js', async () => { + return { + ...(await vi.importActual( + '../../../src/cli/utils/use-async-fn.js', + )), + }; +}); + +vi.mock('ink', async () => ({ + ...(await vi.importActual('ink')), + useInput: vi.fn(), +})); + +vi.mock('@commonalityco/utils-conformance', async () => ({ + runFixes: vi.fn(), +})); + +vi.mock('@commonalityco/data-conformance', async () => ({ + getConformanceResults: vi.fn(), +})); + +type WaitForOptions = { + interval?: number; + timeout?: number; +}; + +async function waitFor( + predicate: () => boolean | Promise, + { interval = 50, timeout = 5000 }: WaitForOptions = {}, +): Promise { + const start = Date.now(); + + const check = async () => { + if (await predicate()) { + return; + } + if (Date.now() - start > timeout) { + throw new Error('waitFor timed out'); + } + await new Promise((resolve) => setTimeout(resolve, interval)); + await check(); + }; + + await check(); +} + +describe('when results are loading', () => { + it('should match the snapshot', () => { + vi.mocked(getConformanceResults).mockResolvedValue([]); + + const { lastFrame } = render( + , + ); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot('"⠋ Running checks..."'); + }); +}); + +describe('when there is an error loading results', () => { + it('should call the onError callback', async () => { + const onError = vi.fn(); + const mockError = new Error('hello'); + + vi.mocked(getConformanceResults).mockRejectedValue(mockError); + + const { lastFrame } = render( + , + ); + + await waitFor(() => { + return lastFrame() === ''; + }); + + expect(onError).toHaveBeenCalledWith(mockError); + }); +}); + +describe('when all checks pass', () => { + describe('and verbose is false', () => { + it('should match the snapshot', async () => { + vi.mocked(getConformanceResults).mockResolvedValue([ + { + name: 'CONFORMER_NAME/ONE', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-one', + }, + }, + message: 'This package is should be cool', + }, + { + name: 'CONFORMER_NAME/TWO', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-two', + }, + }, + message: 'This package is should be cool', + }, + ] satisfies ConformanceResult[]); + + const { lastFrame } = render( + , + ); + + await waitFor(() => { + const result = stripAnsi(lastFrame() ?? ''); + + return !result.includes('Running checks...'); + }); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + " + ✓ pkg-one (1) + ✓ pkg-two (1) + + Packages: 0 failed 2 passed (2) + Checks: 0 failed 2 passed (2)" + `); + }); + }); + + describe('and verbose is true', () => { + it('should match the snapshot', async () => { + vi.mocked(getConformanceResults).mockResolvedValue([ + { + name: 'CONFORMER_NAME/ONE', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-one', + }, + }, + message: 'This package is should be cool', + }, + { + name: 'CONFORMER_NAME/TWO', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-two', + }, + }, + message: 'This package is should be cool', + }, + ] satisfies ConformanceResult[]); + + const { lastFrame } = render( + , + ); + + await waitFor(() => { + const result = stripAnsi(lastFrame() ?? ''); + + return !result.includes('Running checks...'); + }); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + " + ❯ pkg-one (1) + ✓ This package is should be cool + ❯ pkg-two (1) + ✓ This package is should be cool + + Packages: 0 failed 2 passed (2) + Checks: 0 failed 2 passed (2)" + `); + }); + }); +}); + +describe('when checks fail', () => { + it('should match the snapshot when verbose is false', async () => { + vi.mocked(getConformanceResults).mockResolvedValue([ + { + name: 'CONFORMER_NAME/ONE', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-one', + }, + }, + message: 'This package is bad', + }, + { + name: 'CONFORMER_NAME/TWO', + pattern: '*', + level: 'warning', + isValid: false, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-two', + }, + }, + message: 'This package is should be cool', + }, + ] satisfies ConformanceResult[]); + + const { lastFrame } = render( + , + ); + + await waitFor(() => { + const result = stripAnsi(lastFrame() ?? ''); + + return !result.includes('Running checks...'); + }); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + " + ✓ pkg-one (1) + ❯ pkg-two (1) + ✘ This package is should be cool + + Packages: 1 failed 1 passed (2) + Checks: 1 failed 1 passed (2)" + `); + }); + + it('should match the snapshot when verbose is true', async () => { + vi.mocked(getConformanceResults).mockResolvedValue([ + { + name: 'CONFORMER_NAME/ONE', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-one', + }, + }, + message: 'This package is bad', + }, + { + name: 'CONFORMER_NAME/TWO', + pattern: '*', + level: 'warning', + isValid: false, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-two', + }, + }, + message: 'This package is should be cool', + }, + ] satisfies ConformanceResult[]); + + const { lastFrame } = render( + , + ); + + await waitFor(() => { + const result = stripAnsi(lastFrame() ?? ''); + + return !result.includes('Running checks...'); + }); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + " + ❯ pkg-one (1) + ✓ This package is bad + ❯ pkg-two (1) + ✘ This package is should be cool + + Packages: 1 failed 1 passed (2) + Checks: 1 failed 1 passed (2)" + `); + }); +}); + +describe('when checks fail with fixable issues', () => { + it('should match the snapshot', async () => { + vi.mocked(getConformanceResults).mockResolvedValue([ + { + name: 'CONFORMER_NAME/ONE', + pattern: '*', + level: 'warning', + isValid: true, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-one', + }, + }, + message: 'This package is bad', + fix: () => {}, + }, + { + name: 'CONFORMER_NAME/TWO', + pattern: '*', + level: 'warning', + isValid: false, + workspace: { + path: '/path', + tags: [], + codeowners: [], + packageJson: { + name: 'pkg-two', + }, + }, + message: 'This package is should be cool', + fix: () => {}, + }, + ] satisfies ConformanceResult[]); + + const { lastFrame, stdout } = render( + , + ); + + await waitFor(() => { + const result = stripAnsi(stdout.lastFrame() ?? ''); + + return !result.includes('Running checks...'); + }); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + " + ✓ pkg-one (1) + ❯ pkg-two (1) + ✘ This package is should be cool + + Packages: 1 failed 1 passed (2) + Checks: 1 failed 1 passed (2) + + Found 1 fixable issues, run fix functions? + press y or enter to run conformers + press n or esc to exit" + `); + }); +}); diff --git a/packages/commonality/test/unit/cli/constrain.test.tsx b/packages/commonality/test/unit/cli/constrain.test.tsx new file mode 100644 index 00000000..30f8336c --- /dev/null +++ b/packages/commonality/test/unit/cli/constrain.test.tsx @@ -0,0 +1,496 @@ +import React from 'react'; +import { render, cleanup } from 'ink-testing-library'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { ConstraintValidator } from '../../../src/cli/commands/constrain/constrain.js'; +import { useAsyncFn } from '../../../src/cli/utils/use-async-fn.js'; +import { DependencyType, PackageType } from '@commonalityco/utils-core'; +import stripAnsi from 'strip-ansi'; +import { Violation } from '@commonalityco/types'; +import * as ink from 'ink'; +import * as dataViolations from '@commonalityco/data-violations'; + +vi.mock('../../../src/cli/utils/use-async-fn.js', () => { + return { useAsyncFn: vi.fn().mockReturnValue({}) }; +}); + +vi.mock('@commonalityco/data-violations', async () => ({ + ...(await vi.importActual( + '@commonalityco/data-violations', + )), + getViolations: vi.fn(), +})); + +vi.mock('ink', async () => ({ + ...(await vi.importActual('ink')), +})); + +describe('constrain', () => { + beforeEach(() => { + cleanup(); + }); + + describe('when encountering an error', () => { + it('exits the app with the error', () => { + const mockError = new Error('Hello'); + const mockExit = vi.fn(); + + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'error', + data: undefined, + error: mockError, + isLoading: false, + isSuccess: false, + isError: true, + refetch: () => Promise.resolve(), + }); + + vi.spyOn(ink, 'useApp').mockReturnValue({ exit: mockExit }); + + const { lastFrame } = render( + , + ); + const result = lastFrame() ?? ''; + + expect(result).toBe(''); + expect(mockExit).toHaveBeenCalled(); + }); + }); + + describe('when loading', () => { + it('renders the loading spinner', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'loading', + data: undefined, + error: undefined, + isLoading: true, + isSuccess: false, + isError: false, + refetch: () => Promise.resolve(), + }); + + const { lastFrame } = render( + , + ); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot('"⠋ Validating constraints..."'); + }); + }); + + describe('when all tests pass', () => { + const renderComponent = ({ verbose }: { verbose: boolean }) => + render( + , + ); + + describe('and verbose is false', () => { + it('matches the snapshot', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: [], + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + + const { lastFrame } = renderComponent({ verbose: false }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "✓ pkg-one (0) + ✓ pkg-two (0) + + Packages: 0 failed 2 passed (2) + Constraints: 0 failed 1 passed (1)" + `); + }); + }); + + describe('and verbose is true', () => { + it('matches the snapshot', () => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: [], + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + + const { lastFrame } = renderComponent({ verbose: true }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "❯ pkg-one (1) + PASS #tag-one -→ pkg-two development + Allowed: All packages + + ✓ pkg-two (0) + No constraints + + + Packages: 0 failed 2 passed (2) + Constraints: 0 failed 1 passed (1)" + `); + }); + }); + }); + + describe('when tests fail', () => { + const renderComponent = ({ verbose }: { verbose: boolean }) => + render( + , + ); + + beforeEach(() => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: [ + { + sourcePackageName: 'pkg-one', + targetPackageName: 'pkg-three', + appliedTo: 'tag-one', + allowed: [], + disallowed: ['tag-three'], + }, + ] satisfies Violation[], + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + }); + + describe('and verbose is false', () => { + it('matches the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: false }); + + const result = stripAnsi(lastFrame() ?? ''); + cleanup(); + expect(result).toMatchInlineSnapshot(` + "❯ pkg-one (2) + /path/commonality.json + + FAIL #tag-one -→ pkg-three development + Disallowed: #tag-three + + ✓ pkg-two (0) + ✓ pkg-three (0) + + Packages: 1 failed 2 passed (3) + Constraints: 1 failed 1 passed (2)" + `); + }); + }); + + describe('and verbose is true', () => { + it('matches the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: true }); + + const result = stripAnsi(lastFrame() ?? ''); + cleanup(); + expect(result).toMatchInlineSnapshot(` + "❯ pkg-one (4) + /path/commonality.json + + PASS #tag-one -→ pkg-two development + Disallowed: #tag-three + + FAIL #tag-one -→ pkg-three development + Disallowed: #tag-three + + PASS #tag-two -→ pkg-two development + Disallowed: #tag-five + + FAIL #tag-two -→ pkg-three development + Disallowed: #tag-five + + ✓ pkg-two (0) + No constraints + + ✓ pkg-three (0) + No constraints + + + Packages: 1 failed 2 passed (3) + Constraints: 1 failed 1 passed (2)" + `); + }); + }); + }); + + describe('when there are no constraints', () => { + beforeEach(() => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: [], + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + }); + + const renderComponent = ({ verbose }: { verbose: boolean }) => + render( + , + ); + + describe('and verbose is false', () => { + it('should match the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: false }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "✓ pkg-one (0) + ✓ pkg-two (0) + ✓ pkg-three (0) + + Packages: 0 failed 3 passed (3) + Constraints: 0 failed 0 passed (0)" + `); + }); + }); + + describe('and verbose is true', () => { + it('should match the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: true }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "✓ pkg-one (0) + No constraints + + ✓ pkg-two (0) + No constraints + + ✓ pkg-three (0) + No constraints + + + Packages: 0 failed 3 passed (3) + Constraints: 0 failed 0 passed (0)" + `); + }); + }); + }); + + describe('when there are no dependencies for a package', () => { + beforeEach(() => { + vi.mocked(useAsyncFn).mockReturnValue({ + status: 'success', + data: [], + error: undefined, + isLoading: false, + isSuccess: true, + isError: false, + refetch: () => Promise.resolve(), + }); + }); + + const renderComponent = ({ verbose }: { verbose: boolean }) => + render( + , + ); + + describe('and verbose is false', () => { + it('matches the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: false }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "✓ pkg-one (0) + ✓ pkg-two (0) + ✓ pkg-three (0) + + Packages: 0 failed 3 passed (3) + Constraints: 0 failed 2 passed (2)" + `); + }); + }); + + describe('and verbose is true', () => { + it('matches the snapshot', () => { + const { lastFrame } = renderComponent({ verbose: true }); + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toMatchInlineSnapshot(` + "✓ pkg-one (0) + + PASS #tag-one + No matching dependencies + + + PASS #tag-two + No matching dependencies + + ✓ pkg-two (0) + No constraints + + ✓ pkg-three (0) + No constraints + + + Packages: 0 failed 3 passed (3) + Constraints: 0 failed 2 passed (2)" + `); + }); + }); + }); +}); diff --git a/packages/commonality/test/unit/cli/dependency-message.test.tsx b/packages/commonality/test/unit/cli/dependency-message.test.tsx new file mode 100644 index 00000000..c7fb1461 --- /dev/null +++ b/packages/commonality/test/unit/cli/dependency-message.test.tsx @@ -0,0 +1,91 @@ +import React from 'react'; +import { DependencyType, PackageType } from '@commonalityco/utils-core'; +import { render } from 'ink-testing-library'; +import { describe, expect, it } from 'vitest'; +import { DependencyMessage } from '../../../src/cli/commands/constrain/dependency-message.js'; +import stripAnsi from 'strip-ansi'; + +describe('DependencyMessage', () => { + it('should render correctly when isValid is true', () => { + const { lastFrame } = render( + , + ); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toContain('PASS All packages -→ test-package development'); + expect(result).toContain('Allowed: All packages'); + }); + + it('should render correctly when isValid is false and violation is found', () => { + const { lastFrame } = render( + , + ); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toContain('FAIL #tag-one -→ test-package development'); + expect(result).toContain('Disallowed: All packages'); + expect(result).toContain('Found: #tag-one'); + }); + + it('should render correctly when isValid is false and violation is not found', () => { + const { lastFrame } = render( + , + ); + + const result = stripAnsi(lastFrame() ?? ''); + + expect(result).toContain('FAIL All packages -→ test-package development'); + expect(result).toContain('Disallowed: All packages'); + }); +}); diff --git a/packages/commonality/test/unit/publish.test.ts b/packages/commonality/test/unit/cli/publish.test.ts similarity index 94% rename from packages/commonality/test/unit/publish.test.ts rename to packages/commonality/test/unit/cli/publish.test.ts index 66fa456e..bdef491c 100644 --- a/packages/commonality/test/unit/publish.test.ts +++ b/packages/commonality/test/unit/cli/publish.test.ts @@ -1,5 +1,5 @@ import { SnapshotData } from '@commonalityco/types'; -import { actionHandler } from '../../src/commands/publish.js'; +import { actionHandler } from '../../../src/cli/commands/publish.js'; import got from 'got'; import { vi, describe, it, afterEach, expect, beforeEach } from 'vitest'; @@ -53,7 +53,6 @@ describe('publish.action', () => { }; await actionHandler({ - rootDirectory: '/path', snapshot, key: 'test-key', apiOrigin: 'https://app.commonality.co', @@ -81,7 +80,6 @@ describe('publish.action', () => { }; await actionHandler({ - rootDirectory: '/path', snapshot, apiOrigin: 'https://app.commonality.co', action, @@ -108,7 +106,6 @@ describe('publish.action', () => { }; await actionHandler({ - rootDirectory: '/path', snapshot, key: 'test-key', apiOrigin: 'https://app.commonality.co', diff --git a/packages/commonality/test/unit/validate-project-structure.test.ts b/packages/commonality/test/unit/cli/validate-project-structure.test.ts similarity index 91% rename from packages/commonality/test/unit/validate-project-structure.test.ts rename to packages/commonality/test/unit/cli/validate-project-structure.test.ts index 9f5a86ea..36e35834 100644 --- a/packages/commonality/test/unit/validate-project-structure.test.ts +++ b/packages/commonality/test/unit/cli/validate-project-structure.test.ts @@ -1,4 +1,4 @@ -import { validateProjectStructure } from '../../src/utils/validate-project-structure.js'; +import { validateProjectStructure } from '../../../src/cli/utils/validate-project-structure.js'; import { Command } from 'commander'; import { describe, @@ -24,7 +24,7 @@ describe('validateProjectStructure', () => { const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/missing-lockfile', + '../../../test/fixtures/missing-lockfile', ); beforeEach(async () => { @@ -58,7 +58,7 @@ describe('validateProjectStructure', () => { const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/missing-root-package', + '../../../test/fixtures/missing-root-package', ); beforeEach(async () => { @@ -94,7 +94,7 @@ describe('validateProjectStructure', () => { const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/invalid-root-package', + '../../../test/fixtures/invalid-root-package', ); beforeEach(async () => { @@ -130,7 +130,7 @@ describe('validateProjectStructure', () => { const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/kitchen-sink', + '../../../test/fixtures/kitchen-sink', ); beforeEach(async () => { @@ -146,7 +146,7 @@ describe('validateProjectStructure', () => { const spy = vi.spyOn(command, 'error'); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/kitchen-sink', + '../../../test/fixtures/kitchen-sink', ); await validateProjectStructure({ @@ -163,7 +163,7 @@ describe('validateProjectStructure', () => { const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/kitchen-sink/packages/pkg-one', + '../../../test/fixtures/kitchen-sink/packages/pkg-one', ); beforeEach(async () => { @@ -179,7 +179,7 @@ describe('validateProjectStructure', () => { const spy = vi.spyOn(command, 'error'); const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), - '../../test/fixtures/kitchen-sink', + '../../../test/fixtures/kitchen-sink', ); await validateProjectStructure({ diff --git a/packages/commonality/test/unit/validate.test.ts b/packages/commonality/test/unit/validate.test.ts deleted file mode 100644 index e079f47c..00000000 --- a/packages/commonality/test/unit/validate.test.ts +++ /dev/null @@ -1,242 +0,0 @@ -import { validateAction } from '../../src/commands/validate.js'; -import { vi, describe, it, expect, beforeEach, test, afterEach } from 'vitest'; -import { Command } from 'commander'; - -vi.mock('@commonalityco/data-violations', () => { - return { - getViolations: vi.fn(), - }; -}); - -vi.mock('@commonalityco/data-tags', () => { - return { - getTagsData: vi.fn(), - }; -}); - -vi.mock('@commonalityco/data-packages', () => { - return { getPackages: vi.fn() }; -}); -vi.mock('@commonalityco/data-project', () => { - return { getRootDirectory: vi.fn(), getProjectConfig: vi.fn() }; -}); - -describe('validateAction', () => { - const command = new Command(); - - beforeEach(() => { - vi.spyOn(command, 'error').mockImplementation( - (() => {}) as unknown as typeof command.error, - ); - vi.spyOn(console, 'log').mockImplementation(() => {}); - }); - - afterEach(() => { - vi.restoreAllMocks(); - }); - - describe('when there are no constraints', () => { - test('does not error', async () => { - const errorSpy = vi - .spyOn(command, 'error') - .mockImplementation((() => {}) as unknown as typeof command.error); - - await validateAction({ - projectConfig: {}, - rootDirectory: '/path', - violations: [], - command, - }); - - expect(errorSpy).not.toHaveBeenCalled(); - }); - - test('logs that there are no constraints', async () => { - await validateAction({ - projectConfig: {}, - rootDirectory: '/path', - violations: [], - command, - }); - - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('No constraints found'), - ); - }); - }); - - describe('when there are violations', () => { - describe('when applied to all packages', () => { - beforeEach(async () => { - await validateAction({ - command, - rootDirectory: '/path', - projectConfig: { - constraints: [ - { - applyTo: '*', - allow: ['tag-two'], - }, - ], - }, - violations: [ - { - appliedTo: '*', - sourcePackageName: 'pkg-one', - targetPackageName: 'pkg-two', - allowed: ['tag-two'], - disallowed: [], - found: ['bar'], - }, - ], - }); - }); - - test('when applied to all packages logs violations in the correct format', async () => { - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('All packages'), - ); - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('1 violations'), - ); - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('pkg-one → pkg-two'), - ); - }); - }); - - test('when applied to specific tags logs violations in the correct format', async () => { - await validateAction({ - rootDirectory: '/path', - command, - violations: [ - { - appliedTo: 'tag-one', - sourcePackageName: 'pkg-one', - targetPackageName: 'pkg-two', - allowed: ['tag-two'], - disallowed: [], - found: ['bar'], - }, - ], - projectConfig: { - constraints: [ - { - applyTo: 'tag-one', - allow: ['tag-two'], - }, - { - applyTo: 'tag-two', - allow: ['tag-three'], - }, - ], - }, - }); - - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('1 violations'), - ); - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('1 failed'), - ); - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('pkg-one → pkg-two'), - ); - }); - - test('called command.error', async () => { - await validateAction({ - rootDirectory: '/path', - command, - violations: [ - { - appliedTo: 'tag-one', - sourcePackageName: 'pkg-one', - targetPackageName: 'pkg-two', - allowed: ['tag-two'], - disallowed: [], - found: ['bar'], - }, - ], - projectConfig: { - constraints: [ - { - applyTo: 'tag-one', - allow: ['tag-two'], - }, - { - applyTo: 'tag-two', - allow: ['tag-three'], - }, - ], - }, - }); - - expect(command.error).toHaveBeenCalled(); - }); - }); - - describe('when there are no violations', () => { - describe('when applied to all packages', () => { - beforeEach(async () => { - await validateAction({ - rootDirectory: '/path', - command, - projectConfig: { - constraints: [ - { - applyTo: '*', - allow: ['tag-two'], - }, - ], - }, - violations: [], - }); - }); - - it('should not error', () => { - expect(command.error).not.toHaveBeenCalled(); - }); - - it('should display the correct tags', () => { - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('All packages'), - ); - }); - }); - - describe('when applied to specific tags', () => { - beforeEach(async () => { - await validateAction({ - rootDirectory: '/path', - command, - projectConfig: { - constraints: [ - { - applyTo: 'tag-one', - allow: ['tag-two'], - }, - ], - }, - violations: [], - }); - }); - - it('should display the correct tags', () => { - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('#tag-one'), - ); - }); - - it('should not error', () => { - expect(command.error).not.toHaveBeenCalled(); - }); - - it('should display that there were no violations', () => { - expect(console.log).toHaveBeenCalledWith( - expect.stringContaining('No violations'), - ); - }); - }); - }); -}); diff --git a/packages/commonality/tsconfig.json b/packages/commonality/tsconfig.json index e756321a..c6434272 100644 --- a/packages/commonality/tsconfig.json +++ b/packages/commonality/tsconfig.json @@ -1,11 +1,9 @@ { - "extends": "@commonalityco/config-tsconfig/node16.json", + "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["dist", "build", "node_modules"], "compilerOptions": { - "outDir": "dist", - "module": "Node16", - "moduleResolution": "Node16", - "resolveJsonModule": true, + "outDir": "./dist", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true diff --git a/packages/commonality/tsup.config.cli.ts b/packages/commonality/tsup.config.cli.ts new file mode 100644 index 00000000..be138167 --- /dev/null +++ b/packages/commonality/tsup.config.cli.ts @@ -0,0 +1,31 @@ +import { Options } from 'tsup'; + +const config: Options = { + banner: { + js: ` + import { createRequire } from 'module'; + const require = createRequire(import.meta.url); + `, + }, + entryPoints: ['src/cli/cli.ts'], + format: ['esm'], + platform: 'node', + noExternal: [ + '@commonalityco/data-codeowners', + '@commonalityco/data-conformance', + '@commonalityco/data-documents', + '@commonalityco/data-packages', + '@commonalityco/data-project', + '@commonalityco/data-tags', + '@commonalityco/data-violations', + '@commonalityco/data-workspaces', + '@commonalityco/studio', + '@commonalityco/utils-conformance', + '@commonalityco/utils-core', + '@commonalityco/utils-file', + ], + outDir: './dist/cli', + cjsInterop: true, +}; + +export default config; diff --git a/packages/commonality/tsup.config.ts b/packages/commonality/tsup.config.ts deleted file mode 100644 index 0f1bf599..00000000 --- a/packages/commonality/tsup.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'tsup'; - -export default defineConfig({ - entry: ['src/index.ts'], - format: 'esm', - minify: true, - banner: { - js: "import { createRequire } from 'module'; const require = createRequire(import.meta.url);", - }, -}); diff --git a/packages/commonality/tsup.config.utilities.ts b/packages/commonality/tsup.config.utilities.ts new file mode 100644 index 00000000..e72e9b0e --- /dev/null +++ b/packages/commonality/tsup.config.utilities.ts @@ -0,0 +1,13 @@ +import { Options } from 'tsup'; + +const config: Options = { + entryPoints: ['src/index.ts'], + format: ['esm'], + noExternal: [], + platform: 'node', + outDir: './dist/utilities', + cjsInterop: true, + dts: true, +}; + +export default config; diff --git a/packages/config-tailwind/commonality.json b/packages/config-tailwind/commonality.json deleted file mode 100644 index 8d518fe4..00000000 --- a/packages/config-tailwind/commonality.json +++ /dev/null @@ -1 +0,0 @@ -{"tags":["config"]} diff --git a/packages/data-codeowners/CHANGELOG.md b/packages/data-codeowners/CHANGELOG.md index 9e1b538f..0443a722 100644 --- a/packages/data-codeowners/CHANGELOG.md +++ b/packages/data-codeowners/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/traverse -## 0.0.17 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.16 ### Patch Changes diff --git a/packages/data-codeowners/README.md b/packages/data-codeowners/README.md new file mode 100644 index 00000000..1534bb32 --- /dev/null +++ b/packages/data-codeowners/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-codeowners +> Get CODEOWNERS information about a local project +## Installation + +```sh +npm install @commonalityco/data-codeowners +``` \ No newline at end of file diff --git a/packages/data-codeowners/commonality.json b/packages/data-codeowners/commonality.json index 7123cb85..e13f0193 100644 --- a/packages/data-codeowners/commonality.json +++ b/packages/data-codeowners/commonality.json @@ -1 +1 @@ -{"tags":[]} +{ "tags": ["data"] } diff --git a/packages/data-codeowners/package.json b/packages/data-codeowners/package.json index 196da5ba..8a5c8b31 100644 --- a/packages/data-codeowners/package.json +++ b/packages/data-codeowners/package.json @@ -1,37 +1,37 @@ { - "name": "@commonalityco/data-codeowners", - "version": "0.0.17", - "description": "Get CODEOWNERS information about a local project", - "publishConfig": { - "access": "public" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "license": "MIT", - "scripts": { - "build": "tsc", - "dev": "tsc --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "test": "vitest", - "type-check": "tsc --noEmit" - }, - "dependencies": { - "fast-glob": "^3.3.1", - "fs-extra": "^11.1.1", - "ignore": "^5.2.4", - "minimatch": "^9.0.3" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@types/fs-extra": "^11.0.1", - "@types/node": "^20.6.0", - "eslint-config-commonality": "workspace:*", - "typescript": "^5.2.2" - } -} + "name": "@commonalityco/data-codeowners", + "version": "0.0.16", + "description": "Get CODEOWNERS information about a local project", + "publishConfig": { + "access": "public" + }, + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "build": "tsc", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "fast-glob": "^3.3.1", + "fs-extra": "^11.1.1", + "ignore": "^5.2.4", + "minimatch": "^9.0.3" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/fs-extra": "^11.0.2", + "@types/node": "^20.6.3", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/packages/data-codeowners/src/get-codeowners-data.ts b/packages/data-codeowners/src/get-codeowners-data.ts index 06754ba4..fcdf95ec 100644 --- a/packages/data-codeowners/src/get-codeowners-data.ts +++ b/packages/data-codeowners/src/get-codeowners-data.ts @@ -1,4 +1,4 @@ -import { CodeownersData, Package } from '@commonalityco/types'; +import type { CodeownersData, Package } from '@commonalityco/types'; import { getCodeowners } from './core/get-codeowners.js'; import { getOwnersForPath } from './core/get-owners-for-path.js'; diff --git a/packages/data-codeowners/tsconfig.json b/packages/data-codeowners/tsconfig.json index e46eaaae..faf901ad 100644 --- a/packages/data-codeowners/tsconfig.json +++ b/packages/data-codeowners/tsconfig.json @@ -1,8 +1 @@ -{ - "extends": "@commonalityco/config-tsconfig/node16.json", - "include": ["src/**/*.ts", "src/**/*.tsx"], - "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"] - } -} +{"extends":"@commonalityco/config-tsconfig/node.json","include":["src/**/*.ts","src/**/*.tsx"],"compilerOptions":{"outDir":"dist","typeRoots":["./node_modules/@types"]}} diff --git a/packages/data-codeowners/vitest.config.ts b/packages/data-codeowners/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/data-codeowners/vitest.config.ts +++ b/packages/data-codeowners/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-conformance/.eslintrc.cjs b/packages/data-conformance/.eslintrc.cjs new file mode 100644 index 00000000..97414f7d --- /dev/null +++ b/packages/data-conformance/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['commonality'], +}; diff --git a/packages/data-conformance/README.md b/packages/data-conformance/README.md new file mode 100644 index 00000000..d01c0796 --- /dev/null +++ b/packages/data-conformance/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-conformance +> Get conformance information about a local project +## Installation + +```sh +npm install @commonalityco/data-conformance +``` \ No newline at end of file diff --git a/packages/data-conformance/commonality.json b/packages/data-conformance/commonality.json new file mode 100644 index 00000000..e13f0193 --- /dev/null +++ b/packages/data-conformance/commonality.json @@ -0,0 +1 @@ +{ "tags": ["data"] } diff --git a/packages/data-conformance/package.json b/packages/data-conformance/package.json new file mode 100644 index 00000000..0085b80c --- /dev/null +++ b/packages/data-conformance/package.json @@ -0,0 +1,30 @@ +{ + "name": "@commonalityco/data-conformance", + "description": "Get conformance information about a local project", + "version": "0.0.17", + "type": "module", + "publishConfig": { + "access": "public" + }, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + } +} diff --git a/packages/data-conformance/src/get-conformance-results.ts b/packages/data-conformance/src/get-conformance-results.ts new file mode 100644 index 00000000..93bb590a --- /dev/null +++ b/packages/data-conformance/src/get-conformance-results.ts @@ -0,0 +1,85 @@ +import { + Conformer, + FileCreatorFactory, + JsonFileCreator, + TagsData, + TextFileCreator, + Workspace, + YamlFileCreator, + ConformanceResult, +} from '@commonalityco/types'; + +export const getConformanceResults = async ({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson, + createText, + createYaml, +}: { + conformersByPattern: Record; + rootDirectory: string; + workspaces: Workspace[]; + tagsData: TagsData[]; + createJson: FileCreatorFactory; + createText: FileCreatorFactory; + createYaml: FileCreatorFactory; +}): Promise => { + const matchingPatterns = Object.keys(conformersByPattern); + const workspaceMap = new Map( + workspaces.map((workspace) => [workspace.packageJson.name, workspace]), + ); + + return await Promise.all( + matchingPatterns.flatMap((matchingPattern) => + conformersByPattern[matchingPattern].flatMap((conformer) => + tagsData + .filter((data) => { + if (matchingPattern === '*') return true; + return data.tags.includes(matchingPattern); + }) + .map((data) => workspaceMap.get(data.packageName)) + .filter((workspace): workspace is Workspace => !!workspace) + .map(async (workspace): Promise => { + const getIsValid = async (): Promise => { + try { + return conformer.validate({ + workspace, + projectWorkspaces: workspaces, + json: createJson({ rootDirectory, workspace }), + text: createText({ rootDirectory, workspace }), + yaml: createYaml({ rootDirectory, workspace }), + }); + } catch { + return false; + } + }; + + const isValid = await getIsValid(); + + const getMessage = () => { + if (typeof conformer.message === 'string') { + return conformer.message; + } else if (conformer.message) { + return conformer.message({ workspace }); + } else { + return conformer.name; + } + }; + const message = getMessage(); + + return { + name: conformer.name, + pattern: matchingPattern, + workspace, + message, + level: conformer.level ?? 'warning', + fix: conformer.fix, + isValid, + }; + }), + ), + ), + ); +}; diff --git a/packages/data-conformance/src/index.ts b/packages/data-conformance/src/index.ts new file mode 100644 index 00000000..cfc12235 --- /dev/null +++ b/packages/data-conformance/src/index.ts @@ -0,0 +1 @@ +export * from './get-conformance-results.js'; diff --git a/packages/data-conformance/test/get-conformance-results.test.ts b/packages/data-conformance/test/get-conformance-results.test.ts new file mode 100644 index 00000000..b629dea2 --- /dev/null +++ b/packages/data-conformance/test/get-conformance-results.test.ts @@ -0,0 +1,204 @@ +import { describe, expect, it, vi } from 'vitest'; +import { getConformanceResults } from '../src/get-conformance-results'; +import { Conformer, TagsData, Workspace } from '@commonalityco/types'; + +describe('getConformanceResults', () => { + it('should return errors when workspace is not valid', async () => { + const conformersByPattern: Record = { + '*': [ + { + name: 'InvalidWorkspaceConformer', + level: 'error', + validate: () => false, + message: 'Invalid workspace', + }, + ], + }; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'invalid' }, + }, + ]; + const tagsData: TagsData[] = [{ packageName: 'invalid', tags: ['*'] }]; + + const results = await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson: vi.fn(), + createText: vi.fn(), + createYaml: vi.fn(), + }); + + expect(results).toHaveLength(1); + expect(results[0].isValid).toBe(false); + expect(results[0].message).toBe('Invalid workspace'); + expect(results[0].pattern).toBe('*'); + expect(results[0].workspace).toEqual(workspaces[0]); + expect(results[0].level).toBe('error'); + }); + + it('should return valid results when tests are valid', async () => { + const conformersByPattern: Record = { + '*': [ + { + name: 'ValidWorkspaceConformer', + validate: () => true, + message: 'Valid workspace', + }, + ], + }; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + ]; + const tagsData: TagsData[] = [{ packageName: 'valid', tags: ['*'] }]; + + const results = await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson: vi.fn(), + createText: vi.fn(), + createYaml: vi.fn(), + }); + + expect(results).toHaveLength(1); + expect(results[0].isValid).toBe(true); + expect(results[0].message).toBe('Valid workspace'); + expect(results[0].pattern).toBe('*'); + expect(results[0].workspace).toEqual(workspaces[0]); + expect(results[0].level).toBe('warning'); + }); + + it('should handle exceptions during validation', async () => { + const conformersByPattern: Record = { + '*': [ + { + name: 'ExceptionConformer', + validate: () => { + throw new Error('Unexpected error'); + }, + message: 'Exception during validation', + }, + ], + }; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'exception' }, + }, + ]; + const tagsData: TagsData[] = [{ packageName: 'exception', tags: ['*'] }]; + + const results = await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson: vi.fn(), + createText: vi.fn(), + createYaml: vi.fn(), + }); + + expect(results).toHaveLength(1); + expect(results[0].isValid).toBe(false); + expect(results[0].message).toBe('Exception during validation'); + expect(results[0].pattern).toBe('*'); + expect(results[0].workspace).toEqual(workspaces[0]); + expect(results[0].level).toBe('warning'); + }); + + it('should handle conformers that target patterns other than *', async () => { + const conformersByPattern: Record = { + tag1: [ + { + name: 'Tag1Conformer', + validate: () => true, + message: 'Valid workspace for tag1', + }, + ], + }; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'exception' }, + }, + ]; + const tagsData: TagsData[] = [{ packageName: 'exception', tags: ['tag1'] }]; + + const results = await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson: vi.fn(), + createText: vi.fn(), + createYaml: vi.fn(), + }); + + expect(results).toHaveLength(1); + expect(results[0].isValid).toBe(true); + expect(results[0].message).toBe('Valid workspace for tag1'); + expect(results[0].pattern).toBe('tag1'); + expect(results[0].workspace).toEqual(workspaces[0]); + expect(results[0].level).toBe('warning'); + }); + + it('should return correct result when message property is a function', async () => { + const conformersByPattern: Record = { + '*': [ + { + name: 'MessageFunctionConformer', + validate: () => true, + message: ({ workspace }) => + `Valid workspace for ${workspace.packageJson.name}`, + }, + ], + }; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + ]; + const tagsData: TagsData[] = [{ packageName: 'valid', tags: ['*'] }]; + + const results = await getConformanceResults({ + conformersByPattern, + rootDirectory, + workspaces, + tagsData, + createJson: vi.fn(), + createText: vi.fn(), + createYaml: vi.fn(), + }); + + expect(results).toHaveLength(1); + expect(results[0].isValid).toBe(true); + expect(results[0].message).toBe('Valid workspace for valid'); + expect(results[0].pattern).toBe('*'); + expect(results[0].workspace).toEqual(workspaces[0]); + expect(results[0].level).toBe('warning'); + }); +}); diff --git a/packages/data-conformance/tsconfig.json b/packages/data-conformance/tsconfig.json new file mode 100644 index 00000000..bdbfbc40 --- /dev/null +++ b/packages/data-conformance/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@commonalityco/config-tsconfig/node.json", + "include": ["src/**/*.ts", "src/**/*.tsx"], + "compilerOptions": { + "outDir": "./dist", + "typeRoots": ["./node_modules/@types"] + } +} diff --git a/packages/data-conformance/vitest.config.ts b/packages/data-conformance/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/data-conformance/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-documents/CHANGELOG.md b/packages/data-documents/CHANGELOG.md index 7ea4c805..fe051bbb 100644 --- a/packages/data-documents/CHANGELOG.md +++ b/packages/data-documents/CHANGELOG.md @@ -1,13 +1,5 @@ # @commonalityco/snapshot -## 0.0.13 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/data-project@0.0.12 - ## 0.0.12 ### Patch Changes diff --git a/packages/data-documents/README.md b/packages/data-documents/README.md new file mode 100644 index 00000000..f05c37f9 --- /dev/null +++ b/packages/data-documents/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-documents +> Get documentation information about a local project +## Installation + +```sh +npm install @commonalityco/data-documents +``` \ No newline at end of file diff --git a/packages/data-documents/package.json b/packages/data-documents/package.json index bbf1e4dc..d6d4463b 100644 --- a/packages/data-documents/package.json +++ b/packages/data-documents/package.json @@ -1,36 +1,36 @@ { - "name": "@commonalityco/data-documents", - "description": "Get documentation information about a local project", - "type": "module", - "version": "0.0.13", - "publishConfig": { - "access": "public" - }, - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "scripts": { - "build": "tsc --build", - "dev": "tsc --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "test": "vitest", - "type-check": "tsc --noEmit" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "@types/fs-extra": "^11.0.1", - "@types/node": "^20.6.0", - "eslint-config-commonality": "workspace:^", - "typescript": "^5.2.2" - }, - "dependencies": { - "@commonalityco/data-project": "workspace:*", - "fs-extra": "^11.1.1", - "globby": "^13.2.2" - } -} + "name": "@commonalityco/data-documents", + "description": "Get documentation information about a local project", + "type": "module", + "version": "0.0.12", + "publishConfig": { + "access": "public" + }, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "@types/fs-extra": "^11.0.2", + "@types/node": "^20.6.3", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@commonalityco/data-project": "workspace:*", + "fs-extra": "^11.1.1", + "globby": "^13.2.2" + } +} \ No newline at end of file diff --git a/packages/data-documents/src/core/get-documents-from-directory.ts b/packages/data-documents/src/core/get-documents-from-directory.ts index a8a5ac4e..103b8d2a 100644 --- a/packages/data-documents/src/core/get-documents-from-directory.ts +++ b/packages/data-documents/src/core/get-documents-from-directory.ts @@ -1,4 +1,4 @@ -import { Document } from '@commonalityco/types'; +import type { Document } from '@commonalityco/types'; import fs from 'fs-extra'; import { globby } from 'globby'; import path from 'node:path'; diff --git a/packages/data-documents/src/get-documents-data.ts b/packages/data-documents/src/get-documents-data.ts index 8422c0d8..ef99ec7c 100644 --- a/packages/data-documents/src/get-documents-data.ts +++ b/packages/data-documents/src/get-documents-data.ts @@ -1,6 +1,6 @@ import fs from 'fs-extra'; import path from 'node:path'; -import { DocumentsData } from '@commonalityco/types'; +import type { DocumentsData } from '@commonalityco/types'; import { getPackageDirectories, getPackageManager, diff --git a/packages/data-documents/tsconfig.json b/packages/data-documents/tsconfig.json index e46eaaae..faf901ad 100644 --- a/packages/data-documents/tsconfig.json +++ b/packages/data-documents/tsconfig.json @@ -1,8 +1 @@ -{ - "extends": "@commonalityco/config-tsconfig/node16.json", - "include": ["src/**/*.ts", "src/**/*.tsx"], - "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"] - } -} +{"extends":"@commonalityco/config-tsconfig/node.json","include":["src/**/*.ts","src/**/*.tsx"],"compilerOptions":{"outDir":"dist","typeRoots":["./node_modules/@types"]}} diff --git a/packages/data-documents/vitest.config.ts b/packages/data-documents/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/data-documents/vitest.config.ts +++ b/packages/data-documents/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-graph-worker/CHANGELOG.md b/packages/data-graph-worker/CHANGELOG.md index bba2c086..34b4e7bb 100644 --- a/packages/data-graph-worker/CHANGELOG.md +++ b/packages/data-graph-worker/CHANGELOG.md @@ -1,14 +1,5 @@ # @commonalityco/data-graph-worker -## 0.0.10 - -### Patch Changes - -- 51411d8: update dependencies -- 0f60d9b: cache graph calculations -- Updated dependencies [51411d8] - - @commonalityco/utils-graph@0.0.12 - ## 0.0.9 ### Patch Changes diff --git a/packages/data-graph-worker/README.md b/packages/data-graph-worker/README.md new file mode 100644 index 00000000..5a130058 --- /dev/null +++ b/packages/data-graph-worker/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-graph-worker +> Instantiate a web worker to process Commonality graph calculations +## Installation + +```sh +npm install @commonalityco/data-graph-worker +``` \ No newline at end of file diff --git a/packages/data-graph-worker/package.json b/packages/data-graph-worker/package.json index 219f24e2..2e8e3647 100644 --- a/packages/data-graph-worker/package.json +++ b/packages/data-graph-worker/package.json @@ -1,37 +1,37 @@ { - "name": "@commonalityco/data-graph-worker", - "description": "Instantiate a web worker to process Commonality graph calculations", - "version": "0.0.10", - "type": "module", - "publishConfig": { - "access": "public" - }, - "sideEffects": false, - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "devDependencies": { - "@commonalityco/utils-graph": "workspace:*", - "@types/crypto-js": "^4.1.2", - "@types/cytoscape": "^3.19.11", - "cytoscape": "^3.26.0", - "eslint-config-commonality": "workspace:*" - }, - "peerDependencies": { - "@commonalityco/utils-graph": "*", - "cytoscape": "3.x" - }, - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc --build", - "dev": "tsc --watch", - "type-check": "tsc --noEmit" - }, - "dependencies": { - "crypto-js": "^4.1.1", - "localforage": "^1.10.0" - } -} + "name": "@commonalityco/data-graph-worker", + "description": "Instantiate a web worker to process Commonality graph calculations", + "version": "0.0.9", + "type": "module", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "devDependencies": { + "@commonalityco/utils-graph": "workspace:*", + "@types/crypto-js": "^4.1.2", + "@types/cytoscape": "^3.19.11", + "cytoscape": "^3.26.0", + "eslint-config-commonality": "workspace:*" + }, + "peerDependencies": { + "@commonalityco/utils-graph": "workspace:*", + "cytoscape": "3.x" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc --build", + "dev": "tsc --watch", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "crypto-js": "^4.1.1", + "localforage": "^1.10.0" + } +} \ No newline at end of file diff --git a/packages/data-graph-worker/src/index.ts b/packages/data-graph-worker/src/index.ts index c6af244c..80ad0e6c 100644 --- a/packages/data-graph-worker/src/index.ts +++ b/packages/data-graph-worker/src/index.ts @@ -9,7 +9,6 @@ export const createWorker = () => { addEventListener( 'message', async (event: MessageEvent) => { - console.log({ data: event.data }); const cacheKey = MD5(JSON.stringify(event.data)).toString(); const cachedResult = await localforage.getItem(cacheKey); diff --git a/packages/data-graph-worker/tsconfig.json b/packages/data-graph-worker/tsconfig.json index 26dad956..eb8ce742 100644 --- a/packages/data-graph-worker/tsconfig.json +++ b/packages/data-graph-worker/tsconfig.json @@ -2,7 +2,7 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", + "outDir": "./dist", "typeRoots": ["./node_modules/@types"] } } diff --git a/packages/data-graph-worker/vitest.config.ts b/packages/data-graph-worker/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/data-graph-worker/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-graph/CHANGELOG.md b/packages/data-graph/CHANGELOG.md index d6b7d4f5..7e822820 100644 --- a/packages/data-graph/CHANGELOG.md +++ b/packages/data-graph/CHANGELOG.md @@ -1,15 +1,5 @@ # @commonalityco/data-graph -## 0.0.13 - -### Patch Changes - -- 51411d8: update dependencies -- 0f60d9b: cache graph calculations -- Updated dependencies [51411d8] - - @commonalityco/utils-graph@0.0.12 - - @commonalityco/utils-core@0.0.11 - ## 0.0.12 ### Patch Changes diff --git a/packages/data-graph/README.md b/packages/data-graph/README.md new file mode 100644 index 00000000..80a5459d --- /dev/null +++ b/packages/data-graph/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-graph +> State management utilities for the Commonality dependency graph +## Installation + +```sh +npm install @commonalityco/data-graph +``` \ No newline at end of file diff --git a/packages/data-graph/package.json b/packages/data-graph/package.json index b4763a6b..96a80ce7 100644 --- a/packages/data-graph/package.json +++ b/packages/data-graph/package.json @@ -1,44 +1,44 @@ { - "name": "@commonalityco/data-graph", - "description": "State management utilities for the Commonality dependency graph", - "version": "0.0.13", - "publishConfig": { - "access": "public" - }, - "sideEffects": false, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "@commonalityco/utils-graph": "workspace:*", - "@popperjs/core": "^2.11.8", - "@types/cytoscape": "^3.19.11", - "@types/lodash.debounce": "^4.0.7", - "eslint-config-commonality": "workspace:*", - "typescript": "^5.2.2", - "xstate": "^4.38.2" - }, - "license": "MIT", - "peerDependencies": { - "@commonalityco/utils-core": "*", - "@commonalityco/utils-graph": "*", - "xstate": "^4.37.2" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "dependencies": { - "cytoscape": "^3.26.0", - "lodash.debounce": "^4.0.8" - }, - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc --build", - "dev": "tsc --watch", - "type-check": "tsc --noEmit" - } -} + "name": "@commonalityco/data-graph", + "description": "State management utilities for the Commonality dependency graph", + "version": "0.0.12", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "@commonalityco/utils-graph": "workspace:*", + "@popperjs/core": "^2.11.8", + "@types/cytoscape": "^3.19.11", + "@types/lodash.debounce": "^4.0.7", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2", + "xstate": "^4.38.2" + }, + "license": "MIT", + "peerDependencies": { + "@commonalityco/utils-core": "workspace:*", + "@commonalityco/utils-graph": "workspace:*", + "xstate": "^4.37.2" + }, + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "dependencies": { + "cytoscape": "^3.26.0", + "lodash.debounce": "^4.0.8" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc --build", + "dev": "tsc --watch", + "type-check": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/packages/data-graph/tsconfig.json b/packages/data-graph/tsconfig.json index 26dad956..eb8ce742 100644 --- a/packages/data-graph/tsconfig.json +++ b/packages/data-graph/tsconfig.json @@ -2,7 +2,7 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", + "outDir": "./dist", "typeRoots": ["./node_modules/@types"] } } diff --git a/packages/data-graph/vitest.config.ts b/packages/data-graph/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/data-graph/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-packages/CHANGELOG.md b/packages/data-packages/CHANGELOG.md index db66bd22..a8cd2691 100644 --- a/packages/data-packages/CHANGELOG.md +++ b/packages/data-packages/CHANGELOG.md @@ -1,14 +1,5 @@ # @commonalityco/constraints -## 0.0.18 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/data-project@0.0.12 - - @commonalityco/utils-core@0.0.11 - ## 0.0.17 ### Patch Changes diff --git a/packages/data-packages/README.md b/packages/data-packages/README.md new file mode 100644 index 00000000..c542d59e --- /dev/null +++ b/packages/data-packages/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-packages +> Get package information about a local project +## Installation + +```sh +npm install @commonalityco/data-packages +``` \ No newline at end of file diff --git a/packages/data-packages/commonality.json b/packages/data-packages/commonality.json index 6c34be60..e13f0193 100644 --- a/packages/data-packages/commonality.json +++ b/packages/data-packages/commonality.json @@ -1 +1 @@ -{"tags":["data"]} +{ "tags": ["data"] } diff --git a/packages/data-packages/package.json b/packages/data-packages/package.json index 5debc4c5..51552d02 100644 --- a/packages/data-packages/package.json +++ b/packages/data-packages/package.json @@ -1,36 +1,36 @@ { - "name": "@commonalityco/data-packages", - "description": "Get package information about a local project", - "version": "0.0.18", - "type": "module", - "publishConfig": { - "access": "public" - }, - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "license": "MIT", - "scripts": { - "build": "tsc --build", - "dev": "tsc --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "test": "vitest", - "type-check": "tsc --noEmit" - }, - "dependencies": { - "@commonalityco/data-project": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "fs-extra": "^11.1.1" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@types/fs-extra": "^11.0.1", - "@types/node": "^20.6.0", - "eslint-config-commonality": "workspace:^", - "typescript": "^5.2.2" - } -} + "name": "@commonalityco/data-packages", + "description": "Get package information about a local project", + "version": "0.0.17", + "type": "module", + "publishConfig": { + "access": "public" + }, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "@commonalityco/data-project": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "fs-extra": "^11.1.1" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/fs-extra": "^11.0.2", + "@types/node": "^20.6.3", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/packages/data-packages/src/get-dependencies.ts b/packages/data-packages/src/get-dependencies.ts index bd34ba2c..1fbc5e2c 100644 --- a/packages/data-packages/src/get-dependencies.ts +++ b/packages/data-packages/src/get-dependencies.ts @@ -6,7 +6,7 @@ import { import path from 'node:path'; import fs from 'fs-extra'; import { DependencyType } from '@commonalityco/utils-core'; -import { Dependency, PackageJson } from '@commonalityco/types'; +import type { Dependency, PackageJson } from '@commonalityco/types'; type PackageJsonWithName = PackageJson & { name: string }; diff --git a/packages/data-packages/src/get-package.ts b/packages/data-packages/src/get-package.ts index 44b9aedc..0e05ed7c 100644 --- a/packages/data-packages/src/get-package.ts +++ b/packages/data-packages/src/get-package.ts @@ -1,4 +1,4 @@ -import { Package, PackageJson } from '@commonalityco/types'; +import type { Package, PackageJson } from '@commonalityco/types'; import path from 'node:path'; import fs from 'fs-extra'; import { PackageType } from '@commonalityco/utils-core'; diff --git a/packages/data-packages/src/get-packages.ts b/packages/data-packages/src/get-packages.ts index cf437cdc..1b194a17 100644 --- a/packages/data-packages/src/get-packages.ts +++ b/packages/data-packages/src/get-packages.ts @@ -1,4 +1,4 @@ -import { Package } from '@commonalityco/types'; +import type { Package } from '@commonalityco/types'; import { getPackageDirectories, getWorkspaceGlobs, diff --git a/packages/data-packages/src/get-root-package-name.ts b/packages/data-packages/src/get-root-package-name.ts index 5814bb9e..9ddc110e 100644 --- a/packages/data-packages/src/get-root-package-name.ts +++ b/packages/data-packages/src/get-root-package-name.ts @@ -1,4 +1,4 @@ -import { PackageJson } from '@commonalityco/types'; +import type { PackageJson } from '@commonalityco/types'; import path from 'node:path'; import fs from 'fs-extra'; diff --git a/packages/data-packages/tsconfig.json b/packages/data-packages/tsconfig.json index e46eaaae..faf901ad 100644 --- a/packages/data-packages/tsconfig.json +++ b/packages/data-packages/tsconfig.json @@ -1,8 +1 @@ -{ - "extends": "@commonalityco/config-tsconfig/node16.json", - "include": ["src/**/*.ts", "src/**/*.tsx"], - "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"] - } -} +{"extends":"@commonalityco/config-tsconfig/node.json","include":["src/**/*.ts","src/**/*.tsx"],"compilerOptions":{"outDir":"dist","typeRoots":["./node_modules/@types"]}} diff --git a/packages/data-packages/vitest.config.ts b/packages/data-packages/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/data-packages/vitest.config.ts +++ b/packages/data-packages/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-project/CHANGELOG.md b/packages/data-project/CHANGELOG.md index 226dc3f3..d094c373 100644 --- a/packages/data-project/CHANGELOG.md +++ b/packages/data-project/CHANGELOG.md @@ -1,13 +1,5 @@ # @commonalityco/snapshot -## 0.0.12 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/utils-core@0.0.11 - ## 0.0.11 ### Patch Changes diff --git a/packages/data-project/README.md b/packages/data-project/README.md new file mode 100644 index 00000000..90b951fc --- /dev/null +++ b/packages/data-project/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-project +> Utilities for collecting metadata on the current Commonality project +## Installation + +```sh +npm install @commonalityco/data-project +``` \ No newline at end of file diff --git a/packages/data-project/commonality.json b/packages/data-project/commonality.json index 51036401..6c34be60 100644 --- a/packages/data-project/commonality.json +++ b/packages/data-project/commonality.json @@ -1,5 +1 @@ -{ - "tags": [ - "data" - ] -} +{"tags":["data"]} diff --git a/packages/data-project/package.json b/packages/data-project/package.json index cad10afe..041e96b6 100644 --- a/packages/data-project/package.json +++ b/packages/data-project/package.json @@ -1,40 +1,44 @@ { - "name": "@commonalityco/data-project", - "description": "Utilities for collecting metadata on the current Commonality project", - "version": "0.0.12", - "publishConfig": { - "access": "public" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "license": "MIT", - "scripts": { - "build": "tsc --build", - "dev": "tsc --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "test": "vitest", - "type-check": "tsc --noEmit" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@types/fs-extra": "^11.0.1", - "@types/node": "^20.6.0", - "eslint-config-commonality": "workspace:^", - "typescript": "^5.2.2" - }, - "dependencies": { - "@commonalityco/utils-core": "workspace:*", - "chalk": "^5.3.0", - "find-up": "^6.3.0", - "fs-extra": "^11.1.1", - "globby": "^13.2.2", - "yaml": "^2.3.2", - "zod": "^3.22.2" - } -} + "name": "@commonalityco/data-project", + "description": "Utilities for collecting metadata on the current Commonality project", + "version": "0.0.11", + "publishConfig": { + "access": "public" + }, + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/fs-extra": "^11.0.2", + "@types/node": "^20.6.3", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@commonalityco/utils-core": "workspace:*", + "chalk": "^5.3.0", + "cosmiconfig": "^8.3.6", + "cosmiconfig-typescript-loader": "^5.0.0", + "find-up": "^6.3.0", + "fs-extra": "^11.1.1", + "globby": "^13.2.2", + "jiti": "^1.20.0", + "yaml": "^2.3.2", + "zod": "^3.22.2" + } +} \ No newline at end of file diff --git a/packages/data-project/src/get-package-manager.ts b/packages/data-project/src/get-package-manager.ts index b76fc917..74487e6e 100644 --- a/packages/data-project/src/get-package-manager.ts +++ b/packages/data-project/src/get-package-manager.ts @@ -22,5 +22,9 @@ export const getPackageManager = async ({ return PackageManager.PNPM; } + if (await getFileExistsAtRoot(Lockfile.BUN_LOCKFILE)) { + return PackageManager.BUN; + } + throw new Error('Could not detect package manager'); }; diff --git a/packages/data-project/src/get-project-config.ts b/packages/data-project/src/get-project-config.ts index eccb3fa0..c948cbb4 100644 --- a/packages/data-project/src/get-project-config.ts +++ b/packages/data-project/src/get-project-config.ts @@ -1,69 +1,45 @@ -import path from 'node:path'; -import fs from 'fs-extra'; -import { z } from 'zod'; -import chalk from 'chalk'; +import type { ProjectConfig } from '@commonalityco/types'; +import jiti from 'jiti'; +import { findUp } from 'find-up'; -const allPackagesWildcard = z.enum(['*']); - -const projectConfigSchema = z - .object({ - projectId: z.string().optional(), - constraints: z - .array( - z.union([ - z.object({ - applyTo: z.string(), - allow: z.union([z.array(z.string()), allPackagesWildcard]), - disallow: z.union([z.array(z.string()), allPackagesWildcard]), - }), - z.object({ - applyTo: z.string(), - allow: z.union([z.array(z.string()), allPackagesWildcard]), - }), - z.object({ - applyTo: z.string(), - disallow: z.union([z.array(z.string()), allPackagesWildcard]), - }), - ]), - ) - .optional(), - }) - .strict(); +const initializeJiti = jiti as unknown as typeof jiti.default; export const getProjectConfig = async ({ rootDirectory, }: { - rootDirectory: string; -}): Promise> => { - const projectConfigPath = path.join( - rootDirectory, - '.commonality/config.json', - ); - - if (!fs.pathExistsSync(projectConfigPath)) { - return {}; + rootDirectory?: string; +}): Promise< + | { + config: ProjectConfig; + filepath: string; + isEmpty?: boolean; + } + | undefined +> => { + if (!rootDirectory) { + return; } - try { - const config = await fs.readJson(projectConfigPath); - - const parsed = projectConfigSchema.parse(config); + const configPath = await findUp( + ['.commonality/config.js', '.commonality/config.ts'], + { + cwd: rootDirectory, + stopAt: rootDirectory, + }, + ); - return parsed; - } catch (error) { - if (error instanceof z.ZodError) { - console.log(chalk.red('Invalid project configuration')); + if (!configPath) { + return; + } - for (const issue of error.issues) { - console.log(`Error location: ${JSON.stringify(issue.path)}`); + const loader = initializeJiti(configPath, { interopDefault: true }); - console.log('\nView documentation:'); - console.log('https://commonality.co/docs/project-config'); - } + const result = loader(configPath); + const defaultExport = result.default || result; - throw new Error('Invalid project configuration'); - } else { - throw error; - } - } + return { + config: defaultExport, + filepath: configPath, + isEmpty: !defaultExport, + }; }; diff --git a/packages/data-project/src/get-root-directory.ts b/packages/data-project/src/get-root-directory.ts index 612438bc..16c7acde 100644 --- a/packages/data-project/src/get-root-directory.ts +++ b/packages/data-project/src/get-root-directory.ts @@ -6,10 +6,8 @@ import { fileURLToPath } from 'node:url'; export const getRootDirectory = async (cwd?: string) => { const __filename = fileURLToPath(import.meta.url); - - const workingDirectory = cwd - ? path.resolve(path.dirname(__filename), cwd) - : process.cwd(); + const dirname = path.dirname(__filename); + const workingDirectory = cwd ? path.resolve(dirname, cwd) : process.cwd(); const rootDirectory = await findUp( [Lockfile.NPM_LOCKFILE, Lockfile.YARN_LOCKFILE, Lockfile.PNPM_LOCKFILE], diff --git a/packages/data-project/src/get-workspace-globs.ts b/packages/data-project/src/get-workspace-globs.ts index d8d5a24a..f8e2354b 100644 --- a/packages/data-project/src/get-workspace-globs.ts +++ b/packages/data-project/src/get-workspace-globs.ts @@ -15,13 +15,14 @@ export const getWorkspaceGlobs = async ({ }): Promise => { if ( packageManager === PackageManager.NPM || + packageManager === PackageManager.BUN || packageManager === PackageManager.YARN ) { const packageJsonPath = path.join(rootDirectory, 'package.json'); if (fs.pathExistsSync(packageJsonPath)) { const rootPackageJson = (await fs.readJson( - path.join(rootDirectory, 'package.json') + path.join(rootDirectory, 'package.json'), )) as PackageJson; if (!rootPackageJson?.workspaces) { diff --git a/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.json b/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.json deleted file mode 100644 index 4b2f2791..00000000 --- a/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "constraints": [ - { - "applyToo": "feature", - "allow": "*" - }, - { - "applyTo": "config", - "allow": ["config"] - }, - { - "applyTo": "ui", - "allow": ["ui", "utility", "config"] - }, - { - "applyTo": "data", - "allow": ["data", "utility", "config"] - }, - { - "applyTo": "utility", - "allow": ["data", "utility", "config"] - } - ] -} diff --git a/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.ts b/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.ts new file mode 100644 index 00000000..79783574 --- /dev/null +++ b/packages/data-project/test/fixtures/invalid-project-config/.commonality/config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from 'commonality'; + +export default defineConfig({ + constraints: [ + { + applyToo: 'feature', + allow: '*', + }, + { + applyTo: 'config', + allow: ['config'], + }, + { + applyTo: 'ui', + allow: ['ui', 'utility', 'config'], + }, + { + applyTo: 'data', + allow: ['data', 'utility', 'config'], + }, + { + applyTo: 'utility', + allow: ['data', 'utility', 'config'], + }, + ], +}); diff --git a/packages/data-project/test/fixtures/uninitialized/package.json b/packages/data-project/test/fixtures/uninitialized/package.json new file mode 100644 index 00000000..9c111d1c --- /dev/null +++ b/packages/data-project/test/fixtures/uninitialized/package.json @@ -0,0 +1,3 @@ +{ + "name": "monorepo" +} diff --git a/packages/data-project/test/fixtures/valid-project-config/.commonality/config.json b/packages/data-project/test/fixtures/valid-project-config/.commonality/config.json deleted file mode 100644 index c76508bd..00000000 --- a/packages/data-project/test/fixtures/valid-project-config/.commonality/config.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "projectId": "123", - "constraints": [ - { - "applyTo": "feature", - "allow": "*" - }, - { - "applyTo": "config", - "allow": ["config"] - }, - { - "applyTo": "ui", - "allow": ["ui", "utility", "config"] - }, - { - "applyTo": "data", - "allow": ["data", "utility", "config"] - }, - { - "applyTo": "utility", - "allow": ["data", "utility", "config"] - } - ] -} diff --git a/packages/data-project/test/fixtures/valid-project-config/.commonality/config.ts b/packages/data-project/test/fixtures/valid-project-config/.commonality/config.ts new file mode 100644 index 00000000..0a786f7b --- /dev/null +++ b/packages/data-project/test/fixtures/valid-project-config/.commonality/config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from 'commonality'; + +export default defineConfig({ + projectId: '123', + constraints: [ + { + applyTo: 'feature', + allow: '*', + }, + { + applyTo: 'config', + allow: ['config'], + }, + { + applyTo: 'ui', + allow: ['ui', 'utility', 'config'], + }, + { + applyTo: 'data', + allow: ['data', 'utility', 'config'], + }, + { + applyTo: 'utility', + allow: ['data', 'utility', 'config'], + }, + ], +}); diff --git a/packages/data-project/test/get-project-config.test.ts b/packages/data-project/test/get-project-config.test.ts index 08eb73d8..4adb8844 100644 --- a/packages/data-project/test/get-project-config.test.ts +++ b/packages/data-project/test/get-project-config.test.ts @@ -5,7 +5,7 @@ import { fileURLToPath } from 'node:url'; describe('getProjectConfig', () => { describe('when run in an un-initialized project', () => { - it('returns an empty object', async () => { + it('returns undefined', async () => { const rootDirectory = path.join( path.dirname(fileURLToPath(import.meta.url)), './fixtures', @@ -14,7 +14,7 @@ describe('getProjectConfig', () => { const config = await getProjectConfig({ rootDirectory }); - expect(config).toEqual({}); + expect(config).toEqual(undefined); }); }); @@ -29,40 +29,34 @@ describe('getProjectConfig', () => { const config = await getProjectConfig({ rootDirectory }); expect(config).toEqual({ - projectId: '123', - constraints: [ - { - applyTo: 'feature', - allow: '*', - }, - { - applyTo: 'config', - allow: ['config'], - }, - { - applyTo: 'ui', - allow: ['ui', 'utility', 'config'], - }, - { - applyTo: 'data', - allow: ['data', 'utility', 'config'], - }, - { - applyTo: 'utility', - allow: ['data', 'utility', 'config'], - }, - ], + isEmpty: false, + filepath: expect.stringContaining('.commonality/config.ts'), + config: { + projectId: '123', + constraints: [ + { + applyTo: 'feature', + allow: '*', + }, + { + applyTo: 'config', + allow: ['config'], + }, + { + applyTo: 'ui', + allow: ['ui', 'utility', 'config'], + }, + { + applyTo: 'data', + allow: ['data', 'utility', 'config'], + }, + { + applyTo: 'utility', + allow: ['data', 'utility', 'config'], + }, + ], + }, }); }); - - it('should return the parsed project config without invalid properties', async () => { - const rootDirectory = path.join( - path.dirname(fileURLToPath(import.meta.url)), - './fixtures', - 'invalid-project-config', - ); - - await expect(getProjectConfig({ rootDirectory })).rejects.toThrow(); - }); }); }); diff --git a/packages/data-project/tsconfig.json b/packages/data-project/tsconfig.json index e46eaaae..faf901ad 100644 --- a/packages/data-project/tsconfig.json +++ b/packages/data-project/tsconfig.json @@ -1,8 +1 @@ -{ - "extends": "@commonalityco/config-tsconfig/node16.json", - "include": ["src/**/*.ts", "src/**/*.tsx"], - "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"] - } -} +{"extends":"@commonalityco/config-tsconfig/node.json","include":["src/**/*.ts","src/**/*.tsx"],"compilerOptions":{"outDir":"dist","typeRoots":["./node_modules/@types"]}} diff --git a/packages/data-project/vitest.config.ts b/packages/data-project/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/data-project/vitest.config.ts +++ b/packages/data-project/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-tags/CHANGELOG.md b/packages/data-tags/CHANGELOG.md index f2bceb8f..37c53588 100644 --- a/packages/data-tags/CHANGELOG.md +++ b/packages/data-tags/CHANGELOG.md @@ -1,14 +1,5 @@ # @commonalityco/snapshot -## 0.0.13 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/data-project@0.0.12 - - @commonalityco/utils-core@0.0.11 - ## 0.0.12 ### Patch Changes diff --git a/packages/data-tags/README.md b/packages/data-tags/README.md new file mode 100644 index 00000000..4a0a245d --- /dev/null +++ b/packages/data-tags/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-tags +> Utilities getting and setting metadata for a Commonality project +## Installation + +```sh +npm install @commonalityco/data-tags +``` \ No newline at end of file diff --git a/packages/data-tags/package.json b/packages/data-tags/package.json index 4c52ba15..250a3cb1 100644 --- a/packages/data-tags/package.json +++ b/packages/data-tags/package.json @@ -1,37 +1,37 @@ { - "name": "@commonalityco/data-tags", - "description": "Utilities getting and setting metadata for a Commonality project", - "version": "0.0.13", - "publishConfig": { - "access": "public" - }, - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "scripts": { - "build": "tsc --build", - "dev": "tsc --watch", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "test": "vitest", - "type-check": "tsc --noEmit" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@types/fs-extra": "^11.0.1", - "@types/lodash.uniq": "^4.5.7", - "@types/node": "^20.6.0", - "eslint-config-commonality": "workspace:^", - "typescript": "^5.2.2" - }, - "dependencies": { - "@commonalityco/data-project": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "fs-extra": "^11.1.1", - "lodash.uniq": "^4.5.0" - } -} + "name": "@commonalityco/data-tags", + "description": "Utilities getting and setting metadata for a Commonality project", + "version": "0.0.12", + "publishConfig": { + "access": "public" + }, + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/fs-extra": "^11.0.2", + "@types/lodash.uniq": "^4.5.7", + "@types/node": "^20.6.3", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@commonalityco/data-project": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "fs-extra": "^11.1.1", + "lodash.uniq": "^4.5.0" + } +} \ No newline at end of file diff --git a/packages/data-tags/src/get-tags-data.ts b/packages/data-tags/src/get-tags-data.ts index 7ffa721a..8f2ff07c 100644 --- a/packages/data-tags/src/get-tags-data.ts +++ b/packages/data-tags/src/get-tags-data.ts @@ -1,7 +1,7 @@ import path from 'node:path'; import fs from 'fs-extra'; import type { Package, PackageConfig, TagsData } from '@commonalityco/types'; -import { slugifyTagName } from '@commonalityco/utils-core'; +import { slugifyTagName } from '@commonalityco/utils-core/slugify-tag-name'; export const getTagsData = async ({ rootDirectory, @@ -17,7 +17,7 @@ export const getTagsData = async ({ const packageConfigPath = path.join( rootDirectory, package_.path, - 'commonality.json' + 'commonality.json', ); if (!(await fs.exists(packageConfigPath))) { @@ -36,7 +36,7 @@ export const getTagsData = async ({ tags: formattedTags, }); } - }) + }), ); return tagData; diff --git a/packages/data-tags/src/set-tags.ts b/packages/data-tags/src/set-tags.ts index 72603a1c..07a2f207 100644 --- a/packages/data-tags/src/set-tags.ts +++ b/packages/data-tags/src/set-tags.ts @@ -2,11 +2,9 @@ import path from 'node:path'; import fs from 'fs-extra'; import type { PackageConfig, PackageJson } from '@commonalityco/types'; import uniq from 'lodash.uniq'; -import { - getPackageDirectories, - getWorkspaceGlobs, - getPackageManager, -} from '@commonalityco/data-project'; +import { getPackageDirectories } from '@commonalityco/data-project/get-package-directories'; +import { getWorkspaceGlobs } from '@commonalityco/data-project/get-workspace-globs'; +import { getPackageManager } from '@commonalityco/data-project/get-package-manager'; export const setTags = async ({ packageName, diff --git a/packages/data-tags/tsconfig.json b/packages/data-tags/tsconfig.json index e46eaaae..faf901ad 100644 --- a/packages/data-tags/tsconfig.json +++ b/packages/data-tags/tsconfig.json @@ -1,8 +1 @@ -{ - "extends": "@commonalityco/config-tsconfig/node16.json", - "include": ["src/**/*.ts", "src/**/*.tsx"], - "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"] - } -} +{"extends":"@commonalityco/config-tsconfig/node.json","include":["src/**/*.ts","src/**/*.tsx"],"compilerOptions":{"outDir":"dist","typeRoots":["./node_modules/@types"]}} diff --git a/packages/data-tags/vitest.config.ts b/packages/data-tags/vitest.config.ts index b5d19a9a..701d5ef6 100644 --- a/packages/data-tags/vitest.config.ts +++ b/packages/data-tags/vitest.config.ts @@ -1,8 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({ - test: { - globals: true, - threads: false, - }, -}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-violations/README.md b/packages/data-violations/README.md new file mode 100644 index 00000000..5392d6e5 --- /dev/null +++ b/packages/data-violations/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-violations +> Get violations information about a local project +## Installation + +```sh +npm install @commonalityco/data-violations +``` \ No newline at end of file diff --git a/packages/data-violations/benchmark/get-violations.bench.ts b/packages/data-violations/benchmark/get-violations.bench.ts new file mode 100644 index 00000000..e2bc5e32 --- /dev/null +++ b/packages/data-violations/benchmark/get-violations.bench.ts @@ -0,0 +1,37 @@ +import { bench } from 'vitest'; +import { getViolations } from '../src/get-violations'; +import { Dependency, TagsData, ProjectConfig } from '@commonalityco/types'; +import { DependencyType } from '@commonalityco/utils-core'; + +bench('get-violations - large graph', async () => { + const largeDependencies: Dependency[] = Array.from( + { length: 100 }, + (_, i) => ({ + version: `1.0.${i}`, + type: + i % 2 === 0 ? DependencyType.PRODUCTION : DependencyType.DEVELOPMENT, + source: `pkg-${i}`, + target: `pkg-${(i + 1) % 100}`, + }), + ); + + const largeTagsData: TagsData[] = Array.from({ length: 100 }, (_, i) => ({ + packageName: `pkg-${i}`, + tags: [['tag1', 'tag2', 'tag3'][Math.floor(Math.random() * 3)]], + })); + const largeConstraints: ProjectConfig['constraints'] = { + tag1: { + allow: ['tag1', 'tag2'], + disallow: ['tag3'], + }, + tag2: { + disallow: ['tag2'], + }, + }; + + await getViolations({ + constraints: largeConstraints, + dependencies: largeDependencies, + tagsData: largeTagsData, + }); +}); diff --git a/packages/data-violations/commonality.json b/packages/data-violations/commonality.json index bf0da1f4..2837017e 100644 --- a/packages/data-violations/commonality.json +++ b/packages/data-violations/commonality.json @@ -1,3 +1 @@ -{ - "tags": ["utility"] -} +{"tags":["utility"]} diff --git a/packages/data-violations/package.json b/packages/data-violations/package.json index 6c5a62ee..3c37d172 100644 --- a/packages/data-violations/package.json +++ b/packages/data-violations/package.json @@ -17,6 +17,7 @@ "lint": "eslint .", "lint:fix": "eslint . --fix", "test": "vitest", + "bench": "vitest bench", "type-check": "tsc --noEmit" }, "devDependencies": { diff --git a/packages/data-violations/src/get-violations.ts b/packages/data-violations/src/get-violations.ts index 79eab9f9..cbf6141d 100644 --- a/packages/data-violations/src/get-violations.ts +++ b/packages/data-violations/src/get-violations.ts @@ -1,13 +1,13 @@ -import { +import type { Violation, Dependency, TagsData, - Constraint, + ProjectConfig, } from '@commonalityco/types'; const edgeKey = (dep: Dependency) => `${dep.source}|${dep.target}`; -const getAllDependencies = ( +export const getAllDependencies = ( dependencies: Dependency[], packageName: string, visitedNodes: Set = new Set(), @@ -39,11 +39,11 @@ const getAllDependencies = ( }; export async function getViolations({ - constraints = [], + constraints = {}, dependencies = [], tagsData = [], }: { - constraints?: Constraint[]; + constraints?: ProjectConfig['constraints']; dependencies: Dependency[]; tagsData: TagsData[]; }): Promise { @@ -53,33 +53,46 @@ export async function getViolations({ tagsData.map((data) => [data.packageName, data.tags]), ); - if (constraints.length === 0) { + if (Object.keys(constraints).length === 0) { return violations; } + const dependenciesBySource: Record = {}; + for (const dep of dependencies) { + if (!dependenciesBySource[dep.source]) { + dependenciesBySource[dep.source] = []; + } + dependenciesBySource[dep.source].push(dep.target); + } + for (const dependency of dependencies) { - const constraintsForDependency = constraints.filter((constraint) => { - if (constraint.applyTo === '*') { - return true; - } - const tagsForDependency = tagsByPackageName.get(dependency.source); + const constraintsForSourcePackage = Object.entries(constraints).filter( + ([key]) => { + if (key === '*') { + return true; + } + const tagsForDependency = tagsByPackageName.get(dependency.source); - return tagsForDependency?.some((tag) => tag === constraint.applyTo); - }); + return tagsForDependency?.some((tag) => tag === key); + }, + ); - const allowsAll = constraintsForDependency.some( - (constraint) => 'allow' in constraint && constraint.allow === '*', + const allowsAll = constraintsForSourcePackage.some( + ([_, constraint]) => 'allow' in constraint && constraint.allow === '*', ); - for (const constraint of constraintsForDependency) { - const directDependencyPackageNames = dependencies - .filter((dep) => dep.source === dependency.source) - .map((dep) => dep.target); + for (const [key, constraint] of constraintsForSourcePackage) { + const directDependencyPackageNames = + dependenciesBySource[dependency.source] || []; const hasAllow = 'allow' in constraint; const hasDisallow = 'disallow' in constraint; - const allowed = hasAllow ? constraint.allow : undefined; - const disallowed = hasDisallow ? constraint.disallow : undefined; + const allowed = + hasAllow && constraint?.allow.length ? constraint.allow : undefined; + const disallowed = + hasDisallow && constraint?.disallow.length + ? constraint.disallow + : undefined; if (disallowed === '*') { for (const directDependencyPackageName of directDependencyPackageNames) { @@ -90,7 +103,7 @@ export async function getViolations({ violations.push({ sourcePackageName: dependency.source, targetPackageName: directDependencyPackageName, - appliedTo: constraint.applyTo, + appliedTo: key, allowed: hasAllow ? constraint.allow : [], disallowed: hasDisallow ? constraint.disallow : [], found: tagsForTargetPackage, @@ -105,10 +118,6 @@ export async function getViolations({ continue; } - const directDependencyPackageNames = dependencies - .filter((dep) => dep.source === dependency.source) - .map((dep) => dep.target); - for (const directDependencyPackageName of directDependencyPackageNames) { const tagsForTargetPackage = tagsByPackageName.get( directDependencyPackageName, @@ -124,7 +133,7 @@ export async function getViolations({ violations.push({ sourcePackageName: dependency.source, targetPackageName: directDependencyPackageName, - appliedTo: constraint.applyTo, + appliedTo: key, allowed: constraint.allow, disallowed: hasDisallow ? constraint.disallow : [], found: tagsForTargetPackage, @@ -134,9 +143,28 @@ export async function getViolations({ } if (hasDisallow && disallowed) { + const tagsForTargetPackage = tagsByPackageName.get(dependency.target); + + if (tagsByPackageName) { + const hasMatch = tagsForTargetPackage?.some((tag) => + disallowed.includes(tag), + ); + + if (hasMatch) { + violations.push({ + sourcePackageName: dependency.source, + targetPackageName: dependency.target, + appliedTo: key, + allowed: hasAllow ? constraint.allow : [], + disallowed: constraint.disallow, + found: tagsForTargetPackage, + }); + } + } + const allDependencies = getAllDependencies( dependencies, - dependency.source, + dependency.target, ); for (const targetDependency of allDependencies) { @@ -152,7 +180,7 @@ export async function getViolations({ violations.push({ sourcePackageName: dependency.source, targetPackageName: targetDependency.target, - appliedTo: constraint.applyTo, + appliedTo: key, allowed: hasAllow ? constraint.allow : [], disallowed: constraint.disallow, found: tagsForTargetPackage, diff --git a/packages/data-violations/test/get-violations.test.ts b/packages/data-violations/test/get-violations.test.ts index 923dd41d..1974f9cd 100644 --- a/packages/data-violations/test/get-violations.test.ts +++ b/packages/data-violations/test/get-violations.test.ts @@ -1,5 +1,4 @@ import { - Constraint, Dependency, Package, ProjectConfig, @@ -7,8 +6,8 @@ import { Violation, } from '@commonalityco/types'; import { DependencyType, PackageType } from '@commonalityco/utils-core'; -import { getViolations } from '../src/get-violations.js'; -import { describe, it, expect } from 'vitest'; +import { getAllDependencies, getViolations } from '../src/get-violations.js'; +import { describe, it, expect, bench } from 'vitest'; const basePackageOne = { path: '/pkgs/pkg-one', @@ -43,7 +42,7 @@ describe('getViolations', () => { it('does not return violations', async () => { const violations = await getViolations({ dependencies: [dependencyOne], - constraints: [], + constraints: {}, tagsData: baseTagsData, }); @@ -56,7 +55,7 @@ describe('getViolations', () => { it('does not return violations', async () => { const violations = await getViolations({ dependencies: [dependencyOne], - constraints: [{ applyTo: 'tag-one', allow: ['tag-two'] }], + constraints: { 'tag-one': { allow: ['tag-two'] } }, tagsData, }); @@ -69,7 +68,7 @@ describe('getViolations', () => { const tagsData = [ { packageName: basePackageOne.name, tags: ['tag-one'] }, ] satisfies TagsData[]; - const constraints = [{ applyTo: 'tag-four', allow: ['tag-five'] }]; + const constraints = { 'tag-four': { allow: ['tag-five'] } }; it('does not return violations', async () => { const violations = await getViolations({ @@ -84,10 +83,10 @@ describe('getViolations', () => { describe('and it has tags that matches a constraint', () => { describe('and the constraint allows a wildcard', () => { - const constraints = [ - { applyTo: 'tag-one', allow: '*' }, - { applyTo: 'restricted', allow: ['restricted'] }, - ] satisfies ProjectConfig['constraints']; + const constraints = { + 'tag-one': { allow: '*' }, + restricted: { allow: ['restricted'] }, + } satisfies ProjectConfig['constraints']; describe('and has a dependency that does not have any tags', () => { const tagsData = [ @@ -108,7 +107,10 @@ describe('getViolations', () => { describe('and has a dependency that has tags', () => { const tagsData = [ - { packageName: basePackageOne.name, tags: ['tag-one', 'restricted'] }, + { + packageName: basePackageOne.name, + tags: ['tag-one', 'restricted'], + }, { packageName: basePackageTwo.name, tags: ['foo'] }, ] satisfies TagsData[]; @@ -126,7 +128,7 @@ describe('getViolations', () => { describe('and the constraint allows specific tags', () => { describe('and has a dependency that does not have any tags', () => { - const constraints = [{ applyTo: 'tag-one', allow: ['tag-two'] }]; + const constraints = { 'tag-one': { allow: ['tag-two'] } }; const tagsData = [ { packageName: basePackageOne.name, tags: ['tag-one'] }, { packageName: basePackageTwo.name, tags: [] }, @@ -153,7 +155,7 @@ describe('getViolations', () => { }); describe('and has a dependency that has tags that are not allowed by the constraint', () => { - const constraints = [{ applyTo: 'tag-one', allow: ['tag-two'] }]; + const constraints = { 'tag-one': { allow: ['tag-two'] } }; const tagsData = [ { packageName: basePackageOne.name, tags: ['tag-one'] }, { packageName: basePackageTwo.name, tags: ['tag-three'] }, @@ -180,7 +182,7 @@ describe('getViolations', () => { }); describe('and has a dependency that has tags that are allowed by the constraint', () => { - const constraints = [{ applyTo: 'tag-one', allow: ['tag-two'] }]; + const constraints = { 'tag-one': { allow: ['tag-two'] } }; const tagsData = [ { packageName: basePackageOne.name, tags: ['tag-one'] }, { packageName: basePackageTwo.name, tags: ['tag-two'] }, @@ -200,12 +202,11 @@ describe('getViolations', () => { }); describe('and it has multiple tags that match multiple constraints', () => { - const constraints = [ - { applyTo: 'tag-one', allow: ['tag-two'] }, - { applyTo: 'tag-five', allow: ['tag-two'] }, - { applyTo: 'tag-two', allow: ['tag-two'] }, - { applyTo: 'tag-five', allow: ['tag-six'] }, - ]; + const constraints = { + 'tag-one': { allow: ['tag-two'] }, + 'tag-five': { allow: ['tag-six'] }, + 'tag-two': { allow: ['tag-two'] }, + }; describe('and the package has a dependency that does not have any tags', () => { const tagsData = [ @@ -291,25 +292,39 @@ describe('getViolations', () => { }); it('should produce a violation when a dependency has a disallowed tag', async () => { - const constraints = [{ applyTo: 'tag-one', disallow: ['tag-two'] }]; + const constraints = { 'tag-one': { disallow: ['tag-three'] } }; const tagsData = [ - { packageName: basePackageOne.name, tags: ['tag-one'] }, - { packageName: basePackageTwo.name, tags: ['tag-two', 'tag-three'] }, + { packageName: 'pkg-one', tags: ['tag-one', 'tag-two'] }, + { packageName: 'pkg-two', tags: ['tag-three'] }, + { packageName: 'pkg-three', tags: ['tag-four'] }, ] satisfies TagsData[]; const expectedViolation = { - sourcePackageName: '@scope/pkg-one', - targetPackageName: '@scope/pkg-two', + sourcePackageName: 'pkg-one', + targetPackageName: 'pkg-two', appliedTo: 'tag-one', allowed: [], - disallowed: ['tag-two'], - found: ['tag-two', 'tag-three'], + disallowed: ['tag-three'], + found: ['tag-three'], } satisfies Violation; const violations = await getViolations({ constraints, - dependencies: [dependencyOne], + dependencies: [ + { + source: 'pkg-one', + target: 'pkg-two', + version: '1.0.0', + type: DependencyType.PRODUCTION, + }, + { + source: 'pkg-one', + target: 'pkg-three', + version: '1.0.0', + type: DependencyType.PRODUCTION, + }, + ], tagsData, }); @@ -317,9 +332,9 @@ describe('getViolations', () => { }); it('should produce a violation when a dependency has both an allowed tag and a disallowed tag', async () => { - const constraints = [ - { applyTo: 'tag-one', allow: ['tag-three'], disallow: ['tag-two'] }, - ]; + const constraints = { + 'tag-one': { allow: ['tag-three'], disallow: ['tag-two'] }, + }; const expectedViolation: Violation = { sourcePackageName: '@scope/pkg-one', @@ -345,9 +360,9 @@ describe('getViolations', () => { }); it('should produce a violation when an indirect dependency has a disallowed tag', async () => { - const constraints = [ - { applyTo: 'tag-one', allow: ['tag-two'], disallow: ['tag-four'] }, - ]; + const constraints = { + 'tag-one': { allow: ['tag-two'], disallow: ['tag-four'] }, + }; const dependencies = [ dependencyOne, @@ -384,9 +399,9 @@ describe('getViolations', () => { }); describe('when a constraint is applied to all packages', () => { - const constraints = [ - { applyTo: '*', disallow: ['tag-two'] }, - ] satisfies Constraint[]; + const constraints = { + '*': { disallow: ['tag-two'] }, + } satisfies ProjectConfig['constraints']; const tagsData = [ { packageName: basePackageOne.name, tags: ['tag-one'] }, @@ -417,9 +432,9 @@ describe('getViolations', () => { describe('when a constraint disallows all tags', () => { describe('and allows some tags', () => { - const constraints = [ - { applyTo: 'tag-one', allow: ['tag-two'], disallow: '*' }, - ]; + const constraints = { + 'tag-one': { allow: ['tag-two'], disallow: '*' }, + } satisfies ProjectConfig['constraints']; describe('and a dependency has no tags', () => { const tagsData = [ @@ -475,9 +490,9 @@ describe('getViolations', () => { }); describe('and allows no tags', () => { - const constraints = [ - { applyTo: 'tag-one', disallow: '*' }, - ] satisfies Constraint[]; + const constraints = { + 'tag-one': { disallow: '*' }, + } satisfies ProjectConfig['constraints']; describe('and a dependency has no tags', () => { const tagsData = [ @@ -594,12 +609,13 @@ describe('getViolations', () => { }, ]; - const constraints = [ - { applyTo: 'feature', allow: '*' }, - { applyTo: 'data', allow: ['config'] }, - { applyTo: 'utility', allow: ['data'] }, - { applyTo: 'config', allow: ['config'] }, - ] satisfies Constraint[]; + const constraints = { + feature: { allow: '*' }, + data: { allow: ['config'] }, + utility: { allow: ['data'] }, + config: { allow: ['config'] }, + 'not-allowed': { disallow: ['config'] }, + } satisfies ProjectConfig['constraints']; it('returns violations', async () => { const violations = await getViolations({ diff --git a/packages/data-violations/tsconfig.json b/packages/data-violations/tsconfig.json index c1888b5b..bdbfbc40 100644 --- a/packages/data-violations/tsconfig.json +++ b/packages/data-violations/tsconfig.json @@ -1,9 +1,8 @@ { - "extends": "@commonalityco/config-tsconfig/node16.json", + "extends": "@commonalityco/config-tsconfig/node.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "typeRoots": ["./node_modules/@types"], - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "./dist", + "typeRoots": ["./node_modules/@types"] } } diff --git a/packages/data-violations/vitest.config.ts b/packages/data-violations/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/data-violations/vitest.config.ts +++ b/packages/data-violations/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/data-workspaces/.eslintrc.cjs b/packages/data-workspaces/.eslintrc.cjs new file mode 100644 index 00000000..97414f7d --- /dev/null +++ b/packages/data-workspaces/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['commonality'], +}; diff --git a/packages/data-workspaces/CHANGELOG.md b/packages/data-workspaces/CHANGELOG.md new file mode 100644 index 00000000..a2e9a992 --- /dev/null +++ b/packages/data-workspaces/CHANGELOG.md @@ -0,0 +1,80 @@ +# @commonalityco/constraints + +## 0.0.15 + +### Patch Changes + +- e9a5bc2: Add table view to Studio + +## 0.0.14 + +### Patch Changes + +- ffbc45c: Fixed graph color and reduced bundle size dramatically + +## 0.0.13 + +### Patch Changes + +- 91bfd71: Unify into commonality package + +## 0.0.12 + +### Patch Changes + +- 26e1636: Publish foundational packages + +## 0.0.11 + +### Patch Changes + +- a7691a8: Add skeleton and dep updates + +## 0.0.10 + +### Patch Changes + +- ee3504f: Distribute studio /dist + +## 0.0.9 + +### Patch Changes + +- dadeafb: Convert to ESM + +## 0.0.8 + +### Patch Changes + +- fb47c73: update build output + +## 0.0.7 + +### Patch Changes + +- da2c556: Initial release + +## 0.0.5 + +### Patch Changes + +- 76ea8f2: Initial release + +## 0.0.4 + +### Patch Changes + +- 66e2af0: Initial publish + +## 0.0.3 + +### Patch Changes + +- 7b374d1: Change to projectId +- 3849716: Change config file format from json to js + +## 0.0.2 + +### Patch Changes + +- b81d284: commonality validate has been added to the CLI diff --git a/packages/data-workspaces/README.md b/packages/data-workspaces/README.md new file mode 100644 index 00000000..6c6c76d5 --- /dev/null +++ b/packages/data-workspaces/README.md @@ -0,0 +1,7 @@ +# @commonalityco/data-workspaces +> Get information about your local workspaces +## Installation + +```sh +npm install @commonalityco/data-workspaces +``` \ No newline at end of file diff --git a/packages/data-workspaces/commonality.json b/packages/data-workspaces/commonality.json new file mode 100644 index 00000000..2837017e --- /dev/null +++ b/packages/data-workspaces/commonality.json @@ -0,0 +1 @@ +{"tags":["utility"]} diff --git a/packages/data-workspaces/package.json b/packages/data-workspaces/package.json new file mode 100644 index 00000000..b5cea942 --- /dev/null +++ b/packages/data-workspaces/package.json @@ -0,0 +1,32 @@ +{ + "name": "@commonalityco/data-workspaces", + "description": "Get information about your local workspaces", + "private": true, + "version": "0.0.0", + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "scripts": { + "build": "tsc --build", + "dev": "tsc --watch", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/data-codeowners": "workspace:*", + "@commonalityco/data-documents": "workspace:*", + "@commonalityco/data-packages": "workspace:*", + "@commonalityco/data-project": "workspace:*", + "@commonalityco/data-tags": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + } +} \ No newline at end of file diff --git a/packages/data-workspaces/src/get-workspaces.ts b/packages/data-workspaces/src/get-workspaces.ts new file mode 100644 index 00000000..38b833c6 --- /dev/null +++ b/packages/data-workspaces/src/get-workspaces.ts @@ -0,0 +1,66 @@ +import { getTagsData } from '@commonalityco/data-tags'; +import { getPackages } from '@commonalityco/data-packages'; +import { getCodeownersData } from '@commonalityco/data-codeowners'; +import { + getPackageDirectories, + getWorkspaceGlobs, + getPackageManager, +} from '@commonalityco/data-project'; +import type { Workspace } from '@commonalityco/types'; +import fs from 'fs-extra'; +import path from 'node:path'; + +export const getWorkspaces = async ({ + rootDirectory, +}: { + rootDirectory: string; +}): Promise => { + const packageManager = await getPackageManager({ rootDirectory }); + const workspaceGlobs = await getWorkspaceGlobs({ + rootDirectory, + packageManager, + }); + const packageDirectories = await getPackageDirectories({ + rootDirectory, + workspaceGlobs, + }); + const packages = await getPackages({ rootDirectory }); + const codeownersData = await getCodeownersData({ rootDirectory, packages }); + const tagsData = await getTagsData({ rootDirectory, packages }); + + const workspacesResult = await Promise.all( + packageDirectories + .map(async (pkgDir) => { + try { + const packageJson = await fs.readJSON( + path.join(rootDirectory, pkgDir, 'package.json'), + ); + + if (!packageJson.name) { + return; + } + + const tags: string[] = + tagsData.find((data) => data.packageName === packageJson.name) + ?.tags ?? []; + const codeowners = + codeownersData.find((data) => data.packageName === packageJson.name) + ?.codeowners ?? []; + + return { + path: pkgDir, + codeowners, + tags, + packageJson, + } satisfies Workspace; + } catch { + return false; + } + }) + .filter(Boolean), + ); + + return workspacesResult.filter( + (workspace): workspace is Workspace => !!workspace, + ); +}; diff --git a/packages/data-workspaces/src/index.ts b/packages/data-workspaces/src/index.ts new file mode 100644 index 00000000..74a69ab5 --- /dev/null +++ b/packages/data-workspaces/src/index.ts @@ -0,0 +1 @@ +export * from './get-workspaces.js'; diff --git a/packages/data-workspaces/tsconfig.json b/packages/data-workspaces/tsconfig.json new file mode 100644 index 00000000..bdbfbc40 --- /dev/null +++ b/packages/data-workspaces/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@commonalityco/config-tsconfig/node.json", + "include": ["src/**/*.ts", "src/**/*.tsx"], + "compilerOptions": { + "outDir": "./dist", + "typeRoots": ["./node_modules/@types"] + } +} diff --git a/packages/data-workspaces/vitest.config.ts b/packages/data-workspaces/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/data-workspaces/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/feature-graph/CHANGELOG.md b/packages/feature-graph/CHANGELOG.md index 94a8136b..b5388328 100644 --- a/packages/feature-graph/CHANGELOG.md +++ b/packages/feature-graph/CHANGELOG.md @@ -1,18 +1,5 @@ # @commonalityco/feature-graph -## 0.0.14 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] -- Updated dependencies [0f60d9b] - - @commonalityco/ui-design-system@0.0.13 - - @commonalityco/utils-graph@0.0.12 - - @commonalityco/data-graph@0.0.13 - - @commonalityco/utils-core@0.0.11 - - @commonalityco/ui-graph@0.0.16 - ## 0.0.13 ### Patch Changes diff --git a/packages/feature-graph/README.md b/packages/feature-graph/README.md new file mode 100644 index 00000000..857af1ec --- /dev/null +++ b/packages/feature-graph/README.md @@ -0,0 +1,7 @@ +# @commonalityco/feature-graph +> Full-featured drop-in components to build the dependency graph view +## Installation + +```sh +npm install @commonalityco/feature-graph +``` \ No newline at end of file diff --git a/packages/feature-graph/package.json b/packages/feature-graph/package.json index 6ec25455..319b1594 100644 --- a/packages/feature-graph/package.json +++ b/packages/feature-graph/package.json @@ -6,7 +6,7 @@ }, "type": "module", "sideEffects": false, - "version": "0.0.14", + "version": "0.0.13", "types": "./dist/index.d.ts", "dependencies": { "lodash.debounce": "^4.0.8", @@ -24,13 +24,13 @@ "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", "@types/lodash.debounce": "^4.0.7", - "@types/react": "^18.2.21", + "@types/react": "^18.2.22", "@xstate/react": "^3.2.2", "cytoscape": "^3.26.0", "eslint-config-commonality": "workspace:*", "lucide-react": "^0.274.0", "next-themes": "^0.2.1", - "postcss": "^8.4.29", + "postcss": "^8.4.30", "react": "^18.2.0", "react-dom": "^18.2.0", "tailwindcss": "^3.3.3", @@ -47,8 +47,8 @@ "@xstate/react": "^3.2.2", "lucide-react": "^0.x", "next-themes": "^0.x", - "react": ">=17", - "react-dom": ">=17", + "react": ">=18", + "react-dom": ">=18", "xstate": "^4.37.2" }, "scripts": { @@ -62,4 +62,4 @@ ".": "./dist/index.js", "./*": "./dist/*.js" } -} +} \ No newline at end of file diff --git a/packages/feature-graph/src/feature-graph-chart.tsx b/packages/feature-graph/src/feature-graph-chart.tsx index 53d22ac8..df76faad 100644 --- a/packages/feature-graph/src/feature-graph-chart.tsx +++ b/packages/feature-graph/src/feature-graph-chart.tsx @@ -1,8 +1,8 @@ 'use client'; import { - Constraint, Dependency, Package, + ProjectConfig, Violation, } from '@commonalityco/types'; import { Package as PackageIcon } from 'lucide-react'; @@ -17,7 +17,7 @@ import debounce from 'lodash.debounce'; interface GraphProperties { packages: Package[]; violations: Violation[]; - constraints: Constraint[]; + constraints: ProjectConfig['constraints']; dependencies: Dependency[]; theme?: string; onPackageClick: (packageName: string) => void; diff --git a/packages/feature-graph/src/feature-graph-dependency-tooltip.tsx b/packages/feature-graph/src/feature-graph-dependency-tooltip.tsx index 17368706..326f86cb 100644 --- a/packages/feature-graph/src/feature-graph-dependency-tooltip.tsx +++ b/packages/feature-graph/src/feature-graph-dependency-tooltip.tsx @@ -1,54 +1,20 @@ 'use client'; import { TooltipDependency } from '@commonalityco/ui-graph'; import { GraphContext } from './graph-provider.js'; -import { - Constraint, - Dependency, - Package, - TagsData, - Violation, -} from '@commonalityco/types'; +import { Dependency } from '@commonalityco/types'; import { GraphTooltip } from '@commonalityco/ui-graph'; -import { useMemo } from 'react'; -export function FeatureGraphDependencyTooltip({ - constraints, - violations, - tagsData, -}: { - constraints: Constraint[]; - violations: Violation[]; - tagsData: TagsData[]; -}) { +export function FeatureGraphDependencyTooltip() { const selectedEdge = GraphContext.useSelector( (state) => state.context.selectedEdge, ); const dependency: Dependency | undefined = selectedEdge?.data(); - const dependencyConstraints = useMemo(() => { - if (!selectedEdge || !constraints) return []; - - const dependencyConstraints = - constraints?.filter((constraint) => { - const sourcePackage: Package = selectedEdge.source().data(); - const tagsForPackage = tagsData?.find( - (data) => data.packageName === sourcePackage.name, - ); - - return tagsForPackage?.tags.includes(constraint.applyTo); - }) ?? []; - - return dependencyConstraints; - }, [selectedEdge, constraints]); return ( <> {selectedEdge && dependency && ( - + )} diff --git a/packages/feature-graph/src/feature-graph-toolbar.tsx b/packages/feature-graph/src/feature-graph-toolbar.tsx index 08a8cba9..e0bdd2c0 100644 --- a/packages/feature-graph/src/feature-graph-toolbar.tsx +++ b/packages/feature-graph/src/feature-graph-toolbar.tsx @@ -2,7 +2,7 @@ import { ComponentProps } from 'react'; import { GraphContext } from './graph-provider.js'; import { GraphToolbar } from '@commonalityco/ui-graph'; -import { Constraint, Package, Violation } from '@commonalityco/types'; +import { Package, ProjectConfig, Violation } from '@commonalityco/types'; interface FeatureGraphToolbarProperties extends Omit< @@ -15,7 +15,7 @@ interface FeatureGraphToolbarProperties | 'totalPackageCount' > { violations: Violation[]; - constraints: Constraint[]; + constraints: ProjectConfig['constraints']; packages: Package[]; } diff --git a/packages/feature-graph/tsconfig.json b/packages/feature-graph/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/feature-graph/tsconfig.json +++ b/packages/feature-graph/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/feature-graph/vitest.config.ts b/packages/feature-graph/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/feature-graph/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/studio/CHANGELOG.md b/packages/studio/CHANGELOG.md index 60080cd7..2eeabad6 100644 --- a/packages/studio/CHANGELOG.md +++ b/packages/studio/CHANGELOG.md @@ -1,30 +1,5 @@ # @commonalityco/dashboard -## 0.2.23 - -### Patch Changes - -- 51411d8: update dependencies -- 0f60d9b: cache graph calculations -- Updated dependencies [51411d8] -- Updated dependencies [0f60d9b] - - @commonalityco/data-graph-worker@0.0.10 - - @commonalityco/ui-design-system@0.0.13 - - @commonalityco/data-codeowners@0.0.17 - - @commonalityco/data-documents@0.0.13 - - @commonalityco/data-packages@0.0.18 - - @commonalityco/feature-graph@0.0.14 - - @commonalityco/data-project@0.0.12 - - @commonalityco/utils-graph@0.0.12 - - @commonalityco/data-graph@0.0.13 - - @commonalityco/ui-package@0.0.16 - - @commonalityco/utils-core@0.0.11 - - @commonalityco/data-tags@0.0.13 - - @commonalityco/ui-graph@0.0.16 - - @commonalityco/ui-core@0.0.14 - - @commonalityco/data-violations@0.0.15 - - @commonalityco/utils-package@0.0.11 - ## 0.2.22 ### Patch Changes diff --git a/packages/studio/README.md b/packages/studio/README.md index 5bc7ca24..b353d141 100644 --- a/packages/studio/README.md +++ b/packages/studio/README.md @@ -1,38 +1,7 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# @commonalityco/studio +> The Next.js application that powers Commonality Studio +## Installation -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. - -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +```sh +npm install @commonalityco/studio +``` \ No newline at end of file diff --git a/packages/studio/commonality.json b/packages/studio/commonality.json index 43ad6695..2f3bf8b8 100644 --- a/packages/studio/commonality.json +++ b/packages/studio/commonality.json @@ -1 +1 @@ -{"tags":["application"]} +{ "tags": ["application"] } diff --git a/packages/studio/package.json b/packages/studio/package.json index 03b6e269..f7e1884d 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -1,7 +1,7 @@ { "name": "@commonalityco/studio", "description": "The Next.js application that powers Commonality Studio", - "version": "0.2.23", + "version": "0.2.22", "publishConfig": { "access": "public" }, @@ -14,10 +14,13 @@ "test": "vitest", "e2e:run-script": "node dist/dev-start.js", "e2e": "pnpm run build:script && start-server-and-test e2e:run-script http://localhost:3000 \"cypress open --e2e\"", - "e2e:headless": "pnpm run build:script && start-server-and-test e2e:run-script http://localhost:3000 \"cypress run --e2e\"" + "e2e:headless": "pnpm run build:script && start-server-and-test e2e:run-script http://localhost:3000 \"cypress run --e2e\"", + "type-check": "tsc --noEmit", + "lint:fix": "eslint . --fix" }, "dependencies": { "@commonalityco/data-codeowners": "workspace:*", + "@commonalityco/data-conformance": "workspace:*", "@commonalityco/data-documents": "workspace:*", "@commonalityco/data-graph": "workspace:*", "@commonalityco/data-graph-worker": "workspace:*", @@ -34,7 +37,7 @@ "@commonalityco/utils-graph": "workspace:*", "@commonalityco/utils-package": "workspace:*", "@hookform/resolvers": "^3.3.1", - "@tanstack/react-table": "^8.9.8", + "@tanstack/react-table": "^8.10.1", "@xstate/react": "^3.2.2", "bufferutil": "^4.0.7", "cookies-next": "^3.0.0", @@ -56,11 +59,6 @@ "react-hook-form": "7.x", "socket.io": "4.x" }, - "peerDependenciesMeta": { - "react-hook-form": { - "optional": true - } - }, "files": [ ".next/", "next.config.js", @@ -68,43 +66,43 @@ "dist/" ], "devDependencies": { - "@babel/core": "^7.22.17", - "@babel/preset-env": "^7.22.15", + "@babel/core": "^7.22.20", + "@babel/preset-env": "^7.22.20", "@commonalityco/config-tailwind": "workspace:*", "@commonalityco/types": "workspace:*", - "@next/bundle-analyzer": "^13.4.19", - "@tanstack/react-query": "^4.35.0", - "@tanstack/react-query-devtools": "^4.35.0", + "@next/bundle-analyzer": "^13.5.2", + "@tanstack/react-query": "^4.35.3", + "@tanstack/react-query-devtools": "^4.35.3", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", + "@testing-library/user-event": "^14.5.1", "@total-typescript/ts-reset": "^0.5.1", - "@types/fs-extra": "^11.0.1", + "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", - "@types/node": "^20.6.0", - "@types/react": "^18.2.21", + "@types/node": "^20.6.3", + "@types/react": "^18.2.22", "@types/react-dom": "^18.2.7", "@types/resolve": "^1.20.2", "@vitejs/plugin-react-swc": "^3.3.2", - "autoprefixer": "^10.4.15", + "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", - "cypress": "^13.1.0", + "cypress": "^12.17.4", "eslint": "^8.49.0", - "eslint-config-commonality": "workspace:^", + "eslint-config-commonality": "workspace:*", "eslint-config-next": "13.4.19", - "execa": "^8.0.1", + "execa": "^7.2.0", "fs-extra": "^11.1.1", "get-port": "^7.0.0", - "jest": "^29.6.4", - "jest-environment-jsdom": "^29.6.4", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "lucide-react": "^0.274.0", "next": "13.4.19", "next-themes": "^0.2.1", "pino": "^8.15.1", "pino-pretty": "^10.2.0", - "postcss": "^8.4.29", + "postcss": "^8.4.30", "prettier": "^3.0.3", "prettier-plugin-tailwindcss": "^0.5.4", "react-hook-form": "^7.46.1", diff --git a/packages/studio/server.js b/packages/studio/server.js index c665f602..e8e3769c 100644 --- a/packages/studio/server.js +++ b/packages/studio/server.js @@ -44,7 +44,8 @@ const createWebsocketConnection = async (server) => { 'docs/CODEOWNERS', '**/package.json', '**/commonality.json', - '.commonality/config.json', + '.commonality/config.ts', + '.commonality/config.js' ]; const watcher = chokidar.watch(globsToWatch, { diff --git a/packages/studio/src/app/(graph)/@chart/page.tsx b/packages/studio/src/app/(graph)/@chart/page.tsx index f3a21ab3..e84f4b47 100644 --- a/packages/studio/src/app/(graph)/@chart/page.tsx +++ b/packages/studio/src/app/(graph)/@chart/page.tsx @@ -2,15 +2,15 @@ import 'server-only'; import { getDependenciesData } from '@/data/dependencies'; import { getViolationsData } from '@/data/violations'; import { getPackagesData } from '@/data/packages'; -import { getConstraintsData } from '@/data/constraints'; import StudioChart from './studio-chart'; +import { getProjectData } from '@/data/project'; async function ChartPage() { - const [packages, dependencies, violations, constraints] = await Promise.all([ + const [packages, dependencies, violations, project] = await Promise.all([ getPackagesData(), getDependenciesData(), getViolationsData(), - getConstraintsData(), + getProjectData(), ]); return ( @@ -18,7 +18,7 @@ async function ChartPage() { dependencies={dependencies} violations={violations} packages={packages} - constraints={constraints} + constraints={project.config?.constraints} /> ); } diff --git a/packages/studio/src/app/(graph)/@chart/studio-chart.tsx b/packages/studio/src/app/(graph)/@chart/studio-chart.tsx index c08b8dbd..37837d0a 100644 --- a/packages/studio/src/app/(graph)/@chart/studio-chart.tsx +++ b/packages/studio/src/app/(graph)/@chart/studio-chart.tsx @@ -1,7 +1,7 @@ 'use client'; import { ComponentProps, useEffect, useState } from 'react'; import { useTheme } from 'next-themes'; -import { useQueryParams } from 'hooks/use-query-params'; +import { useQueryParams } from '@/hooks/use-query-params'; import { slugifyPackageName } from '@commonalityco/utils-core'; import { FeatureGraphChart } from '@commonalityco/feature-graph'; import { GraphChartLoading } from '@commonalityco/ui-graph'; diff --git a/packages/studio/src/app/(graph)/page.tsx b/packages/studio/src/app/(graph)/page.tsx index 28ffc251..52b6fd0c 100644 --- a/packages/studio/src/app/(graph)/page.tsx +++ b/packages/studio/src/app/(graph)/page.tsx @@ -1,29 +1,14 @@ -import { getConstraintsData } from '@/data/constraints'; -import { getViolationsData } from '@/data/violations'; import StudioGraphOverlays from './studio-graph-overlays'; import { preload as preloadPackages } from '@/data/packages'; import { preload as preloadProject } from '@/data/project'; import { preload as preloadDependencies } from '@/data/dependencies'; -import { getTagsData } from 'data/tags'; async function GraphPage() { preloadPackages(); preloadProject(); preloadDependencies(); - const [violations, constraints, tagsData] = await Promise.all([ - getViolationsData(), - getConstraintsData(), - getTagsData(), - ]); - - return ( - - ); + return ; } export default GraphPage; diff --git a/packages/studio/src/app/(graph)/studio-graph-overlays.tsx b/packages/studio/src/app/(graph)/studio-graph-overlays.tsx index 69135644..3b3015da 100644 --- a/packages/studio/src/app/(graph)/studio-graph-overlays.tsx +++ b/packages/studio/src/app/(graph)/studio-graph-overlays.tsx @@ -1,5 +1,4 @@ 'use client'; -import { ComponentProps } from 'react'; import dynamic from 'next/dynamic'; import { FeatureGraphDependencyTooltip } from '@commonalityco/feature-graph'; @@ -7,16 +6,10 @@ const FeatureGraphPackageTooltip = dynamic( () => import('@commonalityco/feature-graph/feature-graph-package-tooltip'), ); -function StudioGraphOverlays( - props: ComponentProps, -) { +function StudioGraphOverlays() { return (
- +
); diff --git a/packages/studio/src/app/(packages)/packages/page.tsx b/packages/studio/src/app/(packages)/packages/page.tsx index e4fd3691..b87b7439 100644 --- a/packages/studio/src/app/(packages)/packages/page.tsx +++ b/packages/studio/src/app/(packages)/packages/page.tsx @@ -12,7 +12,7 @@ import StudioPackagesTable from './studio-packages-table'; import StudioPackagesTablePaginator from './studio-packages-table-paginator'; import { getTableData } from './get-table-data'; -async function PackagesPage({ searchParams }: { searchParams: unknown }) { +async function PackagesPage({ searchParams = {} }: { searchParams: unknown }) { const [packages, documentsData, tagsData, codeownersData] = await Promise.all( [getPackagesData(), getDocumentsData(), getTagsData(), getCodeownersData()], ); @@ -58,11 +58,11 @@ async function PackagesPage({ searchParams }: { searchParams: unknown }) {
-

Packages

+

Conformance

{`${data.length}/${packages.length}`} + >{`${data.length} of ${packages.length} packages`}
diff --git a/packages/studio/src/app/(packages)/packages/studio-packages-table.tsx b/packages/studio/src/app/(packages)/packages/studio-packages-table.tsx index b1375de2..2fbbabd9 100644 --- a/packages/studio/src/app/(packages)/packages/studio-packages-table.tsx +++ b/packages/studio/src/app/(packages)/packages/studio-packages-table.tsx @@ -99,7 +99,17 @@ export function StudioTagsCell({ packageName={data.name} /> - setOpen(true)} /> + {data.tags.length > 0 ? ( + + ) : ( + setOpen(true)} /> + )} ); } diff --git a/packages/studio/src/app/layout.tsx b/packages/studio/src/app/layout.tsx index 06051b36..e7d73d51 100644 --- a/packages/studio/src/app/layout.tsx +++ b/packages/studio/src/app/layout.tsx @@ -1,15 +1,15 @@ import './globals.css'; import { clsx } from 'clsx'; -import { firaCode, inter } from 'constants/fonts'; -import { Providers } from 'app/providers'; +import { firaCode, inter } from '@/constants/fonts'; +import { Providers } from '@/app/providers'; import { cookies } from 'next/headers'; import StudioNavigation from './studio-navigation'; -import { getProject } from 'data/project'; +import { PackageManager } from '@commonalityco/utils-core'; export const metadata = { title: 'Commonality Studio', icons: { - icon: './favicon.png', + icon: './favicon.ico', }, }; @@ -18,7 +18,7 @@ export default async function RootLayout({ }: { children: React.ReactNode; }) { - const project = await getProject(); + const project = { name: 'hello', packageManager: PackageManager.PNPM }; const cookieStore = cookies(); const defaultTheme = cookieStore.get('commonality:theme')?.value; diff --git a/packages/studio/src/app/studio-navigation.tsx b/packages/studio/src/app/studio-navigation.tsx index 79c0c347..eb25e85d 100644 --- a/packages/studio/src/app/studio-navigation.tsx +++ b/packages/studio/src/app/studio-navigation.tsx @@ -4,6 +4,7 @@ import { NavigationLogo, Divider, ThemeButton, + BunLogo, } from '@commonalityco/ui-core'; import { useTheme } from 'next-themes'; import { Button } from '@commonalityco/ui-design-system'; @@ -25,6 +26,7 @@ const IconByPackageManager = { [PackageManager.NPM]: NpmLogo, [PackageManager.PNPM]: PnpmLogo, [PackageManager.YARN]: YarnLogo, + [PackageManager.BUN]: BunLogo, }; function LastUpdateTime() { @@ -99,7 +101,7 @@ function StudioNavigation({

{title}

-
diff --git a/packages/studio/src/components/create-tags-button.tsx b/packages/studio/src/components/create-tags-button.tsx index 9cc497cf..03b5c390 100644 --- a/packages/studio/src/components/create-tags-button.tsx +++ b/packages/studio/src/components/create-tags-button.tsx @@ -11,7 +11,7 @@ import { import { formatTagName } from '@commonalityco/utils-core'; import type { Package, TagsData } from '@commonalityco/types'; import { useMemo } from 'react'; -import { setTagsAction } from 'actions/metadata'; +import { setTagsAction } from '@/actions/metadata'; import { Pencil, Plus } from 'lucide-react'; export function CreateTagsButton({ diff --git a/packages/studio/src/components/edit-tags-dialog.tsx b/packages/studio/src/components/edit-tags-dialog.tsx index a7cfc7b6..783b696f 100644 --- a/packages/studio/src/components/edit-tags-dialog.tsx +++ b/packages/studio/src/components/edit-tags-dialog.tsx @@ -20,8 +20,7 @@ import React, { ComponentProps, useTransition } from 'react'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import * as z from 'zod'; -import { setTagsAction } from 'actions/metadata'; -import Link from 'next/link'; +import { setTagsAction } from '@/actions/metadata'; const formSchema = z.object({ tags: z.array(z.object({ label: z.string(), value: z.string() })), diff --git a/packages/studio/src/data/constraints.ts b/packages/studio/src/data/constraints.ts deleted file mode 100644 index 715f870d..00000000 --- a/packages/studio/src/data/constraints.ts +++ /dev/null @@ -1,12 +0,0 @@ -'use server'; -import 'server-only'; -import { getProjectConfig } from '@commonalityco/data-project'; -import { Constraint } from '@commonalityco/types'; - -export const getConstraintsData = async (): Promise => { - const projectConfig = await getProjectConfig({ - rootDirectory: process.env.COMMONALITY_ROOT_DIRECTORY, - }); - - return projectConfig.constraints ?? []; -}; diff --git a/packages/studio/src/data/project.ts b/packages/studio/src/data/project.ts index 3b740834..f76d7e7f 100644 --- a/packages/studio/src/data/project.ts +++ b/packages/studio/src/data/project.ts @@ -1,16 +1,19 @@ 'use server'; import 'server-only'; -import { getPackageManager } from '@commonalityco/data-project'; +import { getPackageManager } from '@commonalityco/data-project/get-package-manager'; import { getRootPackageName } from '@commonalityco/data-packages'; import { PackageManager } from '@commonalityco/utils-core'; +import { Package, ProjectConfig } from '@commonalityco/types'; +import { getProjectConfig } from '@commonalityco/data-project'; export const preload = () => { - getProject(); + getProjectData(); }; -export const getProject = async (): Promise<{ +export const getProjectData = async (): Promise<{ name: string; packageManager: PackageManager; + config?: ProjectConfig; }> => { const packageManager = await getPackageManager({ rootDirectory: process.env.COMMONALITY_ROOT_DIRECTORY, @@ -18,9 +21,13 @@ export const getProject = async (): Promise<{ const rootPackageName = await getRootPackageName({ rootDirectory: process.env.COMMONALITY_ROOT_DIRECTORY, }); + const config = await getProjectConfig({ + rootDirectory: process.env.COMMONALITY_ROOT_DIRECTORY, + }).then((result) => result?.config); return { name: rootPackageName, packageManager, + config, }; }; diff --git a/packages/studio/src/data/violations.ts b/packages/studio/src/data/violations.ts index d3d3ba4c..f932def8 100644 --- a/packages/studio/src/data/violations.ts +++ b/packages/studio/src/data/violations.ts @@ -23,7 +23,7 @@ export const getViolationsData = cache(async () => { const violations = getViolations({ dependencies, - constraints: projectConfig.constraints, + constraints: projectConfig?.config.constraints, tagsData, }); diff --git a/packages/studio/tsconfig.json b/packages/studio/tsconfig.json index 7c059cc3..6a0be5c7 100644 --- a/packages/studio/tsconfig.json +++ b/packages/studio/tsconfig.json @@ -19,9 +19,8 @@ } ], "paths": { - "@/*": ["./*"] + "@/*": ["./src/*"] }, - "baseUrl": "./src", "incremental": false, "types": ["@testing-library/jest-dom"] }, diff --git a/packages/types/README.md b/packages/types/README.md new file mode 100644 index 00000000..37343f54 --- /dev/null +++ b/packages/types/README.md @@ -0,0 +1,7 @@ +# @commonalityco/types +> Shared types for use across all Commonality projects +## Installation + +```sh +npm install @commonalityco/types +``` \ No newline at end of file diff --git a/packages/types/package.json b/packages/types/package.json index af137575..51d9e0e6 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -6,16 +6,16 @@ "publishConfig": { "access": "public" }, - "types": "./dist/index.d.ts", + "types": "./src/index.ts", "exports": { - ".": "./dist/index.js" + ".": "./src/index.ts" }, - "main": "./dist/index.js", + "main": "./src/index.ts", "license": "MIT", "scripts": { - "build": "tsc --build", - "dev": "tsc --watch", - "lint": "eslint ./src --fix" + "lint": "eslint ./src --fix", + "type-check": "tsc --noEmit", + "lint:fix": "eslint . --fix" }, "peerDependencies": { "@commonalityco/utils-core": "*" diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 00d964b3..2732970b 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -6,15 +6,12 @@ import { export type Constraint = | { - applyTo: string; allow: string[] | typeof AllPackagesWildcard; } | { - applyTo: string; disallow: string[] | typeof AllPackagesWildcard; } | { - applyTo: string; allow: string[] | typeof AllPackagesWildcard; disallow: string[] | typeof AllPackagesWildcard; }; @@ -71,11 +68,102 @@ export type Package = { version: string; }; -export type ProjectConfig = { - projectId?: string; - constraints?: Constraint[]; +export type Workspace = { + path: string; + tags: Tag[]; + codeowners: Codeowner[]; + packageJson: PackageJson; }; +export type ValidateFn = (opts: { + workspace: Workspace; + projectWorkspaces: Workspace[]; + json: JsonFileCreator; + yaml: YamlFileCreator; + text: TextFileCreator; +}) => boolean | Promise; + +export interface File { + exists: () => Promise; + delete: () => Promise; +} + +export interface YamlFile extends File { + get(): Promise; + get(path: string, defaultValue?: string): Promise; + set(value: Record): Promise; + set(path: string, value: string): Promise; + remove(path: string): Promise; +} + +export type YamlFileCreator = (filename: string) => YamlFile; + +export interface JsonFile extends File { + get(path: string): Promise; + get>(): Promise; + set: (path: string, value: string | Record) => Promise; + remove: (path: string) => Promise; +} + +export type JsonFileCreator = (filename: string) => JsonFile; + +export interface TextFile extends File { + get: () => Promise; + set: (lines: string[]) => Promise; + add: (line: string | string[]) => Promise; + remove: (line: string | string[]) => Promise; + matches: (expected: string | string[]) => Promise; +} + +export type TextFileCreator = (filename: string) => TextFile; + +export type FileCreatorFactory = ({ + rootDirectory, +}: { + rootDirectory: string; + workspace: Workspace; +}) => File; + +export type FixFn = (opts: { + workspace: Workspace; + projectWorkspaces: Workspace[]; + json: JsonFileCreator; + yaml: YamlFileCreator; + text: TextFileCreator; +}) => void | Promise; + +export interface Conformer { + name: string; + level?: 'error' | 'warning'; + validate: ValidateFn; + fix?: FixFn; + type?: 'warning' | 'error'; + message?: string | ((options: { workspace: Workspace }) => string); +} + +export type ConformerCreator = (options?: T) => Conformer; + +export type ConformanceResult = { + name: string; + pattern: string; + fix?: FixFn; + level: 'error' | 'warning'; + isValid: boolean; + workspace: Workspace; + message: string; +}; + +export interface ProjectConfig { + // The unique identifier of the project + projectId?: string; + project?: { + onConform?: string; + }; + // An array of constraints that the project should adhere to + constraints?: Record; + conformers?: Record; +} + export type PackageConfig = { tags?: string[]; }; diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index e46eaaae..bdbfbc40 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "@commonalityco/config-tsconfig/node16.json", + "extends": "@commonalityco/config-tsconfig/node.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", + "outDir": "./dist", "typeRoots": ["./node_modules/@types"] } } diff --git a/packages/types/vitest.config.ts b/packages/types/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/types/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/ui-core/README.md b/packages/ui-core/README.md new file mode 100644 index 00000000..9324b87b --- /dev/null +++ b/packages/ui-core/README.md @@ -0,0 +1,7 @@ +# @commonalityco/ui-core +> Presentational components used to build Commonality applications +## Installation + +```sh +npm install @commonalityco/ui-core +``` \ No newline at end of file diff --git a/packages/ui-core/package.json b/packages/ui-core/package.json index 31c0397b..503915b0 100644 --- a/packages/ui-core/package.json +++ b/packages/ui-core/package.json @@ -9,7 +9,7 @@ "sideEffects": false, "types": "./dist/index.d.ts", "dependencies": { - "@commonalityco/types": "workspace:^", + "@commonalityco/types": "workspace:*", "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "react-markdown": "^8.0.7", @@ -22,9 +22,9 @@ "@commonalityco/config-tsconfig": "workspace:*", "@commonalityco/ui-design-system": "workspace:*", "@testing-library/react": "^14.0.0", - "@types/react": "^18.2.21", + "@types/react": "^18.2.22", "@types/react-syntax-highlighter": "^15.5.7", - "eslint-config-commonality": "workspace:^", + "eslint-config-commonality": "workspace:*", "lucide-react": "^0.274.0", "next": "13.4.19", "next-themes": "^0.2.1", @@ -37,17 +37,18 @@ "peerDependencies": { "@commonalityco/ui-design-system": "*", "lucide-react": "^0.x", - "next": ">=13", + "next": "13.4.19", "next-themes": "^0.x", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "react": ">=18", + "react-dom": ">=18" }, "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix", "build": "tsc --build", "dev": "tsc --watch", - "test": "vitest" + "test": "vitest", + "type-check": "tsc --noEmit" }, "exports": { ".": "./dist/index.js", @@ -57,4 +58,4 @@ "engines": { "node": ">=16" } -} +} \ No newline at end of file diff --git a/packages/ui-core/src/bun-logo.tsx b/packages/ui-core/src/bun-logo.tsx new file mode 100644 index 00000000..114d7fde --- /dev/null +++ b/packages/ui-core/src/bun-logo.tsx @@ -0,0 +1,102 @@ +import cn from '@commonalityco/ui-design-system/cn'; + +export function BunLogo({ className }: { className?: string }) { + return ( + + Bun Logo + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/packages/ui-core/src/download.svg b/packages/ui-core/src/download.svg new file mode 100644 index 00000000..7ef15001 --- /dev/null +++ b/packages/ui-core/src/download.svg @@ -0,0 +1 @@ +Bun Logo \ No newline at end of file diff --git a/packages/ui-core/src/index.ts b/packages/ui-core/src/index.ts index ce6cadae..4b0c07d1 100644 --- a/packages/ui-core/src/index.ts +++ b/packages/ui-core/src/index.ts @@ -5,6 +5,7 @@ export { GradientFade } from './gradient-fade.js'; export { NpmLogo } from './npm-logo.js'; export { PnpmLogo } from './pnpm-logo.js'; export { YarnLogo } from './yarn-logo.js'; +export { BunLogo } from './bun-logo.js'; export { NavigationLogo } from './navigation-logo.js'; export { Divider } from './divider.js'; export { ThemeButtonLoading } from './theme-button-loading.js'; diff --git a/packages/ui-core/tsconfig.json b/packages/ui-core/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/ui-core/tsconfig.json +++ b/packages/ui-core/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/ui-core/vitest.config.ts b/packages/ui-core/vitest.config.ts index c4588ab8..701d5ef6 100644 --- a/packages/ui-core/vitest.config.ts +++ b/packages/ui-core/vitest.config.ts @@ -1,8 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({ - test: { - environment: 'jsdom', - globals: true, - }, -}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/ui-design-system/CHANGELOG.md b/packages/ui-design-system/CHANGELOG.md index 966e4eb7..26e86be4 100644 --- a/packages/ui-design-system/CHANGELOG.md +++ b/packages/ui-design-system/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/ui-design-system -## 0.0.13 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.12 ### Patch Changes diff --git a/packages/ui-design-system/README.md b/packages/ui-design-system/README.md new file mode 100644 index 00000000..cc28abd4 --- /dev/null +++ b/packages/ui-design-system/README.md @@ -0,0 +1,7 @@ +# @commonalityco/ui-design-system +> UI primitives built with shadcn +## Installation + +```sh +npm install @commonalityco/ui-design-system +``` \ No newline at end of file diff --git a/packages/ui-design-system/package.json b/packages/ui-design-system/package.json index 66371a3c..7d48cafb 100644 --- a/packages/ui-design-system/package.json +++ b/packages/ui-design-system/package.json @@ -1,7 +1,7 @@ { "name": "@commonalityco/ui-design-system", "description": "UI primitives built with shadcn", - "version": "0.0.13", + "version": "0.0.12", "publishConfig": { "access": "public" }, @@ -30,7 +30,7 @@ "clsx": "^2.0.0", "cmdk": "^0.2.0", "react-hook-form": "^7.46.1", - "react-select": "^5.7.4", + "react-select": "^5.7.5", "tailwind-merge": "^1.14.0" }, "devDependencies": { @@ -38,10 +38,10 @@ "@commonalityco/config-tsconfig": "workspace:*", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", - "@types/react": "^18.2.21", - "eslint-config-commonality": "workspace:^", + "@types/react": "^18.2.22", + "eslint-config-commonality": "workspace:*", "lucide-react": "^0.274.0", - "postcss": "^8.4.29", + "postcss": "^8.4.30", "react": "^18.2.0", "react-dom": "^18.2.0", "tailwindcss": "^3.3.3", diff --git a/packages/ui-design-system/src/badge.tsx b/packages/ui-design-system/src/badge.tsx index 2e5784c9..0a6dac78 100644 --- a/packages/ui-design-system/src/badge.tsx +++ b/packages/ui-design-system/src/badge.tsx @@ -15,7 +15,7 @@ const badgeVariants = cva( 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80', success: 'border-transparent bg-success text-success-foreground shadow hover:bg-success/80', - outline: 'text-foreground', + outline: 'text-foreground bg-background', }, }, defaultVariants: { diff --git a/packages/ui-design-system/src/index.ts b/packages/ui-design-system/src/index.ts index a5555484..56e7888b 100644 --- a/packages/ui-design-system/src/index.ts +++ b/packages/ui-design-system/src/index.ts @@ -1,32 +1,109 @@ -export * from './accordion.js'; -export * from './alert.js'; -export * from './button.js'; -export * from './badge.js'; -export * from './form.js'; -export * from './dialog.js'; -export * from './card.js'; -export * from './checkbox.js'; -export * from './dropdown-menu.js'; -export * from './heading.js'; -export * from './label.js'; -export * from './scroll-area.js'; -export * from './select.js'; -export * from './separator.js'; -export * from './sheet.js'; -export * from './skeleton.js'; -export * from './snippet.js'; -export * from './kbd.js'; -export * from './switch.js'; -export * from './popover.js'; -export * from './command.js'; -export * from './input.js'; -export * from './table.js'; -export * from './text.js'; -export * from './toggle.js'; -export * from './tooltip.js'; -export * from './hover-card.js'; -export * from './toaster.js'; - -export * from './use-toast.js'; - -export * from './cn.js'; +export { + Accordion, + AccordionItem, + AccordionTrigger, + AccordionContent, +} from './accordion.js'; +export { Alert, AlertTitle, AlertDescription } from './alert.js'; +export { Button, buttonVariants } from './button.js'; +export { Badge, badgeVariants } from './badge.js'; +export { + useFormField, + Form, + FormItem, + FormLabel, + FormControl, + FormDescription, + FormMessage, + FormField, +} from './form.js'; +export { + Dialog, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} from './dialog.js'; +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, +} from './card.js'; +export { Checkbox } from './checkbox.js'; +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} from './dropdown-menu.js'; +export { Heading, HeadingProperties } from './heading.js'; +export { Label } from './label.js'; +export { ScrollArea, ScrollBar } from './scroll-area.js'; +export { Select, CreatebleSelect } from './select.js'; +export { Separator } from './separator.js'; +export { + Sheet, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} from './sheet.js'; +export { Skeleton } from './skeleton.js'; +export { Snippet, SnippetProperties } from './snippet.js'; +export { Kbd } from './kbd.js'; +export { Switch } from './switch.js'; +export { Popover, PopoverTrigger, PopoverContent } from './popover.js'; +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} from './command.js'; +export { Input, InputProperties } from './input.js'; +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableHeadSortButton, + TableRow, + TableCell, + TableCaption, +} from './table.js'; +export { Text } from './text.js'; +export { Toggle, toggleVariants } from './toggle.js'; +export { + Tooltip, + TooltipTrigger, + TooltipContent, + TooltipProvider, +} from './tooltip.js'; +export { HoverCard, HoverCardTrigger, HoverCardContent } from './hover-card.js'; +export { Toaster } from './toaster.js'; +export { useToast } from './use-toast.js'; +export { cn } from './cn.js'; diff --git a/packages/ui-design-system/tsconfig.json b/packages/ui-design-system/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/ui-design-system/tsconfig.json +++ b/packages/ui-design-system/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/ui-design-system/vitest.config.ts b/packages/ui-design-system/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/ui-design-system/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/ui-graph/CHANGELOG.md b/packages/ui-graph/CHANGELOG.md index 533b1f37..eedad772 100644 --- a/packages/ui-graph/CHANGELOG.md +++ b/packages/ui-graph/CHANGELOG.md @@ -1,16 +1,5 @@ # @commonalityco/ui-graph -## 0.0.16 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/ui-design-system@0.0.13 - - @commonalityco/utils-core@0.0.11 - - @commonalityco/ui-core@0.0.14 - - @commonalityco/utils-package@0.0.11 - ## 0.0.15 ### Patch Changes diff --git a/packages/ui-graph/README.md b/packages/ui-graph/README.md new file mode 100644 index 00000000..08c55aaa --- /dev/null +++ b/packages/ui-graph/README.md @@ -0,0 +1,7 @@ +# @commonalityco/ui-graph +> Presentational components to build the Commonality dependency graph view +## Installation + +```sh +npm install @commonalityco/ui-graph +``` \ No newline at end of file diff --git a/packages/ui-graph/package.json b/packages/ui-graph/package.json index fcfaf9ae..c8465abf 100644 --- a/packages/ui-graph/package.json +++ b/packages/ui-graph/package.json @@ -1,64 +1,64 @@ { - "name": "@commonalityco/ui-graph", - "description": "Presentational components to build the Commonality dependency graph view", - "type": "module", - "version": "0.0.16", - "publishConfig": { - "access": "public" - }, - "sideEffects": false, - "dependencies": { - "@popperjs/core": "^2.11.8", - "react-popper": "^2.3.0", - "react-resizable-panels": "^0.0.55", - "react-wrap-balancer": "^1.1.0" - }, - "devDependencies": { - "@commonalityco/config-tailwind": "workspace:*", - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@commonalityco/ui-core": "workspace:*", - "@commonalityco/ui-design-system": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "@commonalityco/utils-package": "workspace:*", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/cytoscape": "^3.19.11", - "@types/lodash.debounce": "^4.0.7", - "@types/react": "^18.2.21", - "@vitejs/plugin-react-swc": "^3.3.2", - "cytoscape": "^3.26.0", - "eslint-config-commonality": "workspace:*", - "lucide-react": "^0.274.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwindcss": "^3.3.3", - "typescript": "^5.2.2" - }, - "license": "MIT", - "peerDependencies": { - "@commonalityco/ui-core": "*", - "@commonalityco/ui-design-system": "*", - "@commonalityco/utils-core": "*", - "@commonalityco/utils-package": "*", - "lucide-react": "^0.x", - "react": ">=17", - "react-dom": ">=17" - }, - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" - }, - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc", - "dev": "tsc --watch", - "test": "vitest", - "type-check": "tsc --noEmit" - } -} + "name": "@commonalityco/ui-graph", + "description": "Presentational components to build the Commonality dependency graph view", + "type": "module", + "version": "0.0.15", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "dependencies": { + "@popperjs/core": "^2.11.8", + "react-popper": "^2.3.0", + "react-resizable-panels": "^0.0.55", + "react-wrap-balancer": "^1.1.0" + }, + "devDependencies": { + "@commonalityco/config-tailwind": "workspace:*", + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/ui-core": "workspace:*", + "@commonalityco/ui-design-system": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "@commonalityco/utils-package": "workspace:*", + "@testing-library/dom": "^9.3.3", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.5.1", + "@types/cytoscape": "^3.19.11", + "@types/lodash.debounce": "^4.0.7", + "@types/react": "^18.2.22", + "@vitejs/plugin-react-swc": "^3.3.2", + "cytoscape": "^3.26.0", + "eslint-config-commonality": "workspace:*", + "lucide-react": "^0.274.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "^3.3.3", + "typescript": "^5.2.2" + }, + "license": "MIT", + "peerDependencies": { + "@commonalityco/ui-core": "*", + "@commonalityco/ui-design-system": "*", + "@commonalityco/utils-core": "*", + "@commonalityco/utils-package": "*", + "lucide-react": "^0.x", + "react": ">=18", + "react-dom": ">=18" + }, + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc", + "dev": "tsc --watch", + "test": "vitest", + "type-check": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/packages/ui-graph/src/components/constraint-accordion-item.tsx b/packages/ui-graph/src/components/constraint-accordion-item.tsx deleted file mode 100644 index 0d5dbf69..00000000 --- a/packages/ui-graph/src/components/constraint-accordion-item.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { Constraint } from '@commonalityco/types'; -import { AccordionItem } from '@commonalityco/ui-design-system/accordion'; - -export function ConstraintAccordionItem({ - constraint, - children, -}: { - constraint: Constraint; - children?: React.ReactNode; -}) { - return ( - - {children} - - ); -} diff --git a/packages/ui-graph/src/components/constraint-accordion-trigger.test.tsx b/packages/ui-graph/src/components/constraint-accordion-trigger.test.tsx deleted file mode 100644 index eb6f0258..00000000 --- a/packages/ui-graph/src/components/constraint-accordion-trigger.test.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import { ConstraintAccordionTrigger } from './constraint-accordion-trigger.js'; -import { describe, test, expect } from 'vitest'; -import { Constraint } from '@commonalityco/types'; -import { - Accordion, - AccordionItem, -} from '@commonalityco/ui-design-system/accordion'; - -describe('', () => { - test('renders the given constraint.applyTo value', () => { - const constraint = { - applyTo: 'test-tag', - allow: [], - disallow: [], - } satisfies Constraint; - - render( - - - - - , - ); - - expect(screen.getByText('#test-tag')).toBeTruthy(); - }); - - test('displays "All packages" when constraint.applyTo is "*"', () => { - const constraint = { applyTo: '*', allow: [], disallow: [] }; - - render( - - - - - , - ); - - expect(screen.getByText('All packages')).toBeTruthy(); - expect(screen.queryByText('#*')).not.toBeTruthy(); - }); -}); diff --git a/packages/ui-graph/src/components/constraint-accordion-trigger.tsx b/packages/ui-graph/src/components/constraint-accordion-trigger.tsx deleted file mode 100644 index c8a84427..00000000 --- a/packages/ui-graph/src/components/constraint-accordion-trigger.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import { Constraint } from '@commonalityco/types'; -import { AccordionTrigger } from '@commonalityco/ui-design-system/accordion'; -import { Badge } from '@commonalityco/ui-design-system/badge'; -import { cn } from '@commonalityco/ui-design-system'; - -export function ConstraintAccordionTrigger({ - constraint, - variant, - children, - className, -}: { - constraint: Constraint; - variant: 'pass' | 'error'; - children?: React.ReactNode; - className?: string; -}) { - return ( - -
- - {constraint.applyTo === '*' ? ( - 'All packages' - ) : ( - {`#${constraint.applyTo}`} - )} - - {children} -
-
- ); -} diff --git a/packages/ui-graph/src/components/constraint-result.test.tsx b/packages/ui-graph/src/components/constraint-result.test.tsx index aa7b6395..b6cc21b2 100644 --- a/packages/ui-graph/src/components/constraint-result.test.tsx +++ b/packages/ui-graph/src/components/constraint-result.test.tsx @@ -36,18 +36,14 @@ describe('', () => { describe('', () => { test('renders "Allowed" section when allow property is in constraint', () => { - render( - , - ); + render(); expect(screen.getByText('Allowed')).toBeTruthy(); expect(screen.queryByText('Disallowed')).not.toBeTruthy(); expect(screen.queryByText('Found')).not.toBeTruthy(); }); test('renders "Disallowed" section when disallow property is in constraint', () => { - render( - , - ); + render(); expect(screen.getByText('Disallowed')).toBeTruthy(); }); @@ -55,7 +51,6 @@ describe('', () => { render( { - const map: Record = {}; - - for (const violation of violations) { - const currentViolations = map[violation.appliedTo]; - - map[violation.appliedTo] = currentViolations - ? [...currentViolations, violation] - : [violation]; - } - - return map; - }, [violations]); - return ( - - - - - {constraints.length > 0 ? ( - - - {constraints.map((constraint) => { - const violations = - violationsByConstraintTag[constraint.applyTo]; - - return ( - - - -
- {violations?.length ? ( - - ) : ( - - )} -

{`${ - violations?.length ?? 0 - } violations`}

-
-
- {violations?.length ? ( - violations?.map((violation) => { - return ( -
-
- -
- - -
-
-
- -
-
- ); - }) - ) : ( - - )} -
-
-
- ); - })} -
-
- ) : ( -
- -

No constraints found

-

- Create constraints to enforce boundaries in your dependency graph. -

- -
- )} -
+
); } @@ -181,7 +53,7 @@ export interface GraphToolbarProperties { onZoomIn?: () => void; onZoomOut?: () => void; onFit?: () => void; - constraints: Constraint[]; + constraints: ProjectConfig['constraints']; violations: Violation[]; } @@ -193,7 +65,7 @@ export function GraphToolbar({ onZoomIn = () => {}, onZoomOut = () => {}, onFit = () => {}, - constraints = [], + constraints = {}, violations = [], }: GraphToolbarProperties) { return ( diff --git a/packages/ui-graph/src/graph-layout.tsx b/packages/ui-graph/src/graph-layout.tsx index 26958ee6..3a75cdd0 100644 --- a/packages/ui-graph/src/graph-layout.tsx +++ b/packages/ui-graph/src/graph-layout.tsx @@ -1,4 +1,3 @@ -import { Card } from '@commonalityco/ui-design-system'; import { cn } from '@commonalityco/ui-design-system/cn'; export function GraphLayoutRoot({ @@ -29,7 +28,9 @@ export function GraphLayoutAside({ }) { return (
- {children} +
+ {children} +
); } @@ -43,12 +44,15 @@ export function GraphLayoutMain({ }) { return (
- {children} - +
); } diff --git a/packages/ui-graph/src/sidebar.tsx b/packages/ui-graph/src/sidebar.tsx index 947fe6ea..d266c6a6 100644 --- a/packages/ui-graph/src/sidebar.tsx +++ b/packages/ui-graph/src/sidebar.tsx @@ -12,7 +12,6 @@ import { Tooltip, TooltipContent, TooltipTrigger, - Label, Card, CardHeader, CardTitle, diff --git a/packages/ui-graph/src/tooltip-dependency.tsx b/packages/ui-graph/src/tooltip-dependency.tsx index ec38fcbb..1a0e96bd 100644 --- a/packages/ui-graph/src/tooltip-dependency.tsx +++ b/packages/ui-graph/src/tooltip-dependency.tsx @@ -1,19 +1,8 @@ 'use client'; -import { - Accordion, - AccordionContent, - Badge, - cn, - ScrollArea, - Separator, -} from '@commonalityco/ui-design-system'; -import { Constraint, Dependency, Violation } from '@commonalityco/types'; +import { Badge, cn, Separator } from '@commonalityco/ui-design-system'; +import { Dependency } from '@commonalityco/types'; import { CornerDownRight } from 'lucide-react'; import { DependencyType } from '@commonalityco/utils-core'; -import { ConstraintAccordionItem } from './components/constraint-accordion-item.js'; -import { ConstraintAccordionTrigger } from './components/constraint-accordion-trigger.js'; -import { ConstraintResult } from './components/constraint-result.js'; -import { GradientFade } from '@commonalityco/ui-core'; const TextByType = { [DependencyType.PRODUCTION]: 'Production', @@ -23,15 +12,9 @@ const TextByType = { export interface TooltipDependencyProperties { dependency: Dependency; - constraints: Constraint[]; - violations: Violation[]; } -export function TooltipDependency({ - dependency, - constraints, - violations, -}: TooltipDependencyProperties) { +export function TooltipDependency({ dependency }: TooltipDependencyProperties) { return (
@@ -60,49 +43,6 @@ export function TooltipDependency({ {dependency.version}
-
-
-

Constraints

-
- - - - - {constraints.length > 0 ? ( - constraints.map((constraint) => { - const violation = violations.find( - (violation) => violation.appliedTo === constraint.applyTo, - ); - return ( -
- - - - - - -
- ); - }) - ) : ( -

- No constraints -

- )} -
- -
-
); } diff --git a/packages/ui-graph/tsconfig.json b/packages/ui-graph/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/ui-graph/tsconfig.json +++ b/packages/ui-graph/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/ui-graph/vitest.config.ts b/packages/ui-graph/vitest.config.ts index 1c148d4d..a022cadb 100644 --- a/packages/ui-graph/vitest.config.ts +++ b/packages/ui-graph/vitest.config.ts @@ -4,6 +4,7 @@ import react from '@vitejs/plugin-react-swc'; export default defineConfig({ plugins: [react()], test: { + globals: true, environment: 'jsdom', threads: false, setupFiles: ['./test/setup.ts'], diff --git a/packages/ui-package/CHANGELOG.md b/packages/ui-package/CHANGELOG.md index d2f9f3ec..98c4fe84 100644 --- a/packages/ui-package/CHANGELOG.md +++ b/packages/ui-package/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/ui-package -## 0.0.16 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.15 ### Patch Changes diff --git a/packages/ui-package/README.md b/packages/ui-package/README.md new file mode 100644 index 00000000..0bc818aa --- /dev/null +++ b/packages/ui-package/README.md @@ -0,0 +1,7 @@ +# @commonalityco/ui-package +> Presentational components to build the Commonality package view +## Installation + +```sh +npm install @commonalityco/ui-package +``` \ No newline at end of file diff --git a/packages/ui-package/package.json b/packages/ui-package/package.json index e86893dd..1948fe95 100644 --- a/packages/ui-package/package.json +++ b/packages/ui-package/package.json @@ -1,49 +1,50 @@ { - "name": "@commonalityco/ui-package", - "description": "Presentational components to build the Commonality package view", - "type": "module", - "version": "0.0.16", - "publishConfig": { - "access": "public" - }, - "sideEffects": false, - "devDependencies": { - "@commonalityco/config-tailwind": "workspace:*", - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@commonalityco/ui-core": "workspace:*", - "@commonalityco/ui-design-system": "workspace:*", - "@commonalityco/utils-core": "workspace:*", - "@commonalityco/utils-package": "workspace:*", - "@tanstack/react-table": "^8.9.8", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/react": "^18.2.21", - "eslint-config-commonality": "workspace:*", - "lucide-react": "^0.274.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwindcss": "^3.3.3", - "typescript": "^5.2.2" - }, - "peerDependencies": { - "@tanstack/react-table": "8.x" - }, - "license": "MIT", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" - }, - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc", - "dev": "tsc --watch", - "test": "vitest", - "type-check": "tsc --noEmit" - } -} + "name": "@commonalityco/ui-package", + "description": "Presentational components to build the Commonality package view", + "type": "module", + "version": "0.0.15", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "devDependencies": { + "@commonalityco/config-tailwind": "workspace:*", + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/ui-core": "workspace:*", + "@commonalityco/ui-design-system": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "@commonalityco/utils-package": "workspace:*", + "@tanstack/react-table": "^8.10.1", + "@testing-library/dom": "^9.3.3", + "@testing-library/jest-dom": "^6.1.3", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.5.1", + "@types/react": "^18.2.22", + "@vitejs/plugin-react-swc": "^3.3.2", + "eslint-config-commonality": "workspace:*", + "lucide-react": "^0.274.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "^3.3.3", + "typescript": "^5.2.2" + }, + "peerDependencies": { + "@tanstack/react-table": "8.x" + }, + "license": "MIT", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc", + "dev": "tsc --watch", + "test": "vitest", + "type-check": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/packages/ui-package/test/tags-filter-button.test.tsx b/packages/ui-package/test/tags-filter-button.test.tsx index 38ff8a06..9fc6cb96 100644 --- a/packages/ui-package/test/tags-filter-button.test.tsx +++ b/packages/ui-package/test/tags-filter-button.test.tsx @@ -3,7 +3,6 @@ import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { test, expect, vi } from 'vitest'; import TagsFilterButton from '../src/tags-filter-button.js'; -import '@testing-library/jest-dom'; test('renders TagsFilterButton and handles check change', async () => { const tags = ['tag1', 'tag2', 'tag3']; @@ -12,12 +11,12 @@ test('renders TagsFilterButton and handles check change', async () => { render(); const button = screen.getByRole('button', { name: /tags/i }); - expect(button).toBeInTheDocument(); + expect(button).toBeTruthy(); await userEvent.click(button); for (const tag of tags) { - expect(screen.getByText(`#${tag}`)).toBeInTheDocument(); + expect(screen.getByText(`#${tag}`)).toBeTruthy(); } const checkboxItem = screen.getByRole('menuitemcheckbox', { name: /#tag1/i }); @@ -32,10 +31,10 @@ test('displays the no tags message', async () => { render(); const button = screen.getByRole('button', { name: /tags/i }); - expect(button).toBeInTheDocument(); + expect(button).toBeTruthy(); await userEvent.click(button); const noTagsMessage = screen.getByText('Get started with tags'); - expect(noTagsMessage).toBeInTheDocument(); + expect(noTagsMessage).toBeTruthy(); }); diff --git a/packages/ui-package/tsconfig.json b/packages/ui-package/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/ui-package/tsconfig.json +++ b/packages/ui-package/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/ui-package/vitest.config.ts b/packages/ui-package/vitest.config.ts index a6ceceae..a022cadb 100644 --- a/packages/ui-package/vitest.config.ts +++ b/packages/ui-package/vitest.config.ts @@ -1,6 +1,8 @@ import { defineConfig } from 'vitest/config'; +import react from '@vitejs/plugin-react-swc'; export default defineConfig({ + plugins: [react()], test: { globals: true, environment: 'jsdom', diff --git a/packages/utils-conformance/.eslintrc.cjs b/packages/utils-conformance/.eslintrc.cjs new file mode 100644 index 00000000..97414f7d --- /dev/null +++ b/packages/utils-conformance/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['commonality'], +}; diff --git a/packages/utils-conformance/README.md b/packages/utils-conformance/README.md new file mode 100644 index 00000000..2f9a58e0 --- /dev/null +++ b/packages/utils-conformance/README.md @@ -0,0 +1,7 @@ +# @commonalityco/utils-conformance +> Get information about the conformance status of your project +## Installation + +```sh +npm install @commonalityco/utils-conformance +``` \ No newline at end of file diff --git a/packages/utils-conformance/commonality.json b/packages/utils-conformance/commonality.json new file mode 100644 index 00000000..2837017e --- /dev/null +++ b/packages/utils-conformance/commonality.json @@ -0,0 +1 @@ +{"tags":["utility"]} diff --git a/packages/utils-conformance/package.json b/packages/utils-conformance/package.json new file mode 100644 index 00000000..8379bef2 --- /dev/null +++ b/packages/utils-conformance/package.json @@ -0,0 +1,28 @@ +{ + "name": "@commonalityco/utils-conformance", + "description": "Get information about the conformance status of your project", + "version": "0.0.0", + "type": "module", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@commonalityco/utils-core": "workspace:*", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "vitest --coverage", + "type-check": "tsc --noEmit" + } +} diff --git a/packages/utils-conformance/src/index.ts b/packages/utils-conformance/src/index.ts new file mode 100644 index 00000000..3da7192f --- /dev/null +++ b/packages/utils-conformance/src/index.ts @@ -0,0 +1 @@ +export * from './run-fixes.js'; diff --git a/packages/utils-conformance/src/run-fixes.ts b/packages/utils-conformance/src/run-fixes.ts new file mode 100644 index 00000000..7cdc3da9 --- /dev/null +++ b/packages/utils-conformance/src/run-fixes.ts @@ -0,0 +1,87 @@ +import { + Workspace, + FileCreatorFactory, + JsonFileCreator, + TextFileCreator, + YamlFileCreator, + ConformanceResult, +} from '@commonalityco/types'; + +type ErrorName = 'FIX_FAILED' | 'VALIDATION_FAILED'; +class ConformanceError extends Error { + name: ErrorName; + message: string; + + constructor({ name, message }: { name: ErrorName; message: string }) { + super(message); + this.name = name; + this.message = message; + } +} + +export const runFixes = async ({ + conformanceResults, + rootDirectory, + workspaces, + createJson, + createText, + createYaml, +}: { + conformanceResults: ConformanceResult[]; + rootDirectory: string; + workspaces: Workspace[]; + createJson: FileCreatorFactory; + createText: FileCreatorFactory; + createYaml: FileCreatorFactory; +}): Promise< + { error?: ConformanceError; isFixed: boolean; workspace: Workspace }[] +> => { + const fixResults: { + error?: ConformanceError; + isFixed: boolean; + workspace: Workspace; + }[] = []; + + const groupedResults: Record = {}; + + for (const result of conformanceResults) { + if (!groupedResults[result.name]) { + groupedResults[result.name] = []; + } + + groupedResults[result.name].push(result); + } + + await Promise.all( + Object.values(groupedResults).map((groupResults) => + groupResults.map(async ({ fix, isValid, workspace, message }) => { + if (fix && !isValid) { + try { + await fix({ + workspace, + projectWorkspaces: workspaces, + json: createJson({ rootDirectory, workspace }), + text: createText({ rootDirectory, workspace }), + yaml: createYaml({ rootDirectory, workspace }), + }); + fixResults.push({ isFixed: true, workspace }); + } catch (error) { + fixResults.push({ + error: new ConformanceError({ + name: 'FIX_FAILED', + message: + error instanceof Error + ? error.message + : `Failed to run conformer: ${message}`, + }), + isFixed: false, + workspace, + }); + } + } + }), + ), + ); + + return fixResults; +}; diff --git a/packages/utils-conformance/test/run-fixes.test.ts b/packages/utils-conformance/test/run-fixes.test.ts new file mode 100644 index 00000000..c704aa31 --- /dev/null +++ b/packages/utils-conformance/test/run-fixes.test.ts @@ -0,0 +1,174 @@ +import { describe, expect, it, vi } from 'vitest'; +import { runFixes } from '../src/run-fixes'; +import { + Workspace, + FileCreatorFactory, + JsonFileCreator, + TextFileCreator, + YamlFileCreator, + ConformanceResult, +} from '@commonalityco/types'; + +describe('runFixes', () => { + it('should only run fixes on invalid and fixable results', async () => { + const fix = vi.fn(); + const conformanceResults: ConformanceResult[] = [ + { + name: 'Invalid workspace', + level: 'error', + pattern: '*', + workspace: { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + message: 'Invalid workspace', + fix, + isValid: false, + }, + { + name: 'Valid workspace', + level: 'warning', + pattern: '*', + workspace: { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + message: 'Valid workspace', + isValid: true, + }, + { + name: 'Valid workspace', + level: 'warning', + pattern: '*', + workspace: { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + message: 'Valid workspace', + fix, + isValid: true, + }, + ]; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + ]; + const createJson: FileCreatorFactory = vi.fn(); + const createText: FileCreatorFactory = vi.fn(); + const createYaml: FileCreatorFactory = vi.fn(); + + await runFixes({ + conformanceResults, + rootDirectory, + workspaces, + createJson, + createText, + createYaml, + }); + + expect(fix).toHaveBeenCalledTimes(1); + }); + + it('should run fixes and return results', async () => { + const conformanceResults: ConformanceResult[] = [ + { + name: 'Valid workspace', + level: 'warning', + pattern: '*', + workspace: { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + message: 'Valid workspace', + fix: async () => {}, + isValid: false, + }, + ]; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + ]; + const createJson: FileCreatorFactory = vi.fn(); + const createText: FileCreatorFactory = vi.fn(); + const createYaml: FileCreatorFactory = vi.fn(); + + const results = await runFixes({ + conformanceResults, + rootDirectory, + workspaces, + createJson, + createText, + createYaml, + }); + + expect(results).toHaveLength(1); + expect(results[0].isFixed).toBe(true); + expect(results[0].workspace).toEqual(workspaces[0]); + }); + + it('should handle errors when running fixes', async () => { + const conformanceResults: ConformanceResult[] = [ + { + name: 'Invalid workspace', + level: 'error', + pattern: '*', + workspace: { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + message: 'Invalid workspace', + fix: async () => { + throw new Error('Fix failed'); + }, + isValid: false, + }, + ]; + const rootDirectory = ''; + const workspaces: Workspace[] = [ + { + path: '/path/to/workspace', + tags: ['tag1', 'tag2'], + codeowners: ['codeowner1', 'codeowner2'], + packageJson: { name: 'valid' }, + }, + ]; + const createJson: FileCreatorFactory = vi.fn(); + const createText: FileCreatorFactory = vi.fn(); + const createYaml: FileCreatorFactory = vi.fn(); + + const results = await runFixes({ + conformanceResults, + rootDirectory, + workspaces, + createJson, + createText, + createYaml, + }); + + expect(results).toHaveLength(1); + expect(results[0].isFixed).toBe(false); + expect(results[0].error).toBeDefined(); + expect(results[0].error?.message).toBe('Fix failed'); + expect(results[0].workspace).toEqual(workspaces[0]); + }); +}); diff --git a/packages/utils-conformance/tsconfig.json b/packages/utils-conformance/tsconfig.json new file mode 100644 index 00000000..5520180c --- /dev/null +++ b/packages/utils-conformance/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@commonalityco/config-tsconfig/react.json", + "include": ["src/**/*.ts", "src/**/*.tsx"], + "compilerOptions": { + "outDir": "dist" + } +} diff --git a/packages/utils-conformance/vitest.config.ts b/packages/utils-conformance/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/utils-conformance/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/utils-core/CHANGELOG.md b/packages/utils-core/CHANGELOG.md index bc317831..295f28b0 100644 --- a/packages/utils-core/CHANGELOG.md +++ b/packages/utils-core/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/utils-core -## 0.0.11 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.10 ### Patch Changes diff --git a/packages/utils-core/README.md b/packages/utils-core/README.md new file mode 100644 index 00000000..6c7ba69e --- /dev/null +++ b/packages/utils-core/README.md @@ -0,0 +1,7 @@ +# @commonalityco/utils-core +> Contains the common constants used in all Commonality applications and packages +## Installation + +```sh +npm install @commonalityco/utils-core +``` \ No newline at end of file diff --git a/packages/utils-core/package.json b/packages/utils-core/package.json index 16a3ea86..a152a10c 100644 --- a/packages/utils-core/package.json +++ b/packages/utils-core/package.json @@ -1,32 +1,33 @@ { - "name": "@commonalityco/utils-core", - "version": "0.0.11", - "type": "module", - "description": "Contains the common constants used in all Commonality applications and packages", - "sideEffects": false, - "publishConfig": { - "access": "public" - }, - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js", - "./*": "./dist/*.js" - }, - "main": "./dist/index.js", - "license": "MIT", - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc", - "dev": "tsc --watch", - "test": "vitest" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "eslint-config-commonality": "workspace:*", - "typescript": "^5.2.2" - }, - "dependencies": { - "@sindresorhus/slugify": "^2.2.1" - } -} + "name": "@commonalityco/utils-core", + "version": "0.0.10", + "type": "module", + "description": "Contains the common constants used in all Commonality applications and packages", + "sideEffects": false, + "publishConfig": { + "access": "public" + }, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc", + "dev": "tsc --watch", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@sindresorhus/slugify": "^2.2.1" + } +} \ No newline at end of file diff --git a/packages/utils-core/src/constants.ts b/packages/utils-core/src/constants.ts index 7168874d..9f6ae341 100644 --- a/packages/utils-core/src/constants.ts +++ b/packages/utils-core/src/constants.ts @@ -8,6 +8,7 @@ export enum Lockfile { NPM_LOCKFILE = 'package-lock.json', YARN_LOCKFILE = 'yarn.lock', PNPM_LOCKFILE = 'pnpm-lock.yaml', + BUN_LOCKFILE = 'bun.lockb', } export enum DependencyType { @@ -26,6 +27,7 @@ export enum PackageManager { PNPM = 'pnpm', YARN = 'yarn', NPM = 'npm', + BUN = 'bun', } export enum DocumentName { @@ -33,7 +35,6 @@ export enum DocumentName { } export enum FilePath { - PROJECT_CONFIG = '.commonality/config.json', PACKAGE_CONFIG = './commonality.json', } diff --git a/packages/utils-core/tsconfig.json b/packages/utils-core/tsconfig.json index f900e946..c25861f4 100644 --- a/packages/utils-core/tsconfig.json +++ b/packages/utils-core/tsconfig.json @@ -1,8 +1,7 @@ { - "extends": "@commonalityco/config-tsconfig/node16.json", + "extends": "@commonalityco/config-tsconfig/node.json", "include": ["src/**/*.ts"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/utils-core/vitest.config.ts b/packages/utils-core/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/utils-core/vitest.config.ts +++ b/packages/utils-core/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/utils-file/.eslintrc.cjs b/packages/utils-file/.eslintrc.cjs new file mode 100644 index 00000000..97414f7d --- /dev/null +++ b/packages/utils-file/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['commonality'], +}; diff --git a/packages/utils-file/CHANGELOG.md b/packages/utils-file/CHANGELOG.md new file mode 100644 index 00000000..295f28b0 --- /dev/null +++ b/packages/utils-file/CHANGELOG.md @@ -0,0 +1,55 @@ +# @commonalityco/utils-core + +## 0.0.10 + +### Patch Changes + +- e9a5bc2: Add table view to Studio + +## 0.0.9 + +### Patch Changes + +- ffbc45c: Fixed graph color and reduced bundle size dramatically + +## 0.0.8 + +### Patch Changes + +- 5b61b0e: Reduce bundle size + +## 0.0.7 + +### Patch Changes + +- 26e1636: Publish foundational packages + +## 0.0.6 + +### Patch Changes + +- a7691a8: Add skeleton and dep updates + +## 0.0.5 + +### Patch Changes + +- ee3504f: Distribute studio /dist + +## 0.0.4 + +### Patch Changes + +- dadeafb: Convert to ESM + +## 0.0.3 + +### Patch Changes + +- fb47c73: update build output + +## 0.0.2 + +### Patch Changes + +- da2c556: Initial release diff --git a/packages/utils-file/README.md b/packages/utils-file/README.md new file mode 100644 index 00000000..3e50e67f --- /dev/null +++ b/packages/utils-file/README.md @@ -0,0 +1,7 @@ +# @commonalityco/utils-file +> undefined +## Installation + +```sh +npm install @commonalityco/utils-file +``` \ No newline at end of file diff --git a/packages/utils-file/commonality.json b/packages/utils-file/commonality.json new file mode 100644 index 00000000..2837017e --- /dev/null +++ b/packages/utils-file/commonality.json @@ -0,0 +1 @@ +{"tags":["utility"]} diff --git a/packages/utils-file/package.json b/packages/utils-file/package.json new file mode 100644 index 00000000..671b0eed --- /dev/null +++ b/packages/utils-file/package.json @@ -0,0 +1,42 @@ +{ + "name": "@commonalityco/utils-file", + "version": "0.0.10", + "type": "module", + "sideEffects": false, + "publishConfig": { + "access": "public" + }, + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*.js" + }, + "main": "./dist/index.js", + "license": "MIT", + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc", + "dev": "tsc --watch", + "test": "vitest", + "type-check": "tsc --noEmit" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/lodash.get": "^4.4.7", + "@types/lodash.omit": "^4.5.7", + "@types/lodash.set": "^4.3.7", + "eslint-config-commonality": "workspace:*", + "typescript": "^5.2.2" + }, + "dependencies": { + "detect-indent": "^7.0.1", + "fs-extra": "^11.1.1", + "lodash.get": "^4.4.2", + "lodash.omit": "^4.5.0", + "lodash.set": "^4.3.2", + "mock-fs": "^5.2.0", + "yaml": "^2.3.2" + } +} diff --git a/packages/utils-file/src/file.ts b/packages/utils-file/src/file.ts new file mode 100644 index 00000000..ccb5c1cc --- /dev/null +++ b/packages/utils-file/src/file.ts @@ -0,0 +1,38 @@ +import type { File as FileType, Workspace } from '@commonalityco/types'; +import fs from 'fs-extra'; +import path from 'node:path'; + +export class File implements FileType { + workspace: Workspace; + rootDirectory: string; + filename: string; + filepath: string; + + constructor(workspace: Workspace, rootDirectory: string, filename: string) { + this.workspace = workspace; + this.rootDirectory = rootDirectory; + this.filename = filename; + this.filepath = path.join( + this.rootDirectory, + this.workspace.path, + this.filename, + ); + } + + async delete(): Promise { + try { + await fs.remove(this.filepath); + } catch (error) { + console.error(`Error deleting file: ${error}`); + } + } + + async exists(): Promise { + try { + return await fs.pathExists(this.filepath); + } catch (error) { + console.error(`Error checking if file exists: ${error}`); + return false; + } + } +} diff --git a/packages/utils-file/src/index.ts b/packages/utils-file/src/index.ts new file mode 100644 index 00000000..8cb0dd20 --- /dev/null +++ b/packages/utils-file/src/index.ts @@ -0,0 +1,3 @@ +export * from './json.js'; +export * from './text.js'; +export * from './yaml.js'; diff --git a/packages/utils-file/src/json.ts b/packages/utils-file/src/json.ts new file mode 100644 index 00000000..3e5e777f --- /dev/null +++ b/packages/utils-file/src/json.ts @@ -0,0 +1,71 @@ +import type { + JsonFile as JsonFileType, + JsonFileCreator, + Workspace, +} from '@commonalityco/types'; +import { File } from './file.js'; +import fs from 'fs-extra'; +import get from 'lodash.get'; +import set from 'lodash.set'; +import omit from 'lodash.omit'; +import detectIndent from 'detect-indent'; + +class JsonFile extends File implements JsonFileType { + constructor(workspace: Workspace, rootDirectory: string, filename: string) { + super(workspace, rootDirectory, filename); + } + + async get(accessPath?: string) { + try { + const json = await fs.readJSON(this.filepath); + + if (!accessPath) { + return json; + } + + return get(json, accessPath); + } catch { + return; + } + } + + async set( + pathOrValue: string, + value?: string | Record | boolean | number, + ) { + try { + const jsonRaw = await fs.readFile(this.filepath, 'utf8'); + const json = await fs.readJSON(this.filepath); + + const updatedJson = set(json, pathOrValue, value); + const indent = detectIndent(jsonRaw).indent || ' '; + + const formattedJson = JSON.stringify(updatedJson, undefined, indent); + + await fs.outputFile(this.filepath, formattedJson); + } catch { + return; + } + } + + async remove(accessPath: string) { + try { + const json = await fs.readJSON(this.filepath); + const updatedJson = omit(json, accessPath); + + await fs.outputJSON(this.filepath, updatedJson); + } catch { + return; + } + } +} + +export const createJson = ({ + workspace, + rootDirectory, +}: { + workspace: Workspace; + rootDirectory: string; +}): JsonFileCreator => { + return (filename: string) => new JsonFile(workspace, rootDirectory, filename); +}; diff --git a/packages/utils-file/src/text.ts b/packages/utils-file/src/text.ts new file mode 100644 index 00000000..8946f8c7 --- /dev/null +++ b/packages/utils-file/src/text.ts @@ -0,0 +1,74 @@ +import type { + TextFile as TextFileType, + TextFileCreator, + Workspace, +} from '@commonalityco/types'; +import { File } from './file.js'; +import fs from 'fs-extra'; + +class TextFile extends File implements TextFileType { + constructor(workspace: Workspace, rootDirectory: string, filename: string) { + super(workspace, rootDirectory, filename); + } + + async get() { + try { + const text = await fs.readFile(this.filepath, 'utf8'); + return text.split('\n').filter(Boolean); + } catch { + return; + } + } + + async matches(expected: string | string[]) { + try { + const text = await fs.readFile(this.filepath, 'utf8'); + const textLines = text.split('\n').filter(Boolean); + + const result = Array.isArray(expected) + ? expected.every((line, index) => line === textLines[index]) + : expected === textLines.join('\n'); + + return result; + } catch { + return false; + } + } + + async set(lines: string[]) { + const text = lines.join('\n'); + await fs.outputFile(this.filepath, text); + } + + async add(line: string | string[]) { + const text = Array.isArray(line) ? line.join('\n') : line; + const currentText = await this.get(); + const updatedText = currentText + ? currentText.join('\n') + '\n' + text + : text; + await fs.outputFile(this.filepath, updatedText); + } + + async remove(line: string | string[]) { + const linesToRemove = Array.isArray(line) ? line : [line]; + let text = await this.get(); + + if (text) { + for (const lineToRemove of linesToRemove) { + text = text.filter((txtLine) => txtLine !== lineToRemove); + } + + await this.set(text); + } + } +} + +export const createText = ({ + workspace, + rootDirectory, +}: { + workspace: Workspace; + rootDirectory: string; +}): TextFileCreator => { + return (filename: string) => new TextFile(workspace, rootDirectory, filename); +}; diff --git a/packages/utils-file/src/yaml.ts b/packages/utils-file/src/yaml.ts new file mode 100644 index 00000000..8a340c35 --- /dev/null +++ b/packages/utils-file/src/yaml.ts @@ -0,0 +1,72 @@ +import type { + YamlFile as YamlFileType, + YamlFileCreator, + Workspace, +} from '@commonalityco/types'; +import { File } from './file.js'; +import fs from 'fs-extra'; +import yaml from 'yaml'; +import get from 'lodash.get'; +import set from 'lodash.set'; +import omit from 'lodash.omit'; + +class YamlFile extends File implements YamlFileType { + constructor(workspace: Workspace, rootDirectory: string, filename: string) { + super(workspace, rootDirectory, filename); + } + + async get(accessPath?: string) { + try { + const file = await fs.readFile(this.filepath, 'utf8'); + const yamlData = yaml.parse(file); + + if (!accessPath) { + return yamlData; + } + + return get(yamlData, accessPath); + } catch { + return; + } + } + + async set( + pathOrValue: string | Record, + defaultValue?: string, + ) { + try { + if (typeof pathOrValue === 'string') { + const yamlData = await this.get(); + const updatedYaml = set(yamlData, pathOrValue, defaultValue); + + await fs.writeFile(this.filepath, yaml.stringify(updatedYaml), 'utf8'); + } else { + await fs.writeFile(this.filepath, yaml.stringify(pathOrValue), 'utf8'); + } + } catch (error) { + console.error(`Failed to set value in YAML file: ${error}`); + throw error; + } + } + + async remove(accessPath: string) { + try { + const yamlData = await this.get(); + const updatedYaml = omit(yamlData, accessPath); + + await fs.writeFile(this.filepath, yaml.stringify(updatedYaml), 'utf8'); + } catch { + return; + } + } +} + +export const createYaml = ({ + workspace, + rootDirectory, +}: { + workspace: Workspace; + rootDirectory: string; +}): YamlFileCreator => { + return (filename: string) => new YamlFile(workspace, rootDirectory, filename); +}; diff --git a/packages/utils-file/test/file.test.ts b/packages/utils-file/test/file.test.ts new file mode 100644 index 00000000..993bacb5 --- /dev/null +++ b/packages/utils-file/test/file.test.ts @@ -0,0 +1,75 @@ +import os from 'node:os'; +import { describe, expect, it, afterEach, beforeEach } from 'vitest'; +import type { Workspace } from '@commonalityco/types'; +import { File } from '../src/file.js'; +import fs from 'fs-extra'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +describe('File class', () => { + const temporaryDirectoryPath = process.env['RUNNER_TEMP'] || os.tmpdir(); + const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); + const workspace: Workspace = { + path: '/packages/pkg-one', + tags: [], + codeowners: [], + packageJson: { + workspaces: [], + name: 'test-package', + description: 'This is a test package', + version: '1.0.0', + dependencies: {}, + devDependencies: {}, + peerDependencies: {}, + }, + }; + + const fixturePath = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + './fixtures/kitchen-sink', + ); + + beforeEach(async () => { + await fs.copy(fixturePath, temporaryPath); + }); + + afterEach(async () => { + await fs.remove(temporaryPath); + }); + + describe('delete', () => { + it('remove the file from disk', async () => { + const file = new File(workspace, temporaryPath, 'package.json'); + + await file.delete(); + + const exists = await fs.pathExists( + path.join(temporaryPath, workspace.path, 'package.json'), + ); + + expect(exists).toBe(false); + }); + + it('does not throw error when file does not exist', async () => { + const file = new File(workspace, temporaryPath, 'nonexistent.json'); + + await expect(file.delete()).resolves.not.toThrow(); + }); + }); + + describe('exists', () => { + it('returns true when the file exists', async () => { + const file = new File(workspace, temporaryPath, 'package.json'); + const exists = await file.exists(); + + expect(exists).toBe(true); + }); + + it('returns false when the file does not exist', async () => { + const file = new File(workspace, temporaryPath, 'foo.text'); + const exists = await file.exists(); + + expect(exists).toBe(false); + }); + }); +}); diff --git a/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/README.md b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/README.md new file mode 100644 index 00000000..716ed142 --- /dev/null +++ b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/README.md @@ -0,0 +1 @@ +# Hello world diff --git a/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/config.yaml b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/config.yaml new file mode 100644 index 00000000..7a9cdcba --- /dev/null +++ b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/config.yaml @@ -0,0 +1,4 @@ +fakeToolConfig: + generalSettings: + theme: dark + language: en diff --git a/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/multi-line.md b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/multi-line.md new file mode 100644 index 00000000..757310d7 --- /dev/null +++ b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/multi-line.md @@ -0,0 +1,5 @@ +# First line + +## Second line + +### Third line diff --git a/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/package.json b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/package.json new file mode 100644 index 00000000..115f94ba --- /dev/null +++ b/packages/utils-file/test/fixtures/kitchen-sink/packages/pkg-one/package.json @@ -0,0 +1,9 @@ +{ + "name": "pkg-one", + "workspaces": [], + "description": "This is a test package", + "version": "1.0.0", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {} +} diff --git a/packages/utils-file/test/json.test.ts b/packages/utils-file/test/json.test.ts new file mode 100644 index 00000000..0aca01b1 --- /dev/null +++ b/packages/utils-file/test/json.test.ts @@ -0,0 +1,109 @@ +import os from 'node:os'; +import { describe, expect, it, afterEach, beforeEach } from 'vitest'; +import type { Workspace } from '@commonalityco/types'; +import { createJson } from '../src/json.js'; +import fs from 'fs-extra'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +describe('createJson', () => { + const temporaryDirectoryPath = process.env['RUNNER_TEMP'] || os.tmpdir(); + const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); + const workspace: Workspace = { + path: '/packages/pkg-one', + tags: [], + codeowners: [], + packageJson: { + workspaces: [], + name: 'pkg-one', + description: 'This is a test package', + version: '1.0.0', + dependencies: {}, + devDependencies: {}, + peerDependencies: {}, + }, + }; + + const fixturePath = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + './fixtures/kitchen-sink', + ); + + beforeEach(async () => { + await fs.copy(fixturePath, temporaryPath); + }); + + afterEach(async () => { + await fs.remove(temporaryPath); + }); + + describe('get', () => { + it('should read JSON file', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('package.json'); + + const json = await jsonFile.get('name'); + + expect(json).toEqual('pkg-one'); + }); + + it('returns undefined when the file does not exist', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('nonexistent.json'); + + await expect(jsonFile.get('name')).resolves.toEqual(undefined); + }); + }); + + describe('set', () => { + it('should set value in JSON file', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('package.json'); + + await jsonFile.set('scripts.build', 'npm run build'); + + const json = await jsonFile.get('scripts.build'); + + expect(json).toEqual('npm run build'); + }); + + it('should create the file and set the value if the file does not exist', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('nonexistent.json'); + + jsonFile.set('scripts.build', 'npm run build'); + }); + }); + + describe('remove', () => { + it('should remove value from JSON file', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('package.json'); + + await jsonFile.remove('workspaces'); + + const json = await jsonFile.get('workspaces'); + + expect(json).toEqual(undefined); + }); + + it('should handle when file does not exist', async () => { + const jsonFile = createJson({ + rootDirectory: temporaryPath, + workspace, + })('nonexistent.json'); + + await expect(jsonFile.remove('workspaces')).resolves.toBe(undefined); + }); + }); +}); diff --git a/packages/utils-file/test/text.test.ts b/packages/utils-file/test/text.test.ts new file mode 100644 index 00000000..990a9b6d --- /dev/null +++ b/packages/utils-file/test/text.test.ts @@ -0,0 +1,182 @@ +import os from 'node:os'; +import { describe, expect, it, afterEach, beforeEach } from 'vitest'; +import type { Workspace } from '@commonalityco/types'; +import { createText } from '../src/text.js'; +import fs from 'fs-extra'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +describe('createText', () => { + const temporaryDirectoryPath = process.env['RUNNER_TEMP'] || os.tmpdir(); + const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); + const workspace: Workspace = { + path: '/packages/pkg-one', + tags: [], + codeowners: [], + packageJson: { + workspaces: [], + name: 'test-package', + description: 'This is a test package', + version: '1.0.0', + dependencies: {}, + devDependencies: {}, + peerDependencies: {}, + }, + }; + + const fixturePath = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + './fixtures/kitchen-sink', + ); + + beforeEach(async () => { + await fs.copy(fixturePath, temporaryPath); + }); + + afterEach(async () => { + await fs.remove(temporaryPath); + }); + + describe('matches', () => { + it('returns true if the file content matches the expected string content', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + const isEqual = await textFile.matches('# Hello world'); + expect(isEqual).toBe(true); + }); + + it('returns true if the file content matches the expected array of string content', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + const isEqual = await textFile.matches(['# Hello world']); + expect(isEqual).toBe(true); + }); + + it('returns false if the file content does not match the expected string content', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + const isEqual = await textFile.matches('# Goodbye'); + expect(isEqual).toBe(false); + }); + + it('returns false if the file content does not match the expected array of string content', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + const isEqual = await textFile.matches(['# Goodbye']); + expect(isEqual).toBe(false); + }); + }); + + describe('get', () => { + it('returns the text of the file', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + const text = await textFile.get(); + + expect(text).toEqual(['# Hello world']); + }); + + it('returns undefined if the file does not exist', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('NON_EXISTENT.md'); + + const text = await textFile.get(); + expect(text).toEqual(undefined); + }); + }); + + describe('set', () => { + it('sets the text of the file', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + await textFile.set(['# New title']); + + const text = await textFile.get(); + + expect(text).toContain('# New title'); + }); + + it('creates a new file if it does not exist', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('NON_EXISTENT.md'); + + await textFile.set(['# New title']); + const text = await textFile.get(); + expect(text).toContain('# New title'); + }); + }); + + describe('add', () => { + it('adds a line to the file', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + await textFile.add('New line'); + + const text = await textFile.get(); + + expect(text).toContain('New line'); + }); + + it('creates a new file if it does not exist', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('NON_EXISTENT.md'); + + await textFile.add('New line'); + const text = await textFile.get(); + expect(text).toContain('New line'); + }); + }); + + describe('remove', () => { + it('removes a line from the file', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('README.md'); + + await textFile.remove(['"description": "This is a test package"']); + + const text = await textFile.get(); + + expect(text).not.toContain('"description": "This is a test package"'); + }); + + it('does nothing if the file does not exist', async () => { + const textFile = createText({ + rootDirectory: temporaryPath, + workspace, + })('NON_EXISTENT.md'); + + await textFile.remove(['"description": "This is a test package"']); + const text = await textFile.get(); + expect(text).toBe(undefined); + }); + }); +}); diff --git a/packages/utils-file/test/yaml.test.ts b/packages/utils-file/test/yaml.test.ts new file mode 100644 index 00000000..15cc2796 --- /dev/null +++ b/packages/utils-file/test/yaml.test.ts @@ -0,0 +1,80 @@ +import os from 'node:os'; +import { describe, expect, it, afterEach, beforeEach } from 'vitest'; +import type { Workspace } from '@commonalityco/types'; +import { createYaml } from '../src/yaml.js'; +import fs from 'fs-extra'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +describe.skip('createYaml', () => { + const temporaryDirectoryPath = process.env['RUNNER_TEMP'] || os.tmpdir(); + const temporaryPath = fs.mkdtempSync(temporaryDirectoryPath); + const workspace: Workspace = { + path: '/packages/pkg-one', + packageJson: { + workspaces: [], + name: 'pkg-one', + description: 'This is a test package', + version: '1.0.0', + dependencies: {}, + devDependencies: {}, + peerDependencies: {}, + }, + }; + + const fixturePath = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + './fixtures/kitchen-sink', + ); + + beforeEach(async () => { + await fs.copy(fixturePath, temporaryPath); + }); + + afterEach(async () => { + await fs.remove(temporaryPath); + }); + + describe('get', () => { + it('should read YAML file', async () => { + const yamlFile = createYaml({ + rootDirectory: temporaryPath, + workspace, + })('package.yaml'); + + const yaml = await yamlFile.get('fakeToolConfig.generalSettings.theme'); + + expect(yaml).toEqual('pkg-one'); + }); + }); + + describe('set', () => { + it('should set value in YAML file', async () => { + const yamlFile = createYaml({ + rootDirectory: temporaryPath, + workspace, + })('package.yaml'); + + await yamlFile.set('fakeToolConfig.property', 'hello'); + + const yaml = await yamlFile.get('fakeToolConfig.property'); + + expect(yaml).toEqual('hello'); + }); + }); + + describe('remove', () => { + it('should remove value from YAML file', async () => { + const yamlFile = createYaml({ + rootDirectory: temporaryPath, + workspace, + })('package.yaml'); + + await yamlFile.remove('workspaces'); + + const yaml = await yamlFile.get('workspaces'); + + expect(yaml).toEqual(undefined); + }); + }); +}); diff --git a/packages/utils-file/tsconfig.json b/packages/utils-file/tsconfig.json new file mode 100644 index 00000000..c25861f4 --- /dev/null +++ b/packages/utils-file/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@commonalityco/config-tsconfig/node.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "outDir": "dist" + } +} diff --git a/packages/utils-file/vitest.config.ts b/packages/utils-file/vitest.config.ts new file mode 100644 index 00000000..701d5ef6 --- /dev/null +++ b/packages/utils-file/vitest.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({}) \ No newline at end of file diff --git a/packages/utils-graph/CHANGELOG.md b/packages/utils-graph/CHANGELOG.md index 29b14319..3b09c1b9 100644 --- a/packages/utils-graph/CHANGELOG.md +++ b/packages/utils-graph/CHANGELOG.md @@ -1,13 +1,5 @@ # @commonalityco/utils-graph -## 0.0.12 - -### Patch Changes - -- 51411d8: update dependencies -- Updated dependencies [51411d8] - - @commonalityco/utils-core@0.0.11 - ## 0.0.11 ### Patch Changes diff --git a/packages/utils-graph/README.md b/packages/utils-graph/README.md new file mode 100644 index 00000000..ac6c2cac --- /dev/null +++ b/packages/utils-graph/README.md @@ -0,0 +1,7 @@ +# @commonalityco/utils-graph +> Cytoscape graph manipulation functions that enable interactivity +## Installation + +```sh +npm install @commonalityco/utils-graph +``` \ No newline at end of file diff --git a/packages/utils-graph/package.json b/packages/utils-graph/package.json index d2790926..ed94300d 100644 --- a/packages/utils-graph/package.json +++ b/packages/utils-graph/package.json @@ -1,7 +1,7 @@ { "name": "@commonalityco/utils-graph", "description": "Cytoscape graph manipulation functions that enable interactivity", - "version": "0.0.12", + "version": "0.0.11", "type": "module", "publishConfig": { "access": "public" @@ -26,7 +26,7 @@ "@types/cytoscape-popper": "^2.0.1", "@types/lodash.uniqby": "^4.7.7", "cytoscape": "^3.26.0", - "eslint-config-commonality": "workspace:^", + "eslint-config-commonality": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", "typescript": "^5.2.2" @@ -35,8 +35,8 @@ "peerDependencies": { "@commonalityco/utils-core": "*", "cytoscape": "3.x", - "react": ">=17", - "react-dom": ">=17" + "react": ">=18", + "react-dom": ">=18" }, "scripts": { "lint": "eslint .", @@ -46,4 +46,4 @@ "test": "vitest", "type-check": "tsc --noEmit" } -} +} \ No newline at end of file diff --git a/packages/utils-graph/tsconfig.json b/packages/utils-graph/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/utils-graph/tsconfig.json +++ b/packages/utils-graph/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/utils-graph/vitest.config.ts b/packages/utils-graph/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/utils-graph/vitest.config.ts +++ b/packages/utils-graph/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/packages/utils-package/CHANGELOG.md b/packages/utils-package/CHANGELOG.md index d94b413e..24ef895b 100644 --- a/packages/utils-package/CHANGELOG.md +++ b/packages/utils-package/CHANGELOG.md @@ -1,12 +1,5 @@ # @commonalityco/utils-package -## 0.0.11 - -### Patch Changes - -- Updated dependencies [51411d8] - - @commonalityco/utils-core@0.0.11 - ## 0.0.10 ### Patch Changes diff --git a/packages/utils-package/README.md b/packages/utils-package/README.md new file mode 100644 index 00000000..5373458c --- /dev/null +++ b/packages/utils-package/README.md @@ -0,0 +1,7 @@ +# @commonalityco/utils-package +> Utilities for formatting package data +## Installation + +```sh +npm install @commonalityco/utils-package +``` \ No newline at end of file diff --git a/packages/utils-package/package.json b/packages/utils-package/package.json index d1799e9c..051ded04 100644 --- a/packages/utils-package/package.json +++ b/packages/utils-package/package.json @@ -1,41 +1,41 @@ { - "name": "@commonalityco/utils-package", - "description": "Utilities for formatting package data", - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": "./dist/index.js" - }, - "main": "./dist/index.js", - "sideEffects": false, - "version": "0.0.11", - "publishConfig": { - "access": "public" - }, - "license": "MIT", - "dependencies": { - "@commonalityco/utils-core": "workspace:*" - }, - "devDependencies": { - "@commonalityco/config-tsconfig": "workspace:*", - "@commonalityco/types": "workspace:*", - "@types/react": "^18.2.21", - "eslint-config-commonality": "workspace:*", - "postcss": "^8.4.29", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwindcss": "^3.3.3", - "typescript": "^5.2.2" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - }, - "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "build": "tsc --build", - "dev": "tsc --watch", - "type-check": "tsc --noEmit" - } -} + "name": "@commonalityco/utils-package", + "description": "Utilities for formatting package data", + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "main": "./dist/index.js", + "sideEffects": false, + "version": "0.0.10", + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "dependencies": { + "@commonalityco/utils-core": "workspace:*" + }, + "devDependencies": { + "@commonalityco/config-tsconfig": "workspace:*", + "@commonalityco/types": "workspace:*", + "@types/react": "^18.2.22", + "eslint-config-commonality": "workspace:*", + "postcss": "^8.4.30", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "^3.3.3", + "typescript": "^5.2.2" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "build": "tsc --build", + "dev": "tsc --watch", + "type-check": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/packages/utils-package/tsconfig.json b/packages/utils-package/tsconfig.json index b5083c2f..5520180c 100644 --- a/packages/utils-package/tsconfig.json +++ b/packages/utils-package/tsconfig.json @@ -2,7 +2,6 @@ "extends": "@commonalityco/config-tsconfig/react.json", "include": ["src/**/*.ts", "src/**/*.tsx"], "compilerOptions": { - "outDir": "dist", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "outDir": "dist" } } diff --git a/packages/utils-package/vitest.config.ts b/packages/utils-package/vitest.config.ts index 94ede10e..701d5ef6 100644 --- a/packages/utils-package/vitest.config.ts +++ b/packages/utils-package/vitest.config.ts @@ -1,3 +1,3 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config' -export default defineConfig({}); +export default defineConfig({}) \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 144bf28e..d3b8ef4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,40 +13,43 @@ importers: version: 2.26.2 '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:packages/config-tsconfig + version: link:tooling/config-tsconfig '@manypkg/cli': specifier: ^0.21.0 version: 0.21.0 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + specifier: ^6.7.2 + version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.6.0 - version: 6.6.0(eslint@8.49.0)(typescript@5.2.2) + specifier: ^6.7.2 + version: 6.7.2(eslint@8.49.0)(typescript@5.2.2) '@vitest/coverage-v8': specifier: ^0.34.4 version: 0.34.4(vitest@0.34.4) + commonality: + specifier: workspace:* + version: link:packages/commonality + commonality-conform-recommended: + specifier: workspace:* + version: link:packages/commonality-conform-recommended eslint: specifier: ^8.49.0 version: 8.49.0 eslint-config-commonality: - specifier: workspace:^ - version: link:packages/config-eslint + specifier: workspace:* + version: link:tooling/config-eslint eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0) + version: 3.0.0(@typescript-eslint/eslint-plugin@6.7.2)(eslint@8.49.0) execa: - specifier: ^8.0.1 - version: 8.0.1 + specifier: ^7.2.0 + version: 7.2.0 husky: specifier: ^8.0.3 version: 8.0.3 - lint-staged: - specifier: ^14.0.1 - version: 14.0.1 prettier: specifier: ^3.0.3 version: 3.0.3 @@ -58,16 +61,23 @@ importers: version: 5.0.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2) turbo: - specifier: ^1.10.13 - version: 1.10.13 + specifier: ^1.10.14 + version: 1.10.14 typescript: specifier: ^5.2.2 version: 5.2.2 vitest: specifier: ^0.34.4 version: 0.34.4 + devDependencies: + '@types/fs-extra': + specifier: ^11.0.2 + version: 11.0.2 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 apps/workshop: dependencies: @@ -100,7 +110,7 @@ importers: version: link:../../packages/utils-graph next: specifier: 13.4.19 - version: 13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) @@ -112,50 +122,50 @@ importers: version: 18.2.0(react@18.2.0) storybook-addon-variants: specifier: ^0.2.0 - version: 0.2.0(@storybook/addons@7.4.0)(@storybook/api@6.5.16)(@storybook/components@6.5.16)(@storybook/core-events@6.5.16)(@storybook/theming@6.5.16)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.0(@storybook/addons@7.4.3)(@storybook/api@6.5.16)(@storybook/components@6.5.16)(@storybook/core-events@6.5.16)(@storybook/theming@6.5.16)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../../packages/config-tailwind + version: link:../../tooling/config-tailwind '@storybook/addon-a11y': - specifier: ^7.4.0 - version: 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-docs': - specifier: ^7.4.0 - version: 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-essentials': - specifier: ^7.4.0 - version: 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.4.0 - version: 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-links': - specifier: ^7.4.0 - version: 7.4.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-styling': specifier: ^1.3.7 - version: 1.3.7(@types/react-dom@18.2.7)(@types/react@18.2.21)(less@4.2.0)(postcss@8.4.29)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2) + version: 1.3.7(@types/react-dom@18.2.7)(@types/react@18.2.22)(less@4.2.0)(postcss@8.4.30)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2) '@storybook/addons': - specifier: ^7.4.0 - version: 7.4.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(react-dom@18.2.0)(react@18.2.0) '@storybook/blocks': - specifier: ^7.4.0 - version: 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.4.3 + version: 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@storybook/cli': - specifier: ^7.4.0 - version: 7.4.0 + specifier: ^7.4.3 + version: 7.4.3 '@storybook/react': - specifier: ^7.4.0 - version: 7.4.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + specifier: ^7.4.3 + version: 7.4.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@storybook/react-vite': - specifier: ^7.4.0 - version: 7.4.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.9) + specifier: ^7.4.3 + version: 7.4.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.9) '@storybook/testing-library': specifier: 0.2.0 version: 0.2.0 '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@types/react-dom': specifier: ^18.2.7 version: 18.2.7 @@ -166,26 +176,26 @@ importers: specifier: ^3.3.2 version: 3.3.2(vite@4.4.9) autoprefixer: - specifier: ^10.4.15 - version: 10.4.15(postcss@8.4.29) + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.30) eslint-config-commonality: specifier: workspace:* - version: link:../../packages/config-eslint + version: link:../../tooling/config-eslint postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^8.4.30 + version: 8.4.30 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.29)(typescript@5.2.2)(webpack@5.88.2) + version: 7.3.3(postcss@8.4.30)(typescript@5.2.2)(webpack@5.88.2) prop-types: specifier: ^15.8.1 version: 15.8.1 storybook: - specifier: ^7.4.0 - version: 7.4.0 + specifier: ^7.4.3 + version: 7.4.3 storybook-dark-mode: specifier: ^3.0.1 - version: 3.0.1(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 3.0.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) tailwindcss: specifier: ^3.3.3 version: 3.3.3(ts-node@10.9.1) @@ -194,7 +204,7 @@ importers: version: 5.2.2 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.6.0)(less@4.2.0) + version: 4.4.9(@types/node@20.6.3)(less@4.2.0) webpack: specifier: ^5.88.2 version: 5.88.2(esbuild@0.18.20) @@ -202,8 +212,14 @@ importers: packages/commonality: dependencies: '@next/bundle-analyzer': - specifier: ^13.4.19 - version: 13.4.19(bufferutil@4.0.7)(utf-8-validate@6.0.3) + specifier: ^13.5.2 + version: 13.5.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@testing-library/react': + specifier: ^14.0.0 + version: 14.0.0(react-dom@18.2.0)(react@18.2.0) + '@types/prompts': + specifier: ^2.4.4 + version: 2.4.4 chalk: specifier: ^5.3.0 version: 5.3.0 @@ -225,18 +241,51 @@ importers: got: specifier: ^13.0.0 version: 13.0.0 + ink: + specifier: ^4.4.1 + version: 4.4.1(@types/react@18.2.22)(react-devtools-core@4.28.4)(react@18.2.0) + ink-link: + specifier: ^3.0.0 + version: 3.0.0(ink@4.4.1) + ink-spinner: + specifier: ^5.0.0 + version: 5.0.0(ink@4.4.1)(react@18.2.0) + ink-testing-library: + specifier: ^3.0.0 + version: 3.0.0(@types/react@18.2.22) kill-port: specifier: ^2.0.1 version: 2.0.1 + lodash.get: + specifier: ^4.4.2 + version: 4.4.2 + lodash.omit: + specifier: ^4.5.0 + version: 4.5.0 + lodash.set: + specifier: ^4.3.2 + version: 4.3.2 next: specifier: 13.4.19 - version: 13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 open: specifier: ^9.1.0 version: 9.1.0 ora: specifier: ^7.0.1 version: 7.0.1 + prompts: + specifier: ^2.4.2 + version: 2.4.2 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-devtools-core: + specifier: ^4.28.4 + version: 4.28.4 socket.io: specifier: ^4.7.2 version: 4.7.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) @@ -246,13 +295,22 @@ importers: wait-on: specifier: ^7.0.1 version: 7.0.1(debug@4.3.4) + yaml: + specifier: ^2.3.2 + version: 2.3.2 + zod: + specifier: ^3.22.2 + version: 3.22.2 devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/data-codeowners': specifier: workspace:* version: link:../data-codeowners + '@commonalityco/data-conformance': + specifier: workspace:* + version: link:../data-conformance '@commonalityco/data-documents': specifier: workspace:* version: link:../data-documents @@ -268,30 +326,51 @@ importers: '@commonalityco/data-violations': specifier: workspace:* version: link:../data-violations + '@commonalityco/data-workspaces': + specifier: workspace:* + version: link:../data-workspaces '@commonalityco/studio': specifier: workspace:* version: link:../studio '@commonalityco/types': specifier: workspace:* version: link:../types + '@commonalityco/utils-conformance': + specifier: workspace:* + version: link:../utils-conformance '@commonalityco/utils-core': specifier: workspace:* version: link:../utils-core + '@commonalityco/utils-file': + specifier: workspace:* + version: link:../utils-file '@swc/core': - specifier: ^1.3.83 - version: 1.3.83 + specifier: ^1.3.86 + version: 1.3.86 '@types/configstore': specifier: ^6.0.0 version: 6.0.0 '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/kill-port': - specifier: ^2.0.0 - version: 2.0.0 + specifier: ^2.0.1 + version: 2.0.1 + '@types/lodash.get': + specifier: ^4.4.7 + version: 4.4.7 + '@types/lodash.omit': + specifier: ^4.5.7 + version: 4.5.7 + '@types/lodash.set': + specifier: ^4.3.7 + version: 4.3.7 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 + '@types/react': + specifier: ^18.2.22 + version: 18.2.22 '@types/update-notifier': specifier: ^6.0.5 version: 6.0.5 @@ -299,63 +378,66 @@ importers: specifier: ^5.3.1 version: 5.3.1 esbuild: - specifier: ^0.19.2 - version: 0.19.2 + specifier: ^0.19.3 + version: 0.19.3 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint ncp: specifier: ^2.0.0 version: 2.0.0 resolve: - specifier: ^1.22.4 - version: 1.22.4 + specifier: ^1.22.6 + version: 1.22.6 strip-ansi: specifier: ^7.1.0 version: 7.1.0 ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2) + tsup: + specifier: ^7.2.0 + version: 7.2.0(@swc/core@1.3.86)(ts-node@10.9.1)(typescript@5.2.2) typescript: specifier: ^5.2.2 version: 5.2.2 - packages/config-eslint: + packages/commonality-conform-recommended: dependencies: - eslint-plugin-import: - specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-n: - specifier: ^16.0.2 - version: 16.0.2(eslint@8.49.0) - eslint-plugin-unicorn: - specifier: ^48.0.1 - version: 48.0.1(eslint@8.49.0) - eslint-plugin-unused-imports: - specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0) - devDependencies: - typescript: - specifier: ^5.2.2 - version: 5.2.2 - - packages/config-tailwind: - devDependencies: - '@tailwindcss/typography': - specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.3.3) - tailwindcss: - specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1) - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.3.3) - typescript: - specifier: ^5.2.2 - version: 5.2.2 - - packages/config-tsconfig: + semver: + specifier: ^7.5.4 + version: 7.5.4 devDependencies: + '@commonalityco/config-tsconfig': + specifier: workspace:* + version: link:../../tooling/config-tsconfig + '@commonalityco/data-codeowners': + specifier: workspace:* + version: link:../data-codeowners + '@commonalityco/data-documents': + specifier: workspace:* + version: link:../data-documents + '@commonalityco/data-packages': + specifier: workspace:* + version: link:../data-packages + '@commonalityco/data-project': + specifier: workspace:* + version: link:../data-project + '@commonalityco/data-tags': + specifier: workspace:* + version: link:../data-tags + '@commonalityco/types': + specifier: workspace:* + version: link:../types + '@commonalityco/utils-core': + specifier: workspace:* + version: link:../utils-core + commonality: + specifier: workspace:* + version: link:../commonality + eslint-config-commonality: + specifier: workspace:* + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -377,19 +459,37 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 + eslint-config-commonality: + specifier: workspace:* + version: link:../../tooling/config-eslint + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + packages/data-conformance: + devDependencies: + '@commonalityco/config-tsconfig': + specifier: workspace:* + version: link:../../tooling/config-tsconfig + '@commonalityco/types': + specifier: workspace:* + version: link:../types + '@commonalityco/utils-core': + specifier: workspace:* + version: link:../utils-core eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -408,7 +508,7 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types @@ -416,14 +516,14 @@ importers: specifier: workspace:* version: link:../utils-core '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -439,7 +539,7 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types @@ -460,7 +560,7 @@ importers: version: 4.0.7 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -491,7 +591,7 @@ importers: version: 3.26.0 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint packages/data-packages: dependencies: @@ -507,19 +607,19 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -532,6 +632,12 @@ importers: chalk: specifier: ^5.3.0 version: 5.3.0 + cosmiconfig: + specifier: ^8.3.6 + version: 8.3.6(typescript@5.2.2) + cosmiconfig-typescript-loader: + specifier: ^5.0.0 + version: 5.0.0(@types/node@20.6.3)(cosmiconfig@8.3.6)(typescript@5.2.2) find-up: specifier: ^6.3.0 version: 6.3.0 @@ -541,6 +647,9 @@ importers: globby: specifier: ^13.2.2 version: 13.2.2 + jiti: + specifier: ^1.20.0 + version: 1.20.0 yaml: specifier: ^2.3.2 version: 2.3.2 @@ -550,19 +659,19 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -584,22 +693,22 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/lodash.uniq': specifier: ^4.5.7 version: 4.5.7 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -608,7 +717,40 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig + '@commonalityco/types': + specifier: workspace:* + version: link:../types + '@commonalityco/utils-core': + specifier: workspace:* + version: link:../utils-core + eslint-config-commonality: + specifier: workspace:* + version: link:../../tooling/config-eslint + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + packages/data-workspaces: + devDependencies: + '@commonalityco/config-tsconfig': + specifier: workspace:* + version: link:../../tooling/config-tsconfig + '@commonalityco/data-codeowners': + specifier: workspace:* + version: link:../data-codeowners + '@commonalityco/data-documents': + specifier: workspace:* + version: link:../data-documents + '@commonalityco/data-packages': + specifier: workspace:* + version: link:../data-packages + '@commonalityco/data-project': + specifier: workspace:* + version: link:../data-project + '@commonalityco/data-tags': + specifier: workspace:* + version: link:../data-tags '@commonalityco/types': specifier: workspace:* version: link:../types @@ -617,7 +759,7 @@ importers: version: link:../utils-core eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -633,10 +775,10 @@ importers: devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/data-graph': specifier: workspace:* version: link:../data-graph @@ -657,7 +799,7 @@ importers: version: link:../utils-graph '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.1.3(jest@29.6.4)(vitest@0.34.4) + version: 6.1.3(jest@29.7.0)(vitest@0.34.4) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) @@ -665,17 +807,17 @@ importers: specifier: ^4.0.7 version: 4.0.7 '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@xstate/react': specifier: ^3.2.2 - version: 3.2.2(@types/react@18.2.21)(react@18.2.0)(xstate@4.38.2) + version: 3.2.2(@types/react@18.2.22)(react@18.2.0)(xstate@4.38.2) cytoscape: specifier: ^3.26.0 version: 3.26.0 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) @@ -683,8 +825,8 @@ importers: specifier: ^0.2.1 version: 0.2.1(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^8.4.30 + version: 8.4.30 react: specifier: ^18.2.0 version: 18.2.0 @@ -706,6 +848,9 @@ importers: '@commonalityco/data-codeowners': specifier: workspace:* version: link:../data-codeowners + '@commonalityco/data-conformance': + specifier: workspace:* + version: link:../data-conformance '@commonalityco/data-documents': specifier: workspace:* version: link:../data-documents @@ -755,11 +900,11 @@ importers: specifier: ^3.3.1 version: 3.3.1(react-hook-form@7.46.1) '@tanstack/react-table': - specifier: ^8.9.8 - version: 8.9.8(react-dom@18.2.0)(react@18.2.0) + specifier: ^8.10.1 + version: 8.10.1(react-dom@18.2.0)(react@18.2.0) '@xstate/react': specifier: ^3.2.2 - version: 3.2.2(@types/react@18.2.21)(react@18.2.0)(xstate@4.38.2) + version: 3.2.2(@types/react@18.2.22)(react@18.2.0)(xstate@4.38.2) bufferutil: specifier: ^4.0.7 version: 4.0.7 @@ -801,50 +946,50 @@ importers: version: 3.22.2 devDependencies: '@babel/core': - specifier: ^7.22.17 - version: 7.22.17 + specifier: ^7.22.20 + version: 7.22.20 '@babel/preset-env': - specifier: ^7.22.15 - version: 7.22.15(@babel/core@7.22.17) + specifier: ^7.22.20 + version: 7.22.20(@babel/core@7.22.20) '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/types': specifier: workspace:* version: link:../types '@next/bundle-analyzer': - specifier: ^13.4.19 - version: 13.4.19(bufferutil@4.0.7)(utf-8-validate@6.0.3) + specifier: ^13.5.2 + version: 13.5.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@tanstack/react-query': - specifier: ^4.35.0 - version: 4.35.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query-devtools': - specifier: ^4.35.0 - version: 4.35.0(@tanstack/react-query@4.35.0)(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(@tanstack/react-query@4.35.3)(react-dom@18.2.0)(react@18.2.0) '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.1.3(jest@29.6.4)(vitest@0.34.4) + version: 6.1.3(jest@29.7.0)(vitest@0.34.4) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: ^14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) + specifier: ^14.5.1 + version: 14.5.1(@testing-library/dom@9.3.3) '@total-typescript/ts-reset': specifier: ^0.5.1 version: 0.5.1 '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 + specifier: ^11.0.2 + version: 11.0.2 '@types/lodash': specifier: ^4.14.198 version: 4.14.198 '@types/node': - specifier: ^20.6.0 - version: 20.6.0 + specifier: ^20.6.3 + version: 20.6.3 '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@types/react-dom': specifier: ^18.2.7 version: 18.2.7 @@ -855,8 +1000,8 @@ importers: specifier: ^3.3.2 version: 3.3.2(vite@4.4.9) autoprefixer: - specifier: ^10.4.15 - version: 10.4.15(postcss@8.4.29) + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.30) chokidar: specifier: ^3.5.3 version: 3.5.3 @@ -867,20 +1012,20 @@ importers: specifier: ^2.0.0 version: 2.0.0 cypress: - specifier: ^13.1.0 - version: 13.1.0 + specifier: ^12.17.4 + version: 12.17.4 eslint: specifier: ^8.49.0 version: 8.49.0 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint eslint-config-next: specifier: 13.4.19 version: 13.4.19(eslint@8.49.0)(typescript@5.2.2) execa: - specifier: ^8.0.1 - version: 8.0.1 + specifier: ^7.2.0 + version: 7.2.0 fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -888,17 +1033,17 @@ importers: specifier: ^7.0.0 version: 7.0.0 jest: - specifier: ^29.6.4 - version: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) jest-environment-jsdom: - specifier: ^29.6.4 - version: 29.6.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) + specifier: ^29.7.0 + version: 29.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) next: specifier: 13.4.19 - version: 13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) @@ -909,8 +1054,8 @@ importers: specifier: ^10.2.0 version: 10.2.0 postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^8.4.30 + version: 8.4.30 prettier: specifier: ^3.0.3 version: 3.0.3 @@ -934,7 +1079,7 @@ importers: version: 3.3.3(ts-node@10.9.1) ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2) typescript: specifier: ^5.2.2 version: 5.2.2 @@ -946,13 +1091,13 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/utils-core': specifier: workspace:* version: link:../utils-core eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -960,17 +1105,17 @@ importers: packages/ui-core: dependencies: '@commonalityco/types': - specifier: workspace:^ + specifier: workspace:* version: link:../types '@radix-ui/react-slot': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.21)(react@18.2.0) + version: 1.0.2(@types/react@18.2.22)(react@18.2.0) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 react-markdown: specifier: ^8.0.7 - version: 8.0.7(@types/react@18.2.21)(react@18.2.0) + version: 8.0.7(@types/react@18.2.22)(react@18.2.0) react-syntax-highlighter: specifier: ^15.5.0 version: 15.5.0(react@18.2.0) @@ -983,10 +1128,10 @@ importers: devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/ui-design-system': specifier: workspace:* version: link:../ui-design-system @@ -994,20 +1139,20 @@ importers: specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@types/react-syntax-highlighter': specifier: ^15.5.7 version: 15.5.7 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) next: specifier: 13.4.19 - version: 13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) next-themes: specifier: ^0.2.1 version: 0.2.1(next@13.4.19)(react-dom@18.2.0)(react@18.2.0) @@ -1031,52 +1176,52 @@ importers: version: 3.3.1(react-hook-form@7.46.1) '@radix-ui/react-accordion': specifier: ^1.1.2 - version: 1.1.2(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-checkbox': specifier: ^1.0.4 - version: 1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: ^1.0.4 - version: 1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dropdown-menu': specifier: ^2.0.5 - version: 2.0.5(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-hover-card': specifier: ^1.0.6 - version: 1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-label': specifier: ^2.0.2 - version: 2.0.2(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-popover': specifier: ^1.0.6 - version: 1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-radio-group': specifier: ^1.1.3 - version: 1.1.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-scroll-area': specifier: ^1.0.4 - version: 1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-separator': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.21)(react@18.2.0) + version: 1.0.2(@types/react@18.2.22)(react@18.2.0) '@radix-ui/react-switch': specifier: ^1.0.3 - version: 1.0.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tabs': specifier: ^1.0.4 - version: 1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toast': specifier: ^1.1.4 - version: 1.1.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toggle': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.6 - version: 1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -1085,41 +1230,41 @@ importers: version: 2.0.0 cmdk: specifier: ^0.2.0 - version: 0.2.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.0(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) react-hook-form: specifier: ^7.46.1 version: 7.46.1(react@18.2.0) react-select: - specifier: ^5.7.4 - version: 5.7.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.7.5 + version: 5.7.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) tailwind-merge: specifier: ^1.14.0 version: 1.14.0 devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.1.3(jest@29.6.4)(vitest@0.34.4) + version: 6.1.3(jest@29.7.0)(vitest@0.34.4) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^8.4.30 + version: 8.4.30 react: specifier: ^18.2.0 version: 18.2.0 @@ -1150,10 +1295,10 @@ importers: devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types @@ -1170,17 +1315,17 @@ importers: specifier: workspace:* version: link:../utils-package '@testing-library/dom': - specifier: ^9.3.1 - version: 9.3.1 + specifier: ^9.3.3 + version: 9.3.3 '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.1.3(jest@29.6.4)(vitest@0.34.4) + version: 6.1.3(jest@29.7.0)(vitest@0.34.4) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: ^14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) + specifier: ^14.5.1 + version: 14.5.1(@testing-library/dom@9.3.3) '@types/cytoscape': specifier: ^3.19.11 version: 3.19.11 @@ -1188,8 +1333,8 @@ importers: specifier: ^4.0.7 version: 4.0.7 '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 '@vitejs/plugin-react-swc': specifier: ^3.3.2 version: 3.3.2(vite@4.4.9) @@ -1198,7 +1343,7 @@ importers: version: 3.26.0 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) @@ -1219,10 +1364,10 @@ importers: devDependencies: '@commonalityco/config-tailwind': specifier: workspace:* - version: link:../config-tailwind + version: link:../../tooling/config-tailwind '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types @@ -1239,26 +1384,29 @@ importers: specifier: workspace:* version: link:../utils-package '@tanstack/react-table': - specifier: ^8.9.8 - version: 8.9.8(react-dom@18.2.0)(react@18.2.0) + specifier: ^8.10.1 + version: 8.10.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/dom': - specifier: ^9.3.1 - version: 9.3.1 + specifier: ^9.3.3 + version: 9.3.3 '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.1.3(jest@29.6.4)(vitest@0.34.4) + version: 6.1.3(jest@29.7.0)(vitest@0.34.4) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': - specifier: ^14.4.3 - version: 14.4.3(@testing-library/dom@9.3.1) + specifier: ^14.5.1 + version: 14.5.1(@testing-library/dom@9.3.3) '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 + '@vitejs/plugin-react-swc': + specifier: ^3.3.2 + version: 3.3.2(vite@4.4.9) eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint lucide-react: specifier: ^0.274.0 version: 0.274.0(react@18.2.0) @@ -1275,6 +1423,24 @@ importers: specifier: ^5.2.2 version: 5.2.2 + packages/utils-conformance: + devDependencies: + '@commonalityco/config-tsconfig': + specifier: workspace:* + version: link:../../tooling/config-tsconfig + '@commonalityco/types': + specifier: workspace:* + version: link:../types + '@commonalityco/utils-core': + specifier: workspace:* + version: link:../utils-core + eslint-config-commonality: + specifier: workspace:* + version: link:../../tooling/config-eslint + typescript: + specifier: ^5.2.2 + version: 5.2.2 + packages/utils-core: dependencies: '@sindresorhus/slugify': @@ -1283,10 +1449,56 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig + eslint-config-commonality: + specifier: workspace:* + version: link:../../tooling/config-eslint + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + packages/utils-file: + dependencies: + detect-indent: + specifier: ^7.0.1 + version: 7.0.1 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + lodash.get: + specifier: ^4.4.2 + version: 4.4.2 + lodash.omit: + specifier: ^4.5.0 + version: 4.5.0 + lodash.set: + specifier: ^4.3.2 + version: 4.3.2 + mock-fs: + specifier: ^5.2.0 + version: 5.2.0 + yaml: + specifier: ^2.3.2 + version: 2.3.2 + devDependencies: + '@commonalityco/config-tsconfig': + specifier: workspace:* + version: link:../../tooling/config-tsconfig + '@commonalityco/types': + specifier: workspace:* + version: link:../types + '@types/lodash.get': + specifier: ^4.4.7 + version: 4.4.7 + '@types/lodash.omit': + specifier: ^4.5.7 + version: 4.5.7 + '@types/lodash.set': + specifier: ^4.3.7 + version: 4.3.7 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint typescript: specifier: ^5.2.2 version: 5.2.2 @@ -1305,7 +1517,7 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types @@ -1328,8 +1540,8 @@ importers: specifier: ^3.26.0 version: 3.26.0 eslint-config-commonality: - specifier: workspace:^ - version: link:../config-eslint + specifier: workspace:* + version: link:../../tooling/config-eslint react: specifier: ^18.2.0 version: 18.2.0 @@ -1348,19 +1560,19 @@ importers: devDependencies: '@commonalityco/config-tsconfig': specifier: workspace:* - version: link:../config-tsconfig + version: link:../../tooling/config-tsconfig '@commonalityco/types': specifier: workspace:* version: link:../types '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.22 + version: 18.2.22 eslint-config-commonality: specifier: workspace:* - version: link:../config-eslint + version: link:../../tooling/config-eslint postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^8.4.30 + version: 8.4.30 react: specifier: ^18.2.0 version: 18.2.0 @@ -1374,6 +1586,46 @@ importers: specifier: ^5.2.2 version: 5.2.2 + tooling/config-eslint: + dependencies: + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-n: + specifier: ^16.1.0 + version: 16.1.0(eslint@8.49.0) + eslint-plugin-unicorn: + specifier: ^48.0.1 + version: 48.0.1(eslint@8.49.0) + eslint-plugin-unused-imports: + specifier: ^3.0.0 + version: 3.0.0(@typescript-eslint/eslint-plugin@6.7.2)(eslint@8.49.0) + devDependencies: + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + tooling/config-tailwind: + devDependencies: + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.3.3) + tailwindcss: + specifier: ^3.3.3 + version: 3.3.3(ts-node@10.9.1) + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.3.3) + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + tooling/config-tsconfig: + devDependencies: + typescript: + specifier: ^5.2.2 + version: 5.2.2 + packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -1384,6 +1636,14 @@ packages: resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} dev: true + /@alcalzone/ansi-tokenize@0.1.3: + resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} + engines: {node: '>=14.13.1'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: false + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -1407,27 +1667,27 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.22.20: + resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.17: - resolution: {integrity: sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==} + /@babel/core@7.22.20: + resolution: {integrity: sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helpers': 7.22.15 '@babel/parser': 7.22.16 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -1440,7 +1700,7 @@ packages: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 @@ -1449,73 +1709,73 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.22.20 '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.17): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.17): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.17): + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.20): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.4 + resolve: 1.22.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.22.5: @@ -1523,45 +1783,45 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 /@babel/helper-member-expression-to-functions@7.22.15: resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17): - resolution: {integrity: sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==} + /@babel/helper-module-transforms@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -1569,26 +1829,26 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.22.17(@babel/core@7.22.17): - resolution: {integrity: sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==} + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.17 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.17): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -1597,40 +1857,40 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.15: - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.17: - resolution: {integrity: sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==} + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 '@babel/template': 7.22.15 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 dev: true /@babel/helpers@7.22.15: @@ -1638,16 +1898,16 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 @@ -1656,995 +1916,995 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.17): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.17): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.17): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.17): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.17): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.20): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.17): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.20): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.17): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.20): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.17): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.17): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.17): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.17): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.17): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.17): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.17): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.17(@babel/core@7.22.17) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-module-transforms': 7.22.17(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.17 + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.17) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.17): + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.20): resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.17): + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.20): resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.17): + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.17): + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.20): resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.17): + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.15(@babel/core@7.22.17): - resolution: {integrity: sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==} + /@babel/preset-env@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.17 + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.17) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.17) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.17) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.17) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.17) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.17) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.17) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.17) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.17) - '@babel/types': 7.22.17 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.17) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.17) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.17) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.20) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.20) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.20) + '@babel/types': 7.22.19 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.20) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.20) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.20) core-js-compat: 3.32.2 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-flow@7.22.15(@babel/core@7.22.17): + /@babel/preset-flow@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.17) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.17): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.20): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 esutils: 2.0.3 dev: true - /@babel/preset-typescript@7.22.15(@babel/core@7.22.17): + /@babel/preset-typescript@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.17) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/register@7.22.15(@babel/core@7.22.17): + /@babel/register@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -2668,31 +2928,31 @@ packages: dependencies: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@babel/traverse@7.22.17: - resolution: {integrity: sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==} + /@babel/traverse@7.22.20: + resolution: {integrity: sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.22.17: - resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==} + /@babel/types@7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 /@base2/pretty-print-object@1.0.1: @@ -2757,7 +3017,7 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.0 - '@types/semver': 7.5.1 + '@types/semver': 7.5.2 ansi-colors: 4.1.3 chalk: 2.4.2 enquirer: 2.4.1 @@ -2899,8 +3159,8 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@cypress/request@3.0.1: - resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} + /@cypress/request@2.88.12: + resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -2971,7 +3231,7 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.1(@types/react@18.2.21)(react@18.2.0): + /@emotion/react@11.11.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} peerDependencies: '@types/react': '*' @@ -2987,7 +3247,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.21 + '@types/react': 18.2.22 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -3033,8 +3293,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm64@0.19.2: - resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + /@esbuild/android-arm64@0.19.3: + resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -3050,8 +3310,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.19.2: - resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + /@esbuild/android-arm@0.19.3: + resolution: {integrity: sha512-Lemgw4io4VZl9GHJmjiBGzQ7ONXRfRPHcUEerndjwiSkbxzrpq0Uggku5MxxrXdwJ+pTj1qyw4jwTu7hkPsgIA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -3067,8 +3327,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.19.2: - resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + /@esbuild/android-x64@0.19.3: + resolution: {integrity: sha512-FKQJKkK5MXcBHoNZMDNUAg1+WcZlV/cuXrWCoGF/TvdRiYS4znA0m5Il5idUwfxrE20bG/vU1Cr5e1AD6IEIjQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -3084,8 +3344,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.19.2: - resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + /@esbuild/darwin-arm64@0.19.3: + resolution: {integrity: sha512-kw7e3FXU+VsJSSSl2nMKvACYlwtvZB8RUIeVShIEY6PVnuZ3c9+L9lWB2nWeeKWNNYDdtL19foCQ0ZyUL7nqGw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -3101,8 +3361,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.19.2: - resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + /@esbuild/darwin-x64@0.19.3: + resolution: {integrity: sha512-tPfZiwF9rO0jW6Jh9ipi58N5ZLoSjdxXeSrAYypy4psA2Yl1dAMhM71KxVfmjZhJmxRjSnb29YlRXXhh3GqzYw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -3118,8 +3378,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.19.2: - resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + /@esbuild/freebsd-arm64@0.19.3: + resolution: {integrity: sha512-ERDyjOgYeKe0Vrlr1iLrqTByB026YLPzTytDTz1DRCYM+JI92Dw2dbpRHYmdqn6VBnQ9Bor6J8ZlNwdZdxjlSg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -3135,8 +3395,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.19.2: - resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + /@esbuild/freebsd-x64@0.19.3: + resolution: {integrity: sha512-nXesBZ2Ad1qL+Rm3crN7NmEVJ5uvfLFPLJev3x1j3feCQXfAhoYrojC681RhpdOph8NsvKBBwpYZHR7W0ifTTA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -3152,8 +3412,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.19.2: - resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + /@esbuild/linux-arm64@0.19.3: + resolution: {integrity: sha512-qXvYKmXj8GcJgWq3aGvxL/JG1ZM3UR272SdPU4QSTzD0eymrM7leiZH77pvY3UetCy0k1xuXZ+VPvoJNdtrsWQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -3169,8 +3429,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.19.2: - resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + /@esbuild/linux-arm@0.19.3: + resolution: {integrity: sha512-zr48Cg/8zkzZCzDHNxXO/89bf9e+r4HtzNUPoz4GmgAkF1gFAFmfgOdCbR8zMbzFDGb1FqBBhdXUpcTQRYS1cQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -3186,8 +3446,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.19.2: - resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + /@esbuild/linux-ia32@0.19.3: + resolution: {integrity: sha512-7XlCKCA0nWcbvYpusARWkFjRQNWNGlt45S+Q18UeS///K6Aw8bB2FKYe9mhVWy/XLShvCweOLZPrnMswIaDXQA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -3203,8 +3463,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.19.2: - resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + /@esbuild/linux-loong64@0.19.3: + resolution: {integrity: sha512-qGTgjweER5xqweiWtUIDl9OKz338EQqCwbS9c2Bh5jgEH19xQ1yhgGPNesugmDFq+UUSDtWgZ264st26b3de8A==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -3220,8 +3480,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.19.2: - resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + /@esbuild/linux-mips64el@0.19.3: + resolution: {integrity: sha512-gy1bFskwEyxVMFRNYSvBauDIWNggD6pyxUksc0MV9UOBD138dKTzr8XnM2R4mBsHwVzeuIH8X5JhmNs2Pzrx+A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -3237,8 +3497,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.19.2: - resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + /@esbuild/linux-ppc64@0.19.3: + resolution: {integrity: sha512-UrYLFu62x1MmmIe85rpR3qou92wB9lEXluwMB/STDzPF9k8mi/9UvNsG07Tt9AqwPQXluMQ6bZbTzYt01+Ue5g==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -3254,8 +3514,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.19.2: - resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + /@esbuild/linux-riscv64@0.19.3: + resolution: {integrity: sha512-9E73TfyMCbE+1AwFOg3glnzZ5fBAFK4aawssvuMgCRqCYzE0ylVxxzjEfut8xjmKkR320BEoMui4o/t9KA96gA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -3271,8 +3531,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.19.2: - resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + /@esbuild/linux-s390x@0.19.3: + resolution: {integrity: sha512-LlmsbuBdm1/D66TJ3HW6URY8wO6IlYHf+ChOUz8SUAjVTuaisfuwCOAgcxo3Zsu3BZGxmI7yt//yGOxV+lHcEA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -3288,8 +3548,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.19.2: - resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + /@esbuild/linux-x64@0.19.3: + resolution: {integrity: sha512-ogV0+GwEmvwg/8ZbsyfkYGaLACBQWDvO0Kkh8LKBGKj9Ru8VM39zssrnu9Sxn1wbapA2qNS6BiLdwJZGouyCwQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -3305,8 +3565,8 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.19.2: - resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + /@esbuild/netbsd-x64@0.19.3: + resolution: {integrity: sha512-o1jLNe4uzQv2DKXMlmEzf66Wd8MoIhLNO2nlQBHLtWyh2MitDG7sMpfCO3NTcoTMuqHjfufgUQDFRI5C+xsXQw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -3322,8 +3582,8 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.19.2: - resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + /@esbuild/openbsd-x64@0.19.3: + resolution: {integrity: sha512-AZJCnr5CZgZOdhouLcfRdnk9Zv6HbaBxjcyhq0StNcvAdVZJSKIdOiPB9az2zc06ywl0ePYJz60CjdKsQacp5Q==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -3339,8 +3599,8 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.19.2: - resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + /@esbuild/sunos-x64@0.19.3: + resolution: {integrity: sha512-Acsujgeqg9InR4glTRvLKGZ+1HMtDm94ehTIHKhJjFpgVzZG9/pIcWW/HA/DoMfEyXmANLDuDZ2sNrWcjq1lxw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -3356,8 +3616,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.19.2: - resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + /@esbuild/win32-arm64@0.19.3: + resolution: {integrity: sha512-FSrAfjVVy7TifFgYgliiJOyYynhQmqgPj15pzLyJk8BUsnlWNwP/IAy6GAiB1LqtoivowRgidZsfpoYLZH586A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -3373,8 +3633,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.19.2: - resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + /@esbuild/win32-ia32@0.19.3: + resolution: {integrity: sha512-xTScXYi12xLOWZ/sc5RBmMN99BcXp/eEf7scUC0oeiRoiT5Vvo9AycuqCp+xdpDyAU+LkrCqEpUS9fCSZF8J3Q==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -3390,8 +3650,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.2: - resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + /@esbuild/win32-x64@0.19.3: + resolution: {integrity: sha512-FbUN+0ZRXsypPyWE2IwIkVjDkDnJoMJARWOcFZn4KPPli+QnKqF0z1anvfaYe3ev5HFCpRDLLBDHyOALLppWHw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -3408,8 +3668,8 @@ packages: eslint: 8.49.0 eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.8.1: + resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@2.1.2: @@ -3419,7 +3679,7 @@ packages: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 - globals: 13.21.0 + globals: 13.22.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -3436,16 +3696,16 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true - /@floating-ui/core@1.4.1: - resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} dependencies: - '@floating-ui/utils': 0.1.1 + '@floating-ui/utils': 0.1.4 - /@floating-ui/dom@1.5.1: - resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.4 /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} @@ -3453,12 +3713,12 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.1 + '@floating-ui/dom': 1.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@floating-ui/utils@0.1.1: - resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} + /@floating-ui/utils@0.1.4: + resolution: {integrity: sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==} /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -3519,20 +3779,20 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - /@jest/console@29.6.4: - resolution: {integrity: sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==} + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 - jest-message-util: 29.6.3 - jest-util: 29.6.3 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@29.6.4(ts-node@10.9.1): - resolution: {integrity: sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==} + /@jest/core@29.7.0(ts-node@10.9.1): + 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 @@ -3540,32 +3800,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.6.4 - '@jest/reporters': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@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.6.0 + '@types/node': 20.6.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.6.3 - jest-config: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) - jest-haste-map: 29.6.4 - jest-message-util: 29.6.3 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 jest-regex-util: 29.6.3 - jest-resolve: 29.6.4 - jest-resolve-dependencies: 29.6.4 - jest-runner: 29.6.4 - jest-runtime: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 - jest-validate: 29.6.3 - jest-watcher: 29.6.4 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 micromatch: 4.0.5 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -3574,59 +3834,59 @@ packages: - ts-node dev: true - /@jest/environment@29.6.4: - resolution: {integrity: sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==} + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.6.4 + '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-mock: 29.6.3 + '@types/node': 20.6.3 + jest-mock: 29.7.0 dev: true - /@jest/expect-utils@29.6.4: - resolution: {integrity: sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==} + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 dev: true - /@jest/expect@29.6.4: - resolution: {integrity: sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==} + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.6.4 - jest-snapshot: 29.6.4 + expect: 29.7.0 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers@29.6.4: - resolution: {integrity: sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==} + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.6.0 - jest-message-util: 29.6.3 - jest-mock: 29.6.3 - jest-util: 29.6.3 + '@types/node': 20.6.3 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /@jest/globals@29.6.4: - resolution: {integrity: sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==} + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/expect': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 '@jest/types': 29.6.3 - jest-mock: 29.6.3 + jest-mock: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters@29.6.4: - resolution: {integrity: sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==} + /@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 @@ -3635,12 +3895,12 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@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.19 - '@types/node': 20.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3651,9 +3911,9 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - jest-message-util: 29.6.3 - jest-util: 29.6.3 - jest-worker: 29.6.4 + 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 @@ -3677,31 +3937,31 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result@29.6.4: - resolution: {integrity: sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==} + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.4 + '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.2 dev: true - /@jest/test-sequencer@29.6.4: - resolution: {integrity: sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==} + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.4 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 + jest-haste-map: 29.7.0 slash: 3.0.0 dev: true - /@jest/transform@29.6.4: - resolution: {integrity: sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 @@ -3709,9 +3969,9 @@ packages: convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 + jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 - jest-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 @@ -3726,7 +3986,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.3 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -3738,7 +3998,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.3 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -3757,7 +4017,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) dev: true /@jridgewell/gen-mapping@0.3.3: @@ -3875,7 +4135,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.7 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 dev: true @@ -3887,8 +4147,8 @@ packages: tar-fs: 2.1.1 dev: true - /@next/bundle-analyzer@13.4.19(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-nXKHz63dM0Kn3XPFOKrv2wK+hP9rdBg2iR1PsxuXLHVBoZhMyS1/ldRcX80YFsm2VUws9zM4a0E/1HlLI+P92g==} + /@next/bundle-analyzer@13.5.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-njvZIrbOHe4IK4Zzo4w4M9WLaVs3t1Uqu/mm4hx1XmaUmj9fWr0OfeJG+ZkemPTm07WeZVuJRzuklkV+cD8BKQ==} dependencies: webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: @@ -4043,7 +4303,7 @@ packages: dependencies: '@babel/runtime': 7.22.15 - /@radix-ui/react-accordion@1.1.2(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-accordion@1.1.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} peerDependencies: '@types/react': '*' @@ -4058,20 +4318,20 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-collapsible': 1.0.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -4085,13 +4345,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-checkbox@1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-checkbox@1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} peerDependencies: '@types/react': '*' @@ -4106,19 +4366,19 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collapsible@1.0.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collapsible@1.0.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} peerDependencies: '@types/react': '*' @@ -4133,19 +4393,19 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -4159,11 +4419,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4177,7 +4437,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -4187,7 +4447,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-context@1.0.0(react@18.2.0): @@ -4199,7 +4459,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -4209,10 +4469,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-dialog@1.0.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.0(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 @@ -4234,12 +4494,12 @@ packages: aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.22)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /@radix-ui/react-dialog@1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hJtRy/jPULGQZceSAP2Re6/4NpKo8im6V8P2hUqZsdFiSL8l35kYsw3qbRI6Ay5mQd2+wlLqje770eq+RJ3yZg==} peerDependencies: '@types/react': '*' @@ -4254,25 +4514,25 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.22)(react@18.2.0) dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -4282,7 +4542,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0): @@ -4301,7 +4561,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -4316,16 +4576,16 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-dropdown-menu@2.0.5(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xdOrZzOTocqqkCkYo8yRPCib5OkTkqN7lqNCdxwPOdE466DOaNl4N8PkUIlsXthQvW5Wwkd+aEmWpfWlBoDPEw==} peerDependencies: '@types/react': '*' @@ -4340,13 +4600,13 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-menu': 2.0.5(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-menu': 2.0.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -4360,7 +4620,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -4370,7 +4630,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0): @@ -4387,7 +4647,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -4401,15 +4661,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-hover-card@1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-hover-card@1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2K3ToJuMk9wjwBOa+jdg2oPma+AmLdcEyTNsG/iC4BDVG3E0/mGCjbY8PEDSLxJcUi+nJi2QII+ec/4kWd88DA==} peerDependencies: '@types/react': '*' @@ -4424,15 +4684,15 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -4447,7 +4707,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -4457,11 +4717,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-label@2.0.2(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-label@2.0.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -4475,13 +4735,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-menu@2.0.5(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Gw4f9pwdH+w5w+49k0gLjN0PfRDHvxmAgG16AbyJZ7zhwZ6PBHKtWohvnSwfusfnK3L68dpBREHpVkj8wEM7ZA==} peerDependencies: '@types/react': '*' @@ -4496,29 +4756,29 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.22)(react@18.2.0) dev: false - /@radix-ui/react-popover@1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popover@1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA==} peerDependencies: '@types/react': '*' @@ -4533,26 +4793,26 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.22)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -4567,16 +4827,16 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.21)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.22)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.21 + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4593,7 +4853,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -4607,8 +4867,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4626,7 +4886,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -4640,9 +4900,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -4659,7 +4919,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -4673,13 +4933,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-radio-group@1.1.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-radio-group@1.1.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} peerDependencies: '@types/react': '*' @@ -4694,21 +4954,21 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -4723,20 +4983,20 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-scroll-area@1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-scroll-area@1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OIClwBkwPG+FKvC4OMTRaa/3cfD069nkKFFL/TQzRzaO42Ce5ivKU9VMKgT7UU6UIkjcQqKBrDOIzWtPGw6e6w==} peerDependencies: '@types/react': '*' @@ -4752,19 +5012,19 @@ packages: '@babel/runtime': 7.22.15 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -4780,32 +5040,32 @@ packages: '@babel/runtime': 7.22.15 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.22)(react@18.2.0) dev: true - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -4819,8 +5079,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4835,7 +5095,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -4845,11 +5105,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-switch@1.0.3(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-switch@1.0.3(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} peerDependencies: '@types/react': '*' @@ -4864,18 +5124,18 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-tabs@1.0.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tabs@1.0.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -4890,19 +5150,19 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toast@1.1.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toast@1.1.4(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wf+fc8DOywrpRK3jlPlWVe+ELYGHdKDaaARJZNuUTWyWYq7+ANCFLp4rTjZ/mcGkJJQ/vZ949Zis9xxEpfq9OA==} peerDependencies: '@types/react': '*' @@ -4917,23 +5177,23 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -4948,19 +5208,19 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -4975,14 +5235,14 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -4997,19 +5257,19 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-tooltip@1.0.6(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.6(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg==} peerDependencies: '@types/react': '*' @@ -5024,18 +5284,18 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -5049,7 +5309,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -5059,7 +5319,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): @@ -5072,7 +5332,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -5082,8 +5342,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0): @@ -5096,7 +5356,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -5106,8 +5366,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): @@ -5119,7 +5379,7 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -5129,10 +5389,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -5142,10 +5402,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -5156,10 +5416,10 @@ packages: dependencies: '@babel/runtime': 7.22.15 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.21)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -5169,11 +5429,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.21)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.22)(react@18.2.0) + '@types/react': 18.2.22 react: 18.2.0 - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -5187,8 +5447,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.15 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.21 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.22 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5212,8 +5472,8 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/eslint-patch@1.3.3: - resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} + /@rushstack/eslint-patch@1.4.0: + resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} dev: true /@sideway/address@4.1.4: @@ -5270,8 +5530,8 @@ packages: /@socket.io/component-emitter@3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} - /@storybook/addon-a11y@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nqYZNweFtYZq1m1TisktqzulFgWXWmH43j5n3H6Rw/UKOWygpVzRVl4q4aiLgst+zOfLTLLW8kiJNxFJRbbu0A==} + /@storybook/addon-a11y@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ol/7cLedJo82DmIgz925CL6ajPqwoYLDM3DDUkcDiPivLEvCsQkY+Yjv/6DM2cJXdchjppYk7hDTuwO1QJXO4w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5281,16 +5541,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/addon-highlight': 7.4.0 - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/addon-highlight': 7.4.3 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 axe-core: 4.8.1 lodash: 4.17.21 react: 18.2.0 @@ -5301,8 +5561,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-actions@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0lHLLUlrGE7CBFrfmAXrBKu7fUIsiQlnNekuE3cIAjSgVR481bJEzYHUUoMATqpPC4GGErBdP1CZxVDDwWV8jA==} + /@storybook/addon-actions@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ROlhxTQxBtMvfUU8ZTZZ6M0ALbUuChm2Fkau9inZyLgaE/HJbjAUCU7TbHFQ7GgdqA3/Lnw0Soox8cmjI4QQWA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5312,14 +5572,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 dequal: 2.0.3 lodash: 4.17.21 polished: 4.2.2 @@ -5329,14 +5589,14 @@ packages: react-inspector: 6.0.2(react@18.2.0) telejson: 7.2.0 ts-dedent: 2.2.0 - uuid: 9.0.0 + uuid: 9.0.1 transitivePeerDependencies: - '@types/react' - '@types/react-dom' dev: true - /@storybook/addon-backgrounds@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cEO/Tp/eRE+5bf1FGN4wKLqLDBv3EYp9enJyXV7B3cFdciqtoE7VJPZuFZkzjJN1rRcOKSZp8g5agsx+x9uNGQ==} + /@storybook/addon-backgrounds@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NCcJKbz/kVSOXmoV1c+YoM28/oG9oO/kv1xwtX//cVv02SGerRCRqwB7zt0NzcLMSkrwaphRuXd55n0J7nGrBg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5346,14 +5606,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5363,8 +5623,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-controls@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tYDfqpTR+c9y4kElmr3aWNHPot6kYd+nruYb697LpkCdy4lFErqSo0mhvPyZfMZp2KEajfp6YJAurhQWbvbj/A==} + /@storybook/addon-controls@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlfr0Yx27GzQqb5iINQTwL8wCW1NK8+4bJ/HQe4SQOY1FpybOK59B421V6YyQ3tafDWU5MMKh2sElMY9z5Deqw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5374,16 +5634,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/blocks': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.0 - '@storybook/core-events': 7.4.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/blocks': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.4.3 + '@storybook/core-events': 7.4.3 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5395,27 +5655,27 @@ packages: - supports-color dev: true - /@storybook/addon-docs@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LJE92LUeVTgi8W4tLBEbSvCqF54snmBfTFCr46vhCFov2CE2VBgEvIX1XT3dfUgYUOtPu3RXR2C89fYgU6VYZw==} + /@storybook/addon-docs@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-c6r1nJY4fj/Uj9p7jHdicAS7quiK9RY0LJw+aB++FvcO1KavX33BlD2mxPIVU8a9oLJ3X4RUfNQz+OSABGy0xw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@jest/transform': 29.6.4 + '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.4.0 - '@storybook/csf-tools': 7.4.0 + '@storybook/blocks': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.4.3 + '@storybook/csf-tools': 7.4.3 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.4.0 - '@storybook/postinstall': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/react-dom-shim': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/node-logger': 7.4.3 + '@storybook/postinstall': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/react-dom-shim': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5429,25 +5689,25 @@ packages: - supports-color dev: true - /@storybook/addon-essentials@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nZmNM9AKw2JXxnYUXyFKLeUF/cL7Z9E1WTeZyOFTDtU2aITRt8+LvaepwjchtPqu2B0GcQxLB5FRDdhy0I19nw==} + /@storybook/addon-essentials@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LYAauAz4YGWmdZw6umJisl3X0gk1UV9Ovm6b7hicNfKKYGlsWz9KNyi3kvV+harScBzcqENFl5kwezFu2Ltq9g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.4.0 - '@storybook/addon-measure': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.4.0 - '@storybook/preview-api': 7.4.0 + '@storybook/addon-actions': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-backgrounds': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-controls': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.4.3 + '@storybook/addon-measure': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-outline': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-toolbars': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-viewport': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.4.3 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.4.3 + '@storybook/preview-api': 7.4.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -5458,16 +5718,16 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.4.0: - resolution: {integrity: sha512-kpYSb3oXI9t/1+aRJhToDZ0/1W4mu+SzTBfv9Bl2d/DogEkFzgJricoy5LtvS5EpcXUmKO1FJsw/DCm9buSL2g==} + /@storybook/addon-highlight@7.4.3: + resolution: {integrity: sha512-4FDvg+ZH5/H6b7qI6tVSygCaF5h7TStfyLXwxx07edot0vaaw4ir/0sbCAH9AUQ9/+08RiXsMFO5tgMUp/BjcA==} dependencies: - '@storybook/core-events': 7.4.0 + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.4.0 + '@storybook/preview-api': 7.4.3 dev: true - /@storybook/addon-interactions@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nEWP+Ib0Y/ShXfpCm40FBTbBy1/MT8XxTEAhcNN+3ZJ07Vhhkrb8GMlWHTKQv2PyghEVBYEoPFHhElUJQOe00g==} + /@storybook/addon-interactions@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-72Uy7FGr3UbEq44D44ML/o/kC8jUuBETDgnNTC/J7n35OzHcBcas9cHzam87IG/M8uxTwKtuUlEzwyoNUjI3MA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5477,16 +5737,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.4.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/instrumenter': 7.4.3 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 jest-mock: 27.5.1 polished: 4.2.2 react: 18.2.0 @@ -5499,8 +5759,8 @@ packages: - supports-color dev: true - /@storybook/addon-links@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lFj8fiokWKk3jx5YUQ4anQo1uCNDMP1y6nJ/92Y85vnOd1vJr3w4GlLy8eOWMABRE33AKLI5Yp6wcpWZDe7hhQ==} + /@storybook/addon-links@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-flnwlKdePQtwgryFhJlju94DVvZBq477xaD1mG9zcqEe+QeN+1GGggIo6R9e2hEsWcAfpc2yKA4dJP9KS9xIHg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5510,22 +5770,22 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/router': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/router': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8YjBqm6jPOBgkRn9YnJkLN0+ghgJiukdHOa0VB3qhiT+oww4ZOZ7mc2aQRwXQoFb05UbVVG9UNxE7lhyTyaG2w==} + /@storybook/addon-measure@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-a07/GV9WWvqy1MuJtDevHzPo/weY86s7JT+qjGk0bhQdThVcd94Z7whlQL/LgrdAi1XLdHY5R5LpUIk9UDluNw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5535,13 +5795,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/types': 7.4.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tiny-invariant: 1.3.1 @@ -5550,8 +5810,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-outline@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CCAWFC3bfkmYPzFjOemfH/kjpqJOHt+SdJgBKmwujDy+zum0DHlUL/7rd+U32cEpezCA8bapd0hlWn59C4agHQ==} + /@storybook/addon-outline@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QPcTjmNgj0+7NEzomfqNOnm2DgcRjqvYGCdlxfDbnNB0J+ZGlaUozL3ZbofJKx9qCoHf+j+Z1pwONHafJV6t4w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5561,13 +5821,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/types': 7.4.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -5576,7 +5836,7 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-styling@1.3.7(@types/react-dom@18.2.7)(@types/react@18.2.21)(less@4.2.0)(postcss@8.4.29)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2): + /@storybook/addon-styling@1.3.7(@types/react-dom@18.2.7)(@types/react@18.2.22)(less@4.2.0)(postcss@8.4.30)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2): resolution: {integrity: sha512-JSBZMOrSw/3rlq5YoEI7Qyq703KSNP0Jd+gxTWu3/tP6245mpjn2dXnR8FvqVxCi+FG4lt2kQyPzgsuwEw1SSA==} hasBin: true peerDependencies: @@ -5598,21 +5858,21 @@ packages: optional: true dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - '@storybook/api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.0 - '@storybook/core-events': 7.4.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@babel/types': 7.22.19 + '@storybook/api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.4.3 + '@storybook/core-events': 7.4.3 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 css-loader: 6.8.1(webpack@5.88.2) less: 4.2.0 less-loader: 11.1.3(less@4.2.0)(webpack@5.88.2) - postcss: 8.4.29 - postcss-loader: 7.3.3(postcss@8.4.29)(typescript@5.2.2)(webpack@5.88.2) + postcss: 8.4.30 + postcss-loader: 7.3.3(postcss@8.4.30)(typescript@5.2.2)(webpack@5.88.2) prettier: 2.8.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5632,8 +5892,8 @@ packages: - typescript dev: true - /@storybook/addon-toolbars@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-00PDLchlQXI3ZClQHU0YQBfikAAxHOhVNv2QKW54yFKmxPl+P2c/VIeir9LcPhA04smKrJTD1u+Nszd66A9xAA==} + /@storybook/addon-toolbars@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sHILofAarfzku+8qhueELoZYCLTHuDtmnlfILjBrH/w7Et3Vnyn1wJcdal7VnQPbX9EiEkdFaiZybQdniBb+hQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5643,11 +5903,11 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -5655,8 +5915,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-viewport@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Bfoilf9eJV/C7tR8XHDxz3h8JlZ+iggoESp2Tc0bW9tlRvz+PsCqeyHhF/IgHY+gLnPal2PkK/PIM+ruO45HXA==} + /@storybook/addon-viewport@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jDRG6ZMZ4ATOXiJQcXTpolTtIi8oAhbk6mbJyj65nClXgWqfZxMK9PMfJw5R7zHhAmrKoWNTDc72eayFOIHaNg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5666,13 +5926,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) memoizerific: 1.11.3 prop-types: 15.8.1 react: 18.2.0 @@ -5682,15 +5942,15 @@ packages: - '@types/react-dom' dev: true - /@storybook/addons@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-obeYFtICbJRqE41t5Fk0wxCPp4BMKxPVyZ8GxNpKD0sRsZfD+/5k2oSwMzdl8pWkm43zzz0aqqhrP5UJzAi66Q==} + /@storybook/addons@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6XvXE3sRl78MceRDAnfPd6N6j9ltMCuTITjjqU2GU8iyAexJ4bYodfKcmUmAQmixuc+6UPbWmlrQKNmBDlp3rw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/types': 7.4.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5721,8 +5981,8 @@ packages: util-deprecate: 1.0.2 dev: false - /@storybook/api@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-L6CT3YCuUov9VHZUSA0euNuPB1Kczd2qVDgBzw8CFjQLei06ELoGCWFPS1X1HtY7d9BC+UjhU16uA4pjt833yw==} + /@storybook/api@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jgOWTHskTi+Ke46oTNTs7HYt8qZq4QMgqy6t8Q09FYR/FvYZ9OOV6M6NH0aTD6Yg+7l98h5uvfso5MHIP6aUoA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5732,29 +5992,29 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.4.3 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/blocks@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YQznNjJm+l32fCfPxrZso9+MbcyG0pWZSpx3RKI1+pxDMsAs4mbXsIw4//jKfjoDP/6/Cz/FJcSx8LT7i4BJ2w==} + /@storybook/blocks@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uyZVx3er1qOPFpKJtsbozBwt1Os3zqiq+2se7xDBK6ERr07zaRHLgRci7+kI8T5mdlCxYiGV+kzx5Vx5/7XaXg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/csf': 0.1.1 - '@storybook/docs-tools': 7.4.0 + '@storybook/docs-tools': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.4.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.4.3 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 '@types/lodash': 4.14.198 color-convert: 2.0.1 dequal: 2.0.3 @@ -5776,13 +6036,13 @@ packages: - supports-color dev: true - /@storybook/builder-manager@7.4.0: - resolution: {integrity: sha512-4fuxVzBIBbZh2aVBizSOU5EJ8b74IhR6x2TAZjifZZf5Gdxgfgio8sAyrrd/C78vrFOFhFEgmQhMqZRuCLHxvQ==} + /@storybook/builder-manager@7.4.3: + resolution: {integrity: sha512-6jzxZ2J1jFaZXn7ZucEgV6XyUe+FJ9uuoMRZcZefoCKeXK/BOPCefijYWP3DPgqqVh3/JLUglIpz0MH9k8cBaw==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.4.0 - '@storybook/manager': 7.4.0 - '@storybook/node-logger': 7.4.0 + '@storybook/core-common': 7.4.3 + '@storybook/manager': 7.4.3 + '@storybook/node-logger': 7.4.3 '@types/ejs': 3.1.2 '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) @@ -5800,8 +6060,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.4.0(typescript@5.2.2)(vite@4.4.9): - resolution: {integrity: sha512-2hE+Q5zoSFQvmiPKsRaZWUX5v6vRaSp0+kgZo3EOg0DvAACiC/Cd+sdnv7wxigvSnVRMbWvBVguPyePRjke8KA==} + /@storybook/builder-vite@7.4.3(typescript@5.2.2)(vite@4.4.9): + resolution: {integrity: sha512-zCxIsJ0KZ+tiz8KzlAT54jGTGEbscqFQfiHK/Du+EYWG2ulX1+goMxw5k9+ndiK/GgjJGSdVoFvcNQH3MPOM6A==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -5815,15 +6075,15 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/core-common': 7.4.0 - '@storybook/csf-plugin': 7.4.0 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/core-common': 7.4.3 + '@storybook/csf-plugin': 7.4.3 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.4.0 - '@storybook/preview': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/node-logger': 7.4.3 + '@storybook/preview': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/types': 7.4.3 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -5833,9 +6093,9 @@ packages: magic-string: 0.30.3 remark-external-links: 8.0.0 remark-slug: 6.1.0 - rollup: 3.29.1 + rollup: 3.29.2 typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - encoding - supports-color @@ -5849,32 +6109,33 @@ packages: util-deprecate: 1.0.2 dev: false - /@storybook/channels@7.4.0: - resolution: {integrity: sha512-/1CU0s3npFumzVHLGeubSyPs21O3jNqtSppOjSB9iDTyV2GtQrjh5ntVwebfKpCkUSitx3x7TkCb9dylpEZ8+w==} + /@storybook/channels@7.4.3: + resolution: {integrity: sha512-lIoRX3EV0wKPX8ojIrJUtsOv4+Gv8r9pfJpam/NdyYd+rs0AjDK13ieINRfBMnJkfjsWa3vmZtGMBEVvDKwTMw==} dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 - /@storybook/cli@7.4.0: - resolution: {integrity: sha512-yn27cn3LzhTqpEVX6CzUz13KTJ3jPLA2eM4bO1t7SYUqpDlzw3lET9DIcYIaUAIiL+0r2Js3jW2BsyN/5KmO5w==} + /@storybook/cli@7.4.3: + resolution: {integrity: sha512-/lGtXbzNropsCF4srEGxiHzCU7b2wlV13LrSj3H3zOnHEAJlFcNpyNzO+4jKHfNTjjqEtcRGJ1OxrSYuGZTVjg==} hasBin: true dependencies: - '@babel/core': 7.22.17 - '@babel/preset-env': 7.22.15(@babel/core@7.22.17) - '@babel/types': 7.22.17 + '@babel/core': 7.22.20 + '@babel/preset-env': 7.22.20(@babel/core@7.22.20) + '@babel/types': 7.22.19 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.4.0 - '@storybook/core-common': 7.4.0 - '@storybook/core-server': 7.4.0 - '@storybook/csf-tools': 7.4.0 - '@storybook/node-logger': 7.4.0 - '@storybook/telemetry': 7.4.0 - '@storybook/types': 7.4.0 - '@types/semver': 7.5.1 + '@storybook/codemod': 7.4.3 + '@storybook/core-common': 7.4.3 + '@storybook/core-events': 7.4.3 + '@storybook/core-server': 7.4.3 + '@storybook/csf-tools': 7.4.3 + '@storybook/node-logger': 7.4.3 + '@storybook/telemetry': 7.4.3 + '@storybook/types': 7.4.3 + '@types/semver': 7.5.2 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 @@ -5890,7 +6151,7 @@ packages: get-port: 5.1.1 giget: 1.1.2 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.15) + jscodeshift: 0.14.0(@babel/preset-env@7.22.20) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 @@ -5917,25 +6178,25 @@ packages: global: 4.4.0 dev: false - /@storybook/client-logger@7.4.0: - resolution: {integrity: sha512-4pBnf7+df1wXEVcF1civqxbrtccGGHQkfWQkJo49s53RXvF7SRTcif6XTx0V3cQV0v7I1C5mmLm0LNlmjPRP1Q==} + /@storybook/client-logger@7.4.3: + resolution: {integrity: sha512-Nhngo9X4HjN00aRhgIVGWbwkWPe0Fz8PySuxnd8nAxSsz7KpdLFyYo2TbZZ3TX51FG5Fxcb0G5OHuunItP7EWQ==} dependencies: '@storybook/global': 5.0.0 - /@storybook/codemod@7.4.0: - resolution: {integrity: sha512-XqNhv5bec+L7TJ5tXdsMalmJazwaFMVVxoNlnb0f9zKhovAEF2F6hl6+Pnd2avRomH9+1q7EM+GwrTCAvzAfzg==} + /@storybook/codemod@7.4.3: + resolution: {integrity: sha512-UwnsyVeUa+wLIeE/zO0slV3mwsPgS3DstZAWbjWUfFlJKZjgg1++Zkv0GmxkEyirsnf/g4r6Aq+KhIdIHmdzag==} dependencies: - '@babel/core': 7.22.17 - '@babel/preset-env': 7.22.15(@babel/core@7.22.17) - '@babel/types': 7.22.17 + '@babel/core': 7.22.20 + '@babel/preset-env': 7.22.20(@babel/core@7.22.20) + '@babel/types': 7.22.19 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.4.0 - '@storybook/node-logger': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/csf-tools': 7.4.3 + '@storybook/node-logger': 7.4.3 + '@storybook/types': 7.4.3 '@types/cross-spawn': 6.0.3 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.15) + jscodeshift: 0.14.0(@babel/preset-env@7.22.20) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 @@ -5961,19 +6222,19 @@ packages: util-deprecate: 1.0.2 dev: false - /@storybook/components@7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GGnQrI4NXwri/PqNjhO1vNv4tC7RBjY87ce9WHBq1ueat3kBakdqV97NzScoldXarkkKK6grBqmhw9jE5PfzhQ==} + /@storybook/components@7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qwRW8wGUuM+H6oKUXXoIDrZECXh/lzowrWXFAzZiocovYEhPtZfl/yvJLWHjOwtka3n7lA7J7EtcjWe8/tueJQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.4.0 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.4.3 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5984,30 +6245,31 @@ packages: - '@types/react-dom' dev: true - /@storybook/core-client@7.4.0: - resolution: {integrity: sha512-AhysJS2HnydB8Jc+BMVzK5VLHa1liJjxroNsd+ZTgGUhD7R8wvozrswQgY4MLFtcaLwN/wDWlK2YavSBqmc94Q==} + /@storybook/core-client@7.4.3: + resolution: {integrity: sha512-YRt07TxC+HUtnyvbpJbY8d2+2QfFExBL7zRbms9tIRorddWfPBq+lA2RS9zcjUJJJtNSz1+ST70FuGr1N3AXGg==} dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/preview-api': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/preview-api': 7.4.3 dev: true - /@storybook/core-common@7.4.0: - resolution: {integrity: sha512-QKrBL46ZFdfTjlZE3f7b59Q5+frOHWIJ64sC9BZ2PHkZkGjFeYRDdJJ6EHLYBb+nToynl33dYN1GQz+hQn2vww==} + /@storybook/core-common@7.4.3: + resolution: {integrity: sha512-jwIBUnWitZzw0VfKC77yN8DvTyePLVnAjbA2lPMbMIdO9ZY2lfD4AQ4QpuWsxJyAllFC4slOFDNgCDHx2AlYWw==} dependencies: - '@storybook/node-logger': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/core-events': 7.4.3 + '@storybook/node-logger': 7.4.3 + '@storybook/types': 7.4.3 '@types/find-cache-dir': 3.2.1 - '@types/node': 16.18.50 - '@types/node-fetch': 2.6.4 + '@types/node': 16.18.53 + '@types/node-fetch': 2.6.5 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 esbuild: 0.18.20 - esbuild-register: 3.4.2(esbuild@0.18.20) + esbuild-register: 3.5.0(esbuild@0.18.20) file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 fs-extra: 11.1.1 - glob: 10.3.4 + glob: 10.3.5 handlebars: 4.7.8 lazy-universal-dotenv: 4.0.0 node-fetch: 2.7.0 @@ -6027,33 +6289,33 @@ packages: core-js: 3.32.2 dev: false - /@storybook/core-events@7.4.0: - resolution: {integrity: sha512-JavEo4dw7TQdF5pSKjk4RtqLgsG2R/eWRI8vZ3ANKa0ploGAnQR/eMTfSxf6TUH3ElBWLJhi+lvUCkKXPQD+dw==} + /@storybook/core-events@7.4.3: + resolution: {integrity: sha512-FRfipCijMnVbGxL1ZjOLM836lyd/TGQcUFeVjTQWW/+pIGHELqDHiYeq68hqoGTKl0G0np59CJPWYTUZA4Dl9Q==} dependencies: ts-dedent: 2.2.0 - /@storybook/core-server@7.4.0: - resolution: {integrity: sha512-AcbfXatHVx1by4R2CiPIMgjQlOL3sUbVarkhmgUcL0AWT0zC0SCQWUZdo22en+jZhAraazgXyLGNCVP7A+6Tqg==} + /@storybook/core-server@7.4.3: + resolution: {integrity: sha512-yl9HaVwk/xJV9zq76n/oR1cE39wAFmNmKVPOJAtr3+c7wS0tnBkw7T+GqZ2Seyv+xkcZUWS8KRH74HqwPwG0Bw==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.4.0 - '@storybook/channels': 7.4.0 - '@storybook/core-common': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/builder-manager': 7.4.3 + '@storybook/channels': 7.4.3 + '@storybook/core-common': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.4.0 + '@storybook/csf-tools': 7.4.3 '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.4.0 - '@storybook/node-logger': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/telemetry': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/manager': 7.4.3 + '@storybook/node-logger': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/telemetry': 7.4.3 + '@storybook/types': 7.4.3 '@types/detect-port': 1.3.3 - '@types/node': 16.18.50 + '@types/node': 16.18.53 '@types/pretty-hrtime': 1.0.1 - '@types/semver': 7.5.1 + '@types/semver': 7.5.2 better-opn: 3.0.2 chalk: 4.1.2 cli-table3: 0.6.3 @@ -6076,7 +6338,7 @@ packages: util: 0.12.5 util-deprecate: 1.0.2 watchpack: 2.4.0 - ws: 8.14.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) + ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - encoding @@ -6084,24 +6346,24 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.4.0: - resolution: {integrity: sha512-X1L3l/dpz2UYjCEQlFLkW7w1A13pmzDZpJ0lotkV79PALlakMXBeoX3I2E0VMjJATV8wC9RSj56COBAs6HsPeg==} + /@storybook/csf-plugin@7.4.3: + resolution: {integrity: sha512-xQCimGsrGD1JxvyFc0LrH10WZWb181r0beF19aGIAadczs/JWhT+nxF8OhfP1LK4wHj9jH+F4nIXEMpm9yI9Qg==} dependencies: - '@storybook/csf-tools': 7.4.0 - unplugin: 1.4.0 + '@storybook/csf-tools': 7.4.3 + unplugin: 1.5.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools@7.4.0: - resolution: {integrity: sha512-bKyOmWPyvT50Neq2wCRr2PmVGLVVm6pOw8WL5t5jueD8sRRzo9QdfhEkqmuSyqdsBdt3SiJKL5oA6dqY5Vl9ww==} + /@storybook/csf-tools@7.4.3: + resolution: {integrity: sha512-nkVakGx2kzou91lGcxnyFNiSEdnpx1a53lQTl/DLm0QpDbqQuu3ZbZWXZCpXV97t/6YPeCCnGLXodnI7PZyZBA==} dependencies: '@babel/generator': 7.22.15 '@babel/parser': 7.22.16 - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 '@storybook/csf': 0.1.1 - '@storybook/types': 7.4.0 + '@storybook/types': 7.4.3 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 @@ -6124,12 +6386,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.4.0: - resolution: {integrity: sha512-DzXmt4JorAOePoS+sjQznf8jLPI9D5mdB1eSXjfvmGBQyyehKTZv5+TXuxYvT3iPN4rW4OPrIrQCSIrbULFdwA==} + /@storybook/docs-tools@7.4.3: + resolution: {integrity: sha512-T9oU10vIY3mC6Up+9rjN5LfBydhhIFhKzHPtUT9PfN1iEa0lO2TkT4m+vf2kcokPppUZNVbqiGjy9t/WYnpeZg==} dependencies: - '@storybook/core-common': 7.4.0 - '@storybook/preview-api': 7.4.0 - '@storybook/types': 7.4.0 + '@storybook/core-common': 7.4.3 + '@storybook/preview-api': 7.4.3 + '@storybook/types': 7.4.3 '@types/doctrine': 0.0.3 doctrine: 3.0.0 lodash: 4.17.21 @@ -6141,30 +6403,30 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/instrumenter@7.4.0: - resolution: {integrity: sha512-jZKxLK0lGKxY8LEul6GP7s+PDlNuXT4JU6MnPY9+SVSo23lP0pAOxo/ojV8WTLf48tcoyL3ztSfbYhxnaJvBfw==} + /@storybook/instrumenter@7.4.3: + resolution: {integrity: sha512-XVctoUOFthTCea2+BKFKeUbhWrRY+1I8THgsZx67X3MQDt9bafwQdFR9jTGBeC31oNi1b7nmTuaox0lneNlghA==} dependencies: - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.4.0 + '@storybook/preview-api': 7.4.3 dev: true - /@storybook/manager-api@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-sBfkkt0eZGTozeKrbzMtWLEOQrgqdk24OUJlkc2IDaucR1CBNjoCMjNeYg7cLDw0rXE8W3W3AdWtJnfsUbLMAQ==} + /@storybook/manager-api@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-o5oiL2cJKlY+HNBCdUo5QKT8yXTyYYvBKibSS3YfDKcjeR9RXP+RhdF5lLLh6TzPwfdtLrXQoVI4A/61v2kurQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/router': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/router': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -6175,31 +6437,31 @@ packages: telejson: 7.2.0 ts-dedent: 2.2.0 - /@storybook/manager@7.4.0: - resolution: {integrity: sha512-uOSdPBEBKg8WORUZ5HKHb4KnKcTyA5j5Q8MWy/NBaRd22JR3fQkZiKuHer9WJIOQTU+fb6KDmzhZbCTKg5Euog==} + /@storybook/manager@7.4.3: + resolution: {integrity: sha512-7U92tYwjt0DIKX7vCKNSZefuEavdnJYa5/zSjdlo0LtfBmGRBak1eq/sVLGfzrZ+wKIlCXgNh3f8OLy8RMnOOw==} dev: true /@storybook/mdx2-csf@1.1.0: resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} dev: true - /@storybook/node-logger@7.4.0: - resolution: {integrity: sha512-tWSWkYyAvp6SxjIBaTklg29avzv/3Lv4c0dOG2o5tz79PyZkq9v6sQtwLLoI8EJA9Mo8Z08vaJp8NZyDQ9RCuA==} + /@storybook/node-logger@7.4.3: + resolution: {integrity: sha512-pL13PPMUttflTWKVeDIKxPIJtBRl50Fzck12/7uiNROtBIrSV9DZSgOjInAazjo4tl+7fDj9lgkGeMEz00E8aQ==} dev: true - /@storybook/postinstall@7.4.0: - resolution: {integrity: sha512-ZVBZggqkuj7ysfuHSCd/J7ovWV06zY9uWf+VU+Zw7ZeojDT8QHFrCurPsN7D9679j9vRU1/kSzqvAiStALS33g==} + /@storybook/postinstall@7.4.3: + resolution: {integrity: sha512-6NMaAvL4a26jR50UPz+Q6VATY3lHZWw1ru/weFgiV0rat632RFdiFyrMMrjbUWu9HDJE4fbCzrIZU0jGVs1wlQ==} dev: true - /@storybook/preview-api@7.4.0: - resolution: {integrity: sha512-ndXO0Nx+eE7ktVE4EqHpQZ0guX7yYBdruDdJ7B739C0+OoPWsJN7jAzUqq0NXaBcYrdaU5gTy+KnWJUt8R+OyA==} + /@storybook/preview-api@7.4.3: + resolution: {integrity: sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==} dependencies: - '@storybook/channels': 7.4.0 - '@storybook/client-logger': 7.4.0 - '@storybook/core-events': 7.4.0 + '@storybook/channels': 7.4.3 + '@storybook/client-logger': 7.4.3 + '@storybook/core-events': 7.4.3 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/types': 7.4.0 + '@storybook/types': 7.4.3 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -6209,12 +6471,12 @@ packages: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - /@storybook/preview@7.4.0: - resolution: {integrity: sha512-R4LMTvUrVAbcUetRbAXpY3frkwD0eysqHrByiR73040+ngzDwtZOBAy0JfO3jw3WrWv2dn3kWlao5aEwVc9Exw==} + /@storybook/preview@7.4.3: + resolution: {integrity: sha512-dItyGcql/rD6CWTKGUm58MguWC7L4KjlfNJmxxaHXnHRbaEjXPaRi9ztfmimIpAaBdBmreAZrZJYhLvOGG3CfA==} dev: true - /@storybook/react-dom-shim@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TLpb8a2hnWJoRLqoXpMADh82BFfRZll6JI2Waf1FjnvJ4SF9eS0zBbxybrjW3lFAHWy2XJi+rwcK8FiPj0iBoQ==} + /@storybook/react-dom-shim@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-d8kkZU4kqmNluuOx65l5H0L9lRn8Ji5rVxu+4MUCWrn82dxRLvVcFG0sfGUzOTNfX1/yajL2MxVJ2hx9fzLutQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6223,8 +6485,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@7.4.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.9): - resolution: {integrity: sha512-ps1FUyD2j0plCSprBI8z6RvavMvcDarIMFNofV48vSjVFzenRmgJfSbYywTnw7NusplJyZlYqldHreDzwVX1dQ==} + /@storybook/react-vite@7.4.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.4.9): + resolution: {integrity: sha512-olDbrdRVmpgb+i8FKP/Fp8SImgpVzDP/nf7u0j7H+pOUCjecziV0cW1COE35i5x2yQleNNps7bN8EugqBlD7Dw==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6233,15 +6495,15 @@ packages: dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@4.4.9) '@rollup/pluginutils': 5.0.4 - '@storybook/builder-vite': 7.4.0(typescript@5.2.2)(vite@4.4.9) - '@storybook/react': 7.4.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@storybook/builder-vite': 7.4.3(typescript@5.2.2)(vite@4.4.9) + '@storybook/react': 7.4.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@vitejs/plugin-react': 3.1.0(vite@4.4.9) ast-types: 0.14.2 magic-string: 0.30.3 react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -6251,8 +6513,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.4.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-QWsFw/twsNkcWI6brW06sugQQ5dV+fJm4IrEeI28cA4cBHK9G9HKOwCHoXDUWikzZx48XYMpNfs/WyIkuGmEqg==} + /@storybook/react@7.4.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-koF1GLPBY5rm8t+6i70Iw6Ep/6T2C+XAlnP1dO/ZJAv8mmeQmOw+Kwh6nNPG8bthm0l1nImgqRw2ZwCD2AFoSA==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6262,16 +6524,16 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/core-client': 7.4.0 - '@storybook/docs-tools': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/core-client': 7.4.3 + '@storybook/docs-tools': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.4.0 - '@storybook/react-dom-shim': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.0 + '@storybook/preview-api': 7.4.3 + '@storybook/react-dom-shim': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.4.3 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 16.18.50 + '@types/node': 16.18.53 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -6306,13 +6568,13 @@ packages: regenerator-runtime: 0.13.11 dev: false - /@storybook/router@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IATdtFL5C3ryjNQSwaQfrmiOZiVFoVNMevMoBGDC++g0laSW40TGiNK6fUjUDBKuOgbuDt4Svfbl29k21GefEg==} + /@storybook/router@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1ab1VTYzzOsBGKeT8xm1kLriIsIsiB/l3t7DdARJxLmPbddKyyXE018w17gfrARCWQ8SM99Ko6+pLmlZ2sm8ug==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/client-logger': 7.4.0 + '@storybook/client-logger': 7.4.3 memoizerific: 1.11.3 qs: 6.11.2 react: 18.2.0 @@ -6327,12 +6589,12 @@ packages: find-up: 4.1.0 dev: false - /@storybook/telemetry@7.4.0: - resolution: {integrity: sha512-oxCB3kIbpiDWuXEtQhk/j6t1/h0KKWAuvxmcwGPxwhEvj/uNtoM+f1qhoDID9waxNo4AccU9Px+1ZJQ+2ejcDg==} + /@storybook/telemetry@7.4.3: + resolution: {integrity: sha512-gA7QfQSdDocNKP0KfrmIhD8ZgW5G4zZD/NL0OsATlkL3H/DehH3Ugjfffh7Ao2JZRXogHp8p9EQCVfPW7iKgBQ==} dependencies: - '@storybook/client-logger': 7.4.0 - '@storybook/core-common': 7.4.0 - '@storybook/csf-tools': 7.4.0 + '@storybook/client-logger': 7.4.3 + '@storybook/core-common': 7.4.3 + '@storybook/csf-tools': 7.4.3 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -6346,8 +6608,8 @@ packages: /@storybook/testing-library@0.2.0: resolution: {integrity: sha512-Ff6jNnrsosmDshgCf0Eb5Cz7IA34p/1Ps5N3Kp3598kfXpBSccSkQQvVFUXC3kIHw/isIXWPqntZuKqnWUz7Gw==} dependencies: - '@testing-library/dom': 9.3.1 - '@testing-library/user-event': 14.4.3(@testing-library/dom@9.3.1) + '@testing-library/dom': 9.3.3 + '@testing-library/user-event': 14.5.1(@testing-library/dom@9.3.3) ts-dedent: 2.2.0 dev: true @@ -6365,110 +6627,109 @@ packages: regenerator-runtime: 0.13.11 dev: false - /@storybook/theming@7.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eLjEf6G3cqlegfutF/iUrec9LrUjKDj7K4ZhGdACWrf7bQcODs99EK62e9/d8GNKr4b+QMSEuM6XNGaqdPnuzQ==} + /@storybook/theming@7.4.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-u5wLwWmhGcTmkcs6f2wDGv+w8wzwbNJat0WaIIbwdJfX7arH6nO5HkBhNxvl6FUFxX0tovp/e9ULzxVPc356jw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.4.0 + '@storybook/client-logger': 7.4.3 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/types@7.4.0: - resolution: {integrity: sha512-XyzYkmeklywxvElPrIWLczi/PWtEdgTL6ToT3++FVxptsC2LZKS3Ue+sBcQ9xRZhkRemw4HQHwed5EW3dO8yUg==} + /@storybook/types@7.4.3: + resolution: {integrity: sha512-DrHC1hIiw9TqDILLokDnvbUPNxGz5iJaYFEv30uvYE0s9MvgEUPblCChEUjaHOps7zQTznMPf8ULfoXlgqxk2A==} dependencies: - '@storybook/channels': 7.4.0 - '@types/babel__core': 7.20.1 + '@storybook/channels': 7.4.3 + '@types/babel__core': 7.20.2 '@types/express': 4.17.17 - '@types/react': 16.14.46 file-system-cache: 2.3.0 - /@swc/core-darwin-arm64@1.3.83: - resolution: {integrity: sha512-Plz2IKeveVLivbXTSCC3OZjD2MojyKYllhPrn9RotkDIZEFRYJZtW5/Ik1tJW/2rzu5HVKuGYrDKdScVVTbOxQ==} + /@swc/core-darwin-arm64@1.3.86: + resolution: {integrity: sha512-hMvSDms0sJJHNtRa3Vhmr9StWN1vmikbf5VE0IZUYGnF1/JZTkXU1h6CdNUY4Hr6i7uCZjH6BEhxFHX1JtKV4w==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.3.83: - resolution: {integrity: sha512-FBGVg5IPF/8jQ6FbK60iDUHjv0H5+LwfpJHKH6wZnRaYWFtm7+pzYgreLu3NTsm3m7/1a7t0+7KURwBGUaJCCw==} + /@swc/core-darwin-x64@1.3.86: + resolution: {integrity: sha512-Jro6HVH4uSOBM7tTDaQNKLNc8BJV7n+SO+Ft2HAZINyeKJS/8MfEYneG7Vmqg18gv00c6dz9AOCcyz+BR7BFkQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.83: - resolution: {integrity: sha512-EZcsuRYhGkzofXtzwDjuuBC/suiX9s7zeg2YYXOVjWwyebb6BUhB1yad3mcykFQ20rTLO9JUyIaiaMYDHGobqw==} + /@swc/core-linux-arm-gnueabihf@1.3.86: + resolution: {integrity: sha512-wYB9m0pzXJVSzedXSl4JwS3gKtvcPinpe9MbkddezpqL7OjyDP6pHHW9qIucsfgCrtMtbPC2nqulXLPtAAyIjw==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.3.83: - resolution: {integrity: sha512-khI41szLHrCD/cFOcN4p2SYvZgHjhhHlcMHz5BksRrDyteSJKu0qtWRZITVom0N/9jWoAleoFhMnFTUs0H8IWA==} + /@swc/core-linux-arm64-gnu@1.3.86: + resolution: {integrity: sha512-fR44IyK5cdCaO8cC++IEH0Jn03tWnunJnjzA99LxlE5TRInSIOvFm+g5OSUQZDAvEXmQ38sd31LO2HOoDS1Edw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.3.83: - resolution: {integrity: sha512-zgT7yNOdbjHcGAwvys79mbfNLK65KBlPJWzeig+Yk7I8TVzmaQge7B6ZS/gwF9/p+8TiLYo/tZ5aF2lqlgdSVw==} + /@swc/core-linux-arm64-musl@1.3.86: + resolution: {integrity: sha512-EUPfdbK4dUk/nkX3Vmv/47XH+DqHOa9JI0CTthvJ8/ZXei1MKDUsUc+tI1zMQX2uCuSkSWsEIEpCmA0tMwFhtw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.3.83: - resolution: {integrity: sha512-x+mH0Y3NC/G0YNlFmGi3vGD4VOm7IPDhh+tGrx6WtJp0BsShAbOpxtfU885rp1QweZe4qYoEmGqiEjE2WrPIdA==} + /@swc/core-linux-x64-gnu@1.3.86: + resolution: {integrity: sha512-snVZZWv8XgNVaKrTxtO3rUN+BbbB6I8Fqwe8zM/DWGJ096J13r89doQ48x5ZyO+bW4D48eZIWP5pdfSW7oBE3w==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.3.83: - resolution: {integrity: sha512-s5AYhAOmetUwUZwS5g9qb92IYgNHHBGiY2mTLImtEgpAeBwe0LPDj6WrujxCBuZnaS55mKRLLOuiMZE5TpjBNA==} + /@swc/core-linux-x64-musl@1.3.86: + resolution: {integrity: sha512-PnnksUJymEJkdnbV2orOSOSB441UqsxYbJge9zbr5UTRXUfWO3eFRV0iTBegjTlOQGbW6yN+YRSDkenTbmCI6g==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.3.83: - resolution: {integrity: sha512-yw2rd/KVOGs95lRRB+killLWNaO1dy4uVa8Q3/4wb5txlLru07W1m041fZLzwOg/1Sh0TMjJgGxj0XHGR3ZXhQ==} + /@swc/core-win32-arm64-msvc@1.3.86: + resolution: {integrity: sha512-XlGEGyHwLndm08VvgeAPGj40L+Hx575MQC+2fsyB1uSNUN+uf7fvke+wc7k50a92CaQe/8foLyIR5faayozEJA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.3.83: - resolution: {integrity: sha512-POW+rgZ6KWqBpwPGIRd2/3pcf46P+UrKBm4HLt5IwbHvekJ4avIM8ixJa9kK0muJNVJcDpaZgxaU1ELxtJ1j8w==} + /@swc/core-win32-ia32-msvc@1.3.86: + resolution: {integrity: sha512-U1BhZa1x9yn+wZGTQmt1cYR79a0FzW/wL6Jas1Pn0bykKLxdRU4mCeZt2P+T3buLm8jr8LpPWiCrbvr658PzwA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.3.83: - resolution: {integrity: sha512-CiWQtkFnZElXQUalaHp+Wacw0Jd+24ncRYhqaJ9YKnEQP1H82CxIIuQqLM8IFaLpn5dpY6SgzaeubWF46hjcLA==} + /@swc/core-win32-x64-msvc@1.3.86: + resolution: {integrity: sha512-wRoQUajqpE3wITHhZVj/6BPu/QwHriFHLHuJA+9y6PeGtUtTmntL42aBKXIFhfL767dYFtohyNg1uZ9eqbGyGQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.83: - resolution: {integrity: sha512-PccHDgGQlFjpExgJxH91qA3a4aifR+axCFJ4RieCoiI0m5gURE4nBhxzTBY5YU/YKTBmPO8Gc5Q6inE3+NquWg==} + /@swc/core@1.3.86: + resolution: {integrity: sha512-bEXUtm37bcmJ3q+geG7Zy4rJNUzpxalXQUrrqX1ZoGj3HRtzdeVZ0L/um3fG2j16qe61t8TX/OIZ2G6j6dkG/w==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -6477,26 +6738,26 @@ packages: '@swc/helpers': optional: true dependencies: - '@swc/types': 0.1.4 + '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.83 - '@swc/core-darwin-x64': 1.3.83 - '@swc/core-linux-arm-gnueabihf': 1.3.83 - '@swc/core-linux-arm64-gnu': 1.3.83 - '@swc/core-linux-arm64-musl': 1.3.83 - '@swc/core-linux-x64-gnu': 1.3.83 - '@swc/core-linux-x64-musl': 1.3.83 - '@swc/core-win32-arm64-msvc': 1.3.83 - '@swc/core-win32-ia32-msvc': 1.3.83 - '@swc/core-win32-x64-msvc': 1.3.83 + '@swc/core-darwin-arm64': 1.3.86 + '@swc/core-darwin-x64': 1.3.86 + '@swc/core-linux-arm-gnueabihf': 1.3.86 + '@swc/core-linux-arm64-gnu': 1.3.86 + '@swc/core-linux-arm64-musl': 1.3.86 + '@swc/core-linux-x64-gnu': 1.3.86 + '@swc/core-linux-x64-musl': 1.3.86 + '@swc/core-win32-arm64-msvc': 1.3.86 + '@swc/core-win32-ia32-msvc': 1.3.86 + '@swc/core-win32-x64-msvc': 1.3.86 /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.2 - /@swc/types@0.1.4: - resolution: {integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==} + /@swc/types@0.1.5: + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -6531,27 +6792,27 @@ packages: remove-accents: 0.4.2 dev: true - /@tanstack/query-core@4.35.0: - resolution: {integrity: sha512-4GMcKQuLZQi6RFBiBZNsLhl+hQGYScRZ5ZoVq8QAzfqz9M7vcGin/2YdSESwl7WaV+Qzsb5CZOAbMBes4lNTnA==} + /@tanstack/query-core@4.35.3: + resolution: {integrity: sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==} dev: true - /@tanstack/react-query-devtools@4.35.0(@tanstack/react-query@4.35.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tzN0K70idRsqnfLdUcQC3eCrv28kLIAB6/H1zsGdIw7Wmj5VgTxPmpEVc3rHQjKt0LZsvZTLmaLnI6FCI3VUZw==} + /@tanstack/react-query-devtools@4.35.3(@tanstack/react-query@4.35.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UvLT7qPzCuCZ3NfjwsOqDUVN84JvSOuW6ukrjZmSqgjPqVxD6ra/HUp1CEOatQY2TRvKCp8y1lTVu+trXM30fg==} peerDependencies: - '@tanstack/react-query': ^4.35.0 + '@tanstack/react-query': ^4.35.3 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.8.4 - '@tanstack/react-query': 4.35.0(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.35.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) superjson: 1.13.1 use-sync-external-store: 1.2.0(react@18.2.0) dev: true - /@tanstack/react-query@4.35.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LLYDNnM9ewYHgjm2rzhk4KG/puN2rdoqCUD+N9+V7SwlsYwJk5ypX58rpkoZAhFyZ+KmFUJ7Iv2lIEOoUqydIg==} + /@tanstack/react-query@4.35.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6562,29 +6823,29 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.35.0 + '@tanstack/query-core': 4.35.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) dev: true - /@tanstack/react-table@8.9.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZUd+ZydvUP8+XLI+oQ3IcG6Pqq3vw94na3fViD/v0dsIVwgQaWanizeh+si/Pn/8eU0XgbSVU9VpejOJEbp/lg==} + /@tanstack/react-table@8.10.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pD58vH5ahZv1qzAK9Xl87A5dydBnKiDGdyEsd5VK2bG2wGRbfbpBfH915KdUv+8XqabDQgUo8nU8qHBEQv1qvg==} engines: {node: '>=12'} peerDependencies: react: '>=16' react-dom: '>=16' dependencies: - '@tanstack/table-core': 8.9.8 + '@tanstack/table-core': 8.10.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@tanstack/table-core@8.9.8: - resolution: {integrity: sha512-f2Y/BcJy3IBkdDxWEk6WX6zJSmCDBI5iS0icr5DyeSbWsbnfaBtOIaeBjfnTEedt9Kk3xPmfciA6uSNOQ1BEXA==} + /@tanstack/table-core@8.10.1: + resolution: {integrity: sha512-dvO7wz+WjnT+7KI6ZZ+GAe9tljIFResDaV/TfOhfpeTB0ud9pILsavuM22HAXG2NsVaIG2Zax2OaVIsNt0z7Og==} engines: {node: '>=12'} - /@testing-library/dom@9.3.1: - resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} + /@testing-library/dom@9.3.3: + resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.22.13 @@ -6595,9 +6856,8 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.1.3(jest@29.6.4)(vitest@0.34.4): + /@testing-library/jest-dom@6.1.3(jest@29.7.0)(vitest@0.34.4): resolution: {integrity: sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: @@ -6621,7 +6881,7 @@ packages: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 - jest: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) + jest: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) lodash: 4.17.21 redent: 3.0.0 vitest: 0.34.4 @@ -6635,19 +6895,18 @@ packages: react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.22.15 - '@testing-library/dom': 9.3.1 + '@testing-library/dom': 9.3.3 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1): - resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} + /@testing-library/user-event@14.5.1(@testing-library/dom@9.3.3): + resolution: {integrity: sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.1 + '@testing-library/dom': 9.3.3 dev: true /@tootallnate/once@2.0.0: @@ -6673,38 +6932,37 @@ packages: /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} - dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} dependencies: '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 + '@babel/types': 7.22.19 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator@7.6.5: + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__template@7.4.2: + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} dependencies: '@babel/parser': 7.22.16 - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + /@types/babel__traverse@7.20.2: + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} dependencies: - '@babel/types': 7.22.17 + '@babel/types': 7.22.19 - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + /@types/body-parser@1.19.3: + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 20.6.0 + '@types/node': 20.6.3 /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} @@ -6721,7 +6979,7 @@ packages: /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -6729,12 +6987,12 @@ packages: /@types/cors@2.8.14: resolution: {integrity: sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 /@types/cross-spawn@6.0.3: resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true /@types/crypto-js@4.1.2: @@ -6795,7 +7053,7 @@ packages: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 dev: true /@types/estree@0.0.51: @@ -6809,7 +7067,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -6817,7 +7075,7 @@ packages: /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: - '@types/body-parser': 1.19.2 + '@types/body-parser': 1.19.3 '@types/express-serve-static-core': 4.17.36 '@types/qs': 6.9.8 '@types/serve-static': 1.15.2 @@ -6826,38 +7084,38 @@ packages: resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} dev: true - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + /@types/fs-extra@11.0.2: + resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 20.6.0 + '@types/jsonfile': 6.1.2 + '@types/node': 20.6.3 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + /@types/graceful-fs@4.1.7: + resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true - /@types/hast@2.3.5: - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + /@types/hast@2.3.6: + resolution: {integrity: sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==} dependencies: '@types/unist': 2.0.8 dev: false - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + /@types/http-cache-semantics@4.0.2: + resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} dev: false - /@types/http-errors@2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} + /@types/http-errors@2.0.2: + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} @@ -6887,33 +7145,33 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.6.0 - '@types/tough-cookie': 4.0.2 + '@types/node': 20.6.3 + '@types/tough-cookie': 4.0.3 parse5: 7.1.2 dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - /@types/jsonfile@6.1.1: - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + /@types/jsonfile@6.1.2: + resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: false - /@types/kill-port@2.0.0: - resolution: {integrity: sha512-AegaqABFauES4++49NeNX7TyZJ7t48t10+qJn4QGVGQqDogEk89M0iI4W0HXS+TEUk/hYAtEsgJ+6nyuSyYxlw==} + /@types/kill-port@2.0.1: + resolution: {integrity: sha512-ZqZiEkyvkr1PIFBl52pVf9uUmBtuX5V0zK1/kbwd9KaLfbthZCdbj8FDc18ImADZ50wyMQGrd3Xgy6fprnLv6g==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 shell-exec: 1.1.2 dev: true @@ -6923,6 +7181,24 @@ packages: '@types/lodash': 4.14.198 dev: true + /@types/lodash.get@4.4.7: + resolution: {integrity: sha512-af34Mj+KdDeuzsJBxc/XeTtOx0SZHZNLd+hdrn+PcKGQs0EG2TJTzQAOTCZTgDJCArahlCzLWSy8c2w59JRz7Q==} + dependencies: + '@types/lodash': 4.14.198 + dev: true + + /@types/lodash.omit@4.5.7: + resolution: {integrity: sha512-6q6cNg0tQ6oTWjSM+BcYMBhan54P/gLqBldG4AuXd3nKr0oeVekWNS4VrNEu3BhCSDXtGapi7zjhnna0s03KpA==} + dependencies: + '@types/lodash': 4.14.198 + dev: true + + /@types/lodash.set@4.3.7: + resolution: {integrity: sha512-bS5Wkg/nrT82YUfkNYPSccFrNZRL+irl7Yt4iM6OTSQ0VZJED2oUIVm15NkNtUAQ8SRhCe+axqERUV6MJgkeEg==} + dependencies: + '@types/lodash': 4.14.198 + dev: true + /@types/lodash.uniq@4.5.7: resolution: {integrity: sha512-qg7DeAbdZMi6DGvCxThlJycykLLhETrJrQZ6F2KaZ+o0sNK1qRHz46lgNA+nHHjwrmA2a91DyiZTp3ey3m1rEw==} dependencies: @@ -6971,22 +7247,22 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node-fetch@2.6.4: - resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} + /@types/node-fetch@2.6.5: + resolution: {integrity: sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==} dependencies: - '@types/node': 20.6.0 - form-data: 3.0.1 + '@types/node': 20.6.3 + form-data: 4.0.0 dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node@16.18.50: - resolution: {integrity: sha512-OiDU5xRgYTJ203v4cprTs0RwOCd5c5Zjv+K5P8KSqfiCsB1W3LcamTUMcnQarpq5kOYbhHfSOgIEJvdPyb5xyw==} + /@types/node@16.18.53: + resolution: {integrity: sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==} - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + /@types/node@20.6.3: + resolution: {integrity: sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -6999,8 +7275,15 @@ packages: resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/prompts@2.4.4: + resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} + dependencies: + '@types/node': 20.6.3 + kleur: 3.0.3 + dev: false + + /@types/prop-types@15.7.6: + resolution: {integrity: sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==} /@types/qs@6.9.8: resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} @@ -7011,31 +7294,24 @@ packages: /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 /@types/react-syntax-highlighter@15.5.7: resolution: {integrity: sha512-bo5fEO5toQeyCp0zVHBeggclqf5SQ/Z5blfFmjwO5dkMVGPgmiwZsJh9nu/Bo5L7IHTuGWrja6LxJVE2uB5ZrQ==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 dev: true /@types/react-transition-group@4.4.6: resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 dev: false - /@types/react@16.14.46: - resolution: {integrity: sha512-Am4pyXMrr6cWWw/TN3oqHtEZl0j+G6Up/O8m65+xF/3ZaUgkv1GAtTPWw4yNRmH0HJXmur6xKCKoMo3rBGynuw==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - - /@types/react@18.2.21: - resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + /@types/react@18.2.22: + resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} dependencies: - '@types/prop-types': 15.7.5 + '@types/prop-types': 15.7.6 '@types/scheduler': 0.16.3 csstype: 3.1.2 @@ -7046,7 +7322,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: false /@types/scheduler@0.16.3: @@ -7056,21 +7332,21 @@ packages: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: false - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + /@types/semver@7.5.2: + resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} /@types/send@0.17.1: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.6.0 + '@types/node': 20.6.3 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: - '@types/http-errors': 2.0.1 + '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.3 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -7084,8 +7360,8 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/tough-cookie@4.0.2: - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + /@types/tough-cookie@4.0.3: + resolution: {integrity: sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==} dev: true /@types/unist@2.0.8: @@ -7101,7 +7377,7 @@ packages: /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true /@types/yargs-parser@21.0.0: @@ -7124,12 +7400,12 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true optional: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -7139,12 +7415,12 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/type-utils': 6.7.2(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@8.1.1) eslint: 8.49.0 graphemer: 1.4.0 @@ -7157,8 +7433,8 @@ packages: - supports-color dev: false - /@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + /@typescript-eslint/parser@6.7.2(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7167,25 +7443,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@8.1.1) eslint: 8.49.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + /@typescript-eslint/scope-manager@6.7.2: + resolution: {integrity: sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/visitor-keys': 6.7.2 - /@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.7.2(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7194,8 +7470,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.49.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -7204,12 +7480,12 @@ packages: - supports-color dev: false - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + /@typescript-eslint/types@6.7.2: + resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} engines: {node: ^16.0.0 || >=18.0.0} - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + /@typescript-eslint/typescript-estree@6.7.2(typescript@5.2.2): + resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -7217,8 +7493,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 @@ -7228,18 +7504,18 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.7.2(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.2 + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: @@ -7247,11 +7523,11 @@ packages: - typescript dev: false - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} + /@typescript-eslint/visitor-keys@6.7.2: + resolution: {integrity: sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/types': 6.7.2 eslint-visitor-keys: 3.4.3 /@vitejs/plugin-react-swc@3.3.2(vite@4.4.9): @@ -7259,8 +7535,8 @@ packages: peerDependencies: vite: ^4 dependencies: - '@swc/core': 1.3.83 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + '@swc/core': 1.3.86 + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -7271,12 +7547,12 @@ packages: peerDependencies: vite: ^4.1.0-beta.0 dependencies: - '@babel/core': 7.22.17 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.20) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - supports-color dev: true @@ -7287,11 +7563,11 @@ packages: peerDependencies: vite: ^4.2.0 dependencies: - '@babel/core': 7.22.17 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.20) react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - supports-color dev: true @@ -7336,7 +7612,7 @@ packages: dependencies: magic-string: 0.30.3 pathe: 1.1.1 - pretty-format: 29.6.3 + pretty-format: 29.7.0 /@vitest/spy@0.34.4: resolution: {integrity: sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==} @@ -7348,7 +7624,7 @@ packages: dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 - pretty-format: 29.6.3 + pretty-format: 29.7.0 /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} @@ -7456,7 +7732,7 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@xstate/react@3.2.2(@types/react@18.2.21)(react@18.2.0)(xstate@4.38.2): + /@xstate/react@3.2.2(@types/react@18.2.22)(react@18.2.0)(xstate@4.38.2): resolution: {integrity: sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ==} peerDependencies: '@xstate/fsm': ^2.0.0 @@ -7469,7 +7745,7 @@ packages: optional: true dependencies: react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.21)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.22)(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) xstate: 4.38.2 transitivePeerDependencies: @@ -7651,9 +7927,16 @@ packages: type-fest: 1.4.0 dev: false - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + /ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + dependencies: + type-fest: 3.13.1 + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} @@ -7723,7 +8006,6 @@ packages: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.2 - dev: true /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -7746,8 +8028,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 @@ -7760,8 +8042,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 @@ -7770,8 +8052,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 /array.prototype.flatmap@1.3.2: @@ -7779,16 +8061,16 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 /array.prototype.tosorted@1.1.2: resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true @@ -7799,8 +8081,8 @@ packages: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -7891,19 +8173,24 @@ packages: engines: {node: '>=8.0.0'} dev: true - /autoprefixer@10.4.15(postcss@8.4.29): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + /auto-bind@5.0.1: + resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /autoprefixer@10.4.16(postcss@8.4.30): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.21.10 - caniuse-lite: 1.0.30001532 + caniuse-lite: 1.0.30001538 fraction.js: 4.3.6 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.29 + postcss: 8.4.30 postcss-value-parser: 4.2.0 dev: true @@ -7927,7 +8214,7 @@ packages: /axios@0.27.2(debug@4.3.4): resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) form-data: 4.0.0 transitivePeerDependencies: - debug @@ -7938,25 +8225,25 @@ packages: dequal: 2.0.3 dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.22.17): + /babel-core@7.0.0-bridge.0(@babel/core@7.22.20): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 dev: true - /babel-jest@29.6.4(@babel/core@7.22.17): - resolution: {integrity: sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==} + /babel-jest@29.7.0(@babel/core@7.22.20): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.17 - '@jest/transform': 29.6.4 - '@types/babel__core': 7.20.1 + '@babel/core': 7.22.20 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.22.17) + babel-preset-jest: 29.6.3(@babel/core@7.22.20) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -7982,9 +8269,9 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.17 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 + '@babel/types': 7.22.19 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 dev: true /babel-plugin-macros@3.1.0: @@ -7993,74 +8280,74 @@ packages: dependencies: '@babel/runtime': 7.22.15 cosmiconfig: 7.1.0 - resolve: 1.22.4 + resolve: 1.22.6 dev: false - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.17): + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.20): resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.17 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.17): + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) core-js-compat: 3.32.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.17): + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.20): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.17) + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) transitivePeerDependencies: - supports-color dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.17): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.20): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.17) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.17) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.17) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.17) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.17) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.22.17): + '@babel/core': 7.22.20 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.22.20): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.17) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) dev: true /bail@2.0.2: @@ -8210,10 +8497,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001532 - electron-to-chromium: 1.4.513 + caniuse-lite: 1.0.30001538 + electron-to-chromium: 1.4.526 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) + update-browserslist-db: 1.0.12(browserslist@4.21.10) /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -8271,6 +8558,16 @@ packages: run-applescript: 5.0.0 dev: false + /bundle-require@4.0.1(esbuild@0.18.20): + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.18.20 + load-tsconfig: 0.2.5 + dev: true + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -8319,7 +8616,7 @@ packages: resolution: {integrity: sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==} engines: {node: '>=14.16'} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.2 get-stream: 6.0.1 http-cache-semantics: 4.1.1 keyv: 4.5.3 @@ -8383,8 +8680,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - /caniuse-lite@1.0.30001532: - resolution: {integrity: sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==} + /caniuse-lite@1.0.30001538: + resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==} /cartesian@1.0.1: resolution: {integrity: sha512-tR3qKRYpRJ6FXEGuoBwpuCYcwydrk1N2rduy7eWg1Msepi3i5fCxheryw4VBlCqjCbk3Vhjh3eg+IGHtl5H74A==} @@ -8543,8 +8840,8 @@ packages: restore-cursor: 4.0.0 dev: false - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} /cli-table3@0.6.3: @@ -8622,13 +8919,13 @@ packages: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} - /cmdk@0.2.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /cmdk@0.2.0(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) command-score: 0.1.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -8641,6 +8938,13 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true + /code-excerpt@4.0.0: + resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + convert-to-spaces: 2.0.1 + dev: false + /collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true @@ -8664,6 +8968,7 @@ packages: /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -8787,6 +9092,11 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /convert-to-spaces@2.0.1: + resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true @@ -8804,7 +9114,7 @@ packages: resolution: {integrity: sha512-VaSrsjQJ8yHnGAGulV9zJxBr7hrKJ/O2mo87evsGIMF7XvJI3AJNguevotx0Gek1MMMBkZvZNWu2JueSNoSKEQ==} dependencies: '@types/cookie': 0.4.1 - '@types/node': 16.18.50 + '@types/node': 16.18.53 cookie: 0.4.2 dev: false @@ -8846,6 +9156,20 @@ packages: object-assign: 4.1.1 vary: 1.1.2 + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.6.3)(cosmiconfig@8.3.6)(typescript@5.2.2): + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + dependencies: + '@types/node': 20.6.3 + cosmiconfig: 8.3.6(typescript@5.2.2) + jiti: 1.20.0 + typescript: 5.2.2 + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -8857,8 +9181,8 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig@8.3.5(typescript@5.2.2): - resolution: {integrity: sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==} + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -8871,6 +9195,24 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.2.2 + + /create-jest@29.7.0(@types/node@20.6.3)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node dev: true /create-require@1.1.1: @@ -8884,6 +9226,17 @@ packages: which: 1.3.1 dev: false + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -8914,12 +9267,12 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.29) - postcss: 8.4.29 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) - postcss-modules-scope: 3.0.0(postcss@8.4.29) - postcss-modules-values: 4.0.0(postcss@8.4.29) + icss-utils: 5.1.0(postcss@8.4.30) + postcss: 8.4.30 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.30) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.30) + postcss-modules-scope: 3.0.0(postcss@8.4.30) + postcss-modules-values: 4.0.0(postcss@8.4.30) postcss-value-parser: 4.2.0 semver: 7.5.4 webpack: 5.88.2(esbuild@0.18.20) @@ -8975,15 +9328,15 @@ packages: stream-transform: 2.1.3 dev: false - /cypress@13.1.0: - resolution: {integrity: sha512-LUKxCYlB973QBFls1Up4FAE9QIYobT+2I8NvvAwMfQS2YwsWbr6yx7y9hmsk97iqbHkKwZW3MRjoK1RToBFVdQ==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + /cypress@12.17.4: + resolution: {integrity: sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==} + engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true requiresBuild: true dependencies: - '@cypress/request': 3.0.1 + '@cypress/request': 2.88.12 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 16.18.50 + '@types/node': 16.18.53 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -8997,7 +9350,7 @@ packages: cli-table3: 0.6.3 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.9 + dayjs: 1.11.10 debug: 4.3.4(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 @@ -9089,8 +9442,8 @@ packages: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: true - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: true /debug@2.6.9: @@ -9195,12 +9548,11 @@ packages: object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.11 - dev: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -9246,6 +9598,14 @@ packages: engines: {node: '>=10'} dev: false + /define-data-property@1.1.0: + resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -9255,10 +9615,11 @@ packages: engines: {node: '>=12'} dev: false - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: + define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 @@ -9302,6 +9663,11 @@ packages: 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'} + dev: false + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -9368,7 +9734,6 @@ packages: /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dev: true /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -9443,8 +9808,8 @@ packages: jake: 10.8.7 dev: true - /electron-to-chromium@1.4.513: - resolution: {integrity: sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==} + /electron-to-chromium@1.4.526: + resolution: {integrity: sha512-tjjTMjmZAx1g6COrintLTa2/jcafYKxKoiEkdQOrVdbLaHh2wCt2nsAF8ZHweezkrP+dl/VG9T5nabcYoo0U5Q==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -9500,7 +9865,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.14 - '@types/node': 20.6.0 + '@types/node': 20.6.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -9556,8 +9921,8 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 @@ -9587,7 +9952,7 @@ packages: object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 string.prototype.trim: 1.2.8 @@ -9612,15 +9977,14 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - /es-iterator-helpers@1.0.14: - resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-set-tostringtag: 2.0.1 function-bind: 1.1.1 get-intrinsic: 1.2.1 @@ -9629,7 +9993,7 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - iterator.prototype: 1.1.1 + iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 dev: true @@ -9666,8 +10030,8 @@ packages: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: true - /esbuild-register@3.4.2(esbuild@0.18.20): - resolution: {integrity: sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==} + /esbuild-register@3.5.0(esbuild@0.18.20): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: esbuild: '>=0.12 <1' dependencies: @@ -9706,34 +10070,34 @@ packages: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - /esbuild@0.19.2: - resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + /esbuild@0.19.3: + resolution: {integrity: sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.2 - '@esbuild/android-arm64': 0.19.2 - '@esbuild/android-x64': 0.19.2 - '@esbuild/darwin-arm64': 0.19.2 - '@esbuild/darwin-x64': 0.19.2 - '@esbuild/freebsd-arm64': 0.19.2 - '@esbuild/freebsd-x64': 0.19.2 - '@esbuild/linux-arm': 0.19.2 - '@esbuild/linux-arm64': 0.19.2 - '@esbuild/linux-ia32': 0.19.2 - '@esbuild/linux-loong64': 0.19.2 - '@esbuild/linux-mips64el': 0.19.2 - '@esbuild/linux-ppc64': 0.19.2 - '@esbuild/linux-riscv64': 0.19.2 - '@esbuild/linux-s390x': 0.19.2 - '@esbuild/linux-x64': 0.19.2 - '@esbuild/netbsd-x64': 0.19.2 - '@esbuild/openbsd-x64': 0.19.2 - '@esbuild/sunos-x64': 0.19.2 - '@esbuild/win32-arm64': 0.19.2 - '@esbuild/win32-ia32': 0.19.2 - '@esbuild/win32-x64': 0.19.2 + '@esbuild/android-arm': 0.19.3 + '@esbuild/android-arm64': 0.19.3 + '@esbuild/android-x64': 0.19.3 + '@esbuild/darwin-arm64': 0.19.3 + '@esbuild/darwin-x64': 0.19.3 + '@esbuild/freebsd-arm64': 0.19.3 + '@esbuild/freebsd-x64': 0.19.3 + '@esbuild/linux-arm': 0.19.3 + '@esbuild/linux-arm64': 0.19.3 + '@esbuild/linux-ia32': 0.19.3 + '@esbuild/linux-loong64': 0.19.3 + '@esbuild/linux-mips64el': 0.19.3 + '@esbuild/linux-ppc64': 0.19.3 + '@esbuild/linux-riscv64': 0.19.3 + '@esbuild/linux-s390x': 0.19.3 + '@esbuild/linux-x64': 0.19.3 + '@esbuild/netbsd-x64': 0.19.3 + '@esbuild/openbsd-x64': 0.19.3 + '@esbuild/sunos-x64': 0.19.3 + '@esbuild/win32-arm64': 0.19.3 + '@esbuild/win32-ia32': 0.19.3 + '@esbuild/win32-x64': 0.19.3 dev: true /escalade@3.1.1: @@ -9756,7 +10120,6 @@ packages: /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -9789,12 +10152,12 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.4.19 - '@rushstack/eslint-patch': 1.3.3 - '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@rushstack/eslint-patch': 1.4.0 + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@5.2.2) eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) eslint-plugin-react: 7.33.2(eslint@8.49.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) @@ -9809,11 +10172,11 @@ packages: dependencies: debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.13.0 - resolve: 1.22.4 + resolve: 1.22.6 transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -9823,8 +10186,8 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.49.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 is-core-module: 2.13.0 @@ -9835,7 +10198,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -9856,11 +10219,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) transitivePeerDependencies: - supports-color @@ -9871,11 +10234,11 @@ packages: eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/regexpp': 4.8.1 eslint: 8.49.0 dev: false - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -9885,7 +10248,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -9894,7 +10257,7 @@ packages: doctrine: 2.1.0 eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -9934,8 +10297,8 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-n@16.0.2(eslint@8.49.0): - resolution: {integrity: sha512-Y66uDfUNbBzypsr0kELWrIz+5skicECrLUqlWuXawNSLUq3ltGlCwu6phboYYOTSnoTdHgTLrc+5Ydo6KjzZog==} + /eslint-plugin-n@16.1.0(eslint@8.49.0): + resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' @@ -9944,10 +10307,11 @@ packages: builtins: 5.0.1 eslint: 8.49.0 eslint-plugin-es-x: 7.2.0(eslint@8.49.0) + get-tsconfig: 4.7.0 ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 - resolve: 1.22.4 + resolve: 1.22.6 semver: 7.5.4 dev: false @@ -9970,7 +10334,7 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - es-iterator-helpers: 1.0.14 + es-iterator-helpers: 1.0.15 eslint: 8.49.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 @@ -9982,7 +10346,7 @@ packages: prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.1 - string.prototype.matchall: 4.0.9 + string.prototype.matchall: 4.0.10 dev: true /eslint-plugin-unicorn@48.0.1(eslint@8.49.0): @@ -9991,7 +10355,7 @@ packages: peerDependencies: eslint: '>=8.44.0' dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) ci-info: 3.8.0 clean-regexp: 1.0.0 @@ -10009,7 +10373,7 @@ packages: strip-indent: 3.0.0 dev: false - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.49.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.7.2)(eslint@8.49.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -10019,7 +10383,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.2.2) eslint: 8.49.0 eslint-rule-composer: 0.3.0 dev: false @@ -10054,7 +10418,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/regexpp': 4.8.1 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.49.0 '@humanwhocodes/config-array': 0.11.11 @@ -10075,7 +10439,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.22.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -10131,8 +10495,8 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} dependencies: - '@babel/traverse': 7.22.17 - '@babel/types': 7.22.17 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -10172,10 +10536,6 @@ packages: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} dev: true - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false - /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -10223,21 +10583,6 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: false - - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} @@ -10251,15 +10596,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect@29.6.4: - resolution: {integrity: sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.6.4 + '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-util: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 dev: true /express@4.18.2: @@ -10515,20 +10860,20 @@ packages: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 keyv: 4.5.3 rimraf: 3.0.2 - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} /flow-parser@0.216.1: resolution: {integrity: sha512-wstw46/C/8bRv/8RySCl15lK376j8DHxm41xFjD9eVL+jSS1UmVpbdLdA0LzGuS2v5uGgQiBLEj6mgSJQwW+MA==} engines: {node: '>=0.4.0'} dev: true - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.3(debug@4.3.4): + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -10576,15 +10921,6 @@ packages: mime-types: 2.1.35 dev: true - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -10681,8 +11017,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -10747,10 +11083,6 @@ packages: 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.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -10823,8 +11155,8 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.3.4: - resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + /glob@10.3.5: + resolution: {integrity: sha512-bYUpUD7XDEHI4Q2O5a7PXGvyw4deKR70kHiDxzQbe925wbZknhOzUt2xBgTkYL6RBcVeXYuD9iNYeqoWbBZQnA==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: @@ -10894,8 +11226,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.22.0: + resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -10904,7 +11236,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -11098,7 +11430,7 @@ packages: /hastscript@6.0.0: resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 comma-separated-tokens: 1.0.8 hast-util-parse-selector: 2.2.5 property-information: 5.6.0 @@ -11222,11 +11554,6 @@ packages: /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} - dev: false - - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} @@ -11246,13 +11573,13 @@ packages: dependencies: safer-buffer: 2.1.2 - /icss-utils@5.1.0(postcss@8.4.29): + /icss-utils@5.1.0(postcss@8.4.30): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 dev: true /ieee754@1.2.1: @@ -11302,6 +11629,11 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: false + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -11319,6 +11651,87 @@ packages: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} + /ink-link@3.0.0(ink@4.4.1): + resolution: {integrity: sha512-S8jbyJQhYluCYn+O2dZ9I+Ts0OfpuXmRVJ3qNU+L4XCQEE2k4Vb0dO1Wu/QsArEXabQK7Q/DLtZ1ozLVBNGypQ==} + engines: {node: '>=16'} + peerDependencies: + ink: '>=4' + dependencies: + ink: 4.4.1(@types/react@18.2.22)(react-devtools-core@4.28.4)(react@18.2.0) + prop-types: 15.8.1 + terminal-link: 3.0.0 + dev: false + + /ink-spinner@5.0.0(ink@4.4.1)(react@18.2.0): + resolution: {integrity: sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==} + engines: {node: '>=14.16'} + peerDependencies: + ink: '>=4.0.0' + react: '>=18.0.0' + dependencies: + cli-spinners: 2.9.1 + ink: 4.4.1(@types/react@18.2.22)(react-devtools-core@4.28.4)(react@18.2.0) + react: 18.2.0 + dev: false + + /ink-testing-library@3.0.0(@types/react@18.2.22): + resolution: {integrity: sha512-ItyyoOmcm6yftb7c5mZI2HU22BWzue8PBbO3DStmY8B9xaqfKr7QJONiWOXcwVsOk/6HuVQ0v7N5xhPaR3jycA==} + engines: {node: '>=14.16'} + peerDependencies: + '@types/react': '>=18.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.22 + dev: false + + /ink@4.4.1(@types/react@18.2.22)(react-devtools-core@4.28.4)(react@18.2.0): + resolution: {integrity: sha512-rXckvqPBB0Krifk5rn/5LvQGmyXwCUpBfmTwbkQNBY9JY8RSl3b8OftBNEYxg4+SWUhEKcPifgope28uL9inlA==} + engines: {node: '>=14.16'} + peerDependencies: + '@types/react': '>=18.0.0' + react: '>=18.0.0' + react-devtools-core: ^4.19.1 + peerDependenciesMeta: + '@types/react': + optional: true + react-devtools-core: + optional: true + dependencies: + '@alcalzone/ansi-tokenize': 0.1.3 + '@types/react': 18.2.22 + ansi-escapes: 6.2.0 + auto-bind: 5.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + cli-cursor: 4.0.0 + cli-truncate: 3.1.0 + code-excerpt: 4.0.0 + indent-string: 5.0.0 + is-ci: 3.0.1 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lodash: 4.17.21 + patch-console: 2.0.0 + react: 18.2.0 + react-devtools-core: 4.28.4 + react-reconciler: 0.29.0(react@18.2.0) + scheduler: 0.23.0 + signal-exit: 3.0.7 + slice-ansi: 6.0.0 + stack-utils: 2.0.6 + string-width: 5.1.2 + type-fest: 0.12.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + yoga-wasm-web: 0.3.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false @@ -11367,7 +11780,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} @@ -11531,16 +11943,21 @@ packages: engines: {node: '>=12'} dev: false + /is-lower-case@2.0.2: + resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + dependencies: + tslib: 2.6.2 + dev: false + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /is-negative-zero@2.0.2: @@ -11611,7 +12028,6 @@ packages: /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} @@ -11664,9 +12080,14 @@ packages: engines: {node: '>=12'} dev: false + /is-upper-case@2.0.2: + resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + dependencies: + tslib: 2.6.2 + dev: false + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -11678,7 +12099,6 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - dev: true /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} @@ -11736,7 +12156,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -11749,7 +12169,7 @@ packages: resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -11783,13 +12203,14 @@ packages: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - /iterator.prototype@1.1.1: - resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 get-intrinsic: 1.2.1 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 dev: true /jackspeak@2.3.3: @@ -11811,36 +12232,36 @@ packages: minimatch: 3.1.2 dev: true - /jest-changed-files@29.6.3: - resolution: {integrity: sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 - jest-util: 29.6.3 + jest-util: 29.7.0 p-limit: 3.1.0 dev: true - /jest-circus@29.6.4: - resolution: {integrity: sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==} + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/expect': 29.6.4 - '@jest/test-result': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 is-generator-fn: 2.1.0 - jest-each: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-runtime: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 + 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.6.3 + pretty-format: 29.7.0 pure-rand: 6.0.3 slash: 3.0.0 stack-utils: 2.0.6 @@ -11849,8 +12270,8 @@ packages: - supports-color dev: true - /jest-cli@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==} + /jest-cli@29.7.0(@types/node@20.6.3)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -11859,17 +12280,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.4(ts-node@10.9.1) - '@jest/test-result': 29.6.4 + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) - jest-util: 29.6.3 - jest-validate: 29.6.3 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -11878,8 +12298,8 @@ packages: - ts-node dev: true - /jest-config@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==} + /jest-config@29.7.0(@types/node@20.6.3)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -11890,65 +12310,65 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.17 - '@jest/test-sequencer': 29.6.4 + '@babel/core': 7.22.20 + '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - babel-jest: 29.6.4(@babel/core@7.22.17) + '@types/node': 20.6.3 + babel-jest: 29.7.0(@babel/core@7.22.20) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.6.4 - jest-environment-node: 29.6.4 + 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.6.4 - jest-runner: 29.6.4 - jest-util: 29.6.3 - jest-validate: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color dev: true - /jest-diff@29.6.4: - resolution: {integrity: sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-docblock@29.6.3: - resolution: {integrity: sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@29.6.3: - resolution: {integrity: sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==} + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 - jest-util: 29.6.3 - pretty-format: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true - /jest-environment-jsdom@29.6.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-K6wfgUJ16DoMs02JYFid9lOsqfpoVtyJxpRlnTxUHzvZWBnnh2VNGRB9EC1Cro96TQdq5TtSjb3qUjNaJP9IyA==} + /jest-environment-jsdom@29.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -11956,13 +12376,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.6.4 - '@jest/fake-timers': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.6.0 - jest-mock: 29.6.3 - jest-util: 29.6.3 + '@types/node': 20.6.3 + jest-mock: 29.7.0 + jest-util: 29.7.0 jsdom: 20.0.3(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil @@ -11970,16 +12390,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node@29.6.4: - resolution: {integrity: sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/fake-timers': 29.6.4 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-mock: 29.6.3 - jest-util: 29.6.3 + '@types/node': 20.6.3 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true /jest-get-type@29.6.3: @@ -11987,45 +12407,45 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.6.4: - resolution: {integrity: sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.6 - '@types/node': 20.6.0 + '@types/graceful-fs': 4.1.7 + '@types/node': 20.6.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 29.6.3 - jest-util: 29.6.3 - jest-worker: 29.6.4 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 dev: true - /jest-leak-detector@29.6.3: - resolution: {integrity: sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-matcher-utils@29.6.4: - resolution: {integrity: sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.6.4 + jest-diff: 29.7.0 jest-get-type: 29.6.3 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-message-util@29.6.3: - resolution: {integrity: sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.22.13 @@ -12034,7 +12454,7 @@ packages: chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.6.3 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true @@ -12044,19 +12464,19 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.6.0 + '@types/node': 20.6.3 dev: true - /jest-mock@29.6.3: - resolution: {integrity: sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==} + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 - jest-util: 29.6.3 + '@types/node': 20.6.3 + jest-util: 29.7.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.6.4): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -12065,7 +12485,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.6.4 + jest-resolve: 29.7.0 dev: true /jest-regex-util@29.6.3: @@ -12073,132 +12493,132 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@29.6.4: - resolution: {integrity: sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 - jest-snapshot: 29.6.4 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve@29.6.4: - resolution: {integrity: sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 - jest-pnp-resolver: 1.2.3(jest-resolve@29.6.4) - jest-util: 29.6.3 - jest-validate: 29.6.3 - resolve: 1.22.4 + 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.6 resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@29.6.4: - resolution: {integrity: sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.4 - '@jest/environment': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 + '@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.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.6.3 - jest-environment-node: 29.6.4 - jest-haste-map: 29.6.4 - jest-leak-detector: 29.6.3 - jest-message-util: 29.6.3 - jest-resolve: 29.6.4 - jest-runtime: 29.6.4 - jest-util: 29.6.3 - jest-watcher: 29.6.4 - jest-worker: 29.6.4 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime@29.6.4: - resolution: {integrity: sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==} + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.4 - '@jest/fake-timers': 29.6.4 - '@jest/globals': 29.6.4 + '@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.6.4 - '@jest/transform': 29.6.4 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.6.4 - jest-message-util: 29.6.3 - jest-mock: 29.6.3 + 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.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot@29.6.4: - resolution: {integrity: sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/generator': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.17) - '@babel/types': 7.22.17 - '@jest/expect-utils': 29.6.4 - '@jest/transform': 29.6.4 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) + '@babel/types': 7.22.19 + '@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.22.17) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) chalk: 4.1.2 - expect: 29.6.4 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.6.4 + jest-diff: 29.7.0 jest-get-type: 29.6.3 - jest-matcher-utils: 29.6.4 - jest-message-util: 29.6.3 - jest-util: 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.6.3 + pretty-format: 29.7.0 semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /jest-util@29.6.3: - resolution: {integrity: sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate@29.6.3: - resolution: {integrity: sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 @@ -12206,20 +12626,20 @@ packages: chalk: 4.1.2 jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-watcher@29.6.4: - resolution: {integrity: sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.4 + '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.6.3 + jest-util: 29.7.0 string-length: 4.0.2 dev: true @@ -12227,23 +12647,23 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest-worker@29.6.4: - resolution: {integrity: sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.6.0 - jest-util: 29.6.3 + '@types/node': 20.6.3 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.6.4(@types/node@20.6.0)(ts-node@10.9.1): - resolution: {integrity: sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==} + /jest@29.7.0(@types/node@20.6.3)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -12252,10 +12672,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.4(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.6.4(@types/node@20.6.0)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@20.6.3)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12266,14 +12686,13 @@ packages: /jiti@1.20.0: resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true - dev: true /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: false - /joi@17.10.1: - resolution: {integrity: sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==} + /joi@17.10.2: + resolution: {integrity: sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -12306,23 +12725,23 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jscodeshift@0.14.0(@babel/preset-env@7.22.15): + /jscodeshift@0.14.0(@babel/preset-env@7.22.20): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/parser': 7.22.16 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.17) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.17) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.17) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.17) - '@babel/preset-env': 7.22.15(@babel/core@7.22.17) - '@babel/preset-flow': 7.22.15(@babel/core@7.22.17) - '@babel/preset-typescript': 7.22.15(@babel/core@7.22.17) - '@babel/register': 7.22.15(@babel/core@7.22.17) - babel-core: 7.0.0-bridge.0(@babel/core@7.22.17) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) + '@babel/preset-env': 7.22.20(@babel/core@7.22.20) + '@babel/preset-flow': 7.22.15(@babel/core@7.22.20) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.20) + '@babel/register': 7.22.15(@babel/core@7.22.20) + babel-core: 7.0.0-bridge.0(@babel/core@7.22.20) chalk: 4.1.2 flow-parser: 0.216.1 graceful-fs: 4.2.11 @@ -12369,7 +12788,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.14.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) + ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -12399,6 +12818,10 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -12489,7 +12912,6 @@ packages: /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: true /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} @@ -12578,6 +13000,7 @@ packages: /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + dev: true /line-column-path@3.0.0: resolution: {integrity: sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==} @@ -12589,26 +13012,6 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lint-staged@14.0.1: - resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - dependencies: - chalk: 5.3.0 - commander: 11.0.0 - debug: 4.3.4(supports-color@8.1.1) - execa: 7.2.0 - lilconfig: 2.1.0 - listr2: 6.6.1 - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - dev: false - /listr2@3.14.0(enquirer@2.4.1): resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} @@ -12629,23 +13032,21 @@ packages: wrap-ansi: 7.0.0 dev: true - /listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 - rfdc: 1.3.0 - wrap-ansi: 8.1.0 + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 dev: false + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} @@ -12714,6 +13115,10 @@ packages: /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==} + dev: false + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true @@ -12721,10 +13126,22 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + /lodash.omit@4.5.0: + resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} + dev: false + /lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} dev: true + /lodash.set@4.3.2: + resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} + dev: false + + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: false @@ -12766,17 +13183,6 @@ packages: wrap-ansi: 6.2.0 dev: true - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 - dev: false - /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false @@ -12847,7 +13253,6 @@ packages: /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - dev: true /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} @@ -13029,7 +13434,7 @@ packages: /mdast-util-to-hast@12.3.0: resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 '@types/mdast': 3.0.12 mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.2.0 @@ -13076,6 +13481,11 @@ packages: dependencies: map-or-similar: 1.5.0 + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: false + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -13501,6 +13911,11 @@ packages: pkg-types: 1.0.3 ufo: 1.3.0 + /mock-fs@5.2.0: + resolution: {integrity: sha512-2dF2R6YMSZbpip1V1WHKGLNjr/k48uQClqMVb5H3MOvwc9qhYis3/IWbj02qIg/Y8MDXKFF4c5v0rxx2o6xTZw==} + engines: {node: '>=12.0.0'} + dev: false + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -13572,11 +13987,11 @@ packages: react: '*' react-dom: '*' dependencies: - next: 13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0) + next: 13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /next@13.4.19(@babel/core@7.22.17)(react-dom@18.2.0)(react@18.2.0): + /next@13.4.19(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==} engines: {node: '>=16.8.0'} hasBin: true @@ -13594,11 +14009,11 @@ packages: '@next/env': 13.4.19 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001532 + caniuse-lite: 1.0.30001538 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.17)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: @@ -13615,6 +14030,10 @@ packages: - '@babel/core' - babel-plugin-macros + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + /node-dir@0.1.17: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} @@ -13653,7 +14072,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.4 + resolve: 1.22.6 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -13676,6 +14095,22 @@ packages: engines: {node: '>=14.16'} dev: false + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.5 + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -13709,8 +14144,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - dev: true + define-properties: 1.2.1 /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -13721,7 +14155,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -13730,8 +14164,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /object.fromentries@2.0.7: @@ -13739,22 +14173,22 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 /object.groupby@1.0.1: resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /object.values@1.1.7: @@ -13762,8 +14196,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} @@ -13848,7 +14282,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -13862,7 +14296,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -14008,6 +14442,14 @@ packages: hasBin: true dev: false + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -14032,6 +14474,11 @@ packages: engines: {node: '>= 0.8'} dev: true + /patch-console@2.0.0: + resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: false @@ -14054,6 +14501,11 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -14076,6 +14528,13 @@ packages: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -14115,8 +14574,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} engines: {node: '>=0.10'} hasBin: true dev: false @@ -14126,6 +14585,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -14222,29 +14686,29 @@ packages: '@babel/runtime': 7.22.15 dev: true - /postcss-import@15.1.0(postcss@8.4.29): + /postcss-import@15.1.0(postcss@8.4.30): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.4 + resolve: 1.22.6 dev: true - /postcss-js@4.0.1(postcss@8.4.29): + /postcss-js@4.0.1(postcss@8.4.30): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.29 + postcss: 8.4.30 dev: true - /postcss-load-config@4.0.1(postcss@8.4.29)(ts-node@10.9.1): + /postcss-load-config@4.0.1(postcss@8.4.30)(ts-node@10.9.1): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -14257,75 +14721,75 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.29 - ts-node: 10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2) + postcss: 8.4.30 + ts-node: 10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2) yaml: 2.3.2 dev: true - /postcss-loader@7.3.3(postcss@8.4.29)(typescript@5.2.2)(webpack@5.88.2): + /postcss-loader@7.3.3(postcss@8.4.30)(typescript@5.2.2)(webpack@5.88.2): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.5(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.2.2) jiti: 1.20.0 - postcss: 8.4.29 + postcss: 8.4.30 semver: 7.5.4 webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - typescript dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.29): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.30): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 dev: true - /postcss-modules-local-by-default@4.0.3(postcss@8.4.29): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.30): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.29) - postcss: 8.4.29 + icss-utils: 5.1.0(postcss@8.4.30) + postcss: 8.4.30 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.0.0(postcss@8.4.29): + /postcss-modules-scope@3.0.0(postcss@8.4.30): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 postcss-selector-parser: 6.0.13 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.29): + /postcss-modules-values@4.0.0(postcss@8.4.30): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.29) - postcss: 8.4.29 + icss-utils: 5.1.0(postcss@8.4.30) + postcss: 8.4.30 dev: true - /postcss-nested@6.0.1(postcss@8.4.29): + /postcss-nested@6.0.1(postcss@8.4.30): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 postcss-selector-parser: 6.0.13 dev: true @@ -14357,8 +14821,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + /postcss@8.4.30: + resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -14460,10 +14924,9 @@ packages: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true - /pretty-format@29.6.3: - resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 @@ -14508,7 +14971,6 @@ packages: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -14709,6 +15171,16 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /react-devtools-core@4.28.4: + resolution: {integrity: sha512-IUZKLv3CimeM07G3vX4H4loxVpByrzq3HvfTX7v9migalwvLs9ZY5D3S3pKR33U+GguYfBBdMMZyToFhsSE/iQ==} + dependencies: + shell-quote: 1.8.1 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /react-docgen-typescript@2.2.2(typescript@5.2.2): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: @@ -14722,7 +15194,7 @@ packages: engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 '@babel/generator': 7.22.15 ast-types: 0.14.2 commander: 2.20.3 @@ -14730,7 +15202,7 @@ packages: estree-to-babel: 3.2.1 neo-async: 2.6.2 node-dir: 0.1.17 - resolve: 1.22.4 + resolve: 1.22.6 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color @@ -14783,7 +15255,6 @@ packages: /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true /react-is@18.1.0: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} @@ -14792,15 +15263,15 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-markdown@8.0.7(@types/react@18.2.21)(react@18.2.0): + /react-markdown@8.0.7(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: - '@types/hast': 2.3.5 - '@types/prop-types': 15.7.5 - '@types/react': 18.2.21 + '@types/hast': 2.3.6 + '@types/prop-types': 15.7.6 + '@types/react': 18.2.22 '@types/unist': 2.0.8 comma-separated-tokens: 2.0.3 hast-util-whitespace: 2.0.1 @@ -14833,12 +15304,23 @@ packages: warning: 4.0.3 dev: false + /react-reconciler@0.29.0(react@18.2.0): + resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.21)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -14848,12 +15330,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.21)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) tslib: 2.6.2 - /react-remove-scroll@2.5.4(@types/react@18.2.21)(react@18.2.0): + /react-remove-scroll@2.5.4(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -14863,16 +15345,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.21)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.21)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.21)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.22)(react@18.2.0) dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.21)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -14882,13 +15364,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.21)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.21)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.21)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.21)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.22)(react@18.2.0) /react-resizable-panels@0.0.55(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-J/LTFzUEjJiqwSjVh8gjUXkQDA8MRPjARASfn++d2+KOgA+9UcRYUfE3QBJixer2vkk+ffQ4cq3QzWzzHgqYpQ==} @@ -14911,28 +15393,28 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /react-select@5.7.4(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ==} + /react-select@5.7.5(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jgYZa2xgKP0DVn5GZk7tZwbRx7kaVz1VqU41S8z1KWmshRDhlrpKS0w80aS1RaK5bVIXpttgSou7XCjWw1ncKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@babel/runtime': 7.22.15 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.21)(react@18.2.0) - '@floating-ui/dom': 1.5.1 + '@emotion/react': 11.11.1(@types/react@18.2.22)(react@18.2.0) + '@floating-ui/dom': 1.5.3 '@types/react-transition-group': 4.4.6 memoize-one: 6.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.21)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.22)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /react-style-singleton@2.2.1(@types/react@18.2.21)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -14942,7 +15424,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -15003,6 +15485,15 @@ packages: read-pkg: 5.2.0 type-fest: 0.8.1 + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: false + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -15097,8 +15588,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -15112,8 +15603,8 @@ packages: prismjs: 1.27.0 dev: false - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -15145,13 +15636,13 @@ packages: hasBin: true dev: false - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + define-properties: 1.2.1 + set-function-name: 2.0.1 /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -15159,7 +15650,7 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 + regenerate-unicode-properties: 10.1.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 @@ -15241,7 +15732,7 @@ packages: /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 '@types/mdast': 3.0.12 mdast-util-to-hast: 12.3.0 unified: 10.1.2 @@ -15306,7 +15797,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.4.29 + postcss: 8.4.30 source-map: 0.6.1 dev: true @@ -15315,8 +15806,8 @@ packages: engines: {node: '>=10'} dev: true - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -15367,6 +15858,7 @@ packages: /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} @@ -15393,11 +15885,11 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.4 + glob: 10.3.5 dev: false - /rollup@3.29.1: - resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} + /rollup@3.29.2: + resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -15506,7 +15998,7 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) dev: true @@ -15601,6 +16093,14 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true @@ -15643,6 +16143,10 @@ packages: engines: {node: '>=12'} dev: true + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -15677,7 +16181,6 @@ packages: /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -15714,6 +16217,14 @@ packages: is-fullwidth-code-point: 4.0.0 dev: false + /slice-ansi@6.0.0: + resolution: {integrity: sha512-6bn4hRfkTvDfUoEQYkERg0BVF1D0vrX9HEkMl08uDiNWvVvjylLHvZFZWkDo6wjT8tUctbYl1nCOuE66ZTaUtA==} + engines: {node: '>=14.16'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: false + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} @@ -15807,6 +16318,13 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + /space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -15825,7 +16343,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.15 /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} @@ -15834,10 +16352,10 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.15 - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.15: + resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==} /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} @@ -15874,7 +16392,6 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - dev: true /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -15916,12 +16433,11 @@ packages: engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 - dev: true /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - /storybook-addon-variants@0.2.0(@storybook/addons@7.4.0)(@storybook/api@6.5.16)(@storybook/components@6.5.16)(@storybook/core-events@6.5.16)(@storybook/theming@6.5.16)(react-dom@18.2.0)(react@18.2.0): + /storybook-addon-variants@0.2.0(@storybook/addons@7.4.3)(@storybook/api@6.5.16)(@storybook/components@6.5.16)(@storybook/core-events@6.5.16)(@storybook/theming@6.5.16)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-4woVtd+XsHNHN7XDjFFNns1sVYotjYOh5/FP8AR+CzUK9Eb9WPvQ0re5z5rZztndND0NqhhJ5F65Iy4jrz6OzQ==} peerDependencies: '@storybook/addons': ^6.5.8 @@ -15937,7 +16453,7 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 7.4.0(react-dom@18.2.0)(react@18.2.0) + '@storybook/addons': 7.4.3(react-dom@18.2.0)(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0)(react@18.2.0) '@storybook/components': 6.5.16(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': 6.5.16 @@ -15947,7 +16463,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /storybook-dark-mode@3.0.1(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0): + /storybook-dark-mode@3.0.1(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3V6XBhkUq63BF6KzyDBbfV5/8sYtF4UtVccH1tK+Lrd4p0tF8k7yHOvVDhFL9hexnKXcLEnbC+42YDTPvjpK+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -15958,12 +16474,12 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/api': 7.4.0(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.4.0(@types/react-dom@18.2.7)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.4.0 + '@storybook/addons': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/api': 7.4.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.3(@types/react-dom@18.2.7)(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.4.3 '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.0(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.3(react-dom@18.2.0)(react@18.2.0) fast-deep-equal: 3.1.3 memoizerific: 1.11.3 react: 18.2.0 @@ -15973,11 +16489,11 @@ packages: - '@types/react-dom' dev: true - /storybook@7.4.0: - resolution: {integrity: sha512-jSwbyxHlr2dTY51Pv0mzenjrMDJNZH7DQhHu4ZezpjV+QK/rLCnD+Gt/7iDSaNlsmZJejQcmURDoEybWggMOqw==} + /storybook@7.4.3: + resolution: {integrity: sha512-afp7trR23jKt8ruGMPjkNAk3A/4CaLo20iPWAODznlF7u+XWnqGm1S+ZUiJFf13Jzj8jmJf/d7/xDHxY3qVMUA==} hasBin: true dependencies: - '@storybook/cli': 7.4.0 + '@storybook/cli': 7.4.3 transitivePeerDependencies: - bufferutil - encoding @@ -16005,11 +16521,6 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: false - /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -16043,40 +16554,50 @@ packages: strip-ansi: 7.1.0 dev: false - /string.prototype.matchall@4.0.9: - resolution: {integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==} + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 side-channel: 1.0.4 dev: true + /string.prototype.padend@3.1.5: + resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: false + /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -16153,7 +16674,7 @@ packages: inline-style-parser: 0.1.1 dev: false - /styled-jsx@5.1.1(@babel/core@7.22.17)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.20)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -16166,7 +16687,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.17 + '@babel/core': 7.22.20 client-only: 0.0.1 react: 18.2.0 @@ -16213,6 +16734,14 @@ packages: dependencies: has-flag: 4.0.0 + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: false + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -16255,13 +16784,13 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.29 - postcss-import: 15.1.0(postcss@8.4.29) - postcss-js: 4.0.1(postcss@8.4.29) - postcss-load-config: 4.0.1(postcss@8.4.29)(ts-node@10.9.1) - postcss-nested: 6.0.1(postcss@8.4.29) + postcss: 8.4.30 + postcss-import: 15.1.0(postcss@8.4.30) + postcss-js: 4.0.1(postcss@8.4.30) + postcss-load-config: 4.0.1(postcss@8.4.30)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.30) postcss-selector-parser: 6.0.13 - resolve: 1.22.4 + resolve: 1.22.6 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -16349,6 +16878,14 @@ packages: engines: {node: '>=8'} dev: false + /terminal-link@3.0.0: + resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} + engines: {node: '>=12'} + dependencies: + ansi-escapes: 5.0.0 + supports-hyperlinks: 2.3.0 + dev: false + /terser-webpack-plugin@5.3.9(esbuild@0.18.20)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -16370,12 +16907,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.19.4 + terser: 5.20.0 webpack: 5.88.2(esbuild@0.18.20) dev: true - /terser@5.19.4: - resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + /terser@5.20.0: + resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -16433,8 +16970,8 @@ packages: /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} /tinypool@0.7.0: resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} @@ -16509,6 +17046,12 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: true + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -16516,6 +17059,11 @@ packages: punycode: 2.3.0 dev: true + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false @@ -16545,7 +17093,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-node@10.9.1(@swc/core@1.3.83)(@types/node@20.6.0)(typescript@5.2.2): + /ts-node@10.9.1(@swc/core@1.3.86)(@types/node@20.6.3)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -16560,12 +17108,12 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.83 + '@swc/core': 1.3.86 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.6.0 + '@types/node': 20.6.3 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -16604,6 +17152,43 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsup@7.2.0(@swc/core@1.3.86)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} + engines: {node: '>=16.14'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + '@swc/core': 1.3.86 + bundle-require: 4.0.1(esbuild@0.18.20) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + esbuild: 0.18.20 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1(postcss@8.4.30)(ts-node@10.9.1) + resolve-from: 5.0.0 + rollup: 3.29.2 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} @@ -16624,65 +17209,65 @@ packages: safe-buffer: 5.2.1 dev: true - /turbo-darwin-64@1.10.13: - resolution: {integrity: sha512-vmngGfa2dlYvX7UFVncsNDMuT4X2KPyPJ2Jj+xvf5nvQnZR/3IeDEGleGVuMi/hRzdinoxwXqgk9flEmAYp0Xw==} + /turbo-darwin-64@1.10.14: + resolution: {integrity: sha512-I8RtFk1b9UILAExPdG/XRgGQz95nmXPE7OiGb6ytjtNIR5/UZBS/xVX/7HYpCdmfriKdVwBKhalCoV4oDvAGEg==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /turbo-darwin-arm64@1.10.13: - resolution: {integrity: sha512-eMoJC+k7gIS4i2qL6rKmrIQGP6Wr9nN4odzzgHFngLTMimok2cGLK3qbJs5O5F/XAtEeRAmuxeRnzQwTl/iuAw==} + /turbo-darwin-arm64@1.10.14: + resolution: {integrity: sha512-KAdUWryJi/XX7OD0alOuOa0aJ5TLyd4DNIYkHPHYcM6/d7YAovYvxRNwmx9iv6Vx6IkzTnLeTiUB8zy69QkG9Q==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /turbo-linux-64@1.10.13: - resolution: {integrity: sha512-0CyYmnKTs6kcx7+JRH3nPEqCnzWduM0hj8GP/aodhaIkLNSAGAa+RiYZz6C7IXN+xUVh5rrWTnU2f1SkIy7Gdg==} + /turbo-linux-64@1.10.14: + resolution: {integrity: sha512-BOBzoREC2u4Vgpap/WDxM6wETVqVMRcM8OZw4hWzqCj2bqbQ6L0wxs1LCLWVrghQf93JBQtIGAdFFLyCSBXjWQ==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /turbo-linux-arm64@1.10.13: - resolution: {integrity: sha512-0iBKviSGQQlh2OjZgBsGjkPXoxvRIxrrLLbLObwJo3sOjIH0loGmVIimGS5E323soMfi/o+sidjk2wU1kFfD7Q==} + /turbo-linux-arm64@1.10.14: + resolution: {integrity: sha512-D8T6XxoTdN5D4V5qE2VZG+/lbZX/89BkAEHzXcsSUTRjrwfMepT3d2z8aT6hxv4yu8EDdooZq/2Bn/vjMI32xw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /turbo-windows-64@1.10.13: - resolution: {integrity: sha512-S5XySRfW2AmnTeY1IT+Jdr6Goq7mxWganVFfrmqU+qqq3Om/nr0GkcUX+KTIo9mPrN0D3p5QViBRzulwB5iuUQ==} + /turbo-windows-64@1.10.14: + resolution: {integrity: sha512-zKNS3c1w4i6432N0cexZ20r/aIhV62g69opUn82FLVs/zk3Ie0GVkSB6h0rqIvMalCp7enIR87LkPSDGz9K4UA==} cpu: [x64] os: [win32] requiresBuild: true dev: false optional: true - /turbo-windows-arm64@1.10.13: - resolution: {integrity: sha512-nKol6+CyiExJIuoIc3exUQPIBjP9nIq5SkMJgJuxsot2hkgGrafAg/izVDRDrRduQcXj2s8LdtxJHvvnbI8hEQ==} + /turbo-windows-arm64@1.10.14: + resolution: {integrity: sha512-rkBwrTPTxNSOUF7of8eVvvM+BkfkhA2OvpHM94if8tVsU+khrjglilp8MTVPHlyS9byfemPAmFN90oRIPB05BA==} cpu: [arm64] os: [win32] requiresBuild: true dev: false optional: true - /turbo@1.10.13: - resolution: {integrity: sha512-vOF5IPytgQPIsgGtT0n2uGZizR2N3kKuPIn4b5p5DdeLoI0BV7uNiydT7eSzdkPRpdXNnO8UwS658VaI4+YSzQ==} + /turbo@1.10.14: + resolution: {integrity: sha512-hr9wDNYcsee+vLkCDIm8qTtwhJ6+UAMJc3nIY6+PNgUTtXcQgHxCq8BGoL7gbABvNWv76CNbK5qL4Lp9G3ZYRA==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.10.13 - turbo-darwin-arm64: 1.10.13 - turbo-linux-64: 1.10.13 - turbo-linux-arm64: 1.10.13 - turbo-windows-64: 1.10.13 - turbo-windows-arm64: 1.10.13 + turbo-darwin-64: 1.10.14 + turbo-darwin-arm64: 1.10.14 + turbo-linux-64: 1.10.14 + turbo-linux-arm64: 1.10.14 + turbo-windows-64: 1.10.14 + turbo-windows-arm64: 1.10.14 dev: false /tweetnacl@0.14.5: @@ -16699,6 +17284,11 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + /type-fest@0.12.0: + resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} + engines: {node: '>=10'} + dev: false + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -16735,6 +17325,11 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: false + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -16935,8 +17530,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin@1.4.0: - resolution: {integrity: sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==} + /unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} dependencies: acorn: 8.10.0 chokidar: 3.5.3 @@ -16948,8 +17543,8 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.12(browserslist@4.21.10): + resolution: {integrity: sha512-tE1smlR58jxbFMtrMpFNRmsrOXlpNXss965T1CrpwuZUzUAg/TBQc94SpyhDLSzrqrJS9xTRBthnZAGcE1oaxg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -16997,7 +17592,7 @@ packages: requires-port: 1.0.0 dev: true - /use-callback-ref@1.3.0(@types/react@18.2.21)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -17007,11 +17602,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 tslib: 2.6.2 - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.21)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -17020,7 +17615,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 react: 18.2.0 /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): @@ -17034,7 +17629,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /use-sidecar@1.1.2(@types/react@18.2.21)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -17044,7 +17639,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.22 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -17086,8 +17681,8 @@ packages: hasBin: true dev: true - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true dev: true @@ -17154,7 +17749,7 @@ packages: vfile-message: 3.1.4 dev: false - /vite-node@0.34.4(@types/node@20.6.0): + /vite-node@0.34.4(@types/node@20.6.3): resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -17164,7 +17759,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - '@types/node' - less @@ -17186,13 +17781,13 @@ packages: debug: 4.3.4(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 2.1.2(typescript@5.2.2) - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@4.4.9(@types/node@20.6.0)(less@4.2.0): + /vite@4.4.9(@types/node@20.6.3)(less@4.2.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -17220,11 +17815,11 @@ packages: terser: optional: true dependencies: - '@types/node': 20.6.0 + '@types/node': 20.6.3 esbuild: 0.18.20 less: 4.2.0 - postcss: 8.4.29 - rollup: 3.29.1 + postcss: 8.4.30 + rollup: 3.29.2 optionalDependencies: fsevents: 2.3.3 @@ -17261,7 +17856,7 @@ packages: dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.6.0 + '@types/node': 20.6.3 '@vitest/expect': 0.34.4 '@vitest/runner': 0.34.4 '@vitest/snapshot': 0.34.4 @@ -17278,10 +17873,10 @@ packages: picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 - tinybench: 2.5.0 + tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.6.0)(less@4.2.0) - vite-node: 0.34.4(@types/node@20.6.0) + vite: 4.4.9(@types/node@20.6.3)(less@4.2.0) + vite-node: 0.34.4(@types/node@20.6.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -17305,7 +17900,7 @@ packages: hasBin: true dependencies: axios: 0.27.2(debug@4.3.4) - joi: 17.10.1 + joi: 17.10.2 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -17340,6 +17935,10 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -17439,6 +18038,14 @@ packages: webidl-conversions: 3.0.1 dev: true + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -17473,7 +18080,6 @@ packages: is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -17625,8 +18231,8 @@ packages: bufferutil: 4.0.7 utf-8-validate: 6.0.3 - /ws@8.14.1(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} + /ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -17639,7 +18245,6 @@ packages: dependencies: bufferutil: 4.0.7 utf-8-validate: 6.0.3 - dev: true /xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} @@ -17690,11 +18295,6 @@ packages: engines: {node: '>= 6'} dev: false - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: false - /yaml@2.3.2: resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} engines: {node: '>= 14'} @@ -17777,6 +18377,10 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + /yoga-wasm-web@0.3.3: + resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} + dev: false + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} diff --git a/packages/config-eslint/.eslintrc.cjs b/tooling/config-eslint/.eslintrc.js similarity index 86% rename from packages/config-eslint/.eslintrc.cjs rename to tooling/config-eslint/.eslintrc.js index 1f46e0ea..79b3683f 100644 --- a/packages/config-eslint/.eslintrc.cjs +++ b/tooling/config-eslint/.eslintrc.js @@ -1,5 +1,11 @@ module.exports = { - ignorePatterns: ['dist/**/*', 'node_modules/**/*'], + ignorePatterns: [ + 'dist/**/*', + 'node_modules/**/*', + 'coverage/**/*', + '.next', + '.turbo', + ], env: { es2024: true, }, diff --git a/packages/config-eslint/CHANGELOG.md b/tooling/config-eslint/CHANGELOG.md similarity index 100% rename from packages/config-eslint/CHANGELOG.md rename to tooling/config-eslint/CHANGELOG.md diff --git a/tooling/config-eslint/README.md b/tooling/config-eslint/README.md new file mode 100644 index 00000000..43c224ce --- /dev/null +++ b/tooling/config-eslint/README.md @@ -0,0 +1,7 @@ +# eslint-config-commonality +> The Commonality CLI's ESLint configuration +## Installation + +```sh +npm install eslint-config-commonality +``` \ No newline at end of file diff --git a/packages/config-tsconfig/commonality.json b/tooling/config-eslint/commonality.json similarity index 100% rename from packages/config-tsconfig/commonality.json rename to tooling/config-eslint/commonality.json diff --git a/packages/config-eslint/package.json b/tooling/config-eslint/package.json similarity index 89% rename from packages/config-eslint/package.json rename to tooling/config-eslint/package.json index bbe98eec..976ab370 100644 --- a/packages/config-eslint/package.json +++ b/tooling/config-eslint/package.json @@ -10,13 +10,13 @@ "access": "public" }, "license": "MIT", - "main": ".eslintrc.cjs", + "main": ".eslintrc.js", "engines": { "node": ">=14.6" }, "dependencies": { "eslint-plugin-import": "^2.28.1", - "eslint-plugin-n": "^16.0.2", + "eslint-plugin-n": "^16.1.0", "eslint-plugin-unicorn": "^48.0.1", "eslint-plugin-unused-imports": "^3.0.0" }, diff --git a/packages/config-tailwind/CHANGELOG.md b/tooling/config-tailwind/CHANGELOG.md similarity index 81% rename from packages/config-tailwind/CHANGELOG.md rename to tooling/config-tailwind/CHANGELOG.md index c13ae8eb..6832d558 100644 --- a/packages/config-tailwind/CHANGELOG.md +++ b/tooling/config-tailwind/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/config-tailwind -## 0.0.7 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.6 ### Patch Changes diff --git a/tooling/config-tailwind/README.md b/tooling/config-tailwind/README.md new file mode 100644 index 00000000..c63967c9 --- /dev/null +++ b/tooling/config-tailwind/README.md @@ -0,0 +1,7 @@ +# @commonalityco/config-tailwind +> TailwindCSS configuration and globals for Commonality projects +## Installation + +```sh +npm install @commonalityco/config-tailwind +``` \ No newline at end of file diff --git a/packages/config-eslint/commonality.json b/tooling/config-tailwind/commonality.json similarity index 100% rename from packages/config-eslint/commonality.json rename to tooling/config-tailwind/commonality.json diff --git a/packages/config-tailwind/globals.css b/tooling/config-tailwind/globals.css similarity index 100% rename from packages/config-tailwind/globals.css rename to tooling/config-tailwind/globals.css diff --git a/packages/config-tailwind/package.json b/tooling/config-tailwind/package.json similarity index 96% rename from packages/config-tailwind/package.json rename to tooling/config-tailwind/package.json index 55a19343..87e3e216 100644 --- a/packages/config-tailwind/package.json +++ b/tooling/config-tailwind/package.json @@ -1,7 +1,7 @@ { "name": "@commonalityco/config-tailwind", "description": "TailwindCSS configuration and globals for Commonality projects", - "version": "0.0.7", + "version": "0.0.6", "publishConfig": { "access": "public" }, diff --git a/packages/config-tailwind/tailwind.config.js b/tooling/config-tailwind/tailwind.config.js similarity index 100% rename from packages/config-tailwind/tailwind.config.js rename to tooling/config-tailwind/tailwind.config.js diff --git a/packages/config-tsconfig/CHANGELOG.md b/tooling/config-tsconfig/CHANGELOG.md similarity index 91% rename from packages/config-tsconfig/CHANGELOG.md rename to tooling/config-tsconfig/CHANGELOG.md index bade496f..f79610b3 100644 --- a/packages/config-tsconfig/CHANGELOG.md +++ b/tooling/config-tsconfig/CHANGELOG.md @@ -1,11 +1,5 @@ # @commonalityco/config-tsconfig -## 0.0.11 - -### Patch Changes - -- 51411d8: update dependencies - ## 0.0.10 ### Patch Changes diff --git a/tooling/config-tsconfig/README.md b/tooling/config-tsconfig/README.md new file mode 100644 index 00000000..829337bb --- /dev/null +++ b/tooling/config-tsconfig/README.md @@ -0,0 +1,7 @@ +# @commonalityco/config-tsconfig +> Standard TypeScript configuration for Commonality projects +## Installation + +```sh +npm install @commonalityco/config-tsconfig +``` \ No newline at end of file diff --git a/tooling/config-tsconfig/commonality.json b/tooling/config-tsconfig/commonality.json new file mode 100644 index 00000000..6db27f3c --- /dev/null +++ b/tooling/config-tsconfig/commonality.json @@ -0,0 +1 @@ +{ "tags": ["config"] } diff --git a/packages/config-tsconfig/node16.json b/tooling/config-tsconfig/node.json similarity index 85% rename from packages/config-tsconfig/node16.json rename to tooling/config-tsconfig/node.json index a8f911a9..54860afe 100644 --- a/packages/config-tsconfig/node16.json +++ b/tooling/config-tsconfig/node.json @@ -8,8 +8,10 @@ "module": "Node16", "moduleResolution": "Node16", "declaration": true, + "declarationMap": true, "strict": true, "esModuleInterop": true, + "resolveJsonModule": true, "skipLibCheck": true } } diff --git a/packages/config-tsconfig/package.json b/tooling/config-tsconfig/package.json similarity index 87% rename from packages/config-tsconfig/package.json rename to tooling/config-tsconfig/package.json index 22b36626..f7a93998 100644 --- a/packages/config-tsconfig/package.json +++ b/tooling/config-tsconfig/package.json @@ -1,14 +1,14 @@ { "name": "@commonalityco/config-tsconfig", "description": "Standard TypeScript configuration for Commonality projects", - "version": "0.0.11", + "version": "0.0.10", "private": true, "devDependencies": { "typescript": "^5.2.2" }, "files": [ "base.json", - "node16.json", + "node.json", "react-app.json", "react-library.json", "next.json" diff --git a/packages/config-tsconfig/react.json b/tooling/config-tsconfig/react.json similarity index 88% rename from packages/config-tsconfig/react.json rename to tooling/config-tsconfig/react.json index a8777bdd..2319c172 100644 --- a/packages/config-tsconfig/react.json +++ b/tooling/config-tsconfig/react.json @@ -2,16 +2,16 @@ "$schema": "https://json.schemastore.org/tsconfig", "display": "React", "compilerOptions": { - "incremental": true, "target": "ES2020", "module": "Node16", "moduleResolution": "Node16", "jsx": "react-jsx", "declaration": true, "declarationMap": true, - "outDir": "dist", + "outDir": "./dist", "strict": true, "esModuleInterop": true, + "resolveJsonModule": true, "skipLibCheck": true }, "include": ["src/**/*.ts", "src/**/*.tsx"], diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 7c215ec1..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - "jsx": "react-jsx" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - "noEmit": true /* Do not emit outputs. */, - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - "isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */, - - /* Strict Type-Checking Options */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - "noUnusedLocals": true /* Report errors on unused locals. */, - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - "typeRoots": [ - "node_modules/@types" - ] /* List of folders to include type definitions from. */, - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - "useUnknownInCatchVariables": false, - "resolveJsonModule": true - } -} diff --git a/turbo.json b/turbo.json index c524692e..16b0de22 100644 --- a/turbo.json +++ b/turbo.json @@ -10,19 +10,14 @@ "dependsOn": ["^build"] }, "dev": { - "cache": false, - "dependsOn": ["^build"] + "cache": false }, "test": { "dependsOn": ["^build"] }, "test:integration": {}, - "lint": { - "dependsOn": ["^build"] - }, - "lint:fix": { - "dependsOn": ["^build"] - }, + "lint": {}, + "lint:fix": {}, "type-check": { "dependsOn": ["^build"] },