From 6d792771a094979ef114afdfcb048cdeace4d0d2 Mon Sep 17 00:00:00 2001 From: Tracy French Date: Mon, 9 Dec 2024 10:13:12 -0700 Subject: [PATCH] fix: internal packages --- .github/workflows/validate.yml | 2 +- .stylelintignore | 11 - apps/dev-env/.eslintrc.cjs | 17 +- apps/dev-env/package.json | 4 +- apps/dev-env/playwright.config.ts | 5 +- apps/doc-site/.eslintrc.cjs | 6 + apps/doc-site/.eslintrc.js | 4 - apps/doc-site/package.json | 4 +- configuration/eslint-config/index.js | 4 +- configuration/eslint-config/package.json | 12 +- configuration/packaging/package.json | 28 + configuration/packaging/src/postpack.cts | 21 + configuration/packaging/src/prepack.cts | 22 + configuration/packaging/tsconfig.json | 5 + configuration/ts-config/package.json | 6 +- configuration/ts-config/tsconfig.base.json | 9 +- configuration/ts-config/tsconfig.build.json | 3 +- configuration/vite-config/.eslintrc.cjs | 19 + configuration/vite-config/package.json | 30 + configuration/vite-config/src/copyPlugin.ts | 55 + .../vite-config/src/definePackageConfig.ts | 198 + .../vite-config/src/installedPackages.ts | 96 + configuration/vite-config/src/package.ts | 12 + configuration/vite-config/src/packageJson.ts | 65 + .../vite-config/src/packageRegistry.ts | 101 + configuration/vite-config/tsconfig.json | 5 + docs/BuildingPackages.md | 8 + package-lock.json | 2859 ++++++------ package.json | 59 +- packages/core-util/.eslintrc.cjs | 17 +- packages/core-util/package.json | 45 +- packages/core-util/src/index.ts | 17 +- packages/core-util/tsconfig.cjs.json | 11 - packages/core-util/tsconfig.esm.json | 11 - packages/core-util/tsconfig.json | 2 +- packages/core-util/vite.config.ts | 7 + ....timestamp-1733762734255-3c93da12d0b58.mjs | 12 + packages/core-util/vitest.config.ts | 21 - packages/core/.eslintrc.cjs | 17 +- packages/core/package.json | 51 +- packages/core/src/common/time.ts | 13 +- .../request-scheduler/requestScheduler.ts | 2 +- packages/core/src/index.ts | 13 +- packages/core/tsconfig.cjs.json | 11 - packages/core/tsconfig.esm.json | 11 - packages/core/tsconfig.json | 5 +- packages/core/vite.config.ts | 7 + packages/core/vitest.config.ts | 21 - packages/dashboard/.eslintrc.cjs | 10 +- packages/dashboard/package.json | 46 +- .../src/components/contextMenu/menu.css | 2 +- .../dragLayer/components/widget.css | 2 +- .../src/components/dragLayer/index.css | 7 +- .../dashboard/src/components/grid/grid.css | 4 +- .../internalDashboard/collapsiblePanel.tsx | 12 +- .../components/internalDashboard/index.css | 17 +- .../src/components/userSelection/index.css | 2 +- .../src/components/widgets/selectionBox.css | 2 +- .../components/widgets/selectionBoxAnchor.css | 2 +- .../src/components/widgets/widget.css | 2 +- .../customization/widgets/text/component.css | 2 +- .../widgets/text/styledText/index.css | 2 +- .../widgets/text/styledText/textArea.css | 2 +- packages/dashboard/svgTransform.js | 12 - packages/dashboard/tsconfig.cjs.json | 15 - packages/dashboard/tsconfig.esm.json | 15 - packages/dashboard/vite.config.ts | 23 +- packages/data-mocked/.eslintrc.cjs | 17 +- packages/data-mocked/package.json | 15 +- packages/helpers/.eslintignore | 3 +- packages/helpers/.eslintrc.cjs | 17 +- packages/helpers/package.json | 32 +- packages/helpers/src/constants/time.ts | 3 + packages/helpers/src/index.ts | 7 + packages/helpers/vite.config.ts | 5 + packages/react-components/.eslintignore | 1 + packages/react-components/.eslintrc.cjs | 21 +- packages/react-components/package.json | 66 +- .../react-components/playwright.config.ts | 4 +- .../knowledge-graph/graph/graph-view.tsx | 3 +- packages/react-components/svgTransform.cjs | 12 - packages/react-components/tsconfig.cjs.json | 17 - packages/react-components/tsconfig.esm.json | 17 - packages/react-components/vite.config.ts | 28 +- packages/scene-composer/.eslintrc.cjs | 13 +- packages/scene-composer/.husky/pre-commit | 4 - packages/scene-composer/package.json | 77 +- packages/scene-composer/playwright.config.ts | 4 +- .../DefaultErrorFallback.spec.tsx.snap | 88 - .../ConvertingProgress.spec.tsx.snap | 483 -- .../DeleteNodeModalSnap.spec.tsx.snap | 38 - .../SceneHierarchyPanel.spec.tsx.snap | 416 -- .../ComponentTypeIcon.spec.tsx.snap | 302 -- .../__snapshots__/SettingsPanel.spec.tsx.snap | 3256 ------------- .../SceneNodeInspectorPanel.spec.tsx.snap | 4076 ++--------------- .../AnimationComponentEditor.spec.tsx.snap | 600 --- ...taOverlayComponentEditorSnap.spec.tsx.snap | 288 -- ...IndicatorComponentEditorSnap.spec.tsx.snap | 369 -- .../AppearanceEditor.spec.tsx.snap | 1425 ------ .../SceneRuleTargetColorEditor.spec.tsx.snap | 186 - .../SceneRuleTargetEditor.spec.tsx.snap | 771 ---- .../ComponentVisibilityToggle.spec.tsx.snap | 88 - ...eneDataBindingTemplateEditor.spec.tsx.snap | 576 --- .../__snapshots__/ItemContainer.spec.tsx.snap | 334 -- .../src/{index.tsx => index.ts} | 0 .../FoldableContainer.spec.tsx.snap | 178 - .../TabbedPanelContainer.spec.tsx.snap | 178 - .../__snapshots__/StaticLayout.spec.tsx.snap | 260 -- packages/scene-composer/tsconfig.cjs.json | 22 - packages/scene-composer/tsconfig.esm.json | 23 - packages/scene-composer/vite.config.ts | 21 +- packages/source-iotsitewise/.eslintrc.cjs | 17 +- packages/source-iotsitewise/package.json | 61 +- .../requestProcessorWorkerGroup.spec.ts | 7 +- packages/source-iotsitewise/tsconfig.cjs.json | 11 - packages/source-iotsitewise/tsconfig.esm.json | 11 - packages/source-iotsitewise/tsconfig.json | 2 +- packages/source-iotsitewise/vite.config.ts | 7 + packages/source-iotsitewise/vitest.config.ts | 21 - packages/source-iottwinmaker/.eslintrc.cjs | 17 +- packages/source-iottwinmaker/package.json | 69 +- .../source-iottwinmaker/tsconfig.cjs.json | 11 - .../source-iottwinmaker/tsconfig.esm.json | 11 - packages/source-iottwinmaker/tsconfig.json | 2 +- packages/source-iottwinmaker/vite.config.ts | 7 + packages/source-iottwinmaker/vitest.config.ts | 21 - packages/testing-util/.eslintignore | 2 - packages/testing-util/.eslintrc.cjs | 17 +- packages/testing-util/package.json | 40 +- packages/testing-util/tsconfig.cjs.json | 9 - packages/testing-util/tsconfig.esm.json | 9 - packages/tools-iottwinmaker/.eslintrc.cjs | 17 +- packages/tools-iottwinmaker/package.json | 39 +- .../src/{build.ts => configurePlatform.cts} | 0 packages/tools-iottwinmaker/src/index.ts | 1 + packages/tools-iottwinmaker/tsconfig.cjs.json | 12 - packages/tools-iottwinmaker/tsconfig.esm.json | 12 - packages/tools-iottwinmaker/tsconfig.json | 2 +- packages/tools-iottwinmaker/vite.config.ts | 5 + packages/tools-iottwinmaker/vitest.config.ts | 20 - turbo.json | 162 +- 141 files changed, 2983 insertions(+), 16126 deletions(-) delete mode 100644 .stylelintignore create mode 100644 apps/doc-site/.eslintrc.cjs delete mode 100644 apps/doc-site/.eslintrc.js create mode 100644 configuration/packaging/package.json create mode 100755 configuration/packaging/src/postpack.cts create mode 100755 configuration/packaging/src/prepack.cts create mode 100644 configuration/packaging/tsconfig.json create mode 100644 configuration/vite-config/.eslintrc.cjs create mode 100644 configuration/vite-config/package.json create mode 100644 configuration/vite-config/src/copyPlugin.ts create mode 100644 configuration/vite-config/src/definePackageConfig.ts create mode 100644 configuration/vite-config/src/installedPackages.ts create mode 100644 configuration/vite-config/src/package.ts create mode 100644 configuration/vite-config/src/packageJson.ts create mode 100644 configuration/vite-config/src/packageRegistry.ts create mode 100644 configuration/vite-config/tsconfig.json create mode 100644 docs/BuildingPackages.md delete mode 100644 packages/core-util/tsconfig.cjs.json delete mode 100644 packages/core-util/tsconfig.esm.json create mode 100644 packages/core-util/vite.config.ts create mode 100644 packages/core-util/vite.config.ts.timestamp-1733762734255-3c93da12d0b58.mjs delete mode 100644 packages/core-util/vitest.config.ts delete mode 100644 packages/core/tsconfig.cjs.json delete mode 100644 packages/core/tsconfig.esm.json create mode 100644 packages/core/vite.config.ts delete mode 100644 packages/core/vitest.config.ts delete mode 100644 packages/dashboard/svgTransform.js delete mode 100644 packages/dashboard/tsconfig.cjs.json delete mode 100644 packages/dashboard/tsconfig.esm.json create mode 100644 packages/helpers/src/index.ts create mode 100644 packages/helpers/vite.config.ts delete mode 100644 packages/react-components/svgTransform.cjs delete mode 100644 packages/react-components/tsconfig.cjs.json delete mode 100644 packages/react-components/tsconfig.esm.json delete mode 100755 packages/scene-composer/.husky/pre-commit rename packages/scene-composer/src/{index.tsx => index.ts} (100%) delete mode 100644 packages/scene-composer/tsconfig.cjs.json delete mode 100644 packages/scene-composer/tsconfig.esm.json delete mode 100644 packages/source-iotsitewise/tsconfig.cjs.json delete mode 100644 packages/source-iotsitewise/tsconfig.esm.json create mode 100644 packages/source-iotsitewise/vite.config.ts delete mode 100644 packages/source-iotsitewise/vitest.config.ts delete mode 100644 packages/source-iottwinmaker/tsconfig.cjs.json delete mode 100644 packages/source-iottwinmaker/tsconfig.esm.json create mode 100644 packages/source-iottwinmaker/vite.config.ts delete mode 100644 packages/source-iottwinmaker/vitest.config.ts delete mode 100644 packages/testing-util/.eslintignore delete mode 100644 packages/testing-util/tsconfig.cjs.json delete mode 100644 packages/testing-util/tsconfig.esm.json rename packages/tools-iottwinmaker/src/{build.ts => configurePlatform.cts} (100%) create mode 100644 packages/tools-iottwinmaker/src/index.ts delete mode 100644 packages/tools-iottwinmaker/tsconfig.cjs.json delete mode 100644 packages/tools-iottwinmaker/tsconfig.esm.json create mode 100644 packages/tools-iottwinmaker/vite.config.ts delete mode 100644 packages/tools-iottwinmaker/vitest.config.ts diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 15cc60586..5ac740f57 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -113,7 +113,7 @@ jobs: ${{ runner.os }}-test-lint-${{ matrix.package}}- - name: Validate - run: npx turbo build:cjs build:es lint test --filter=@iot-app-kit/${{ matrix.package }} + run: npx turbo build lint test --filter=@iot-app-kit/${{ matrix.package }} playwright: needs: repo diff --git a/.stylelintignore b/.stylelintignore deleted file mode 100644 index 698f0d704..000000000 --- a/.stylelintignore +++ /dev/null @@ -1,11 +0,0 @@ -build/ -dist/ -www/ -loader/ -node_modules/ -examples/ -**/coverage/* -coverage/ -packages/dashboard/src/components/internalDashboard/index.css -packages/react-components/styles.css -storybook-static diff --git a/apps/dev-env/.eslintrc.cjs b/apps/dev-env/.eslintrc.cjs index 5b89c5273..1e26c8faf 100644 --- a/apps/dev-env/.eslintrc.cjs +++ b/apps/dev-env/.eslintrc.cjs @@ -1,4 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit'], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['apps/dev-env/tsconfig.json'], + }, + node: { + project: ['apps/dev-env/tsconfig.json'], + }, + }, + }, }; diff --git a/apps/dev-env/package.json b/apps/dev-env/package.json index 56a2b9e43..25958e0fa 100644 --- a/apps/dev-env/package.json +++ b/apps/dev-env/package.json @@ -10,7 +10,7 @@ "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/ & tsc --noEmit", "fix": "eslint --fix . --cache --cache-location ./cache/eslint/", "test:ui": "npx playwright test", - "test:ui:ci": "npx playwright test", + "test:ui:ci": "NODE_OPTIONS='-C @iot-app-kit/development' npx playwright test", "test:ui:watch": "npx playwright test --ui" }, "dependencies": { @@ -22,6 +22,7 @@ "@iot-app-kit/core-util": "*", "@iot-app-kit/dashboard": "*", "@iot-app-kit/data-mocked": "*", + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/helpers": "*", "@iot-app-kit/ts-config": "*", "@playwright/test": "^1.48.2", @@ -34,7 +35,6 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@vitejs/plugin-react": "^4.3.3", - "eslint-config-iot-app-kit": "*", "lodash-es": "^4.17.21", "msw-storybook-addon": "^2.0.4", "react": "^18.2.0", diff --git a/apps/dev-env/playwright.config.ts b/apps/dev-env/playwright.config.ts index b94292d15..d6198c0c3 100644 --- a/apps/dev-env/playwright.config.ts +++ b/apps/dev-env/playwright.config.ts @@ -1,7 +1,4 @@ -import { - MINUTE_IN_MS, - SECOND_IN_MS, -} from '@iot-app-kit/helpers/constants/time'; +import { MINUTE_IN_MS, SECOND_IN_MS } from '@iot-app-kit/helpers'; import { defineConfig, devices } from '@playwright/test'; /** diff --git a/apps/doc-site/.eslintrc.cjs b/apps/doc-site/.eslintrc.cjs new file mode 100644 index 000000000..eee136b9d --- /dev/null +++ b/apps/doc-site/.eslintrc.cjs @@ -0,0 +1,6 @@ +const base = require('@iot-app-kit/eslint-config'); + +module.exports = { + ...base, + root: true, +}; diff --git a/apps/doc-site/.eslintrc.js b/apps/doc-site/.eslintrc.js deleted file mode 100644 index 5b89c5273..000000000 --- a/apps/doc-site/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - root: true, - extends: ['iot-app-kit'], -}; diff --git a/apps/doc-site/package.json b/apps/doc-site/package.json index 78aba7a1c..bf90afed8 100644 --- a/apps/doc-site/package.json +++ b/apps/doc-site/package.json @@ -15,7 +15,8 @@ "fix": "eslint --fix . --cache --cache-location .cache/eslint/" }, "devDependencies": { - "@iot-app-kit/testing-util": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/testing-util": "*", "@storybook/addon-essentials": "^8.4.5", "@storybook/addon-interactions": "^8.4.5", "@storybook/addon-links": "^8.4.5", @@ -26,7 +27,6 @@ "@storybook/theming": "^8.4.5", "@types/node": "^18.16.18", "@vitejs/plugin-react": "^4.3.3", - "eslint-config-iot-app-kit": "12.2.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/configuration/eslint-config/index.js b/configuration/eslint-config/index.js index a3fd8f783..8da5b384c 100644 --- a/configuration/eslint-config/index.js +++ b/configuration/eslint-config/index.js @@ -37,7 +37,9 @@ module.exports = { pragma: 'h', }, 'import/resolver': { - typescript: true, + typescript: { + conditionNames: ['@iot-app-kit/development'], + }, node: true, }, }, diff --git a/configuration/eslint-config/package.json b/configuration/eslint-config/package.json index d3670b8c1..cbb59e065 100644 --- a/configuration/eslint-config/package.json +++ b/configuration/eslint-config/package.json @@ -1,10 +1,11 @@ { - "name": "eslint-config-iot-app-kit", + "name": "@iot-app-kit/eslint-config", + "version": "12.2.1", "main": "index.js", "private": true, - "files": [ - "index.js" - ], + "exports": { + ".": "./index.js" + }, "scripts": { "clean:nuke": "rimraf node_modules" }, @@ -31,6 +32,5 @@ "@types/node": "^18.16.18", "eslint-import-resolver-typescript": "^3.6.0", "typescript": "^5.5.4" - }, - "version": "12.2.1" + } } diff --git a/configuration/packaging/package.json b/configuration/packaging/package.json new file mode 100644 index 000000000..4a76331df --- /dev/null +++ b/configuration/packaging/package.json @@ -0,0 +1,28 @@ +{ + "name": "@iot-app-kit/packaging", + "version": "12.2.1", + "private": true, + "files": [ + "dist" + ], + "type": "module", + "exports": { + ".": "./src/prepack.cts" + }, + "scripts": { + "clean": "rimraf .cache .turbo", + "clean:nuke": "npm run clean && rimraf node_modules" + }, + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@types/node": "^18.16.18", + "fs-extra": "^11.2.0", + "lodash-es": "^4.17.21", + "rimraf": "^5.0.1", + "rollup-plugin-copy": "^3.5.0", + "typescript": "^5.5.4", + "vite": "^5.4.11", + "vite-plugin-dts": "^4.3.0" + } +} diff --git a/configuration/packaging/src/postpack.cts b/configuration/packaging/src/postpack.cts new file mode 100755 index 000000000..3be26ae76 --- /dev/null +++ b/configuration/packaging/src/postpack.cts @@ -0,0 +1,21 @@ +#!/usr/bin/env -S npx tsx +import * as fse from 'fs-extra'; + +function postpack() { + const sharedDependencies = process.argv.slice(2); + + revertSharedPackageVersions(sharedDependencies); +} + +function revertSharedPackageVersions(sharedDependencies: string[]) { + const packageJsonPath = './package.json'; + const packageJson = fse.readJSONSync(packageJsonPath); + + sharedDependencies.forEach((dep) => { + packageJson.dependencies[`@iot-app-kit/${dep}`] = '*'; + }); + + fse.writeJSONSync(packageJsonPath, packageJson, { spaces: 2 }); +} + +postpack(); diff --git a/configuration/packaging/src/prepack.cts b/configuration/packaging/src/prepack.cts new file mode 100755 index 000000000..f85e04598 --- /dev/null +++ b/configuration/packaging/src/prepack.cts @@ -0,0 +1,22 @@ +#!/usr/bin/env -S npx tsx +import * as fse from 'fs-extra'; + +function prepack() { + const sharedDependencies = process.argv.slice(2); + + setSharedPackageVersions(sharedDependencies); +} + +function setSharedPackageVersions(sharedDependencies: string[]) { + const packageJsonPath = './package.json'; + const packageJson = fse.readJSONSync(packageJsonPath); + console.log(packageJson); + + sharedDependencies.forEach((dep) => { + packageJson.dependencies[`@iot-app-kit/${dep}`] = `file:./dist/${dep}`; + }); + + fse.writeJSONSync(packageJsonPath, packageJson, { spaces: 2 }); +} + +prepack(); diff --git a/configuration/packaging/tsconfig.json b/configuration/packaging/tsconfig.json new file mode 100644 index 000000000..2ee437d64 --- /dev/null +++ b/configuration/packaging/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@iot-app-kit/ts-config/tsconfig.base.json", + "include": ["src"] +} diff --git a/configuration/ts-config/package.json b/configuration/ts-config/package.json index dbd6894ff..8e803a4c6 100644 --- a/configuration/ts-config/package.json +++ b/configuration/ts-config/package.json @@ -1,7 +1,8 @@ { "name": "@iot-app-kit/ts-config", - "type": "module", + "version": "12.2.1", "private": true, + "type": "module", "files": [ "tsconfig.base.json", "tsconfig.cjs.json", @@ -14,6 +15,5 @@ "@types/node": "^18.16.18", "rimraf": "^5.0.1", "typescript": "^5.5.4" - }, - "version": "12.2.1" + } } diff --git a/configuration/ts-config/tsconfig.base.json b/configuration/ts-config/tsconfig.base.json index 8dff814cc..797dcdedc 100644 --- a/configuration/ts-config/tsconfig.base.json +++ b/configuration/ts-config/tsconfig.base.json @@ -1,10 +1,12 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "allowUnreachableCode": false, - "allowUnusedLabels": false, "declaration": true, + "declarationDir": "dist", "declarationMap": true, + "sourceMap": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "inlineSources": false, @@ -18,6 +20,7 @@ "module": "ESNext", "moduleResolution": "bundler", "target": "ESNEXT", - "jsx": "react-jsx" + "jsx": "react-jsx", + "customConditions": ["@iot-app-kit/development"] } } diff --git a/configuration/ts-config/tsconfig.build.json b/configuration/ts-config/tsconfig.build.json index d8198911c..a5202a750 100644 --- a/configuration/ts-config/tsconfig.build.json +++ b/configuration/ts-config/tsconfig.build.json @@ -5,6 +5,7 @@ "declaration": true, "declarationMap": true, "sourceMap": true, - "incremental": true + "incremental": true, + "customConditions": null } } diff --git a/configuration/vite-config/.eslintrc.cjs b/configuration/vite-config/.eslintrc.cjs new file mode 100644 index 000000000..4df767965 --- /dev/null +++ b/configuration/vite-config/.eslintrc.cjs @@ -0,0 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + +module.exports = { + ...base, + root: true, + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['configuration/vite-config/tsconfig.json'], + }, + node: { + project: ['configuration/vite-config/tsconfig.json'], + }, + }, + }, +}; diff --git a/configuration/vite-config/package.json b/configuration/vite-config/package.json new file mode 100644 index 000000000..808598ebd --- /dev/null +++ b/configuration/vite-config/package.json @@ -0,0 +1,30 @@ +{ + "name": "@iot-app-kit/vite-config", + "private": true, + "type": "module", + "exports": { + "./definePackageConfig": "./src/definePackageConfig.ts" + }, + "scripts": { + "clean": "rimraf .cache .turbo", + "clean:nuke": "npm run clean && rimraf node_modules", + "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/", + "fix": "eslint --fix . --cache --cache-location ./cache/eslint/", + "test:typescript": "tsc --noEmit" + }, + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@types/node": "^18.16.18", + "rimraf": "^5.0.1" + }, + "dependencies": { + "fs-extra": "^11.2.0", + "lodash-es": "^4.17.21", + "rollup-plugin-copy": "^3.5.0", + "tiny-invariant": "^1.3.1", + "typescript": "^5.5.4", + "vite": "^5.4.11", + "vite-plugin-dts": "^4.3.0" + } +} diff --git a/configuration/vite-config/src/copyPlugin.ts b/configuration/vite-config/src/copyPlugin.ts new file mode 100644 index 000000000..2d1490eb0 --- /dev/null +++ b/configuration/vite-config/src/copyPlugin.ts @@ -0,0 +1,55 @@ +import { resolve } from 'path'; +import copy from 'rollup-plugin-copy'; +import { Plugin } from 'vite'; +import { listInstalledPackages } from './installedPackages'; +import { type PackageName, type PackageShortName } from './package'; +import { type PackageJson } from './packageJson'; + +export interface CopyPackagePluginOptions { + dir: string; + packageJson: PackageJson; +} + +export function copyProtectedPackagesPlugin({ + dir, + packageJson, +}: CopyPackagePluginOptions): Plugin { + const packagesToCopy = listInstalledPackages(packageJson, { + filter: { dependencyType: 'dependencies', scope: 'protected' }, + }); + + // To enable installation of unpublished shared packages when an + // external consumer is installing an iot-app-kit package, the + // compiled code and the package.json file of each shared package is + // copied into the consuming package. The result of the copy is a + // something resembling what is installed into the external consumers + // node_modules. + return copy({ + // Copy after the code is transformed. + hook: 'writeBundle', + targets: packagesToCopy.flatMap((iotAppKitPackage) => { + const packageShortName = getPackageShortName(iotAppKitPackage.name); + + const packagePath = getSiblingPackagePath(packageShortName, dir); + const artifactsSrc = resolve(packagePath, 'dist'); + const packageJSONSrc = resolve(packagePath, 'package.json'); + const copyDest = resolve(dir, `dist/${packageShortName}`); + + return [ + { src: artifactsSrc, dest: copyDest }, + { src: packageJSONSrc, dest: copyDest }, + ]; + }), + }); +} + +function getPackageShortName(packageName: PackageName): PackageShortName { + return packageName.split('/')[1] as PackageShortName; +} + +function getSiblingPackagePath( + siblingPackageShortName: string, + dirname: string +): string { + return resolve(dirname, `../${siblingPackageShortName}`); +} diff --git a/configuration/vite-config/src/definePackageConfig.ts b/configuration/vite-config/src/definePackageConfig.ts new file mode 100644 index 000000000..6a1764821 --- /dev/null +++ b/configuration/vite-config/src/definePackageConfig.ts @@ -0,0 +1,198 @@ +/// +import mergeWith from 'lodash-es/mergeWith.js'; +import { resolve } from 'path'; +import { + defineConfig, + type AliasOptions as ViteAliasOptions, + type UserConfig as ViteConfig, +} from 'vite'; +import dts from 'vite-plugin-dts'; +import { copyProtectedPackagesPlugin } from './copyPlugin'; +import { getShortName } from './package'; +import { readPackageJson } from './packageJson'; +import { listRegisteredPackages } from './packageRegistry'; + +// re-export to prevent making TypeScript angry from re-alias +export type { ViteConfig }; + +export interface PackageViteConfig extends ViteConfig { + iotAppKitPackage: { + /** + * Specify the name of the directory containing the package. + * + * @example __dirname + */ + dirname: string; + }; +} + +/** + * Use and extend the default iot-app-kit Vite configuration. + * + * // TODO: Document issue with importing TypeScript code + * // from different a monorepo package into vite.config.ts. + */ +export function definePackageConfig( + /** + * Define package-specific Vite config settings to recursively merge with the + * base configuration. + */ + { iotAppKitPackage: { dirname }, ...customViteConfig }: PackageViteConfig +): ViteConfig { + const packageJson = readPackageJson(resolve(dirname, './package.json')); + + console.info(`*** Configuring package: ${packageJson.name}... ***`); + console.info(`*** Checking package dependencies... ***`); + + const allPackages = listRegisteredPackages(); + const protectedPackages = listRegisteredPackages({ + filter: { scope: 'protected' }, + }); + + const packageAliases = protectedPackages.reduce( + (acc, protectedPackage) => { + const protectedPackageShortName = getShortName(protectedPackage.name); + + return { + ...acc, + [protectedPackage.name]: resolve( + dirname, + `../${protectedPackageShortName}/src` + ), + } satisfies ViteAliasOptions; + }, + {} + ); + + // return defineConfig( + // Package-specific configuration is recursively merged with the base + // configuration defined here to provide packages flexibility in their + // build process within the constraints defined by the library. + const mergedConfig = mergeWith( + customViteConfig, + { + resolve: { + // Provide Vite the location of the source code of protected packages + // during development. This allows the compiler to optimize the import + // and transformation of shared packaged during development activities, + // such as unit testing and running Storybook, when the source code is + // used directly. + alias: { ...packageAliases }, + + // Provide Vite the flag used to signal it source reference the source + // code of dependent packages directly during development. The flag is + // also utilized in a package's package.json file to configure the + // `exports` setting to point to the source code during development, or + // the dist otherwise. This flag is additionally referenced in the base + // tsconfig.json used by all packages (i.e., tsconfig.base.json) to + // "activate" the flag during development. + conditions: ['@iot-app-kit/development'], + }, + + test: { + // Vitest must know the location of any aliases + alias: { ...packageAliases }, + // performance optimization + pool: 'threads', + // It is recommended to colocate Vitest tests with the source code. + include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'], + // Do not require vitest to be imported into test files + globals: true, + // Do not process CSS files for tests. + css: false, + // Use happy-dom over jsdom for faster unit tests. + environment: 'happy-dom', + setupFiles: ['jest-extended/all'], + }, + + build: { + // Every package should be built into a `dist` directory contained + // within the package being built. + outDir: 'dist', + // Use library setting to avoid optimizations meant for applications. + lib: { + // Every package should define a root index file at the defined + // location. + // + // TODO: Enable packages to expose multiple entry points to enable + // consumers, including ourselves, to effectively perform + // code-splitting. + entry: './src/index.ts', + }, + // Vite does not respect the sourceMap setting defined in + // tsconfig.json. + sourcemap: true, + rollupOptions: { + // We bundle both ESM and CJS modules to ensure the maximum + // compatability with the majority of build tools and runtimes. + output: [ + { + dir: 'dist/esm', + format: 'esm', + // The directory and file structure is preserved during + // transpilation, instead of bundling the code into a single + // file. Some build tools are not able to effectively tree-shake + // unused library code when it is bundled into a single file. + // This results in the bundle size of the consumer being larger + // then necessary. By not bundling our code, the consumer is + // more in control of what they bundle from our library. + preserveModules: true, + preserveModulesRoot: 'src', + // Retain the actual name of the file during transpilation. + entryFileNames: '[name].js', + }, + { + dir: 'dist/cjs', + format: 'cjs', + preserveModules: true, + preserveModulesRoot: 'src', + entryFileNames: '[name].cjs.js', + }, + ], + external: [ + // Prevent node_modules from being compiled and included in the + // the package's dist. + /node_modules/, + + // Prevent the package from compiling the source code of aliased + // protected packages. + ...allPackages.map(({ name }) => name), + ], + }, + }, + + plugins: [ + // Vite doesn't generate declaration files automatically and does not + // care about what's defined in the package.json. we need to use a + // plugin to generate the types. + dts({ + tsconfigPath: resolve(dirname, './tsconfig.json'), + // The dts plugin does use all of the settings of the tsconfig.json + // file it is using to build the declaration files. The following + // options need to be set to be set. Consistency across packages + // enables us to avoid package-specific configuration of these + // options. + include: ['src'], + outDir: ['dist/esm', 'dist/cjs'], + // All of the code being distributed by a package should be contained + // within the package's `src` directory. + exclude: [ + './src/**/*.spec.*', + './src/**/*.test.*', + './src/**/__mocks__', + ], + }), + copyProtectedPackagesPlugin({ dir: dirname, packageJson }), + ], + } satisfies ViteConfig, + // _.merge does not concat arrays, so we use _.mergeWith instead with a + // custom resolver. + (baseConfigValue: unknown, customConfigValue: unknown) => { + if (Array.isArray(baseConfigValue)) { + return baseConfigValue.concat(customConfigValue); + } + } + ); + + return defineConfig(mergedConfig); +} diff --git a/configuration/vite-config/src/installedPackages.ts b/configuration/vite-config/src/installedPackages.ts new file mode 100644 index 000000000..1427f9ccf --- /dev/null +++ b/configuration/vite-config/src/installedPackages.ts @@ -0,0 +1,96 @@ +import { + type PackageConfig, + type PackageName, + type PackageScope, +} from './package'; +import { type PackageJson } from './packageJson'; +import { packageRegistry } from './packageRegistry'; + +export interface InstalledPackage { + name: PackageName; + scope: PackageScope; + dependencyType: 'dependencies' | 'devDependencies'; +} + +export function listInstalledPackages( + packageJson: PackageJson, + options?: { + filter?: { + dependencyType?: InstalledPackage['dependencyType']; + scope?: InstalledPackage['scope']; + }; + } +): readonly InstalledPackage[] { + const installedPackages: InstalledPackage[] = [ + ...Object.keys(packageJson.dependencies ?? {}) + .filter(isRegisteredPackage) + .map(createInstalledPackage({ dependencyType: 'dependencies' })), + ...Object.keys(packageJson.devDependencies ?? {}) + .filter(isRegisteredPackage) + .map(createInstalledPackage({ dependencyType: 'devDependencies' })), + ]; + + return installedPackages + .filter((installedPackage) => { + const shouldListPackagesInDependencies = + options?.filter?.dependencyType == null || + options.filter.dependencyType === 'dependencies'; + + return ( + shouldListPackagesInDependencies && + installedPackage.dependencyType === 'dependencies' + ); + }) + .filter((installedPackage) => { + const shouldListPackagesInDevDependencies = + options?.filter?.dependencyType == null || + options.filter.dependencyType === 'devDependencies'; + return ( + shouldListPackagesInDevDependencies && + installedPackage.dependencyType === 'devDependencies' + ); + }) + .filter((installedPackage) => { + const shouldListPublicScopePackages = + options?.filter?.scope == null || options.filter.scope === 'public'; + + return ( + shouldListPublicScopePackages && installedPackage.scope === 'public' + ); + }) + .filter((installedPackage) => { + const shouldListProtectedScopePackages = + options?.filter?.scope == null || options.filter.scope === 'protected'; + + return ( + shouldListProtectedScopePackages && + installedPackage.scope === 'protected' + ); + }); +} + +function createInstalledPackage(options: { + dependencyType: InstalledPackage['dependencyType']; +}) { + return function createInstalledPackageWithOptions( + packageName: PackageName + ): InstalledPackage { + const packageConfig = getPackageConfig(packageName); + + return { + name: packageName, + scope: packageConfig.scope, + dependencyType: options.dependencyType, + }; + }; +} + +function isRegisteredPackage( + packageName: string | PackageName +): packageName is PackageName { + return packageRegistry[packageName as PackageName] != null; +} + +function getPackageConfig(packageName: PackageName): PackageConfig { + return packageRegistry[packageName]; +} diff --git a/configuration/vite-config/src/package.ts b/configuration/vite-config/src/package.ts new file mode 100644 index 000000000..252674e98 --- /dev/null +++ b/configuration/vite-config/src/package.ts @@ -0,0 +1,12 @@ +import type { Split } from 'type-fest'; + +export type PackageName = `@iot-app-kit/${string}`; +export type PackageShortName = Split[1]; +export type PackageScope = 'public' | 'protected'; +export interface PackageConfig { + scope: PackageScope; +} + +export function getShortName(packageName: PackageName): PackageShortName { + return packageName.split('/')[1]; +} diff --git a/configuration/vite-config/src/packageJson.ts b/configuration/vite-config/src/packageJson.ts new file mode 100644 index 000000000..9d8d9f6b7 --- /dev/null +++ b/configuration/vite-config/src/packageJson.ts @@ -0,0 +1,65 @@ +import fse from 'fs-extra'; +import invariant from 'tiny-invariant'; +import type { PackageJson as BasePackageJson } from 'type-fest'; +import { type PackageConfig } from './package'; + +export interface PackageJson extends BasePackageJson { + iotAppKit: PackageConfig; + // We validate these, so we override these to remove their default annoation. + name: string; + version: string; +} + +export function readPackageJson(packageJsonPath: string): PackageJson { + console.info( + `*** Reading package.json file from path: ${packageJsonPath} ***` + ); + + try { + // Casted to replace any type with strong typing + const packageJson = fse.readJSONSync(packageJsonPath) as + | BasePackageJson + | unknown; + + invariant( + isValidPackageJson(packageJson), + `[iot-app-kit] Expected valid package.json: ${packageJsonPath}` + ); + + return packageJson; + } catch (error) { + console.error( + `*** Failed to read package.json file from path: ${packageJsonPath} ***` + ); + + throw error; + } +} + +export function hasPackageJson(packageJsonPath: string): boolean { + try { + return fse.readJSONSync(`../${packageJsonPath}/package.json`) != null; + } catch (error) { + return false; + } +} + +function isValidPackageJson( + maybePackageJson: PackageJson | unknown +): maybePackageJson is PackageJson { + const asPackageJson = maybePackageJson as PackageJson; + + // Protect ourselves from an exceptions when reading untrusted data. + try { + // TODO: Use more robust validation solution. + return ( + Boolean(asPackageJson.name) && + Boolean(asPackageJson.version) && + asPackageJson.iotAppKit != null && + (asPackageJson.iotAppKit.scope === 'public' || + asPackageJson.iotAppKit.scope === 'protected') + ); + } catch { + return false; + } +} diff --git a/configuration/vite-config/src/packageRegistry.ts b/configuration/vite-config/src/packageRegistry.ts new file mode 100644 index 000000000..dc6efd074 --- /dev/null +++ b/configuration/vite-config/src/packageRegistry.ts @@ -0,0 +1,101 @@ +import fse from 'fs-extra'; +import { + type PackageConfig, + type PackageName, + type PackageScope, +} from './package'; +import { + hasPackageJson, + readPackageJson, + type PackageJson, +} from './packageJson'; + +export interface PackageRegistry { + [name: PackageName]: PackageConfig; +} + +export const packageRegistry: PackageRegistry = createPackageRegistry(); + +function createPackageRegistry(): PackageRegistry { + const packageJsons = readAllPackageJsons(); + const packageRegistry: PackageRegistry = packageJsons.reduce( + (acc, current) => { + return { + ...acc, + [current.name]: current.iotAppKit, + }; + }, + {} + ); + + return packageRegistry; +} + +function readAllPackageJsons(): PackageJson[] { + const packagePaths = fse.readdirSync('../../packages'); + const packageJsons = packagePaths + .filter(hasPackageJson) + .map((packagePath) => readPackageJson(`../${packagePath}/package.json`)); + + return packageJsons; +} + +export interface RegisteredPackage { + name: PackageName; + scope: PackageScope; +} + +export interface ListRegisteredPackagesOptions { + filter?: { + scope?: PackageScope; + }; +} + +export function listRegisteredPackages( + options: ListRegisteredPackagesOptions = {} +): readonly RegisteredPackage[] { + const registeredPackages = ( + Object.keys(packageRegistry) as PackageName[] + ).map(createRegisteredPackage); + + return registeredPackages + .filter((registeredPackage) => { + const shouldListPublicScopePackages = + options.filter?.scope == null || options.filter.scope === 'public'; + + if ( + !shouldListPublicScopePackages && + registeredPackage.scope === 'public' + ) { + return false; + } else { + return true; + } + }) + .filter((registeredPackage) => { + const shouldListProtectedScopePackages = + options.filter?.scope == null || options.filter.scope === 'protected'; + + if ( + !shouldListProtectedScopePackages && + registeredPackage.scope === 'protected' + ) { + return false; + } else { + return true; + } + }); +} + +function createRegisteredPackage(packageName: PackageName): RegisteredPackage { + const packageConfig = getPackageConfig(packageName); + + return { + name: packageName, + scope: packageConfig.scope, + }; +} + +function getPackageConfig(packageName: PackageName): PackageConfig { + return packageRegistry[packageName]; +} diff --git a/configuration/vite-config/tsconfig.json b/configuration/vite-config/tsconfig.json new file mode 100644 index 000000000..2ee437d64 --- /dev/null +++ b/configuration/vite-config/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@iot-app-kit/ts-config/tsconfig.base.json", + "include": ["src"] +} diff --git a/docs/BuildingPackages.md b/docs/BuildingPackages.md new file mode 100644 index 000000000..d2473c03f --- /dev/null +++ b/docs/BuildingPackages.md @@ -0,0 +1,8 @@ +## Building packages + +### How does it work? + +- Dependencies must be built before the consuming package. +- `turbo build -F @iot-app-kit/core` +- `turbo build` +- `vite build` diff --git a/package-lock.json b/package-lock.json index 4fbd57c1e..0e540b98d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,10 +18,9 @@ "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@playwright/test": "^1.48.2", - "husky": "^8.0.3", "rimraf": "^5.0.1", - "stylelint": "14.16.1", - "stylelint-config-standard": "25.0.0", + "stylelint": "^16.11.0", + "stylelint-config-standard": "^36.0.1", "turbo": "^2.2.3" }, "engines": { @@ -40,6 +39,7 @@ "@iot-app-kit/core-util": "*", "@iot-app-kit/dashboard": "*", "@iot-app-kit/data-mocked": "*", + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/helpers": "*", "@iot-app-kit/ts-config": "*", "@playwright/test": "^1.48.2", @@ -52,7 +52,6 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@vitejs/plugin-react": "^4.3.3", - "eslint-config-iot-app-kit": "*", "lodash-es": "^4.17.21", "msw-storybook-addon": "^2.0.4", "react": "^18.2.0", @@ -73,7 +72,8 @@ "@iot-app-kit/react-components": "12.2.1" }, "devDependencies": { - "@iot-app-kit/testing-util": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/testing-util": "*", "@storybook/addon-essentials": "^8.4.5", "@storybook/addon-interactions": "^8.4.5", "@storybook/addon-links": "^8.4.5", @@ -84,7 +84,6 @@ "@storybook/theming": "^8.4.5", "@types/node": "^18.16.18", "@vitejs/plugin-react": "^4.3.3", - "eslint-config-iot-app-kit": "12.2.1", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -95,7 +94,7 @@ } }, "configuration/eslint-config": { - "name": "eslint-config-iot-app-kit", + "name": "@iot-app-kit/eslint-config", "version": "12.2.1", "dependencies": { "@typescript-eslint/eslint-plugin": "^5.60.0", @@ -122,6 +121,37 @@ "typescript": "^5.5.4" } }, + "configuration/packaging": { + "name": "@iot-app-kit/packaging", + "version": "12.2.1", + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@types/node": "^18.16.18", + "fs-extra": "^11.2.0", + "lodash-es": "^4.17.21", + "rimraf": "^5.0.1", + "rollup-plugin-copy": "^3.5.0", + "typescript": "^5.5.4", + "vite": "^5.4.11", + "vite-plugin-dts": "^4.3.0" + } + }, + "configuration/packaging/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "configuration/ts-config": { "name": "@iot-app-kit/ts-config", "version": "12.2.1", @@ -131,6 +161,38 @@ "typescript": "^5.5.4" } }, + "configuration/vite-config": { + "name": "@iot-app-kit/vite-config", + "dependencies": { + "fs-extra": "^11.2.0", + "lodash-es": "^4.17.21", + "rollup-plugin-copy": "^3.5.0", + "tiny-invariant": "^1.3.1", + "typescript": "^5.5.4", + "vite": "^5.4.11", + "vite-plugin-dts": "^4.3.0" + }, + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@types/node": "^18.16.18", + "rimraf": "^5.0.1" + } + }, + "configuration/vite-config/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "examples/react-app": { "version": "0.1.0", "dependencies": { @@ -7921,6 +7983,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "dev": true, "license": "ISC", "dependencies": { "cookie": "^0.7.2" @@ -7930,6 +7993,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, "license": "ISC", "dependencies": { "statuses": "^2.0.1" @@ -7939,6 +8003,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "dev": true, "license": "ISC", "dependencies": { "@types/tough-cookie": "^4.0.5", @@ -7949,6 +8014,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", @@ -7964,6 +8030,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -8385,21 +8452,94 @@ "node": ">=v18" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, - "license": "CC0-1.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^7.0.0" } }, "node_modules/@dnd-kit/accessibility": { @@ -8455,6 +8595,17 @@ "react": ">=16.8.0" } }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", @@ -8509,9 +8660,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", "cpu": [ "arm" ], @@ -8521,13 +8672,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", "cpu": [ "arm64" ], @@ -8537,13 +8688,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", "cpu": [ "x64" ], @@ -8553,13 +8704,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "cpu": [ "arm64" ], @@ -8569,13 +8720,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "cpu": [ "x64" ], @@ -8585,13 +8736,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", "cpu": [ "arm64" ], @@ -8601,13 +8752,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", "cpu": [ "x64" ], @@ -8617,13 +8768,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", "cpu": [ "arm" ], @@ -8633,13 +8784,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", "cpu": [ "arm64" ], @@ -8649,13 +8800,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", "cpu": [ "ia32" ], @@ -8665,13 +8816,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", "cpu": [ "loong64" ], @@ -8681,13 +8832,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", "cpu": [ "mips64el" ], @@ -8697,13 +8848,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", "cpu": [ "ppc64" ], @@ -8713,13 +8864,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", "cpu": [ "riscv64" ], @@ -8729,13 +8880,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", "cpu": [ "s390x" ], @@ -8745,13 +8896,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", "cpu": [ "x64" ], @@ -8761,13 +8912,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", "cpu": [ "x64" ], @@ -8777,13 +8928,29 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", "cpu": [ "x64" ], @@ -8793,13 +8960,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", "cpu": [ "x64" ], @@ -8809,13 +8976,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", "cpu": [ "arm64" ], @@ -8825,13 +8992,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", "cpu": [ "ia32" ], @@ -8841,13 +9008,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ "x64" ], @@ -8857,7 +9024,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -8994,6 +9161,7 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -9459,6 +9627,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.2.tgz", "integrity": "sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/core": "^10.1.0", @@ -9475,6 +9644,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.0.tgz", "integrity": "sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==", + "dev": true, "license": "MIT", "dependencies": { "@inquirer/figures": "^1.0.8", @@ -9495,6 +9665,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9510,12 +9681,14 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/@inquirer/core/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -9530,6 +9703,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -9544,6 +9718,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.8.tgz", "integrity": "sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -9553,6 +9728,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.1.tgz", "integrity": "sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -9899,10 +10075,18 @@ "resolved": "apps/doc-site", "link": true }, + "node_modules/@iot-app-kit/eslint-config": { + "resolved": "configuration/eslint-config", + "link": true + }, "node_modules/@iot-app-kit/helpers": { "resolved": "packages/helpers", "link": true }, + "node_modules/@iot-app-kit/packaging": { + "resolved": "configuration/packaging", + "link": true + }, "node_modules/@iot-app-kit/react-components": { "resolved": "packages/react-components", "link": true @@ -10046,6 +10230,10 @@ "resolved": "configuration/ts-config", "link": true }, + "node_modules/@iot-app-kit/vite-config": { + "resolved": "configuration/vite-config", + "link": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -10308,10 +10496,148 @@ "react": ">=16" } }, + "node_modules/@microsoft/api-extractor": { + "version": "7.48.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.48.0.tgz", + "integrity": "sha512-FMFgPjoilMUWeZXqYRlJ3gCVRhB7WU/HN88n8OLqEsmsG4zBdX/KQdtJfhq95LQTQ++zfu0Em1LLb73NqRCLYQ==", + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.30.0", + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.10.0", + "@rushstack/rig-package": "0.5.3", + "@rushstack/terminal": "0.14.3", + "@rushstack/ts-command-line": "4.23.1", + "lodash": "~4.17.15", + "minimatch": "~3.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.4.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.0.tgz", + "integrity": "sha512-26/LJZBrsWDKAkOWRiQbdVgcfd1F3nyJnAiJzsAgpouPk7LtOIj7PK9aJtBaw/pUXrkotEg27RrT+Jm/q0bbug==", + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.10.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", + "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", + "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.15.1", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@mswjs/interceptors": { "version": "0.37.1", "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.1.tgz", "integrity": "sha512-SvE+tSpcX884RJrPCskXxoS965Ky/pYABDEhWW6oeSRhpUDLrS5nTvT5n1LLSDVDYvty4imVmXsy+3/ROVuknA==", + "dev": true, "license": "MIT", "dependencies": { "@open-draft/deferred-promise": "^2.2.0", @@ -10374,12 +10700,14 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, "license": "MIT" }, "node_modules/@open-draft/logger": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, "license": "MIT", "dependencies": { "is-node-process": "^1.2.0", @@ -10390,6 +10718,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, "license": "MIT" }, "node_modules/@parcel/watcher": { @@ -12707,6 +13036,143 @@ "win32" ] }, + "node_modules/@rushstack/node-core-library": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.0.tgz", + "integrity": "sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==", + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@rushstack/rig-package": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz", + "integrity": "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==", + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.3.tgz", + "integrity": "sha512-csXbZsAdab/v8DbU1sz7WC2aNaKArcdS/FPmXMOXEj/JBBZMvDK0+1b4Qao0kkG0ciB1Qe86/Mb68GjH6/TnMw==", + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.10.0", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.1.tgz", + "integrity": "sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==", + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.14.3", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -15295,23 +15761,6 @@ } } }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/plugin-formatjs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@swc/plugin-formatjs/-/plugin-formatjs-1.0.1.tgz", - "integrity": "sha512-y6FOwzWcq/HxMSBEj3HWxa77qW2vg0JqHo5jSxjacb98yQmioP3AWq+9j3uTUseyxxLsNNWRAv/G0HYmXKk7Cw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, "node_modules/@synchro-charts/core": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@synchro-charts/core/-/core-7.2.0.tgz", @@ -15973,6 +16422,12 @@ "integrity": "sha512-SYUe1UgY5HM05EB4+0B4arq2IPjvyzKXoklXKxSYrc2IFxGm1cBrqg5XbiB5uwbs0xY5j+rj986NAJMM0KZaUw==", "license": "MIT" }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "license": "MIT" + }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -16099,6 +16554,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, "license": "MIT" }, "node_modules/@types/cytoscape": { @@ -16492,6 +16948,15 @@ "@types/send": "*" } }, + "node_modules/@types/fs-extra": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/geojson": { "version": "7946.0.14", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", @@ -16685,13 +17150,6 @@ "@types/node": "*" } }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/picomatch": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.4.tgz", @@ -16845,6 +17303,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", + "dev": true, "license": "MIT" }, "node_modules/@types/styled-components": { @@ -16880,6 +17339,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, "license": "MIT" }, "node_modules/@types/trusted-types": { @@ -17753,6 +18213,101 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@volar/language-core": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.10.tgz", + "integrity": "sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==", + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.10" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.10.tgz", + "integrity": "sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==", + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.10.tgz", + "integrity": "sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.10", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/language-core": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz", + "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.1", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", @@ -17857,24 +18412,10 @@ "npm": ">=5" } }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -17887,6 +18428,37 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/animate.css": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", @@ -17897,6 +18469,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -17912,6 +18485,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -18233,13 +18807,6 @@ "node": ">=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -18950,34 +19517,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/camelize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", @@ -19380,6 +19919,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, "license": "ISC", "engines": { "node": ">= 12" @@ -19508,18 +20048,11 @@ "dev": true, "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "license": "MIT" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -19541,16 +20074,6 @@ "node": "^12.20.0 || >=14" } }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -19562,12 +20085,30 @@ "dot-prop": "^5.1.0" } }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "license": "MIT" + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -19642,6 +20183,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -20008,46 +20550,6 @@ "hyphenate-style-name": "^1.0.3" } }, - "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-selector-tokenizer": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", @@ -20156,19 +20658,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/cssstyle": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", - "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "rrweb-cssom": "^0.7.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -20537,30 +21026,6 @@ "node": ">=4" } }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -20643,6 +21108,12 @@ "date-fns": "2.x" } }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "license": "MIT" + }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -20703,13 +21174,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true, - "license": "MIT" - }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -20817,16 +21281,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -20941,13 +21395,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, "node_modules/dnd-core": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", @@ -21179,7 +21626,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -21358,40 +21804,42 @@ } }, "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "hasInstallScript": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/esbuild-register": { @@ -21406,6 +21854,22 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -21556,10 +22020,6 @@ "eslint-plugin-import": "^2.22.1" } }, - "node_modules/eslint-config-iot-app-kit": { - "resolved": "configuration/eslint-config", - "link": true - }, "node_modules/eslint-config-prettier": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", @@ -22772,7 +23232,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { @@ -23034,21 +23493,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -23107,6 +23551,38 @@ "dev": true, "license": "MIT" }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -23479,7 +23955,6 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -23492,6 +23967,7 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -23537,29 +24013,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -23734,10 +24187,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/headers-polyfill": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "dev": true, "license": "MIT" }, "node_modules/hmac-drbg": { @@ -23768,19 +24231,6 @@ "dev": true, "license": "ISC" }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -23811,20 +24261,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -23832,36 +24268,6 @@ "dev": true, "license": "MIT" }, - "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, "node_modules/hyphenate-style-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", @@ -23881,19 +24287,6 @@ "node": ">=0.10.0" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -23994,7 +24387,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -24660,13 +25052,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -25107,6 +25492,12 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "license": "MIT" + }, "node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", @@ -25140,57 +25531,6 @@ "node": ">=12.0.0" } }, - "node_modules/jsdom": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", - "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.1.0", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -25227,7 +25567,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify": { @@ -25270,7 +25609,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -25372,12 +25710,18 @@ } }, "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true, "license": "MIT" }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, "node_modules/ktx-parse": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.4.5.tgz", @@ -25490,6 +25834,22 @@ "node": ">= 12.13.0" } }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -25731,101 +26091,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -27018,29 +27283,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -27173,6 +27415,18 @@ "dev": true, "license": "MIT" }, + "node_modules/mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, "node_modules/mmd-parser": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mmd-parser/-/mmd-parser-1.0.4.tgz", @@ -27235,6 +27489,7 @@ "version": "2.6.6", "resolved": "https://registry.npmjs.org/msw/-/msw-2.6.6.tgz", "integrity": "sha512-npfIIVRHKQX3Lw4aLWX4wBh+lQwpqdZNyJYB5K/+ktK8NhtkdsTxGK7WDrgknozcVyRI7TOqY6yBS9j2FTR+YQ==", + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -27291,6 +27546,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -27306,6 +27562,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -27322,6 +27579,7 @@ "version": "4.27.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.27.0.tgz", "integrity": "sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" @@ -27330,6 +27588,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" + }, "node_modules/multistream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", @@ -27374,6 +27638,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" @@ -28102,13 +28367,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", - "dev": true, - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -28340,6 +28598,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, "license": "MIT" }, "node_modules/p-is-promise": { @@ -28384,16 +28643,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -28615,6 +28864,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, "license": "MIT" }, "node_modules/path-type": { @@ -28630,7 +28880,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, "license": "MIT" }, "node_modules/pathval": { @@ -29037,6 +29286,17 @@ "node": ">=10" } }, + "node_modules/pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } + }, "node_modules/pkg/node_modules/@babel/generator": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", @@ -29282,76 +29542,6 @@ "postcss": "^8.0.0" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", - "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", @@ -29360,20 +29550,30 @@ "license": "MIT" }, "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.31" } }, "node_modules/postcss-selector-parser": { @@ -29466,214 +29666,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-eslint": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", - "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/parser": "^6.7.5", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^8.7.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^3.0.1", - "pretty-format": "^29.7.0", - "require-relative": "^0.8.7", - "typescript": "^5.2.2", - "vue-eslint-parser": "^9.1.0" - }, - "engines": { - "node": ">=16.10.0" - }, - "peerDependencies": { - "prettier-plugin-svelte": "^3.0.0", - "svelte-eslint-parser": "*" - }, - "peerDependenciesMeta": { - "prettier-plugin-svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prettier-eslint/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-eslint/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/prettier-eslint/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/prettier-eslint/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", @@ -29782,6 +29774,7 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.13.0.tgz", "integrity": "sha512-BFwmFXiJoFqlUpZ5Qssolv15DMyc84gTBds1BjsV1BfXEo1UyyD7GsmN67n7J77uRhoSNW1AXtXKPLcBFQn9Aw==", + "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" @@ -29865,6 +29858,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, "license": "MIT" }, "node_modules/queue-lit": { @@ -29897,16 +29891,6 @@ ], "license": "MIT" }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", @@ -30698,126 +30682,6 @@ "node": ">=4" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, "node_modules/read-pkg/node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -31246,17 +31110,11 @@ "node": ">=0.10.0" } }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", - "dev": true, - "license": "MIT" - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, "license": "MIT" }, "node_modules/reselect": { @@ -31405,6 +31263,125 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-copy/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rollup-plugin-copy/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup-plugin-copy/node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup-plugin-copy/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/rollup-plugin-copy/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/rollup-plugin-copy/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/rollup-plugin-inject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", @@ -31448,13 +31425,6 @@ "estree-walker": "^0.6.1" } }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT" - }, "node_modules/rtl-css-js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", @@ -31677,19 +31647,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/scheduler": { "version": "0.21.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", @@ -32186,6 +32143,12 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, "node_modules/stack-generator": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", @@ -32248,6 +32211,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -32465,6 +32429,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, "license": "MIT" }, "node_modules/string_decoder": { @@ -32477,6 +32442,15 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-to-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz", @@ -32754,13 +32728,6 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "license": "MIT" }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true, - "license": "ISC" - }, "node_modules/style-to-object": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", @@ -32822,83 +32789,115 @@ } }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", + "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", + "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", + "meow": "^13.2.0", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "node": ">=18.12.0" } }, "node_modules/stylelint-config-recommended": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", - "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "stylelint": "^14.4.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint-config-standard": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz", - "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==", + "version": "36.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", + "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], "license": "MIT", "dependencies": { - "stylelint-config-recommended": "^7.0.0" + "stylelint-config-recommended": "^14.0.1" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^14.4.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -32908,21 +32907,18 @@ "dev": true, "license": "MIT" }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/stylelint/node_modules/emoji-regex": { @@ -32932,100 +32928,61 @@ "dev": true, "license": "MIT" }, - "node_modules/stylelint/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "flat-cache": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/stylelint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/stylelint/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "flatted": "^3.3.1", + "keyv": "^4.5.4" }, "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/stylelint/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", "dev": true, "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/stylelint/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } + "license": "CC0-1.0" }, - "node_modules/stylelint/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "node_modules/stylelint/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, "engines": { - "node": ">=4" - } - }, - "node_modules/stylelint/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=18" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/stylelint/node_modules/string-width": { @@ -33043,36 +33000,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/stylis": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", @@ -33092,9 +33019,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "license": "MIT", "dependencies": { @@ -33102,7 +33029,10 @@ "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -33782,13 +33712,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, "node_modules/synchronous-promise": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", @@ -34170,26 +34093,6 @@ "popper.js": "^1.16.0" } }, - "node_modules/tldts": { - "version": "6.1.63", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.63.tgz", - "integrity": "sha512-YWwhsjyn9sB/1rOkSRYxvkN/wl5LFM1QDv6F2pVR+pb/jFne4EOBxHfkKVWvDIBEAw9iGOwwubHtQTm0WRT5sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.63" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.63", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.63.tgz", - "integrity": "sha512-H1XCt54xY+QPbwhTgmxLkepX0MVHu3USfMmejiCOdkMbRcP22Pn2FVF127r/GWXVDmXTRezyF3Ckvhn4Fs6j7Q==", - "dev": true, - "license": "MIT" - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -34228,32 +34131,6 @@ "nodetouch": "bin/nodetouch.js" } }, - "node_modules/tough-cookie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", - "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -34264,16 +34141,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/troika-three-text": { "version": "0.47.2", "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.47.2.tgz", @@ -34602,6 +34469,26 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -34845,6 +34732,12 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -35056,7 +34949,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -35142,6 +35034,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -35311,13 +35204,6 @@ "node": ">=6" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true, - "license": "MIT" - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -35501,6 +35387,75 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite-plugin-dts": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.3.0.tgz", + "integrity": "sha512-LkBJh9IbLwL6/rxh0C1/bOurDrIEmRE7joC+jFdOEEciAFPbpEKOLSAr5nNh5R7CJ45cMbksTrFfy52szzC5eA==", + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "^7.47.11", + "@rollup/pluginutils": "^5.1.0", + "@volar/typescript": "^2.4.4", + "@vue/language-core": "2.1.6", + "compare-versions": "^6.1.1", + "debug": "^4.3.6", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.11" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts/node_modules/@rollup/pluginutils": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/vite-plugin-dts/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vite-plugin-node-polyfills": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz", @@ -36023,56 +35978,11 @@ "dev": true, "license": "MIT" }, - "node_modules/vue-eslint-parser": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" }, "node_modules/warning": { "version": "4.0.3", @@ -36145,20 +36055,6 @@ "node": ">=12" } }, - "node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -36395,26 +36291,19 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -36436,23 +36325,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -36478,16 +36350,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -36552,6 +36414,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -36629,6 +36492,7 @@ "version": "12.2.1", "license": "Apache-2.0", "dependencies": { + "@iot-app-kit/helpers": "*", "d3-array": "^3.2.4", "intervals-fn": "^3.0.3", "parse-duration": "^1.0.3", @@ -36637,15 +36501,19 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/packaging": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/d3-array": "^3.0.5", "@types/node": "^18.16.18", "@types/uuid": "^9.0.2", "@vitest/coverage-v8": "^2.1.5", - "eslint-config-iot-app-kit": "12.2.1", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", + "tsc-alias": "^1.8.10", + "tsx": "^4.19.2", "typescript": "^5.5.4", "vite": "^5.4.11", "vitest": "^2.1.5" @@ -36659,19 +36527,20 @@ "version": "12.2.1", "license": "Apache-2.0", "dependencies": { - "@iot-app-kit/core": "12.2.1", + "@iot-app-kit/core": "*", "lodash-es": "^4.17.21", "pako": "^2.1.0", "zustand": "^4.5.2" }, "devDependencies": { "@aws-sdk/types": "^3.696.0", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@types/pako": "^2.0.3", "@vitest/coverage-v8": "^2.1.5", - "eslint-config-iot-app-kit": "12.2.1", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", "typescript": "^5.5.4", @@ -36683,6 +36552,19 @@ "@aws-sdk/client-iotsitewise": "^3.696.0" } }, + "packages/core-util/dist/helpers": { + "name": "@iot-app-kit/helpers", + "version": "12.2.1", + "extraneous": true, + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", + "rimraf": "^5.0.1", + "typescript": "^5.5.4", + "vite": "^5.4.11" + } + }, "packages/core-util/node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -36720,6 +36602,23 @@ } } }, + "packages/core/dist/helpers": { + "name": "@iot-app-kit/helpers", + "version": "12.2.1", + "devDependencies": { + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", + "rimraf": "^5.0.1", + "tsx": "^4.19.2", + "typescript": "^5.5.4", + "vite": "^5.4.11" + } + }, + "packages/core/node_modules/@iot-app-kit/helpers": { + "resolved": "packages/core/dist/helpers", + "link": true + }, "packages/dashboard": { "name": "@iot-app-kit/dashboard", "version": "12.2.1", @@ -36728,10 +36627,10 @@ "@cloudscape-design/components": "3.0.693", "@cloudscape-design/design-tokens": "3.0.42", "@cloudscape-design/global-styles": "1.0.32", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/core-util": "12.2.1", - "@iot-app-kit/react-components": "12.2.1", - "@iot-app-kit/source-iotsitewise": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/core-util": "*", + "@iot-app-kit/react-components": "*", + "@iot-app-kit/source-iotsitewise": "*", "@popperjs/core": "^2.11.8", "@reduxjs/toolkit": "^1.9.5", "@tanstack/react-query": "^5.40.1", @@ -36759,8 +36658,10 @@ }, "devDependencies": { "@iot-app-kit/data-mocked": "*", - "@iot-app-kit/testing-util": "12.2.1", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/testing-util": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@tanstack/eslint-plugin-query": "^5.40.1", "@tanstack/react-query-devtools": "^5.40.1", "@testing-library/jest-dom": "^6.6.3", @@ -36776,16 +36677,13 @@ "@vitejs/plugin-react": "^4.3.3", "@vitest/coverage-v8": "^2.1.5", "copyfiles": "^2.4.1", - "css-loader": "6.8.1", "dotenv": "^16.3.1", - "eslint-config-iot-app-kit": "12.2.1", "eslint-plugin-jsx-a11y": "^6.8.0", "jest-extended": "^3.2.4", "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "^5.0.1", "sass": "1.63.6", - "tsc-alias": "^1.8.10", "tslib": "^2.5.3", "type-fest": "^4.28.1", "typescript": "^5.5.4", @@ -36941,12 +36839,13 @@ }, "packages/data-mocked": { "name": "@iot-app-kit/data-mocked", - "dependencies": { + "version": "12.2.1", + "devDependencies": { "@aws-sdk/client-iotsitewise": "^3.696.0", "@faker-js/faker": "^8.2.0", + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/ts-config": "*", "@types/node": "^18.16.18", - "eslint-config-iot-app-kit": "*", "msw": "^2.6.2", "rimraf": "^5.0.1", "typescript": "^5.5.4", @@ -36955,11 +36854,15 @@ }, "packages/helpers": { "name": "@iot-app-kit/helpers", - "dependencies": { + "version": "12.2.1", + "devDependencies": { + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/ts-config": "*", - "eslint-config-iot-app-kit": "*", + "@iot-app-kit/vite-config": "*", "rimraf": "^5.0.1", - "typescript": "^5.5.4" + "tsx": "^4.19.2", + "typescript": "^5.5.4", + "vite": "^5.4.11" } }, "packages/react-components": { @@ -36974,9 +36877,10 @@ "@cloudscape-design/global-styles": "1.0.32", "@iot-app-kit/charts": "^2.1.2", "@iot-app-kit/charts-core": "^2.1.2", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/core-util": "12.2.1", - "@iot-app-kit/source-iottwinmaker": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/core-util": "*", + "@iot-app-kit/source-iotsitewise": "*", + "@iot-app-kit/source-iottwinmaker": "*", "@tanstack/react-query": "^5.32.1", "autosize": "^6.0.1", "color": "^4.2.3", @@ -37007,10 +36911,12 @@ "zustand": "^4.5.2" }, "devDependencies": { - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/source-iotsitewise": "12.2.1", - "@iot-app-kit/testing-util": "12.2.1", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/helpers": "*", + "@iot-app-kit/testing-util": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@playwright/test": "^1.48.2", "@storybook/addon-essentials": "^8.4.5", "@storybook/addon-links": "^8.4.5", @@ -37043,7 +36949,6 @@ "babel-plugin-formatjs": "10.5.3", "copyfiles": "^2.4.1", "cytoscape": "^3.25.0", - "eslint-config-iot-app-kit": "12.2.1", "eslint-plugin-jsx-a11y": "^6.8.0", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", @@ -37228,9 +37133,9 @@ "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/react-components": "12.2.1", - "@iot-app-kit/source-iottwinmaker": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/react-components": "*", + "@iot-app-kit/source-iottwinmaker": "*", "@matterport/r3f": "0.2.7", "@matterport/webcomponent": "0.1.35", "@react-three/drei": "9.56.27", @@ -37278,7 +37183,10 @@ "@cloudscape-design/design-tokens": "^3.0.35", "@cloudscape-design/global-styles": "^1.0.25", "@formatjs/cli": "^6.3.8", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/helpers": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@playwright/test": "^1.48.2", "@react-spring/three": "^9.7.2", "@storybook/addon-essentials": "^8.4.5", @@ -37288,7 +37196,6 @@ "@storybook/react-vite": "^8.4.5", "@storybook/test": "^8.4.5", "@svgr/cli": "^8.1.0", - "@swc/plugin-formatjs": "^1.0.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", @@ -37304,16 +37211,10 @@ "@vitest/coverage-v8": "^2.1.5", "babel-plugin-formatjs": "10.5.3", "copyfiles": "^2.4.1", - "eslint-config-iot-app-kit": "12.2.1", "happy-dom": "^15.11.6", - "husky": "8.0.3", "jest-extended": "^3.2.4", - "jsdom": "^25.0.1", - "nodemon": "^2.0.22", "npm-run-all": "^4.1.5", "postcss": "^8.4.31", - "prettier": "^2.8.8", - "prettier-eslint": "^16.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intl": "^6.8.7", @@ -39020,8 +38921,8 @@ "version": "12.2.1", "license": "Apache-2.0", "dependencies": { - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/core-util": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/core-util": "*", "@synchro-charts/core": "7.2.0", "dataloader": "^2.2.2", "lodash-es": "^4.17.21", @@ -39029,12 +38930,13 @@ }, "devDependencies": { "@aws-sdk/types": "^3.696.0", - "@iot-app-kit/testing-util": "12.2.1", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/testing-util": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@vitest/coverage-v8": "^2.1.5", - "eslint-config-iot-app-kit": "12.2.1", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", @@ -39059,19 +38961,20 @@ "@aws-sdk/client-s3": "3.335.0", "@aws-sdk/client-secrets-manager": "3.353.0", "@aws-sdk/url-parser": "3.374.0", - "@iot-app-kit/core": "12.2.1", + "@iot-app-kit/core": "*", "@tanstack/query-core": "^4.29.15", "lodash-es": "^4.17.21", "rxjs": "^7.8.1" }, "devDependencies": { "@aws-sdk/types": "^3.696.0", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@vitest/coverage-v8": "^2.1.5", "aws-sdk-client-mock": "^1.0.0", - "eslint-config-iot-app-kit": "12.2.1", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", @@ -39948,16 +39851,14 @@ "name": "@iot-app-kit/testing-util", "version": "12.2.1", "license": "Apache-2.0", - "dependencies": { + "devDependencies": { "@aws-sdk/client-iot-events": "3.354.0", "@aws-sdk/client-iotsitewise": "3.696.0", - "@iot-app-kit/core": "12.2.1", - "parse-duration": "^1.1.0" - }, - "devDependencies": { - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", "@types/node": "^18.16.18", - "eslint-config-iot-app-kit": "12.2.1", + "parse-duration": "^1.1.0", "rimraf": "^5.0.1", "typescript": "^5.5.4" } @@ -39980,7 +39881,9 @@ "tmdt": "dist/cjs/cli.js" }, "devDependencies": { - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/node": "^18.16.18", "@types/prompts": "^2.4.4", "@types/yargs": "^17.0.24", diff --git a/package.json b/package.json index 84c6fe277..91b39654b 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,10 @@ "node": ">=18.0.0", "npm": ">=10.7.0" }, + "volta": { + "node": "18.20.5", + "npm": "10.8.2" + }, "workspaces": [ "apps/*", "configuration/*", @@ -19,47 +23,34 @@ ], "scripts": { "install-ws": "npm install --prefer-offline --no-audit --workspaces --include-workspace-root", - "bootstrap": "npm run install-ws && npm run build", - "start": "cd packages/components && npm start", - "build": "turbo run build", - "build:core": "turbo run build --filter=@iot-app-kit/core", - "build:core-util": "turbo run build --filter=@iot-app-kit/core-util", - "build:dashboard": "turbo run build --filter=@iot-app-kit/dashboard", - "build:doc-site": "turbo run build --filter=@iot-app-kit/doc-site", - "build:react-components": "turbo run build --filter=@iot-app-kit/react-components", - "build:scene-composer": "turbo run build --filter=@iot-app-kit/scene-composer", - "build:source-iotsitewise": "turbo run build --filter=@iot-app-kit/source-iotsitewise", - "build:source-iottwinmaker": "turbo run build --filter=@iot-app-kit/source-iottwinmaker", - "build:testing-util": "turbo run build --filter=@iot-app-kit/testing-util", - "build:tools-iottwinmaker": "turbo run build --filter=@iot-app-kit/tools-iottwinmaker", - "clean": "turbo run clean && rimraf .turbo", - "clean:nuke": "turbo run clean:nuke && rimraf .turbo node_modules", - "fix": "turbo run fix && npm run fix:stylelint", - "fix:stylelint": "stylelint '**/*.css' --fix", - "test": "turbo run test", - "test:ui": "turbo run test:ui", - "test:ui:update": "turbo run test:ui:update", - "test:ui:ci": "turbo run test:ui:ci", - "test:reliability": "turbo run test:ui:reliability", - "test:stylelint": "stylelint '**/*.css' --max-warnings 0", + "start": "npm run dev", + "dev": "turbo dev -F @iot-app-kit/dev-env", + "build": "turbo build", + "clean": "rimraf .turbo .vscode", + "clean:nuke": "rimraf .turbo node_modules", + "fix": "turbo fix && npm run fix:stylelint", + "fix:stylelint": "stylelint '**/*.css' --fix --ignore-path .gitignore", + "test": "turbo test", + "test:ui": "turbo test:ui", + "test:ui:update": "turbo test:ui:update", + "test:ui:ci": "turbo test:ui:ci", + "test:reliability": "turbo test:ui:reliability", + "test:stylelint": "stylelint '**/*.css' --max-warnings 0 --ignore-path .gitignore", "test:git": "git diff --exit-code", "release": "npm run build", - "pack": "turbo run pack", + "pack": "turbo pack", "publish-packages": "npm run install-ws && turbo run build", - "versionup:patch": "turbo run version --no-git-tag-version patch", - "versionup:minor": "turbo run version --no-git-tag-version minor", - "versionup:major": "turbo run version --no-git-tag-version major", - "prepare": "husky install", - "test:ci": "if test \"$NODE_ENV\" = \"production\"; then echo \"Yes!\"; fi" + "versionup:patch": "turbo version --no-git-tag-version patch", + "versionup:minor": "turbo version --no-git-tag-version minor", + "versionup:major": "turbo version --no-git-tag-version major" }, "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@playwright/test": "^1.48.2", - "husky": "^8.0.3", "rimraf": "^5.0.1", - "stylelint": "14.16.1", - "stylelint-config-standard": "25.0.0", + "stylelint": "^16.11.0", + "stylelint-config-standard": "^36.0.1", "turbo": "^2.2.3" }, "npm-pretty-much": { @@ -73,9 +64,5 @@ "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "fast-xml-parser": "^4.2.5" - }, - "volta": { - "node": "18.20.5", - "npm": "10.8.2" } } diff --git a/packages/core-util/.eslintrc.cjs b/packages/core-util/.eslintrc.cjs index 5b89c5273..236dba6b3 100644 --- a/packages/core-util/.eslintrc.cjs +++ b/packages/core-util/.eslintrc.cjs @@ -1,4 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit'], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['packages/core-util/tsconfig.json'], + }, + node: { + project: ['packages/core-util/tsconfig.json'], + }, + }, + }, }; diff --git a/packages/core-util/package.json b/packages/core-util/package.json index 50f173c7e..fafc078ff 100644 --- a/packages/core-util/package.json +++ b/packages/core-util/package.json @@ -1,57 +1,57 @@ { "name": "@iot-app-kit/core-util", + "version": "12.2.1", "license": "Apache-2.0", "publishConfig": { "access": "public" }, - "version": "12.2.1", + "files": [ + "dist" + ], "type": "module", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "types": "dist/esm/index.d.ts", "exports": { ".": { - "types": "./dist/esm/index.d.ts", - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.js", - "default": "./dist/esm/index.js" + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } } }, - "directories": { - "dist": "dist" - }, - "files": [ - "dist" - ], "scripts": { - "build": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json", - "build:cjs": "tsc -b ./tsconfig.cjs.json", - "build:es": "tsc -b ./tsconfig.esm.json", + "build": "NODE_OPTIONS='--import tsx/esm' vite build", "clean": "rimraf dist coverage .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", - "dev": "tsc -b ./tsconfig.esm.json --watch", - "dev:react-components": "npm run dev", "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/", "fix": "eslint --fix . --cache --cache-location .cache/eslint/", - "test": "TZ=UTC vitest run --coverage", - "test:watch": "TZ=UTC vitest", + "test": "NODE_OPTIONS='--import tsx/esm' TZ=UTC vitest run", + "test:watch": "NODE_OPTIONS='--import tsx/esm' TZ=UTC vitest", "test:typescript": "tsc --noEmit", + "copy:license": "cp ../../LICENSE LICENSE", + "copy:notice": "cp ../../NOTICE NOTICE", + "prepack": "npm run copy:license && npm run copy:notice", "pack": "npm pack" }, "dependencies": { - "@iot-app-kit/core": "12.2.1", + "@iot-app-kit/core": "*", "lodash-es": "^4.17.21", "pako": "^2.1.0", "zustand": "^4.5.2" }, "devDependencies": { "@aws-sdk/types": "^3.696.0", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/lodash-es": "^4.17.12", "@types/node": "^18.16.18", "@types/pako": "^2.0.3", "@vitest/coverage-v8": "^2.1.5", - "eslint-config-iot-app-kit": "12.2.1", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", "typescript": "^5.5.4", @@ -61,5 +61,8 @@ "peerDependencies": { "@aws-sdk/client-iot-events": "^3.354.0", "@aws-sdk/client-iotsitewise": "^3.696.0" + }, + "iotAppKit": { + "scope": "public" } } diff --git a/packages/core-util/src/index.ts b/packages/core-util/src/index.ts index fce4b7d62..3a498115a 100644 --- a/packages/core-util/src/index.ts +++ b/packages/core-util/src/index.ts @@ -1,14 +1,13 @@ -export { getSiteWiseClient } from './sdks/sitewise'; -export { getIotEventsClient } from './sdks/events'; -export { colorPalette } from './sdks/colorPalette'; -export { round } from './sdks/number'; -export { isNumeric } from './sdks/number'; export { Colorizer } from './sdks/colorizer'; +export { colorPalette } from './sdks/colorPalette'; +export { getIotEventsClient } from './sdks/events'; +export * from './sdks/IotSitewiseAssistant'; +export { isNumeric, round } from './sdks/number'; +export { rangeValidator } from './sdks/rangeValidator'; +export { getSiteWiseClient } from './sdks/sitewise'; export { - viewportToDateRange, - relativeViewportOptions, dateRangeToViewport, getViewportDateRelativeToAbsolute, + relativeViewportOptions, + viewportToDateRange, } from './sdks/viewportAdapters'; -export { rangeValidator } from './sdks/rangeValidator'; -export * from './sdks/IotSitewiseAssistant'; diff --git a/packages/core-util/tsconfig.cjs.json b/packages/core-util/tsconfig.cjs.json deleted file mode 100644 index a9a853bd9..000000000 --- a/packages/core-util/tsconfig.cjs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.cjs.json", - "include": ["src"], - "exclude": ["./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/cjs", - "tsBuildInfoFile": "./dist/cjs/.tsbuildinfo" - } -} diff --git a/packages/core-util/tsconfig.esm.json b/packages/core-util/tsconfig.esm.json deleted file mode 100644 index 2675f98ab..000000000 --- a/packages/core-util/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.esm.json", - "include": ["src"], - "exclude": ["./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/esm", - "tsBuildInfoFile": "./dist/esm/.tsbuildinfo" - } -} diff --git a/packages/core-util/tsconfig.json b/packages/core-util/tsconfig.json index 0d54de403..ca1e38efd 100644 --- a/packages/core-util/tsconfig.json +++ b/packages/core-util/tsconfig.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "@iot-app-kit/ts-config/tsconfig.base.json", - "include": ["src", "vitest.config.ts"], + "include": ["src", "vite.config.ts"], "compilerOptions": { "types": ["vitest/globals", "jest-extended"] } diff --git a/packages/core-util/vite.config.ts b/packages/core-util/vite.config.ts new file mode 100644 index 000000000..0850d4c73 --- /dev/null +++ b/packages/core-util/vite.config.ts @@ -0,0 +1,7 @@ +import { definePackageConfig } from '@iot-app-kit/vite-config/definePackageConfig'; + +export default definePackageConfig({ + iotAppKitPackage: { + dirname: __dirname, + }, +}); diff --git a/packages/core-util/vite.config.ts.timestamp-1733762734255-3c93da12d0b58.mjs b/packages/core-util/vite.config.ts.timestamp-1733762734255-3c93da12d0b58.mjs new file mode 100644 index 000000000..d36119e15 --- /dev/null +++ b/packages/core-util/vite.config.ts.timestamp-1733762734255-3c93da12d0b58.mjs @@ -0,0 +1,12 @@ +// vite.config.ts +import { definePackageConfig } from "file:///Users/tracfren/dev/iot-app-kit/configuration/vite-config/src/definePackageConfig.ts"; +var __vite_injected_original_dirname = "/Users/tracfren/dev/iot-app-kit/packages/core-util"; +var vite_config_default = definePackageConfig({ + iotAppKitPackage: { + dirname: __vite_injected_original_dirname + } +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvdHJhY2ZyZW4vZGV2L2lvdC1hcHAta2l0L3BhY2thZ2VzL2NvcmUtdXRpbFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3RyYWNmcmVuL2Rldi9pb3QtYXBwLWtpdC9wYWNrYWdlcy9jb3JlLXV0aWwvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3RyYWNmcmVuL2Rldi9pb3QtYXBwLWtpdC9wYWNrYWdlcy9jb3JlLXV0aWwvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBkZWZpbmVQYWNrYWdlQ29uZmlnIH0gZnJvbSAnQGlvdC1hcHAta2l0L3ZpdGUtY29uZmlnL2RlZmluZVBhY2thZ2VDb25maWcnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVQYWNrYWdlQ29uZmlnKHtcbiAgaW90QXBwS2l0UGFja2FnZToge1xuICAgIGRpcm5hbWU6IF9fZGlybmFtZSxcbiAgfSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF3VSxTQUFTLDJCQUEyQjtBQUE1VyxJQUFNLG1DQUFtQztBQUV6QyxJQUFPLHNCQUFRLG9CQUFvQjtBQUFBLEVBQ2pDLGtCQUFrQjtBQUFBLElBQ2hCLFNBQVM7QUFBQSxFQUNYO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K diff --git a/packages/core-util/vitest.config.ts b/packages/core-util/vitest.config.ts deleted file mode 100644 index b44319c24..000000000 --- a/packages/core-util/vitest.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -// https://vitejs.dev/config/ -export default defineConfig({ - test: { - pool: 'threads', - include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'], - globals: true, - css: false, - environment: 'happy-dom', - setupFiles: ['jest-extended/all'], - coverage: { - thresholds: { - statements: 80, - branches: 70, - functions: 80, - lines: 80, - }, - }, - }, -}); diff --git a/packages/core/.eslintrc.cjs b/packages/core/.eslintrc.cjs index 5b89c5273..f918b28ad 100644 --- a/packages/core/.eslintrc.cjs +++ b/packages/core/.eslintrc.cjs @@ -1,4 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit'], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['packages/core/tsconfig.json'], + }, + node: { + project: ['packages/core/tsconfig.json'], + }, + }, + }, }; diff --git a/packages/core/package.json b/packages/core/package.json index 5d127a62b..c9e04a2fc 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,48 +1,46 @@ { "name": "@iot-app-kit/core", + "description": "IoT Application Kit core", + "version": "12.2.1", "license": "Apache-2.0", "publishConfig": { "access": "public" }, - "version": "12.2.1", - "description": "IoT Application Kit core", + "files": [ + "dist" + ], "type": "module", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", "types": "./dist/esm/index.d.ts", "exports": { ".": { - "types": "./dist/esm/index.d.ts", - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.js", - "default": "./dist/esm/index.js" + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } } }, - "files": [ - "dist", - "CHANGELOG.md", - "*NOTICE", - "package.json" - ], "scripts": { - "build": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json", - "build:cjs": "tsc -b ./tsconfig.cjs.json", - "build:es": "tsc -b ./tsconfig.esm.json", + "build": "NODE_OPTIONS='--import tsx/esm' vite build", "clean": "rimraf dist coverage .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", - "dev": "tsc -b ./tsconfig.esm.json --watch", - "dev:react-components": "npm run dev", "lint": "eslint . --max-warnings=2 --cache --cache-location .cache/eslint/", "fix": "eslint --fix . --cache --cache-location .cache/eslint/", - "test": "TZ=UTC vitest run --coverage", - "test:watch": "TZ=UTC vitest", + "test": "NODE_OPTIONS='--import tsx/esm' TZ=UTC vitest run", + "test:watch": "NODE_OPTIONS='--import tsx/esm' TZ=UTC vitest", "test:typescript": "tsc --noEmit", "copy:license": "cp ../../LICENSE LICENSE", "copy:notice": "cp ../../NOTICE NOTICE", - "prepack": "npm run copy:license && npm run copy:notice", - "pack": "npm pack" + "prepack": "npm run copy:license && npm run copy:notice && ../../configuration/packaging/src/prepack.cts helpers", + "pack": "npm pack", + "postpack": "../../configuration/packaging/src/postpack.cts helpers" }, "dependencies": { + "@iot-app-kit/helpers": "*", "d3-array": "^3.2.4", "intervals-fn": "^3.0.3", "parse-duration": "^1.0.3", @@ -51,15 +49,19 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/packaging": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@types/d3-array": "^3.0.5", "@types/node": "^18.16.18", "@types/uuid": "^9.0.2", "@vitest/coverage-v8": "^2.1.5", - "eslint-config-iot-app-kit": "12.2.1", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", "rimraf": "^5.0.1", + "tsc-alias": "^1.8.10", + "tsx": "^4.19.2", "typescript": "^5.5.4", "vite": "^5.4.11", "vitest": "^2.1.5" @@ -79,5 +81,8 @@ }, "bugs": { "url": "https://github.com/awslabs/iot-app-kit/issues" + }, + "iotAppKit": { + "scope": "public" } } diff --git a/packages/core/src/common/time.ts b/packages/core/src/common/time.ts index 7c061587b..13b8aa0d6 100644 --- a/packages/core/src/common/time.ts +++ b/packages/core/src/common/time.ts @@ -1,10 +1,13 @@ +import { + DAY_IN_MS, + HOUR_IN_MS, + MINUTE_IN_MS, + NANO_SECOND_IN_MS, + SECOND_IN_MS, +} from '@iot-app-kit/helpers'; import parse from 'parse-duration'; -export const NANO_SECOND_IN_MS = 1 / 1000000; -export const SECOND_IN_MS = 1000; -export const MINUTE_IN_MS = 60 * SECOND_IN_MS; -export const HOUR_IN_MS = 60 * MINUTE_IN_MS; -export const DAY_IN_MS = 24 * HOUR_IN_MS; +export { DAY_IN_MS, HOUR_IN_MS, MINUTE_IN_MS, NANO_SECOND_IN_MS, SECOND_IN_MS }; // Not precisely accurate, only estimates. exact duration depends on start date. use with care. export const MONTH_IN_MS = 30 * DAY_IN_MS; export const YEAR_IN_MS = 12 * MONTH_IN_MS; diff --git a/packages/core/src/data-module/request-scheduler/requestScheduler.ts b/packages/core/src/data-module/request-scheduler/requestScheduler.ts index bba2647ba..0c6f35c70 100644 --- a/packages/core/src/data-module/request-scheduler/requestScheduler.ts +++ b/packages/core/src/data-module/request-scheduler/requestScheduler.ts @@ -1,4 +1,4 @@ -import { SECOND_IN_MS } from '../../common/time'; +import { SECOND_IN_MS } from '@iot-app-kit/helpers'; const DEFAULT_REFRESH_RATE = 5 * SECOND_IN_MS; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index ff1b77085..82a1e059e 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,10 @@ +export { + DAY_IN_MS, + HOUR_IN_MS, + MINUTE_IN_MS, + NANO_SECOND_IN_MS, + SECOND_IN_MS, +} from './common/time'; export * from './common/types'; export * from './data-module/data-cache/requestTypes'; export * from './data-module/types'; @@ -32,12 +39,6 @@ export { STREAM_TYPE, } from './common/constants'; -export const NANO_SECOND_IN_MS = 1 / 1000000; -export const SECOND_IN_MS = 1000; -export const MINUTE_IN_MS = 60 * SECOND_IN_MS; -export const HOUR_IN_MS = 60 * MINUTE_IN_MS; -export const DAY_IN_MS = 24 * HOUR_IN_MS; - export type { Log, Logger } from './logger/logger.interface'; export type { Metric, diff --git a/packages/core/tsconfig.cjs.json b/packages/core/tsconfig.cjs.json deleted file mode 100644 index 22ff9b9c3..000000000 --- a/packages/core/tsconfig.cjs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.cjs.json", - "include": ["src"], - "exclude": ["./src/__mocks__", "./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/cjs", - "tsBuildInfoFile": "./dist/cjs/.tsbuildinfo" - } -} diff --git a/packages/core/tsconfig.esm.json b/packages/core/tsconfig.esm.json deleted file mode 100644 index 0054b1f9d..000000000 --- a/packages/core/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.esm.json", - "include": ["src"], - "exclude": ["./src/__mocks__", "./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/esm", - "tsBuildInfoFile": "./dist/esm/.tsbuildinfo" - } -} diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 6c9c7a421..ca1e38efd 100755 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,9 +1,8 @@ { "$schema": "https://json.schemastore.org/tsconfig", "extends": "@iot-app-kit/ts-config/tsconfig.base.json", - "include": ["src", "vitest.config.ts"], + "include": ["src", "vite.config.ts"], "compilerOptions": { - "types": ["vitest/globals", "jest-extended"], - "moduleResolution": "bundler" + "types": ["vitest/globals", "jest-extended"] } } diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts new file mode 100644 index 000000000..0850d4c73 --- /dev/null +++ b/packages/core/vite.config.ts @@ -0,0 +1,7 @@ +import { definePackageConfig } from '@iot-app-kit/vite-config/definePackageConfig'; + +export default definePackageConfig({ + iotAppKitPackage: { + dirname: __dirname, + }, +}); diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts deleted file mode 100644 index bd118af86..000000000 --- a/packages/core/vitest.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -// https://vitejs.dev/config/ -export default defineConfig({ - test: { - pool: 'threads', - include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'], - globals: true, - css: false, - environment: 'happy-dom', - setupFiles: ['jest-extended/all'], - coverage: { - thresholds: { - statements: 80, - branches: 80, - functions: 80, - lines: 80, - }, - }, - }, -}); diff --git a/packages/dashboard/.eslintrc.cjs b/packages/dashboard/.eslintrc.cjs index 52a309743..6fb8ccbfb 100644 --- a/packages/dashboard/.eslintrc.cjs +++ b/packages/dashboard/.eslintrc.cjs @@ -1,14 +1,20 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, extends: [ - 'iot-app-kit', + ...base.extends, 'plugin:react-hooks/recommended', 'plugin:jsx-a11y/recommended', ], - plugins: ['jsx-a11y'], + plugins: [...base.plugins, 'jsx-a11y'], settings: { + ...base.settings, 'import/resolver': { + ...base.settings['import/resolver'], typescript: { + ...base.settings['import/resolver'].typescript, project: ['packages/dashboard/tsconfig.json'], }, node: { diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 1572f5f4f..37b0db278 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -25,31 +25,37 @@ "types": "./dist/esm/index.d.ts", "exports": { ".": { - "types": "./dist/esm/index.d.ts", - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.js", - "default": "./dist/esm/index.js" + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } } }, "scripts": { - "build": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json && tsc-alias -p ./tsconfig.cjs.json && tsc-alias -p ./tsconfig.esm.json && npm run copy-assets:es && npm run copy-assets:cjs", - "build:cjs": "tsc -b ./tsconfig.cjs.json && tsc-alias -p ./tsconfig.cjs.json && npm run copy-assets:cjs", - "build:es": "tsc -b ./tsconfig.esm.json && tsc-alias -p ./tsconfig.esm.json && npm run copy-assets:es", - "clean": "rimraf dist .turbo .cache test-results", + "build": "NODE_OPTIONS='--import tsx/esm' vite build && pwd && npm run copy-assets:es && npm run copy-assets:cjs", + "clean": "rimraf dist .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", "copy-assets:es": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" -u 1 dist/esm/", "copy-assets:cjs": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" -u 1 dist/cjs/", - "dev": "tsc -b ./tsconfig.esm.json --watch", - "test": "vitest run --coverage", - "test:watch": "vitest", + "test": "NODE_OPTIONS='--import tsx/esm' vitest run", + "test:watch": "NODE_OPTIONS='--import tsx/esm' vitest", + "test:typescript": "tsc --noEmit", "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/", "fix": "eslint --fix . --cache --cache-location ./cache/eslint/", + "copy:license": "cp ../../LICENSE LICENSE", + "copy:notice": "cp ../../NOTICE NOTICE", + "prepack": "npm run copy:license && npm run copy:notice", "pack": "npm pack" }, "devDependencies": { "@iot-app-kit/data-mocked": "*", - "@iot-app-kit/testing-util": "12.2.1", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/testing-util": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@tanstack/eslint-plugin-query": "^5.40.1", "@tanstack/react-query-devtools": "^5.40.1", "@testing-library/jest-dom": "^6.6.3", @@ -65,16 +71,13 @@ "@vitejs/plugin-react": "^4.3.3", "@vitest/coverage-v8": "^2.1.5", "copyfiles": "^2.4.1", - "css-loader": "6.8.1", "dotenv": "^16.3.1", - "eslint-config-iot-app-kit": "12.2.1", "eslint-plugin-jsx-a11y": "^6.8.0", "jest-extended": "^3.2.4", "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "^5.0.1", "sass": "1.63.6", - "tsc-alias": "^1.8.10", "tslib": "^2.5.3", "type-fest": "^4.28.1", "typescript": "^5.5.4", @@ -85,10 +88,10 @@ "@cloudscape-design/components": "3.0.693", "@cloudscape-design/design-tokens": "3.0.42", "@cloudscape-design/global-styles": "1.0.32", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/core-util": "12.2.1", - "@iot-app-kit/react-components": "12.2.1", - "@iot-app-kit/source-iotsitewise": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/core-util": "*", + "@iot-app-kit/react-components": "*", + "@iot-app-kit/source-iotsitewise": "*", "@popperjs/core": "^2.11.8", "@reduxjs/toolkit": "^1.9.5", "@tanstack/react-query": "^5.40.1", @@ -120,5 +123,8 @@ "@aws-sdk/client-iottwinmaker": "^3.354.0", "react": "^18", "react-dom": "^18" + }, + "iotAppKit": { + "scope": "public" } } diff --git a/packages/dashboard/src/components/contextMenu/menu.css b/packages/dashboard/src/components/contextMenu/menu.css index a559233b1..e76c6712f 100644 --- a/packages/dashboard/src/components/contextMenu/menu.css +++ b/packages/dashboard/src/components/contextMenu/menu.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url('../../styles/variables.css'); .iot-context-menu-placement { position: absolute; diff --git a/packages/dashboard/src/components/dragLayer/components/widget.css b/packages/dashboard/src/components/dragLayer/components/widget.css index 76b076cd8..ca3b12d38 100644 --- a/packages/dashboard/src/components/dragLayer/components/widget.css +++ b/packages/dashboard/src/components/dragLayer/components/widget.css @@ -1,4 +1,4 @@ -@import "../../../styles/variables.css"; +@import url("../../../styles/variables.css"); .drag-layer-widget { background-color: var(--selection-bg-color); diff --git a/packages/dashboard/src/components/dragLayer/index.css b/packages/dashboard/src/components/dragLayer/index.css index 6d3e8b8cc..838b38e94 100644 --- a/packages/dashboard/src/components/dragLayer/index.css +++ b/packages/dashboard/src/components/dragLayer/index.css @@ -1,11 +1,8 @@ -@import "../../styles/variables.css"; +@import url('../../styles/variables.css'); .custom-drag-layer { position: fixed; pointer-events: none; z-index: var(--stack-order-drag-layer); - top: 0; - right: 0; - bottom: 0; - left: 0; + inset: 0; } diff --git a/packages/dashboard/src/components/grid/grid.css b/packages/dashboard/src/components/grid/grid.css index 6bb6e4373..12b3ebfe2 100644 --- a/packages/dashboard/src/components/grid/grid.css +++ b/packages/dashboard/src/components/grid/grid.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url('../../styles/variables.css'); .container { position: absolute; @@ -18,7 +18,7 @@ /** Offset to make the dot fall in the top left corner */ background-position: top left; - background-image: url("./grid-dot.svg"); + background-image: url('./grid-dot.svg'); background-repeat: repeat; width: 100%; height: 100%; diff --git a/packages/dashboard/src/components/internalDashboard/collapsiblePanel.tsx b/packages/dashboard/src/components/internalDashboard/collapsiblePanel.tsx index 47e13de59..fd0b995ac 100644 --- a/packages/dashboard/src/components/internalDashboard/collapsiblePanel.tsx +++ b/packages/dashboard/src/components/internalDashboard/collapsiblePanel.tsx @@ -1,6 +1,8 @@ import { type ReactNode } from 'react'; -import './index.css'; +import Box, { type BoxProps } from '@cloudscape-design/components/box'; +import Button from '@cloudscape-design/components/button'; +import { type IconProps } from '@cloudscape-design/components/icon'; import { colorBackgroundLayoutMain, colorBackgroundSegmentActive, @@ -10,11 +12,9 @@ import { spaceStaticXs, spaceStaticXxxs, } from '@cloudscape-design/design-tokens'; -import Box, { type BoxProps } from '@cloudscape-design/components/box'; -import Button from '@cloudscape-design/components/button'; -import { type IconProps } from '@cloudscape-design/components/icon'; -import { DEFAULT_COLLAPSED_SIDE_PANE_WIDTH } from '../resizablePanes/constants'; import { Tooltip } from '@iot-app-kit/react-components'; +import { DEFAULT_COLLAPSED_SIDE_PANE_WIDTH } from '../resizablePanes/constants'; +import './index.css'; type CollapsiblePanelProps = { isPanelCollapsed: boolean; @@ -105,7 +105,7 @@ export function CollapsiblePanel(props: CollapsiblePanelProps) { : colorBackgroundSegmentActive, margin: spaceContainerHorizontal, }} - className='side_panels_collapsed_style' + className='side-panels-collapsed-style' onClick={props.onCollapsedPanelClick} data-testid={`collapsed-${props.side}-panel-icon`} > diff --git a/packages/dashboard/src/components/internalDashboard/index.css b/packages/dashboard/src/components/internalDashboard/index.css index be2ac3648..73c9fd8e4 100644 --- a/packages/dashboard/src/components/internalDashboard/index.css +++ b/packages/dashboard/src/components/internalDashboard/index.css @@ -1,4 +1,4 @@ -@import '../../styles/variables.css'; +@import url('../../styles/variables.css'); .dashboard { height: calc(100vh - var(--dashboard-header-height)); @@ -28,13 +28,14 @@ position: relative; } -.dashboard .dashboard-toolbar .dashboard-toolbar-read-only, dashboard-toolbar-readonly-assistant { +.dashboard .dashboard-toolbar .dashboard-toolbar-read-only, +dashboard-toolbar-readonly-assistant { display: grid; grid-template-columns: auto max-content; grid-template-rows: auto; } -.side_panels_collapsed_style { +.side-panels-collapsed-style { display: flex; justify-content: center; align-items: center; @@ -62,16 +63,13 @@ flex-direction: column; height: 100%; min-height: 200px; + position: relative; } .collapsible-panel-header-container { border-bottom: 2px solid; } -.collapsible-panel { - position: relative; -} - /* subtract the collapsed right panel width plus the drag handle */ .collapsible-panel-left { max-width: calc(100vw - 94px); @@ -80,6 +78,7 @@ /* subtract the collapsed left panel width */ .collapsible-panel-right { max-width: calc(100vw - 84px); + border-left: 2px solid var(--colors-grey-border); } .collapsible-panel-left, @@ -90,7 +89,3 @@ max-height: calc(100vh - var(--toolbar-overlay-height)); z-index: var(--stack-order-grid-inputs); } - -.collapsible-panel-right { - border-left: 2px solid var(--colors-grey-border); -} diff --git a/packages/dashboard/src/components/userSelection/index.css b/packages/dashboard/src/components/userSelection/index.css index 53611cacd..b06142258 100644 --- a/packages/dashboard/src/components/userSelection/index.css +++ b/packages/dashboard/src/components/userSelection/index.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url("../../styles/variables.css"); .select-rect { border: var(--selection-border-width) solid var(--selection-color); diff --git a/packages/dashboard/src/components/widgets/selectionBox.css b/packages/dashboard/src/components/widgets/selectionBox.css index 2ec9f49f9..b7fa0b2d1 100644 --- a/packages/dashboard/src/components/widgets/selectionBox.css +++ b/packages/dashboard/src/components/widgets/selectionBox.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url("../../styles/variables.css"); .selection-box { pointer-events: none; diff --git a/packages/dashboard/src/components/widgets/selectionBoxAnchor.css b/packages/dashboard/src/components/widgets/selectionBoxAnchor.css index 5d5bf9e52..6d58be587 100644 --- a/packages/dashboard/src/components/widgets/selectionBoxAnchor.css +++ b/packages/dashboard/src/components/widgets/selectionBoxAnchor.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url("../../styles/variables.css"); /** * Draggable corners for the selection box diff --git a/packages/dashboard/src/components/widgets/widget.css b/packages/dashboard/src/components/widgets/widget.css index 4de5bcd8b..532dbe340 100644 --- a/packages/dashboard/src/components/widgets/widget.css +++ b/packages/dashboard/src/components/widgets/widget.css @@ -1,4 +1,4 @@ -@import "../../styles/variables.css"; +@import url("../../styles/variables.css"); .widget { position: absolute; diff --git a/packages/dashboard/src/customization/widgets/text/component.css b/packages/dashboard/src/customization/widgets/text/component.css index df3b97230..32d929dd0 100644 --- a/packages/dashboard/src/customization/widgets/text/component.css +++ b/packages/dashboard/src/customization/widgets/text/component.css @@ -1,4 +1,4 @@ -@import "../../../styles/variables.css"; +@import url("../../../styles/variables.css"); .text-widget { margin: 0; diff --git a/packages/dashboard/src/customization/widgets/text/styledText/index.css b/packages/dashboard/src/customization/widgets/text/styledText/index.css index 924499baf..0a281a82c 100644 --- a/packages/dashboard/src/customization/widgets/text/styledText/index.css +++ b/packages/dashboard/src/customization/widgets/text/styledText/index.css @@ -1,4 +1,4 @@ -@import "../../../../styles/variables.css"; +@import url("../../../../styles/variables.css"); .text-widget { margin: 0; diff --git a/packages/dashboard/src/customization/widgets/text/styledText/textArea.css b/packages/dashboard/src/customization/widgets/text/styledText/textArea.css index dc4be7ba2..5e8f55a4a 100644 --- a/packages/dashboard/src/customization/widgets/text/styledText/textArea.css +++ b/packages/dashboard/src/customization/widgets/text/styledText/textArea.css @@ -1,4 +1,4 @@ -@import "../../../../styles/variables.css"; +@import url("../../../../styles/variables.css"); .text-widget { margin: 0; diff --git a/packages/dashboard/svgTransform.js b/packages/dashboard/svgTransform.js deleted file mode 100644 index 88d37e208..000000000 --- a/packages/dashboard/svgTransform.js +++ /dev/null @@ -1,12 +0,0 @@ -// See https://stackoverflow.com/questions/58603201/jest-cannot-load-svg-file -module.exports = { - process() { - return { - code: `module.exports = {};`, - }; - }, - getCacheKey() { - // The output is always the same. - return 'svgTransform'; - }, -}; diff --git a/packages/dashboard/tsconfig.cjs.json b/packages/dashboard/tsconfig.cjs.json deleted file mode 100644 index 0db9495e5..000000000 --- a/packages/dashboard/tsconfig.cjs.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.cjs.json", - "include": ["src"], - "files": ["custom.d.ts"], - "exclude": ["./src/msw", "./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/cjs", - "tsBuildInfoFile": "./dist/cjs/.tsbuildinfo", - "paths": { - "~/*": ["./src/*"] - } - } -} diff --git a/packages/dashboard/tsconfig.esm.json b/packages/dashboard/tsconfig.esm.json deleted file mode 100644 index 60ebdccd0..000000000 --- a/packages/dashboard/tsconfig.esm.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.esm.json", - "include": ["src"], - "files": ["custom.d.ts"], - "exclude": ["./src/msw", "./src/**/*.spec.*", "./src/**/*.test.*"], - "compilerOptions": { - "types": [], - "outDir": "./dist/esm", - "tsBuildInfoFile": "./dist/esm/.tsbuildinfo", - "paths": { - "~/*": ["./src/*"] - } - } -} diff --git a/packages/dashboard/vite.config.ts b/packages/dashboard/vite.config.ts index fc8f04427..85dc38c1b 100644 --- a/packages/dashboard/vite.config.ts +++ b/packages/dashboard/vite.config.ts @@ -1,10 +1,12 @@ /// +import { definePackageConfig } from '@iot-app-kit/vite-config/definePackageConfig'; import react from '@vitejs/plugin-react'; import { resolve } from 'path'; -import { defineConfig } from 'vite'; -// https://vitejs.dev/config/ -export default defineConfig({ +export default definePackageConfig({ + iotAppKitPackage: { + dirname: __dirname, + }, plugins: [react()], resolve: { alias: { @@ -12,22 +14,9 @@ export default defineConfig({ }, }, test: { - pool: 'threads', - include: ['src/**/*.{test,spec}.?(c|m)[jt]s?(x)'], - globals: true, - css: false, - environment: 'happy-dom', alias: { '~': resolve(__dirname, 'src'), }, - setupFiles: ['./vitest.setup.ts', 'jest-extended/all'], - coverage: { - thresholds: { - statements: 50, - branches: 75, - functions: 50, - lines: 50, - }, - }, + setupFiles: ['./vitest.setup.ts'], }, }); diff --git a/packages/data-mocked/.eslintrc.cjs b/packages/data-mocked/.eslintrc.cjs index 5b89c5273..ae1fd9e83 100644 --- a/packages/data-mocked/.eslintrc.cjs +++ b/packages/data-mocked/.eslintrc.cjs @@ -1,4 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit'], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['packages/data-mocked/tsconfig.json'], + }, + node: { + project: ['packages/data-mocked/tsconfig.json'], + }, + }, + }, }; diff --git a/packages/data-mocked/package.json b/packages/data-mocked/package.json index bc50d84b3..5fc9f6073 100644 --- a/packages/data-mocked/package.json +++ b/packages/data-mocked/package.json @@ -1,5 +1,6 @@ { "name": "@iot-app-kit/data-mocked", + "version": "12.2.1", "private": true, "type": "module", "exports": { @@ -9,17 +10,18 @@ "./handers": "./src/handlers.ts" }, "scripts": { - "clean": "rimraf storybook-static .turbo .cache test-results playwright-report", + "clean": "rimraf .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", - "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/", - "fix": "eslint --fix . --cache --cache-location ./cache/eslint/" + "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/ & npm run test:typescript", + "fix": "eslint --fix . --cache --cache-location ./cache/eslint/", + "test:typescript": "tsc --noEmit" }, - "dependencies": { + "devDependencies": { "@aws-sdk/client-iotsitewise": "^3.696.0", "@faker-js/faker": "^8.2.0", + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/ts-config": "*", "@types/node": "^18.16.18", - "eslint-config-iot-app-kit": "*", "msw": "^2.6.2", "rimraf": "^5.0.1", "typescript": "^5.5.4", @@ -27,5 +29,8 @@ }, "msw": { "workerDirectory": "public" + }, + "iotAppKit": { + "scope": "protected" } } diff --git a/packages/helpers/.eslintignore b/packages/helpers/.eslintignore index b512c09d4..76add878f 100644 --- a/packages/helpers/.eslintignore +++ b/packages/helpers/.eslintignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +dist \ No newline at end of file diff --git a/packages/helpers/.eslintrc.cjs b/packages/helpers/.eslintrc.cjs index 5b89c5273..f61819efd 100644 --- a/packages/helpers/.eslintrc.cjs +++ b/packages/helpers/.eslintrc.cjs @@ -1,4 +1,19 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit'], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['packages/helpers/tsconfig.json'], + }, + node: { + project: ['packages/helpers/tsconfig.json'], + }, + }, + }, }; diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 13d64a22e..2f12ebb12 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -1,20 +1,40 @@ { "name": "@iot-app-kit/helpers", + "version": "12.2.1", "private": true, "type": "module", + "main": "./dist/cjs/index.cjs.js", + "module": "./dist/esm/index.js", + "types": "./dist/esm/index.d.ts", "exports": { - "./constants/*": "./src/constants/*.ts" + ".": { + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.cjs.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } + } }, "scripts": { - "clean": "rimraf .turbo .cache", + "build": "NODE_OPTIONS='--import tsx/esm' vite build", + "clean": "rimraf .turbo .cache dist", "clean:nuke": "npm run clean && rimraf node_modules", "lint": "eslint . --max-warnings=0 --cache --cache-location .cache/eslint/", - "fix": "eslint --fix . --cache --cache-location ./cache/eslint/" + "fix": "eslint --fix . --cache --cache-location ./cache/eslint/", + "test:typescript": "tsc --noEmit" }, - "dependencies": { + "devDependencies": { + "@iot-app-kit/eslint-config": "*", "@iot-app-kit/ts-config": "*", - "eslint-config-iot-app-kit": "*", + "@iot-app-kit/vite-config": "*", "rimraf": "^5.0.1", - "typescript": "^5.5.4" + "tsx": "^4.19.2", + "typescript": "^5.5.4", + "vite": "^5.4.11" + }, + "iotAppKit": { + "scope": "protected" } } diff --git a/packages/helpers/src/constants/time.ts b/packages/helpers/src/constants/time.ts index 3527184b3..a62c91108 100644 --- a/packages/helpers/src/constants/time.ts +++ b/packages/helpers/src/constants/time.ts @@ -1,2 +1,5 @@ +export const NANO_SECOND_IN_MS = 1 / 1000000; export const SECOND_IN_MS = 1000; export const MINUTE_IN_MS = 60_000; +export const HOUR_IN_MS = 60 * MINUTE_IN_MS; +export const DAY_IN_MS = 24 * HOUR_IN_MS; diff --git a/packages/helpers/src/index.ts b/packages/helpers/src/index.ts new file mode 100644 index 000000000..90a4fb8e3 --- /dev/null +++ b/packages/helpers/src/index.ts @@ -0,0 +1,7 @@ +export { + DAY_IN_MS, + HOUR_IN_MS, + MINUTE_IN_MS, + NANO_SECOND_IN_MS, + SECOND_IN_MS, +} from './constants/time'; diff --git a/packages/helpers/vite.config.ts b/packages/helpers/vite.config.ts new file mode 100644 index 000000000..f3e12cbf6 --- /dev/null +++ b/packages/helpers/vite.config.ts @@ -0,0 +1,5 @@ +import { definePackageConfig } from '@iot-app-kit/vite-config/definePackageConfig'; + +export default definePackageConfig({ + iotAppKitPackage: { dirname: __dirname }, +}); diff --git a/packages/react-components/.eslintignore b/packages/react-components/.eslintignore index c212b2f71..2183c0b37 100755 --- a/packages/react-components/.eslintignore +++ b/packages/react-components/.eslintignore @@ -3,3 +3,4 @@ coverage storybook-static stencil-generated test-results +playwright-report \ No newline at end of file diff --git a/packages/react-components/.eslintrc.cjs b/packages/react-components/.eslintrc.cjs index 19b3d8024..97d6b9a97 100644 --- a/packages/react-components/.eslintrc.cjs +++ b/packages/react-components/.eslintrc.cjs @@ -1,12 +1,16 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, extends: [ - 'iot-app-kit', + ...base.extends, 'plugin:react-hooks/recommended', 'plugin:jsx-a11y/recommended', ], - plugins: ['jsx-a11y'], + plugins: [...base.plugins, 'jsx-a11y'], overrides: [ + ...base.overrides, { // Disabling explicit any rule for graph-view component since types are defined in 3p component. files: [ @@ -19,4 +23,17 @@ module.exports = { }, }, ], + settings: { + ...base.settings, + 'import/resolver': { + ...base.settings['import/resolver'], + typescript: { + ...base.settings['import/resolver'].typescript, + project: ['packages/react-components/tsconfig.json'], + }, + node: { + project: ['packages/react-components/tsconfig.json'], + }, + }, + }, }; diff --git a/packages/react-components/package.json b/packages/react-components/package.json index f0a4eefb5..d88089c68 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -2,46 +2,41 @@ "name": "@iot-app-kit/react-components", "version": "12.2.1", "license": "Apache-2.0", - "source": "./src/index.ts", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], "type": "module", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", "types": "./dist/esm/index.d.ts", "exports": { ".": { - "types": "./dist/esm/index.d.ts", - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.js", - "default": "./dist/esm/index.js" + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } } }, - "files": [ - "dist", - "CHANGELOG.md", - "*NOTICE", - "*styles.css" - ], - "publishConfig": { - "access": "public" - }, "scripts": { "start": "storybook dev -p 6007", - "build": "tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json && npm run copy-assets:es && npm run copy-assets:cjs", - "build:cjs": "tsc -b ./tsconfig.cjs.json && npm run copy-assets:cjs", - "build:es": "tsc -b ./tsconfig.esm.json && npm run copy-assets:es", - "clean": "rimraf dist storybook-static test-results coverage .turbo .cache", + "build": "NODE_OPTIONS='--import tsx/esm' vite build && npm run copy-assets:es && npm run copy-assets:cjs", + "clean": "rimraf dist storybook-static test-results playwright-report coverage .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", "copy-assets:es": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" -u 1 dist/esm/", "copy-assets:cjs": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" -u 1 dist/cjs/", - "copy:styles": "cp ../components/styles.css styles.css", - "dev": "tsc -b ./tsconfig.esm.json --watch", "dev:react-components": "npm start", - "test": "TZ=utc vitest run --silent --coverage", - "test:watch": "TZ=utc vitest --silent", - "test:types": "tsc -p ./tsconfig.json --noEmit", + "test": "NODE_OPTIONS='--import tsx/esm' TZ=utc vitest run --silent", + "test:watch": "NODE_OPTIONS='--import tsx/esm' TZ=utc vitest --silent", + "test:typescript": "tsc --noEmit", "playwright": "docker compose run playwright", "test:ui": "if test \"$NODE_ENV\" = \"production\"; then npm run _test:ui:ci ; else npm run _test:ui:local ; fi", - "test:ui:ci": "npx playwright test", + "test:ui:ci": "NODE_OPTIONS='-C @iot-app-kit/development' npx playwright test", "test:ui:reliability": "if test \"$NODE_ENV\" = \"production\"; then npm run _test:ui:reliability:ci ; else npm run _test:ui:reliability:local ; fi", "_test:ui:ci": "npx playwright test", "_test:ui:local": "npm run playwright -- npx playwright test", @@ -57,10 +52,12 @@ "pack": "npm pack" }, "devDependencies": { - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/source-iotsitewise": "12.2.1", - "@iot-app-kit/testing-util": "12.2.1", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/helpers": "*", + "@iot-app-kit/testing-util": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@playwright/test": "^1.48.2", "@storybook/addon-essentials": "^8.4.5", "@storybook/addon-links": "^8.4.5", @@ -93,7 +90,6 @@ "babel-plugin-formatjs": "10.5.3", "copyfiles": "^2.4.1", "cytoscape": "^3.25.0", - "eslint-config-iot-app-kit": "12.2.1", "eslint-plugin-jsx-a11y": "^6.8.0", "flush-promises": "^1.0.2", "jest-extended": "^3.2.4", @@ -118,9 +114,10 @@ "@cloudscape-design/global-styles": "1.0.32", "@iot-app-kit/charts": "^2.1.2", "@iot-app-kit/charts-core": "^2.1.2", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/core-util": "12.2.1", - "@iot-app-kit/source-iottwinmaker": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/core-util": "*", + "@iot-app-kit/source-iotsitewise": "*", + "@iot-app-kit/source-iottwinmaker": "*", "@tanstack/react-query": "^5.32.1", "autosize": "^6.0.1", "color": "^4.2.3", @@ -159,5 +156,8 @@ "bugs": { "url": "https://github.com/awslabs/iot-app-kit/issues" }, - "homepage": "https://github.com/awslabs/iot-app-kit#readme" + "homepage": "https://github.com/awslabs/iot-app-kit#readme", + "iotAppKit": { + "scope": "public" + } } diff --git a/packages/react-components/playwright.config.ts b/packages/react-components/playwright.config.ts index 36861479b..d9d7edbfc 100644 --- a/packages/react-components/playwright.config.ts +++ b/packages/react-components/playwright.config.ts @@ -1,8 +1,6 @@ +import { MINUTE_IN_MS, SECOND_IN_MS } from '@iot-app-kit/helpers'; import { defineConfig, devices } from '@playwright/test'; -const SECOND_IN_MS = 1000; -const MINUTE_IN_MS = 60_000; - /** * See https://playwright.dev/docs/test-configuration. */ diff --git a/packages/react-components/src/components/knowledge-graph/graph/graph-view.tsx b/packages/react-components/src/components/knowledge-graph/graph/graph-view.tsx index b657c2191..d21cc5af5 100644 --- a/packages/react-components/src/components/knowledge-graph/graph/graph-view.tsx +++ b/packages/react-components/src/components/knowledge-graph/graph/graph-view.tsx @@ -1,6 +1,5 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { type Core } from 'cytoscape'; import type cytoscape from 'cytoscape'; +import { type Core } from 'cytoscape'; import { type CSSProperties, forwardRef, diff --git a/packages/react-components/svgTransform.cjs b/packages/react-components/svgTransform.cjs deleted file mode 100644 index 445f8e572..000000000 --- a/packages/react-components/svgTransform.cjs +++ /dev/null @@ -1,12 +0,0 @@ -// refer to https://stackoverflow.com/questions/58603201/jest-cannot-load-svg-file -module.exports = { - process() { - return { - code: `module.exports = {};`, - }; - }, - getCacheKey() { - // The output is always the same. - return 'svgTransform'; - }, -}; diff --git a/packages/react-components/tsconfig.cjs.json b/packages/react-components/tsconfig.cjs.json deleted file mode 100644 index 727b1d592..000000000 --- a/packages/react-components/tsconfig.cjs.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.cjs.json", - "include": ["src"], - "files": [], - "exclude": [ - "./src/**/*.spec.*", - "./src/**/*.test.*", - "./src/**/__mocks__", - "./src/**/testing" - ], - "compilerOptions": { - "types": [], - "outDir": "./dist/cjs", - "tsBuildInfoFile": "./dist/cjs/.tsbuildinfo" - } -} diff --git a/packages/react-components/tsconfig.esm.json b/packages/react-components/tsconfig.esm.json deleted file mode 100644 index 72cf67a63..000000000 --- a/packages/react-components/tsconfig.esm.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@iot-app-kit/ts-config/tsconfig.esm.json", - "include": ["src"], - "files": [], - "exclude": [ - "./src/**/*.spec.*", - "./src/**/*.test.*", - "./src/**/__mocks__", - "./src/**/testing" - ], - "compilerOptions": { - "types": [], - "outDir": "./dist/esm", - "tsBuildInfoFile": "./dist/esm/.tsbuildinfo" - } -} diff --git a/packages/react-components/vite.config.ts b/packages/react-components/vite.config.ts index e68518159..4670c6558 100644 --- a/packages/react-components/vite.config.ts +++ b/packages/react-components/vite.config.ts @@ -1,29 +1,13 @@ -/// +import { definePackageConfig } from '@iot-app-kit/vite-config/definePackageConfig'; import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; -// https://vitejs.dev/config/ -export default defineConfig({ +export default definePackageConfig({ + iotAppKitPackage: { + dirname: __dirname, + }, plugins: [react()], test: { - pool: 'threads', - include: ['./src/**/*.{test,spec}.?(c|m)[jt]s?(x)'], - globals: true, - css: false, - environment: 'happy-dom', - setupFiles: [ - './vitest.setup.ts', - 'vitest-canvas-mock', - 'jest-extended/all', - ], + setupFiles: ['./vitest.setup.ts', 'vitest-canvas-mock'], retry: 3, - coverage: { - thresholds: { - statements: 60, - branches: 75, - functions: 70, - lines: 60, - }, - }, }, }); diff --git a/packages/scene-composer/.eslintrc.cjs b/packages/scene-composer/.eslintrc.cjs index 67831ea12..675592f55 100644 --- a/packages/scene-composer/.eslintrc.cjs +++ b/packages/scene-composer/.eslintrc.cjs @@ -1,8 +1,12 @@ +const base = require('@iot-app-kit/eslint-config'); + module.exports = { + ...base, root: true, - extends: ['iot-app-kit', 'plugin:react-hooks/recommended'], - plugins: ['formatjs', 'react-hooks'], + extends: [...base.extends, 'plugin:react-hooks/recommended'], + plugins: [...base.plugins, 'formatjs', 'react-hooks'], rules: { + ...base.rules, // note you must disable the base rule as it can report incorrect errors 'no-template-curly-in-string': 'off', 'no-use-before-define': 'off', @@ -36,6 +40,7 @@ module.exports = { 'no-throw-literal': 'error', }, overrides: [ + ...base.overrides, { files: ['*.spec.tsx', '*.spec.ts'], rules: { @@ -51,14 +56,18 @@ module.exports = { }, ], ignorePatterns: [ + ...base.ignorePatterns, 'src/three/GLTFLoader.js', 'src/three/tiles3d/*', 'tools/watch-build.js', 'src/assets/auto-gen/icons/*', ], settings: { + ...base.settings, 'import/resolver': { + ...base.settings['import/resolver'], typescript: { + ...base.settings['import/resolver'].typescript, project: ['packages/scene-composer/tsconfig.json'], }, node: { diff --git a/packages/scene-composer/.husky/pre-commit b/packages/scene-composer/.husky/pre-commit deleted file mode 100755 index 94b6d48da..000000000 --- a/packages/scene-composer/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -./node_modules/.bin/formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --out-file translations/IotAppKitSceneComposer.en_US.json --id-interpolation-pattern '[sha512:contenthash:base64:6]' --format tools/totoro-formatter.js && git add translations/IotAppKitSceneComposer.en_US.json diff --git a/packages/scene-composer/package.json b/packages/scene-composer/package.json index d60d319e9..7591bff9b 100644 --- a/packages/scene-composer/package.json +++ b/packages/scene-composer/package.json @@ -1,65 +1,52 @@ { "name": "@iot-app-kit/scene-composer", + "version": "12.2.1", + "license": "Apache-2.0", "publishConfig": { "access": "public" }, - "version": "12.2.1", "description": "AWS IoT TwinMaker Scene Composer Library", "homepage": "https://github.com/awslabs/iot-app-kit#readme", - "license": "Apache-2.0", + "files": [ + "dist" + ], "type": "module", "main": "./dist/cjs/src/index.js", "module": "./dist/esm/src/index.js", "types": "./dist/esm/src/index.d.ts", "exports": { ".": { - "types": "./dist/esm/src/index.d.ts", - "require": "./dist/cjs/src/index.js", - "import": "./dist/esm/src/index.js", - "default": "./dist/esm/src/index.js" + "@iot-app-kit/development": "./src/index.ts", + "default": { + "types": "./dist/esm/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "default": "./dist/esm/index.js" + } } }, - "source": "./src/index.tsx", - "directories": { - "dist": "dist", - "test": "__tests__" - }, - "files": [ - "dist", - "CHANGELOG.md", - "THIRD-PARTY-LICENSES", - "*NOTICE" - ], "repository": { "type": "git", "url": "git+https://github.com/awslabs/iot-app-kit.git" }, "scripts": { - "build": "run-s compile", - "build:cjs": "run-s compile:cjs", - "build:es": "run-s compile:es", - "build:ts": "tsc -b ./tsconfig.esm.json ./tsconfig.cjs.json", - "build:ts:cjs": "tsc -b ./tsconfig.cjs.json", - "build:ts:es": "tsc -b ./tsconfig.esm.json", - "clean": "rimraf dist coverage ./build/* .turbo .cache", + "build": "run-s svglint extract-msgs convert-svg build:ts copy-assets:es copy-assets:cjs", + "build:ts": "NODE_OPTIONS='--import tsx/esm' vite build", + "clean": "rimraf dist coverage playwright-report test-results .turbo .cache", "clean:nuke": "npm run clean && rimraf node_modules", "pre:compile": "run-s svglint extract-msgs convert-svg", - "compile": "run-s svglint extract-msgs convert-svg build:ts copy-assets:es copy-assets:cjs", - "compile:cjs": "run-s svglint extract-msgs convert-svg build:ts:cjs copy-assets:cjs", - "compile:es": "run-s svglint extract-msgs convert-svg build:ts:es copy-assets:es", - "dev": "tsc -b ./tsconfig.esm.json --watch", "convert-svg": "npx @svgr/cli --out-dir src/assets/auto-gen/icons/ --typescript --jsx-runtime automatic --index-template tools/index-template.cjs -- src/assets/icons/", - "release": "run-s compile copy-assets:es copy-assets:cjs", + "release": "run-s build copy-assets:es copy-assets:cjs", "copy-assets:es": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" dist/esm/", "copy-assets:cjs": "copyfiles -e \"**/*.tsx\" -e \"**/*.ts\" -e \"**/*.snap\" -e \"**/*.js\" -e \"**/*.jsx\" -e \"**/*.json\" \"src/**/*\" dist/cjs/", "lint": "eslint . --max-warnings=714 --cache --cache-location .cache/eslint/", "fix": "eslint --fix . --cache --cache-location .cache/eslint/", - "test": "TZ=utc vitest run --silent --coverage", - "test:watch": "TZ=utc vitest --silent", + "test": "NODE_OPTIONS='--import tsx/esm' TZ=utc vitest run --silent", + "test:watch": "NODE_OPTIONS='--import tsx/esm' TZ=utc vitest --silent", "test:reliability": "npm run test:ui:reliability", "playwright": "docker compose run playwright", "test:ui": "if test \"$NODE_ENV\" = \"production\"; then npm run _test:ui:ci ; else npm run _test:ui:local ; fi", - "test:ui:ci": "npx playwright test", + "test:ui:ci": "NODE_OPTIONS='-C @iot-app-kit/development' npx playwright test", "test:ui:reliability": "if test \"$NODE_ENV\" = \"production\"; then npm run _test:ui:reliability:ci ; else npm run _test:ui:reliability:local ; fi", "_test:ui:ci": "npx playwright test", "_test:ui:local": "npm run playwright -- npx playwright test", @@ -71,11 +58,12 @@ "start": "npm run storybook", "build-storybook": "storybook build", "extract-msgs": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --out-file translations/IotAppKitSceneComposer.en_US.json --id-interpolation-pattern '[sha512:contenthash:base64:6]' --format tools/totoro-formatter.cjs", - "prepare": "cd ../.. && husky install && ts-patch install -s", + "prepare": "cd ../.. && ts-patch install -s", "copy:license": "cp ../../LICENSE LICENSE", "copy:notice": "cp ../../NOTICE NOTICE", - "prepack": "npm run copy:license && npm run copy:notice", + "prepack": "npm run copy:license && npm run copy:notice && npx tsx ./prepack.cts", "pack": "npm pack", + "postpack": "npx tsx ./postpack.cts", "svglint": "svglint src/assets/**/*.svg" }, "peerDependencies": { @@ -96,7 +84,10 @@ "@cloudscape-design/design-tokens": "^3.0.35", "@cloudscape-design/global-styles": "^1.0.25", "@formatjs/cli": "^6.3.8", - "@iot-app-kit/ts-config": "12.2.1", + "@iot-app-kit/eslint-config": "*", + "@iot-app-kit/helpers": "*", + "@iot-app-kit/ts-config": "*", + "@iot-app-kit/vite-config": "*", "@playwright/test": "^1.48.2", "@react-spring/three": "^9.7.2", "@storybook/addon-essentials": "^8.4.5", @@ -106,7 +97,6 @@ "@storybook/react-vite": "^8.4.5", "@storybook/test": "^8.4.5", "@svgr/cli": "^8.1.0", - "@swc/plugin-formatjs": "^1.0.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", @@ -122,16 +112,10 @@ "@vitest/coverage-v8": "^2.1.5", "babel-plugin-formatjs": "10.5.3", "copyfiles": "^2.4.1", - "eslint-config-iot-app-kit": "12.2.1", "happy-dom": "^15.11.6", - "husky": "8.0.3", "jest-extended": "^3.2.4", - "jsdom": "^25.0.1", - "nodemon": "^2.0.22", "npm-run-all": "^4.1.5", "postcss": "^8.4.31", - "prettier": "^2.8.8", - "prettier-eslint": "^16.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intl": "^6.8.7", @@ -156,9 +140,9 @@ "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", - "@iot-app-kit/core": "12.2.1", - "@iot-app-kit/react-components": "12.2.1", - "@iot-app-kit/source-iottwinmaker": "12.2.1", + "@iot-app-kit/core": "*", + "@iot-app-kit/react-components": "*", + "@iot-app-kit/source-iottwinmaker": "*", "@matterport/r3f": "0.2.7", "@matterport/webcomponent": "0.1.35", "@react-three/drei": "9.56.27", @@ -195,5 +179,8 @@ "tslib": "^2.5.3", "zundo": "1.6.0", "zustand": "^4.5.2" + }, + "iotAppKit": { + "scope": "public" } } diff --git a/packages/scene-composer/playwright.config.ts b/packages/scene-composer/playwright.config.ts index 0e82091ba..f01967e17 100644 --- a/packages/scene-composer/playwright.config.ts +++ b/packages/scene-composer/playwright.config.ts @@ -1,8 +1,6 @@ +import { MINUTE_IN_MS, SECOND_IN_MS } from '@iot-app-kit/helpers'; import { defineConfig, devices } from '@playwright/test'; -const SECOND_IN_MS = 1000; -const MINUTE_IN_MS = 60_000; - /** * See https://playwright.dev/docs/test-configuration. */ diff --git a/packages/scene-composer/src/components/DefaultErrorFallback/__tests__/__snapshots__/DefaultErrorFallback.spec.tsx.snap b/packages/scene-composer/src/components/DefaultErrorFallback/__tests__/__snapshots__/DefaultErrorFallback.spec.tsx.snap index f73d75d1e..5d69cfd82 100644 --- a/packages/scene-composer/src/components/DefaultErrorFallback/__tests__/__snapshots__/DefaultErrorFallback.spec.tsx.snap +++ b/packages/scene-composer/src/components/DefaultErrorFallback/__tests__/__snapshots__/DefaultErrorFallback.spec.tsx.snap @@ -1,28 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`DefaultErrorFallback > should render correctly with a Error type 1`] = ` - - Error - - } - > - -

- Testing an error -

-
- - } -/> -`; - -exports[`DefaultErrorFallback > should render correctly with a Error type 2`] = ` should render correctly with a Error type 2`] = `; exports[`DefaultErrorFallback > should render correctly with a SceneComposerRuntimeError type 1`] = ` - - Error - - } - > - -

- Testing a SceneComposerRuntimeError -

-
- - } -/> -`; - -exports[`DefaultErrorFallback > should render correctly with a SceneComposerRuntimeError type 2`] = ` should render correctly with a SceneComposerRunt `; exports[`DefaultErrorFallback > should render correctly with a String type 1`] = ` - - Error - - } - > - -

- Testing a string -

-
- - } -/> -`; - -exports[`DefaultErrorFallback > should render correctly with a String type 2`] = ` should render correctly with a String type 2`] = `; exports[`DefaultErrorFallback > should render correctly with a Unknown type 1`] = ` - - Error - - } - > - -

- An unexpected error occurred. -

-
- - } -/> -`; - -exports[`DefaultErrorFallback > should render correctly with a Unknown type 2`] = ` should render with correct progress with 0% done 1`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 0% - - -
-
- -
- 0 out of 10 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with 0% done 2`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 0% - - -
-
- -
- 0 out of 10 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with 0% done 3`] = `
should render with correct progress with 0% done 3 `; exports[`ConvertingProgress > should render with correct progress with all done 1`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 100% - - -
-
- -
- 10 out of 10 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with all done 2`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 100% - - -
-
- -
- 10 out of 10 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with all done 3`] = `
should render with correct progress with all done `; exports[`ConvertingProgress > should render with correct progress with partially done 1`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 22.22222222222222% - - -
-
- -
- 2 out of 9 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with partially done 2`] = ` -
-
-
-
-
-
-
- Converting nodes -
-
-
- - -
- - - - Converting nodes: 22.22222222222222% - - -
-
- -
- 2 out of 9 converted -
-
-
-
-
-
-
-`; - -exports[`ConvertingProgress > should render with correct progress with partially done 3`] = `
should render correctly for loading status 1`] = ` -
-
- Delete delete-node-name - - - - - If you attempt to undo this action after delete-node-name is deleted, it may have issues such as the children still being deleted or disconnection from data. -
-
-`; - -exports[`DeleteNodeModal > should render correctly for loading status 2`] = ` -
-
- Delete delete-node-name - - - - - If you attempt to undo this action after delete-node-name is deleted, it may have issues such as the children still being deleted or disconnection from data. -
-
-`; - -exports[`DeleteNodeModal > should render correctly for loading status 3`] = `
Delete delete-node-name diff --git a/packages/scene-composer/src/components/panels/SceneHierarchyPanel/__snapshots__/SceneHierarchyPanel.spec.tsx.snap b/packages/scene-composer/src/components/panels/SceneHierarchyPanel/__snapshots__/SceneHierarchyPanel.spec.tsx.snap index d68571da7..8ae11947a 100644 --- a/packages/scene-composer/src/components/panels/SceneHierarchyPanel/__snapshots__/SceneHierarchyPanel.spec.tsx.snap +++ b/packages/scene-composer/src/components/panels/SceneHierarchyPanel/__snapshots__/SceneHierarchyPanel.spec.tsx.snap @@ -1,214 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "C" 1`] = ` -
-
-
-
-
-
-
- - - - - - -
-
-
-
-
- -
-
-
-
    -
-
-
-`; - -exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "C" 2`] = ` -
-
-
-
-
-
-
- - - - - - -
-
-
-
-
- -
-
-
-
    -
-
-
-`; - -exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "C" 3`] = `
should render hierarchy correctly when enabled is `; exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "T1" 1`] = ` -
-
-
-
-
-
-
- - - - - - -
-
-
-
-
- -
-
-
-
    -
-
-
-`; - -exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "T1" 2`] = ` -
-
-
-
-
-
-
- - - - - - -
-
-
-
-
- -
-
-
-
    -
-
-
-`; - -exports[`SceneHierarchyPanel > should render hierarchy correctly when enabled is "T1" 3`] = `
it should render the Camera svg 1`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Camera svg 2`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Camera svg 3`] = `
@@ -60,60 +22,6 @@ exports[`ComponentTypeIcon > it should render the Camera svg 3`] = ` exports[`ComponentTypeIcon > it should render the Empty svg 1`] = `null`; exports[`ComponentTypeIcon > it should render the Light svg 1`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Light svg 2`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Light svg 3`] = `
@@ -141,82 +49,6 @@ exports[`ComponentTypeIcon > it should render the Light svg 3`] = ` `; exports[`ComponentTypeIcon > it should render the ModelRef svg 1`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the ModelRef svg 2`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the ModelRef svg 3`] = `
@@ -255,82 +87,6 @@ exports[`ComponentTypeIcon > it should render the ModelRef svg 3`] = ` `; exports[`ComponentTypeIcon > it should render the SubModelRef svg 1`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the SubModelRef svg 2`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the SubModelRef svg 3`] = `
@@ -369,64 +125,6 @@ exports[`ComponentTypeIcon > it should render the SubModelRef svg 3`] = ` `; exports[`ComponentTypeIcon > it should render the Tag svg 1`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Tag svg 2`] = ` - -`; - -exports[`ComponentTypeIcon > it should render the Tag svg 3`] = `
diff --git a/packages/scene-composer/src/components/panels/__snapshots__/SettingsPanel.spec.tsx.snap b/packages/scene-composer/src/components/panels/__snapshots__/SettingsPanel.spec.tsx.snap index 69ef52d38..5569eb343 100644 --- a/packages/scene-composer/src/components/panels/__snapshots__/SettingsPanel.spec.tsx.snap +++ b/packages/scene-composer/src/components/panels/__snapshots__/SettingsPanel.spec.tsx.snap @@ -1,786 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`SettingsPanel contains expected elements. > should contains default elements in editing mode. 1`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains default elements in editing mode. 2`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains default elements in editing mode. 3`] = `
should contains default ele `; exports[`SettingsPanel contains expected elements. > should contains default elements in viewing mode. 1`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains default elements in viewing mode. 2`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains default elements in viewing mode. 3`] = `
should contains default ele `; exports[`SettingsPanel contains expected elements. > should contains settings element for converting scene in editing. 1`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
-
-
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for converting scene in editing. 2`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
-
-
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for converting scene in editing. 3`] = `
should contains settings el `; exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in editing. 1`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in editing. 2`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
- -

- Overlay -

-

- Visibility settings -

- - - - - - - - - - Always on - - - - -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in editing. 3`] = `
should contains settings el `; exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in viewing. 1`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in viewing. 2`] = ` -
-
-
-
- -
-
-
-
-
-
-
-

- Motion indicator -

-
- - - - - - - - - - -
-
-
-
-

- Tag -

-
- - - - - - - - - - -
-
-
-
-

- Overlay -

-
- - - - - - - - - - -
-
-
-
-

- Annotation -

-
- - - - - - - - - - -
-
-
-
-
-
-
-
-
-
- -
-
-`; - -exports[`SettingsPanel contains expected elements. > should contains settings element for overlay in viewing. 3`] = `
SceneNode panel contains expected elements when none selected scene node. 1`] = ` -
-
-
-
- - - -
-
-
- - Properties - -
-
-
-
-
-
-
-
-

- No node selected. -

-
-
-
-
-
-
-
-`; - -exports[`SceneNodeInspectorPanel returns expected elements. > SceneNode panel contains expected elements when none selected scene node. 2`] = ` -
-
-
-
- - - -
-
-
- - Properties - -
-
-
-
-
-
-
-
-

- No node selected. -

-
-
-
-
-
-
-
-`; - -exports[`SceneNodeInspectorPanel returns expected elements. > SceneNode panel contains expected elements when none selected scene node. 3`] = `
SceneNode panel co [{},{}]
-