From e00e04d60a9f37cca7cb68040606c69b897963cf Mon Sep 17 00:00:00 2001 From: kubrickcode Date: Tue, 18 Nov 2025 12:40:06 +0000 Subject: [PATCH] refactor: flatten project structure to src-level organization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructured nested src/extension/src/ hierarchy to src-level flat organization with extension and view at equal depth - src/extension/: entry point only (main.ts) - src/internal/: private implementation (managers, providers, adapters) - src/pkg/: public API (types, constants) - src/tests/: integration tests (*.test.ts → *.spec.ts) - src/view/: React configuration UI (renamed from web-view) - src/shared/: shared types/constants between Extension and View fix #76 --- .github/workflows/lint.yml | 12 +- .lintstagedrc.js | 2 +- .vscodeignore | 25 +- CLAUDE.md | 4 +- justfile | 40 +- package.json | 2 +- src/{extension => }/eslint.config.js | 46 +- src/extension/.gitignore | 2 +- src/extension/.npmrc | 1 - .../{jest.config.js => jest.config.cjs} | 13 +- src/extension/{src => }/main.ts | 20 +- src/extension/package.json | 2 +- src/extension/tsconfig.json | 15 +- .../{src => }/types/convert-layout.d.ts | 0 .../{src => }/types/tiny-pinyin.d.ts | 0 .../view-dist/assets/index-DaHakWf7.css | 1 + .../view-dist/assets/index-iXByG0Qx.js | 167 + src/extension/view-dist/index.html | 14 + .../public => extension/view-dist}/vite.svg | 0 src/{extension/src => internal}/adapters.ts | 5 +- .../src => internal}/command-executor.ts | 4 +- .../keyboard-layout-converter.ts | 0 .../managers}/config-manager.ts | 4 +- .../managers}/status-bar-manager.ts | 4 +- .../managers}/terminal-manager.ts | 2 +- .../providers}/command-tree-provider.ts | 4 +- .../providers}/webview-provider.ts | 16 +- .../src => internal}/show-all-commands.ts | 4 +- src/package.json | 14 + .../src => pkg}/config-constants.ts | 2 +- src/{extension/src => pkg}/types.ts | 2 +- src/pnpm-lock.yaml | 3041 +++++++++++++++++ src/shared/constants.ts | 12 +- src/shared/types.ts | 4 +- .../adapters.spec.ts} | 2 +- .../command-executor.spec.ts} | 4 +- .../command-tree-provider.spec.ts} | 4 +- .../keyboard-layout-converter.spec.ts} | 2 +- .../src/main.test.ts => tests/main.spec.ts} | 20 +- .../show-all-commands.spec.ts} | 4 +- .../status-bar-manager.spec.ts} | 4 +- .../terminal-manager.spec.ts} | 2 +- .../webview-provider.spec.ts} | 22 +- src/{web-view => view}/.gitignore | 0 src/{web-view => view}/README.md | 0 src/{web-view => view}/components.json | 0 src/{web-view => view}/eslint.config.js | 0 src/{web-view => view}/index.html | 0 src/{web-view => view}/package.json | 2 +- src/{web-view => view}/pnpm-lock.yaml | 0 src/view/public/vite.svg | 1 + src/{web-view => view}/src/app.tsx | 0 src/{web-view => view}/src/assets/react.svg | 0 .../src/components/command-form-dialog.tsx | 0 .../src/components/command-form.tsx | 0 .../src/components/command-list.tsx | 0 .../components/delete-confirmation-dialog.tsx | 0 .../src/components/group-command-editor.tsx | 0 .../src/components/group-command-item.tsx | 0 .../src/components/group-command-list.tsx | 0 .../group-to-single-warning-dialog.tsx | 0 .../src/components/header.tsx | 0 .../src/context/command-form-context.tsx | 0 .../src/context/vscode-command-context.tsx | 0 src/{web-view => view}/src/core/badge.tsx | 0 src/{web-view => view}/src/core/button.tsx | 0 src/{web-view => view}/src/core/card.tsx | 0 src/{web-view => view}/src/core/checkbox.tsx | 0 src/{web-view => view}/src/core/dialog.tsx | 0 .../src/core/form-label.tsx | 0 src/{web-view => view}/src/core/index.tsx | 0 src/{web-view => view}/src/core/input.tsx | 0 src/{web-view => view}/src/core/label.tsx | 0 .../src/core/radio-group.tsx | 0 .../src/core/shadcn/badge.tsx | 0 .../src/core/shadcn/button.tsx | 0 .../src/core/shadcn/card.tsx | 0 .../src/core/shadcn/checkbox.tsx | 0 .../src/core/shadcn/dialog.tsx | 0 .../src/core/shadcn/index.tsx | 0 .../src/core/shadcn/input.tsx | 0 .../src/core/shadcn/label.tsx | 0 .../src/core/shadcn/radio-group.tsx | 0 .../src/core/shadcn/textarea.tsx | 0 .../src/core/shadcn/tooltip.tsx | 0 .../src/core/shadcn/utils.tsx | 0 src/{web-view => view}/src/core/textarea.tsx | 0 src/{web-view => view}/src/core/tooltip.tsx | 0 .../src/core/vscode-api.tsx | 0 .../src/hooks/use-command-operations.tsx | 0 .../src/hooks/use-dark-mode.tsx | 0 .../src/hooks/use-sortable-item.tsx | 0 .../src/hooks/use-sortable-list.tsx | 0 src/{web-view => view}/src/main.tsx | 0 src/{web-view => view}/src/mock/mock-data.tsx | 0 .../src/mock/vscode-mock.tsx | 0 src/{web-view => view}/src/style.css | 0 src/{web-view => view}/src/types.tsx | 0 src/{web-view => view}/src/vite-env.d.ts | 0 src/{web-view => view}/tsconfig.app.json | 0 src/{web-view => view}/tsconfig.json | 0 src/{web-view => view}/tsconfig.node.json | 0 src/{web-view => view}/vite.config.ts | 0 103 files changed, 3426 insertions(+), 125 deletions(-) rename src/{extension => }/eslint.config.js (60%) rename src/extension/{jest.config.js => jest.config.cjs} (60%) rename src/extension/{src => }/main.ts (83%) rename src/extension/{src => }/types/convert-layout.d.ts (100%) rename src/extension/{src => }/types/tiny-pinyin.d.ts (100%) create mode 100644 src/extension/view-dist/assets/index-DaHakWf7.css create mode 100644 src/extension/view-dist/assets/index-iXByG0Qx.js create mode 100644 src/extension/view-dist/index.html rename src/{web-view/public => extension/view-dist}/vite.svg (100%) rename src/{extension/src => internal}/adapters.ts (94%) rename src/{extension/src => internal}/command-executor.ts (98%) rename src/{extension/src => internal}/keyboard-layout-converter.ts (100%) rename src/{extension/src => internal/managers}/config-manager.ts (96%) rename src/{extension/src => internal/managers}/status-bar-manager.ts (95%) rename src/{extension/src => internal/managers}/terminal-manager.ts (97%) rename src/{extension/src => internal/providers}/command-tree-provider.ts (96%) rename src/{extension/src => internal/providers}/webview-provider.ts (90%) rename src/{extension/src => internal}/show-all-commands.ts (92%) create mode 100644 src/package.json rename src/{extension/src => pkg}/config-constants.ts (88%) rename src/{extension/src => pkg}/types.ts (84%) create mode 100644 src/pnpm-lock.yaml rename src/{extension/src/adapters.test.ts => tests/adapters.spec.ts} (95%) rename src/{extension/src/command-executor.test.ts => tests/command-executor.spec.ts} (99%) rename src/{extension/src/command-tree-provider.test.ts => tests/command-tree-provider.spec.ts} (98%) rename src/{extension/src/keyboard-layout-converter.test.ts => tests/keyboard-layout-converter.spec.ts} (97%) rename src/{extension/src/main.test.ts => tests/main.spec.ts} (89%) rename src/{extension/src/show-all-commands.test.ts => tests/show-all-commands.spec.ts} (97%) rename src/{extension/src/status-bar-manager.test.ts => tests/status-bar-manager.spec.ts} (98%) rename src/{extension/src/terminal-manager.test.ts => tests/terminal-manager.spec.ts} (98%) rename src/{extension/src/webview-provider.test.ts => tests/webview-provider.spec.ts} (97%) rename src/{web-view => view}/.gitignore (100%) rename src/{web-view => view}/README.md (100%) rename src/{web-view => view}/components.json (100%) rename src/{web-view => view}/eslint.config.js (100%) rename src/{web-view => view}/index.html (100%) rename src/{web-view => view}/package.json (98%) rename src/{web-view => view}/pnpm-lock.yaml (100%) create mode 100644 src/view/public/vite.svg rename src/{web-view => view}/src/app.tsx (100%) rename src/{web-view => view}/src/assets/react.svg (100%) rename src/{web-view => view}/src/components/command-form-dialog.tsx (100%) rename src/{web-view => view}/src/components/command-form.tsx (100%) rename src/{web-view => view}/src/components/command-list.tsx (100%) rename src/{web-view => view}/src/components/delete-confirmation-dialog.tsx (100%) rename src/{web-view => view}/src/components/group-command-editor.tsx (100%) rename src/{web-view => view}/src/components/group-command-item.tsx (100%) rename src/{web-view => view}/src/components/group-command-list.tsx (100%) rename src/{web-view => view}/src/components/group-to-single-warning-dialog.tsx (100%) rename src/{web-view => view}/src/components/header.tsx (100%) rename src/{web-view => view}/src/context/command-form-context.tsx (100%) rename src/{web-view => view}/src/context/vscode-command-context.tsx (100%) rename src/{web-view => view}/src/core/badge.tsx (100%) rename src/{web-view => view}/src/core/button.tsx (100%) rename src/{web-view => view}/src/core/card.tsx (100%) rename src/{web-view => view}/src/core/checkbox.tsx (100%) rename src/{web-view => view}/src/core/dialog.tsx (100%) rename src/{web-view => view}/src/core/form-label.tsx (100%) rename src/{web-view => view}/src/core/index.tsx (100%) rename src/{web-view => view}/src/core/input.tsx (100%) rename src/{web-view => view}/src/core/label.tsx (100%) rename src/{web-view => view}/src/core/radio-group.tsx (100%) rename src/{web-view => view}/src/core/shadcn/badge.tsx (100%) rename src/{web-view => view}/src/core/shadcn/button.tsx (100%) rename src/{web-view => view}/src/core/shadcn/card.tsx (100%) rename src/{web-view => view}/src/core/shadcn/checkbox.tsx (100%) rename src/{web-view => view}/src/core/shadcn/dialog.tsx (100%) rename src/{web-view => view}/src/core/shadcn/index.tsx (100%) rename src/{web-view => view}/src/core/shadcn/input.tsx (100%) rename src/{web-view => view}/src/core/shadcn/label.tsx (100%) rename src/{web-view => view}/src/core/shadcn/radio-group.tsx (100%) rename src/{web-view => view}/src/core/shadcn/textarea.tsx (100%) rename src/{web-view => view}/src/core/shadcn/tooltip.tsx (100%) rename src/{web-view => view}/src/core/shadcn/utils.tsx (100%) rename src/{web-view => view}/src/core/textarea.tsx (100%) rename src/{web-view => view}/src/core/tooltip.tsx (100%) rename src/{web-view => view}/src/core/vscode-api.tsx (100%) rename src/{web-view => view}/src/hooks/use-command-operations.tsx (100%) rename src/{web-view => view}/src/hooks/use-dark-mode.tsx (100%) rename src/{web-view => view}/src/hooks/use-sortable-item.tsx (100%) rename src/{web-view => view}/src/hooks/use-sortable-list.tsx (100%) rename src/{web-view => view}/src/main.tsx (100%) rename src/{web-view => view}/src/mock/mock-data.tsx (100%) rename src/{web-view => view}/src/mock/vscode-mock.tsx (100%) rename src/{web-view => view}/src/style.css (100%) rename src/{web-view => view}/src/types.tsx (100%) rename src/{web-view => view}/src/vite-env.d.ts (100%) rename src/{web-view => view}/tsconfig.app.json (100%) rename src/{web-view => view}/tsconfig.json (100%) rename src/{web-view => view}/tsconfig.node.json (100%) rename src/{web-view => view}/vite.config.ts (100%) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 40fe03e..4e8b4d6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,7 +9,7 @@ on: - unlocked paths: - "src/extension/**" - - "src/web-view/**" + - "src/view/**" - "**/*.json" - "**/*.yml" - "**/*.yaml" @@ -19,7 +19,7 @@ on: - main paths: - "src/extension/**" - - "src/web-view/**" + - "src/view/**" - "**/*.json" - "**/*.yml" - "**/*.yaml" @@ -52,8 +52,8 @@ jobs: - name: Lint Extension run: just lint extension - lint-web-view: - name: Lint Web View Code + lint-view: + name: Lint View Code runs-on: ubuntu-latest steps: - name: Checkout @@ -74,8 +74,8 @@ jobs: - name: Install dependencies run: just deps - - name: Lint Web View - run: just lint web-view + - name: Lint View + run: just lint view lint-config: name: Lint Config Files diff --git a/.lintstagedrc.js b/.lintstagedrc.js index f42e80a..0684472 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,6 +1,6 @@ module.exports = { "src/extension/**/*.ts": () => "just lint extension", - "src/web-view/**/*.{ts,tsx}": () => "just lint web-view", + "src/view/**/*.{ts,tsx}": () => "just lint view", "**/*.{json,yml,yaml,md}": () => "just lint config", justfile: () => "just lint justfile", }; diff --git a/.vscodeignore b/.vscodeignore index fdcf894..6f65582 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,13 +1,21 @@ # Source code files - only include compiled output -src/extension/src/ +src/extension/main.ts src/extension/__mocks__/ src/extension/*.test.ts src/extension/*.test.js src/extension/*.spec.ts src/extension/*.spec.js +src/internal/ +src/pkg/ +src/shared/ +src/tests/ # Development dependencies -src/web-view/node_modules/ +src/view/node_modules/ +src/node_modules/ +src/package.json +src/pnpm-lock.yaml +src/eslint.config.js # Exclude dev dependencies from extension package src/extension/node_modules/@jest/ @@ -30,16 +38,8 @@ src/extension/.gitignore src/extension/yarn.lock src/extension/package-lock.json -# Web view source (keep only built output) -src/web-view/src/ -src/web-view/public/ -src/web-view/node_modules/ -src/web-view/package.json -src/web-view/package-lock.json -src/web-view/yarn.lock -src/web-view/tsconfig.json -src/web-view/vite.config.ts -src/web-view/.gitignore +# View source (keep only built output in view-dist) +src/view/ # Root public folder - exclude large screenshots but keep logo public/screenshots/ @@ -48,6 +48,7 @@ public/*.gif # Root level dependencies node_modules/ +.pnpm-store/ frontend/ # Development files diff --git a/CLAUDE.md b/CLAUDE.md index f298678..7d9dd5f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -61,7 +61,7 @@ npm run ovsx-publish # Publish to Open VSX Registry ```bash # React + Vite configuration UI -cd src/web-view +cd src/view npm run dev # Start dev server npm run build # Build for production npm run lint # Run ESLint @@ -144,7 +144,7 @@ src/extension/src/ # TypeScript extension code command-executor.ts # Command execution logic keyboard-layout-converter.ts # Multi-language support -src/web-view/src/ # React configuration UI +src/view/src/ # React configuration UI app.tsx # Root component core/ # Reusable UI components components/ # Feature-specific components diff --git a/justfile b/justfile index 8158f09..d7bd085 100644 --- a/justfile +++ b/justfile @@ -1,27 +1,31 @@ set dotenv-load := true root_dir := justfile_directory() -extension_dir := root_dir + "/src/extension" -web_view_dir := root_dir + "/src/web-view" +src_dir := root_dir + "/src" +extension_dir := src_dir + "/extension" +view_dir := src_dir + "/view" -deps: deps-root deps-extension deps-web-view +deps: deps-root deps-src deps-extension deps-view deps-root: cd "{{ root_dir }}" && pnpm install +deps-src: + cd "{{ src_dir }}" && pnpm install + deps-extension: cd "{{ extension_dir }}" && pnpm install -deps-web-view: - cd "{{ web_view_dir }}" && pnpm install +deps-view: + cd "{{ view_dir }}" && pnpm install install-package: cd "{{ root_dir }}" && pnpm install-package clean-build: - rm -rf "{{ web_view_dir }}/dist" - rm -rf "{{ extension_dir }}/web-view-dist" - rm -rf "{{ root_dir }}/out" + rm -rf "{{ view_dir }}/dist" + rm -rf "{{ extension_dir }}/view-dist" + rm -rf "{{ extension_dir }}/out" lint target="all": #!/usr/bin/env bash @@ -29,18 +33,18 @@ lint target="all": case "{{ target }}" in all) just lint extension - just lint web-view + just lint view just lint config just lint justfile ;; extension) - npx prettier --write "{{ extension_dir }}/src/**/*.ts" - cd "{{ extension_dir }}" - pnpm lint + npx prettier --write "{{ src_dir }}/{extension,internal,pkg,shared,tests}/**/*.ts" + cd "{{ src_dir }}" + npx eslint --fix extension/main.ts internal pkg shared tests ;; - web-view) - npx prettier --write "{{ web_view_dir }}/src/**/*.{ts,tsx}" - cd "{{ web_view_dir }}" + view) + npx prettier --write "{{ view_dir }}/src/**/*.{ts,tsx}" + cd "{{ view_dir }}" pnpm lint ;; config) @@ -56,8 +60,8 @@ lint target="all": esac package: clean-build - cd "{{ web_view_dir }}" && pnpm build - cp -r "{{ web_view_dir }}/dist" "{{ extension_dir }}/web-view-dist" + cd "{{ view_dir }}" && pnpm build + cp -r "{{ view_dir }}/dist" "{{ extension_dir }}/view-dist" cd "{{ extension_dir }}" && pnpm compile cd "{{ root_dir }}" && pnpm package @@ -100,7 +104,7 @@ release: @echo "📊 Check progress: https://github.com/KubrickCode/quick-command-buttons/actions" run-view: - cd "{{ web_view_dir }}" && pnpm dev + cd "{{ view_dir }}" && pnpm dev test mode="": #!/usr/bin/env bash diff --git a/package.json b/package.json index d5639b7..9ac367a 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "activationEvents": [ "onStartupFinished" ], - "main": "./src/extension/out/src/main.js", + "main": "./src/extension/out/extension/main.js", "contributes": { "commands": [ { diff --git a/src/extension/eslint.config.js b/src/eslint.config.js similarity index 60% rename from src/extension/eslint.config.js rename to src/eslint.config.js index ca8a082..9590a7d 100644 --- a/src/extension/eslint.config.js +++ b/src/eslint.config.js @@ -4,16 +4,18 @@ import perfectionist from "eslint-plugin-perfectionist"; import tseslint from "typescript-eslint"; export default [ + { + ignores: ["**/out/**", "**/__mocks__/**", "**/*.config.*", "**/node_modules/**", "**/view/**", "**/coverage/**"], + }, js.configs.recommended, ...tseslint.configs.recommended, { - files: ["src/**/*.ts", "test/**/*.ts"], - ignores: ["dist", "node_modules"], + files: ["extension/main.ts", "internal/**/*.ts", "pkg/**/*.ts", "shared/**/*.ts"], languageOptions: { parser: tseslint.parser, parserOptions: { ecmaVersion: "latest", - project: "./tsconfig.json", + project: "./extension/tsconfig.json", sourceType: "module", tsconfigRootDir: import.meta.dirname, }, @@ -77,4 +79,42 @@ export default [ ], }, }, + { + files: ["tests/**/*.ts"], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + }, + plugins: { + "@typescript-eslint": tseslint.plugin, + import: importPlugin, + perfectionist, + }, + rules: { + "@typescript-eslint/consistent-type-definitions": ["error", "type"], + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "import/order": [ + "error", + { + alphabetize: { + caseInsensitive: true, + order: "asc", + }, + }, + ], + }, + }, ]; \ No newline at end of file diff --git a/src/extension/.gitignore b/src/extension/.gitignore index 5b21a16..67bd6ed 100644 --- a/src/extension/.gitignore +++ b/src/extension/.gitignore @@ -1,3 +1,3 @@ node_modules out -web-view-dist +view-dist diff --git a/src/extension/.npmrc b/src/extension/.npmrc index 8e5a554..d67f374 100644 --- a/src/extension/.npmrc +++ b/src/extension/.npmrc @@ -1,2 +1 @@ node-linker=hoisted -shamefully-hoist=true diff --git a/src/extension/jest.config.js b/src/extension/jest.config.cjs similarity index 60% rename from src/extension/jest.config.js rename to src/extension/jest.config.cjs index 92378cf..51d3cf0 100644 --- a/src/extension/jest.config.js +++ b/src/extension/jest.config.cjs @@ -2,15 +2,22 @@ module.exports = { preset: "ts-jest", testEnvironment: "node", - roots: ["/src"], - testMatch: ["**/*.test.ts"], + roots: ["/../tests"], + testMatch: ["**/*.spec.ts"], transform: { "^.+\\.ts$": "ts-jest", }, - collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts", "!src/**/*.test.ts"], + collectCoverageFrom: [ + "../extension/**/*.ts", + "../internal/**/*.ts", + "../pkg/**/*.ts", + "!**/*.d.ts", + "!**/*.spec.ts", + ], coverageDirectory: "coverage", coverageReporters: ["text", "lcov", "html"], moduleFileExtensions: ["ts", "js", "json"], + moduleDirectories: ["node_modules", "/node_modules"], verbose: true, clearMocks: true, restoreMocks: true, diff --git a/src/extension/src/main.ts b/src/extension/main.ts similarity index 83% rename from src/extension/src/main.ts rename to src/extension/main.ts index f9e628e..266f095 100644 --- a/src/extension/src/main.ts +++ b/src/extension/main.ts @@ -3,16 +3,16 @@ import { createVSCodeConfigReader, createVSCodeStatusBarCreator, createVSCodeQuickPickCreator, -} from "./adapters"; -import { executeButtonCommand } from "./command-executor"; -import { CommandTreeProvider, CommandTreeItem } from "./command-tree-provider"; -import { CONFIGURATION_TARGETS } from "./config-constants"; -import { ConfigManager } from "./config-manager"; -import { createShowAllCommandsCommand } from "./show-all-commands"; -import { StatusBarManager } from "./status-bar-manager"; -import { TerminalManager } from "./terminal-manager"; -import { ButtonConfig } from "./types"; -import { ConfigWebviewProvider } from "./webview-provider"; +} from "../internal/adapters"; +import { executeButtonCommand } from "../internal/command-executor"; +import { ConfigManager } from "../internal/managers/config-manager"; +import { StatusBarManager } from "../internal/managers/status-bar-manager"; +import { TerminalManager } from "../internal/managers/terminal-manager"; +import { CommandTreeProvider, CommandTreeItem } from "../internal/providers/command-tree-provider"; +import { ConfigWebviewProvider } from "../internal/providers/webview-provider"; +import { createShowAllCommandsCommand } from "../internal/show-all-commands"; +import { CONFIGURATION_TARGETS } from "../pkg/config-constants"; +import { ButtonConfig } from "../pkg/types"; export const registerCommands = ( context: vscode.ExtensionContext, diff --git a/src/extension/package.json b/src/extension/package.json index 7229f1a..9a260ab 100644 --- a/src/extension/package.json +++ b/src/extension/package.json @@ -4,7 +4,7 @@ "description": "Extension source code for Quick Command Buttons", "scripts": { "compile": "tsc -p ./", - "lint": "eslint --fix src/**/*.ts", + "lint": "cd .. && npx eslint --fix extension/main.ts internal pkg shared tests", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", diff --git a/src/extension/tsconfig.json b/src/extension/tsconfig.json index fbf22ff..f105418 100644 --- a/src/extension/tsconfig.json +++ b/src/extension/tsconfig.json @@ -3,6 +3,7 @@ "module": "commonjs", "target": "ES2020", "outDir": "./out", + "rootDir": "..", "lib": ["ES2020", "dom"], "sourceMap": true, "strict": true, @@ -10,8 +11,18 @@ "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, - "types": ["node", "jest", "vscode"] + "types": ["node", "jest", "vscode"], + "baseUrl": "..", + "paths": { + "*": ["extension/node_modules/*", "node_modules/*"] + } }, - "include": ["src/**/*", "../shared/**/*"], + "include": [ + "../extension/**/*", + "../internal/**/*", + "../pkg/**/*", + "../shared/**/*", + "../tests/**/*" + ], "exclude": ["node_modules", ".vscode-test", "coverage"] } diff --git a/src/extension/src/types/convert-layout.d.ts b/src/extension/types/convert-layout.d.ts similarity index 100% rename from src/extension/src/types/convert-layout.d.ts rename to src/extension/types/convert-layout.d.ts diff --git a/src/extension/src/types/tiny-pinyin.d.ts b/src/extension/types/tiny-pinyin.d.ts similarity index 100% rename from src/extension/src/types/tiny-pinyin.d.ts rename to src/extension/types/tiny-pinyin.d.ts diff --git a/src/extension/view-dist/assets/index-DaHakWf7.css b/src/extension/view-dist/assets/index-DaHakWf7.css new file mode 100644 index 0000000..2861d98 --- /dev/null +++ b/src/extension/view-dist/assets/index-DaHakWf7.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-2xl:42rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-xs:.125rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}html{background-color:var(--background)}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-4{right:calc(var(--spacing)*4)}.left-1\/2,.left-\[50\%\]{left:50%}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-\[100vh\]{min-height:100vh}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--border)}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--accent)20%,transparent)}}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-green-600{background-color:var(--color-green-600)}.bg-muted{background-color:var(--muted)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.fill-primary{fill:var(--primary)}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-amber-600{color:var(--color-amber-600)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-foreground{color:var(--foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground,.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media(hover:hover){.hover\:border-border\/80:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border\/80:hover{border-color:color-mix(in oklab,var(--border)80%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--destructive)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(var(--spacing)*2*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(var(--spacing)*2)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(var(--spacing)*2*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(var(--spacing)*2)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media(min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing)*0)}.sm\:text-left{text-align:left}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}body.dialog-open{overflow:hidden!important}html,body{width:100%;height:100%}#root{width:100%;min-height:100vh}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/src/extension/view-dist/assets/index-iXByG0Qx.js b/src/extension/view-dist/assets/index-iXByG0Qx.js new file mode 100644 index 0000000..713e391 --- /dev/null +++ b/src/extension/view-dist/assets/index-iXByG0Qx.js @@ -0,0 +1,167 @@ +function Dx(l,r){for(var o=0;oi[s]})}}}return Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const f of s)if(f.type==="childList")for(const d of f.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&i(d)}).observe(document,{childList:!0,subtree:!0});function o(s){const f={};return s.integrity&&(f.integrity=s.integrity),s.referrerPolicy&&(f.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?f.credentials="include":s.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function i(s){if(s.ep)return;s.ep=!0;const f=o(s);fetch(s.href,f)}})();function Hg(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var Vs={exports:{}},to={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var kv;function Ox(){if(kv)return to;kv=1;var l=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(i,s,f){var d=null;if(f!==void 0&&(d=""+f),s.key!==void 0&&(d=""+s.key),"key"in s){f={};for(var h in s)h!=="key"&&(f[h]=s[h])}else f=s;return s=f.ref,{$$typeof:l,type:i,key:d,ref:s!==void 0?s:null,props:f}}return to.Fragment=r,to.jsx=o,to.jsxs=o,to}var Bv;function Nx(){return Bv||(Bv=1,Vs.exports=Ox()),Vs.exports}var S=Nx(),Xs={exports:{}},pe={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Hv;function Mx(){if(Hv)return pe;Hv=1;var l=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),d=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),x=Symbol.iterator;function C(R){return R===null||typeof R!="object"?null:(R=x&&R[x]||R["@@iterator"],typeof R=="function"?R:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D=Object.assign,w={};function T(R,K,P){this.props=R,this.context=K,this.refs=w,this.updater=P||E}T.prototype.isReactComponent={},T.prototype.setState=function(R,K){if(typeof R!="object"&&typeof R!="function"&&R!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,R,K,"setState")},T.prototype.forceUpdate=function(R){this.updater.enqueueForceUpdate(this,R,"forceUpdate")};function M(){}M.prototype=T.prototype;function B(R,K,P){this.props=R,this.context=K,this.refs=w,this.updater=P||E}var U=B.prototype=new M;U.constructor=B,D(U,T.prototype),U.isPureReactComponent=!0;var G=Array.isArray,H={H:null,A:null,T:null,S:null,V:null},$=Object.prototype.hasOwnProperty;function Q(R,K,P,J,W,me){return P=me.ref,{$$typeof:l,type:R,key:K,ref:P!==void 0?P:null,props:me}}function Y(R,K){return Q(R.type,K,void 0,void 0,void 0,R.props)}function I(R){return typeof R=="object"&&R!==null&&R.$$typeof===l}function ie(R){var K={"=":"=0",":":"=2"};return"$"+R.replace(/[=:]/g,function(P){return K[P]})}var ae=/\/+/g;function ce(R,K){return typeof R=="object"&&R!==null&&R.key!=null?ie(""+R.key):K.toString(36)}function ve(){}function de(R){switch(R.status){case"fulfilled":return R.value;case"rejected":throw R.reason;default:switch(typeof R.status=="string"?R.then(ve,ve):(R.status="pending",R.then(function(K){R.status==="pending"&&(R.status="fulfilled",R.value=K)},function(K){R.status==="pending"&&(R.status="rejected",R.reason=K)})),R.status){case"fulfilled":return R.value;case"rejected":throw R.reason}}throw R}function he(R,K,P,J,W){var me=typeof R;(me==="undefined"||me==="boolean")&&(R=null);var le=!1;if(R===null)le=!0;else switch(me){case"bigint":case"string":case"number":le=!0;break;case"object":switch(R.$$typeof){case l:case r:le=!0;break;case y:return le=R._init,he(le(R._payload),K,P,J,W)}}if(le)return W=W(R),le=J===""?"."+ce(R,0):J,G(W)?(P="",le!=null&&(P=le.replace(ae,"$&/")+"/"),he(W,K,P,"",function(ke){return ke})):W!=null&&(I(W)&&(W=Y(W,P+(W.key==null||R&&R.key===W.key?"":(""+W.key).replace(ae,"$&/")+"/")+le)),K.push(W)),1;le=0;var ge=J===""?".":J+":";if(G(R))for(var ye=0;ye>>1,R=z[re];if(0>>1;res(J,q))Ws(me,J)?(z[re]=me,z[W]=q,re=W):(z[re]=J,z[P]=q,re=P);else if(Ws(me,q))z[re]=me,z[W]=q,re=W;else break e}}return Z}function s(z,Z){var q=z.sortIndex-Z.sortIndex;return q!==0?q:z.id-Z.id}if(l.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;l.unstable_now=function(){return f.now()}}else{var d=Date,h=d.now();l.unstable_now=function(){return d.now()-h}}var g=[],m=[],y=1,x=null,C=3,E=!1,D=!1,w=!1,T=!1,M=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,U=typeof setImmediate<"u"?setImmediate:null;function G(z){for(var Z=o(m);Z!==null;){if(Z.callback===null)i(m);else if(Z.startTime<=z)i(m),Z.sortIndex=Z.expirationTime,r(g,Z);else break;Z=o(m)}}function H(z){if(w=!1,G(z),!D)if(o(g)!==null)D=!0,$||($=!0,ce());else{var Z=o(m);Z!==null&&he(H,Z.startTime-z)}}var $=!1,Q=-1,Y=5,I=-1;function ie(){return T?!0:!(l.unstable_now()-Iz&&ie());){var re=x.callback;if(typeof re=="function"){x.callback=null,C=x.priorityLevel;var R=re(x.expirationTime<=z);if(z=l.unstable_now(),typeof R=="function"){x.callback=R,G(z),Z=!0;break t}x===o(g)&&i(g),G(z)}else i(g);x=o(g)}if(x!==null)Z=!0;else{var K=o(m);K!==null&&he(H,K.startTime-z),Z=!1}}break e}finally{x=null,C=q,E=!1}Z=void 0}}finally{Z?ce():$=!1}}}var ce;if(typeof U=="function")ce=function(){U(ae)};else if(typeof MessageChannel<"u"){var ve=new MessageChannel,de=ve.port2;ve.port1.onmessage=ae,ce=function(){de.postMessage(null)}}else ce=function(){M(ae,0)};function he(z,Z){Q=M(function(){z(l.unstable_now())},Z)}l.unstable_IdlePriority=5,l.unstable_ImmediatePriority=1,l.unstable_LowPriority=4,l.unstable_NormalPriority=3,l.unstable_Profiling=null,l.unstable_UserBlockingPriority=2,l.unstable_cancelCallback=function(z){z.callback=null},l.unstable_forceFrameRate=function(z){0>z||125re?(z.sortIndex=q,r(m,z),o(g)===null&&z===o(m)&&(w?(B(Q),Q=-1):w=!0,he(H,q-re))):(z.sortIndex=R,r(g,z),D||E||(D=!0,$||($=!0,ce()))),z},l.unstable_shouldYield=ie,l.unstable_wrapCallback=function(z){var Z=C;return function(){var q=C;C=Z;try{return z.apply(this,arguments)}finally{C=q}}}})(Ks)),Ks}var Yv;function zx(){return Yv||(Yv=1,Zs.exports=_x()),Zs.exports}var Fs={exports:{}},Et={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Vv;function jx(){if(Vv)return Et;Vv=1;var l=Of();function r(g){var m="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(r){console.error(r)}}return l(),Fs.exports=jx(),Fs.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Qv;function Ux(){if(Qv)return no;Qv=1;var l=zx(),r=Of(),o=qg();function i(e){var t="https://react.dev/errors/"+e;if(1R||(e.current=re[R],re[R]=null,R--)}function J(e,t){R++,re[R]=e.current,e.current=t}var W=K(null),me=K(null),le=K(null),ge=K(null);function ye(e,t){switch(J(le,t),J(me,e),J(W,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?fv(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=fv(t),e=dv(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}P(W),J(W,e)}function ke(){P(W),P(me),P(le)}function be(e){e.memoizedState!==null&&J(ge,e);var t=W.current,n=dv(t,e.type);t!==n&&(J(me,e),J(W,n))}function pt(e){me.current===e&&(P(W),P(me)),ge.current===e&&(P(ge),$r._currentValue=q)}var Fe=Object.prototype.hasOwnProperty,Ct=l.unstable_scheduleCallback,_t=l.unstable_cancelCallback,Fn=l.unstable_shouldYield,Jn=l.unstable_requestPaint,zt=l.unstable_now,xo=l.unstable_getCurrentPriorityLevel,na=l.unstable_ImmediatePriority,en=l.unstable_UserBlockingPriority,Rn=l.unstable_NormalPriority,la=l.unstable_LowPriority,or=l.unstable_IdlePriority,So=l.log,Uc=l.unstable_setDisableYieldValue,Nl=null,Pe=null;function wt(e){if(typeof So=="function"&&Uc(e),Pe&&typeof Pe.setStrictMode=="function")try{Pe.setStrictMode(Nl,e)}catch{}}var tt=Math.clz32?Math.clz32:Co,Eo=Math.log,dn=Math.LN2;function Co(e){return e>>>=0,e===0?32:31-(Eo(e)/dn|0)|0}var aa=256,ra=4194304;function tn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ml(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var c=0,u=e.suspendedLanes,v=e.pingedLanes;e=e.warmLanes;var b=a&134217727;return b!==0?(a=b&~u,a!==0?c=tn(a):(v&=b,v!==0?c=tn(v):n||(n=b&~e,n!==0&&(c=tn(n))))):(b=a&~u,b!==0?c=tn(b):v!==0?c=tn(v):n||(n=a&~e,n!==0&&(c=tn(n)))),c===0?0:t!==0&&t!==c&&(t&u)===0&&(u=c&-c,n=t&-t,u>=n||u===32&&(n&4194048)!==0)?t:c}function _l(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function wo(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ao(){var e=aa;return aa<<=1,(aa&4194048)===0&&(aa=256),e}function Ro(){var e=ra;return ra<<=1,(ra&62914560)===0&&(ra=4194304),e}function ir(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Xe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function At(e,t,n,a,c,u){var v=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var b=e.entanglements,A=e.expirationTimes,j=e.hiddenUpdates;for(n=v&~n;0)":-1c||A[a]!==j[c]){var V=` +`+A[a].replace(" at new "," at ");return e.displayName&&V.includes("")&&(V=V.replace("",e.displayName)),V}while(1<=a&&0<=c);break}}}finally{Bc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?sa(n):""}function Eb(e){switch(e.tag){case 26:case 27:case 5:return sa(e.type);case 16:return sa("Lazy");case 13:return sa("Suspense");case 19:return sa("SuspenseList");case 0:case 15:return Hc(e.type,!1);case 11:return Hc(e.type.render,!1);case 1:return Hc(e.type,!0);case 31:return sa("Activity");default:return""}}function rd(e){try{var t="";do t+=Eb(e),e=e.return;while(e);return t}catch(n){return` +Error generating stack: `+n.message+` +`+n.stack}}function Xt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function od(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Cb(e){var t=od(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var c=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return c.call(this)},set:function(v){a=""+v,u.call(this,v)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(v){a=""+v},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Oo(e){e._valueTracker||(e._valueTracker=Cb(e))}function id(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=od(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function No(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var wb=/[\n"\\]/g;function Qt(e){return e.replace(wb,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Gc(e,t,n,a,c,u,v,b){e.name="",v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?e.type=v:e.removeAttribute("type"),t!=null?v==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Xt(t)):e.value!==""+Xt(t)&&(e.value=""+Xt(t)):v!=="submit"&&v!=="reset"||e.removeAttribute("value"),t!=null?qc(e,v,Xt(t)):n!=null?qc(e,v,Xt(n)):a!=null&&e.removeAttribute("value"),c==null&&u!=null&&(e.defaultChecked=!!u),c!=null&&(e.checked=c&&typeof c!="function"&&typeof c!="symbol"),b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?e.name=""+Xt(b):e.removeAttribute("name")}function cd(e,t,n,a,c,u,v,b){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||n!=null){if(!(u!=="submit"&&u!=="reset"||t!=null))return;n=n!=null?""+Xt(n):"",t=t!=null?""+Xt(t):n,b||t===e.value||(e.value=t),e.defaultValue=t}a=a??c,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=b?e.checked:!!a,e.defaultChecked=!!a,v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"&&(e.name=v)}function qc(e,t,n){t==="number"&&No(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function fa(e,t,n,a){if(e=e.options,t){t={};for(var c=0;c"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Zc=!1;if(Nn)try{var sr={};Object.defineProperty(sr,"passive",{get:function(){Zc=!0}}),window.addEventListener("test",sr,sr),window.removeEventListener("test",sr,sr)}catch{Zc=!1}var Wn=null,Kc=null,_o=null;function vd(){if(_o)return _o;var e,t=Kc,n=t.length,a,c="value"in Wn?Wn.value:Wn.textContent,u=c.length;for(e=0;e=hr),Sd=" ",Ed=!1;function Cd(e,t){switch(e){case"keyup":return Wb.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var va=!1;function e0(e,t){switch(e){case"compositionend":return wd(t);case"keypress":return t.which!==32?null:(Ed=!0,Sd);case"textInput":return e=t.data,e===Sd&&Ed?null:e;default:return null}}function t0(e,t){if(va)return e==="compositionend"||!Wc&&Cd(e,t)?(e=vd(),_o=Kc=Wn=null,va=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=_d(n)}}function jd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?jd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ud(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=No(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=No(e.document)}return t}function tu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var u0=Nn&&"documentMode"in document&&11>=document.documentMode,ga=null,nu=null,pr=null,lu=!1;function Ld(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;lu||ga==null||ga!==No(a)||(a=ga,"selectionStart"in a&&tu(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),pr&&gr(pr,a)||(pr=a,a=Ei(nu,"onSelect"),0>=v,c-=v,_n=1<<32-tt(t)+c|n<u?u:8;var v=z.T,b={};z.T=b,Yu(e,!1,t,n);try{var A=c(),j=z.S;if(j!==null&&j(b,A),A!==null&&typeof A=="object"&&typeof A.then=="function"){var V=y0(A,a);_r(e,t,V,Gt(e))}else _r(e,t,a,Gt(e))}catch(F){_r(e,t,{then:function(){},status:"rejected",reason:F},Gt())}finally{Z.p=u,z.T=v}}function C0(){}function Gu(e,t,n,a){if(e.tag!==5)throw Error(i(476));var c=kh(e).queue;Lh(e,c,t,q,n===null?C0:function(){return Bh(e),n(a)})}function kh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:q},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ln,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Bh(e){var t=kh(e).next.queue;_r(e,t,{},Gt())}function qu(){return St($r)}function Hh(){return Ie().memoizedState}function Gh(){return Ie().memoizedState}function w0(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Gt();e=tl(n);var a=nl(t,e,n);a!==null&&(qt(a,t,n),Rr(a,t,n)),t={cache:pu()},e.payload=t;return}t=t.return}}function A0(e,t,n){var a=Gt();n={lane:a,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null},ni(e)?Yh(t,n):(n=iu(e,t,n,a),n!==null&&(qt(n,e,a),Vh(n,t,a)))}function qh(e,t,n){var a=Gt();_r(e,t,n,a)}function _r(e,t,n,a){var c={lane:a,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null};if(ni(e))Yh(t,c);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var v=t.lastRenderedState,b=u(v,n);if(c.hasEagerState=!0,c.eagerState=b,Ut(b,v))return Ho(e,t,c,0),Le===null&&Bo(),!1}catch{}finally{}if(n=iu(e,t,c,a),n!==null)return qt(n,e,a),Vh(n,t,a),!0}return!1}function Yu(e,t,n,a){if(a={lane:2,revertLane:xs(),action:a,hasEagerState:!1,eagerState:null,next:null},ni(e)){if(t)throw Error(i(479))}else t=iu(e,n,a,2),t!==null&&qt(t,e,2)}function ni(e){var t=e.alternate;return e===xe||t!==null&&t===xe}function Yh(e,t){Ra=$o=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Vh(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,nn(e,n)}}var li={readContext:St,use:Wo,useCallback:Je,useContext:Je,useEffect:Je,useImperativeHandle:Je,useLayoutEffect:Je,useInsertionEffect:Je,useMemo:Je,useReducer:Je,useRef:Je,useState:Je,useDebugValue:Je,useDeferredValue:Je,useTransition:Je,useSyncExternalStore:Je,useId:Je,useHostTransitionStatus:Je,useFormState:Je,useActionState:Je,useOptimistic:Je,useMemoCache:Je,useCacheRefresh:Je},Xh={readContext:St,use:Wo,useCallback:function(e,t){return Dt().memoizedState=[e,t===void 0?null:t],e},useContext:St,useEffect:Th,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,ti(4194308,4,Mh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ti(4194308,4,e,t)},useInsertionEffect:function(e,t){ti(4,2,e,t)},useMemo:function(e,t){var n=Dt();t=t===void 0?null:t;var a=e();if(Zl){wt(!0);try{e()}finally{wt(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=Dt();if(n!==void 0){var c=n(t);if(Zl){wt(!0);try{n(t)}finally{wt(!1)}}}else c=t;return a.memoizedState=a.baseState=c,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:c},a.queue=e,e=e.dispatch=A0.bind(null,xe,e),[a.memoizedState,e]},useRef:function(e){var t=Dt();return e={current:e},t.memoizedState=e},useState:function(e){e=Lu(e);var t=e.queue,n=qh.bind(null,xe,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Bu,useDeferredValue:function(e,t){var n=Dt();return Hu(n,e,t)},useTransition:function(){var e=Lu(!1);return e=Lh.bind(null,xe,e.queue,!0,!1),Dt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=xe,c=Dt();if(De){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Le===null)throw Error(i(349));(Re&124)!==0||fh(a,t,n)}c.memoizedState=n;var u={value:n,getSnapshot:t};return c.queue=u,Th(hh.bind(null,a,u,e),[e]),a.flags|=2048,Da(9,ei(),dh.bind(null,a,u,n,t),null),n},useId:function(){var e=Dt(),t=Le.identifierPrefix;if(De){var n=zn,a=_n;n=(a&~(1<<32-tt(a)-1)).toString(32)+n,t="«"+t+"R"+n,n=Po++,0se?(st=oe,oe=null):st=oe.sibling;var Te=L(N,oe,_[se],X);if(Te===null){oe===null&&(oe=st);break}e&&oe&&Te.alternate===null&&t(N,oe),O=u(Te,O,se),Ee===null?ee=Te:Ee.sibling=Te,Ee=Te,oe=st}if(se===_.length)return n(N,oe),De&&Gl(N,se),ee;if(oe===null){for(;se<_.length;se++)oe=F(N,_[se],X),oe!==null&&(O=u(oe,O,se),Ee===null?ee=oe:Ee.sibling=oe,Ee=oe);return De&&Gl(N,se),ee}for(oe=a(oe);se<_.length;se++)st=k(oe,N,se,_[se],X),st!==null&&(e&&st.alternate!==null&&oe.delete(st.key===null?se:st.key),O=u(st,O,se),Ee===null?ee=st:Ee.sibling=st,Ee=st);return e&&oe.forEach(function(bl){return t(N,bl)}),De&&Gl(N,se),ee}function ue(N,O,_,X){if(_==null)throw Error(i(151));for(var ee=null,Ee=null,oe=O,se=O=0,st=null,Te=_.next();oe!==null&&!Te.done;se++,Te=_.next()){oe.index>se?(st=oe,oe=null):st=oe.sibling;var bl=L(N,oe,Te.value,X);if(bl===null){oe===null&&(oe=st);break}e&&oe&&bl.alternate===null&&t(N,oe),O=u(bl,O,se),Ee===null?ee=bl:Ee.sibling=bl,Ee=bl,oe=st}if(Te.done)return n(N,oe),De&&Gl(N,se),ee;if(oe===null){for(;!Te.done;se++,Te=_.next())Te=F(N,Te.value,X),Te!==null&&(O=u(Te,O,se),Ee===null?ee=Te:Ee.sibling=Te,Ee=Te);return De&&Gl(N,se),ee}for(oe=a(oe);!Te.done;se++,Te=_.next())Te=k(oe,N,se,Te.value,X),Te!==null&&(e&&Te.alternate!==null&&oe.delete(Te.key===null?se:Te.key),O=u(Te,O,se),Ee===null?ee=Te:Ee.sibling=Te,Ee=Te);return e&&oe.forEach(function(Tx){return t(N,Tx)}),De&&Gl(N,se),ee}function ze(N,O,_,X){if(typeof _=="object"&&_!==null&&_.type===D&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case C:e:{for(var ee=_.key;O!==null;){if(O.key===ee){if(ee=_.type,ee===D){if(O.tag===7){n(N,O.sibling),X=c(O,_.props.children),X.return=N,N=X;break e}}else if(O.elementType===ee||typeof ee=="object"&&ee!==null&&ee.$$typeof===Y&&Zh(ee)===O.type){n(N,O.sibling),X=c(O,_.props),jr(X,_),X.return=N,N=X;break e}n(N,O);break}else t(N,O);O=O.sibling}_.type===D?(X=Bl(_.props.children,N.mode,X,_.key),X.return=N,N=X):(X=qo(_.type,_.key,_.props,null,N.mode,X),jr(X,_),X.return=N,N=X)}return v(N);case E:e:{for(ee=_.key;O!==null;){if(O.key===ee)if(O.tag===4&&O.stateNode.containerInfo===_.containerInfo&&O.stateNode.implementation===_.implementation){n(N,O.sibling),X=c(O,_.children||[]),X.return=N,N=X;break e}else{n(N,O);break}else t(N,O);O=O.sibling}X=su(_,N.mode,X),X.return=N,N=X}return v(N);case Y:return ee=_._init,_=ee(_._payload),ze(N,O,_,X)}if(he(_))return fe(N,O,_,X);if(ce(_)){if(ee=ce(_),typeof ee!="function")throw Error(i(150));return _=ee.call(_),ue(N,O,_,X)}if(typeof _.then=="function")return ze(N,O,ai(_),X);if(_.$$typeof===U)return ze(N,O,Qo(N,_),X);ri(N,_)}return typeof _=="string"&&_!==""||typeof _=="number"||typeof _=="bigint"?(_=""+_,O!==null&&O.tag===6?(n(N,O.sibling),X=c(O,_),X.return=N,N=X):(n(N,O),X=uu(_,N.mode,X),X.return=N,N=X),v(N)):n(N,O)}return function(N,O,_,X){try{zr=0;var ee=ze(N,O,_,X);return Oa=null,ee}catch(oe){if(oe===wr||oe===Ko)throw oe;var Ee=Lt(29,oe,null,N.mode);return Ee.lanes=X,Ee.return=N,Ee}finally{}}}var Na=Kh(!0),Fh=Kh(!1),$t=K(null),vn=null;function al(e){var t=e.alternate;J(lt,lt.current&1),J($t,e),vn===null&&(t===null||Aa.current!==null||t.memoizedState!==null)&&(vn=e)}function Jh(e){if(e.tag===22){if(J(lt,lt.current),J($t,e),vn===null){var t=e.alternate;t!==null&&t.memoizedState!==null&&(vn=e)}}else rl()}function rl(){J(lt,lt.current),J($t,$t.current)}function kn(e){P($t),vn===e&&(vn=null),P(lt)}var lt=K(0);function oi(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||_s(n)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Vu(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:y({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Xu={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=Gt(),c=tl(a);c.payload=t,n!=null&&(c.callback=n),t=nl(e,c,a),t!==null&&(qt(t,e,a),Rr(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=Gt(),c=tl(a);c.tag=1,c.payload=t,n!=null&&(c.callback=n),t=nl(e,c,a),t!==null&&(qt(t,e,a),Rr(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Gt(),a=tl(n);a.tag=2,t!=null&&(a.callback=t),t=nl(e,a,n),t!==null&&(qt(t,e,n),Rr(t,e,n))}};function $h(e,t,n,a,c,u,v){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,u,v):t.prototype&&t.prototype.isPureReactComponent?!gr(n,a)||!gr(c,u):!0}function Ph(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Xu.enqueueReplaceState(t,t.state,null)}function Kl(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=y({},n));for(var c in e)n[c]===void 0&&(n[c]=e[c])}return n}var ii=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)};function Wh(e){ii(e)}function Ih(e){console.error(e)}function em(e){ii(e)}function ci(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function tm(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(c){setTimeout(function(){throw c})}}function Qu(e,t,n){return n=tl(n),n.tag=3,n.payload={element:null},n.callback=function(){ci(e,t)},n}function nm(e){return e=tl(e),e.tag=3,e}function lm(e,t,n,a){var c=n.type.getDerivedStateFromError;if(typeof c=="function"){var u=a.value;e.payload=function(){return c(u)},e.callback=function(){tm(t,n,a)}}var v=n.stateNode;v!==null&&typeof v.componentDidCatch=="function"&&(e.callback=function(){tm(t,n,a),typeof c!="function"&&(fl===null?fl=new Set([this]):fl.add(this));var b=a.stack;this.componentDidCatch(a.value,{componentStack:b!==null?b:""})})}function T0(e,t,n,a,c){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&Sr(t,n,c,!0),n=$t.current,n!==null){switch(n.tag){case 13:return vn===null?vs():n.alternate===null&&Ze===0&&(Ze=3),n.flags&=-257,n.flags|=65536,n.lanes=c,a===xu?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),ps(e,a,c)),!1;case 22:return n.flags|=65536,a===xu?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),ps(e,a,c)),!1}throw Error(i(435,n.tag))}return ps(e,a,c),vs(),!1}if(De)return t=$t.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=c,a!==hu&&(e=Error(i(422),{cause:a}),xr(Zt(e,n)))):(a!==hu&&(t=Error(i(423),{cause:a}),xr(Zt(t,n))),e=e.current.alternate,e.flags|=65536,c&=-c,e.lanes|=c,a=Zt(a,n),c=Qu(e.stateNode,a,c),Cu(e,c),Ze!==4&&(Ze=2)),!1;var u=Error(i(520),{cause:a});if(u=Zt(u,n),qr===null?qr=[u]:qr.push(u),Ze!==4&&(Ze=2),t===null)return!0;a=Zt(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=c&-c,n.lanes|=e,e=Qu(n.stateNode,a,e),Cu(n,e),!1;case 1:if(t=n.type,u=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||u!==null&&typeof u.componentDidCatch=="function"&&(fl===null||!fl.has(u))))return n.flags|=65536,c&=-c,n.lanes|=c,c=nm(c),lm(c,e,n,a),Cu(n,c),!1}n=n.return}while(n!==null);return!1}var am=Error(i(461)),ct=!1;function mt(e,t,n,a){t.child=e===null?Fh(t,null,n,a):Na(t,e.child,n,a)}function rm(e,t,n,a,c){n=n.render;var u=t.ref;if("ref"in a){var v={};for(var b in a)b!=="ref"&&(v[b]=a[b])}else v=a;return Xl(t),a=Du(e,t,n,v,u,c),b=Ou(),e!==null&&!ct?(Nu(e,t,c),Bn(e,t,c)):(De&&b&&fu(t),t.flags|=1,mt(e,t,a,c),t.child)}function om(e,t,n,a,c){if(e===null){var u=n.type;return typeof u=="function"&&!cu(u)&&u.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=u,im(e,t,u,a,c)):(e=qo(n.type,null,a,t,t.mode,c),e.ref=t.ref,e.return=t,t.child=e)}if(u=e.child,!Iu(e,c)){var v=u.memoizedProps;if(n=n.compare,n=n!==null?n:gr,n(v,a)&&e.ref===t.ref)return Bn(e,t,c)}return t.flags|=1,e=Mn(u,a),e.ref=t.ref,e.return=t,t.child=e}function im(e,t,n,a,c){if(e!==null){var u=e.memoizedProps;if(gr(u,a)&&e.ref===t.ref)if(ct=!1,t.pendingProps=a=u,Iu(e,c))(e.flags&131072)!==0&&(ct=!0);else return t.lanes=e.lanes,Bn(e,t,c)}return Zu(e,t,n,a,c)}function cm(e,t,n){var a=t.pendingProps,c=a.children,u=e!==null?e.memoizedState:null;if(a.mode==="hidden"){if((t.flags&128)!==0){if(a=u!==null?u.baseLanes|n:n,e!==null){for(c=t.child=e.child,u=0;c!==null;)u=u|c.lanes|c.childLanes,c=c.sibling;t.childLanes=u&~a}else t.childLanes=0,t.child=null;return um(e,t,a,n)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Zo(t,u!==null?u.cachePool:null),u!==null?ih(t,u):Au(),Jh(t);else return t.lanes=t.childLanes=536870912,um(e,t,u!==null?u.baseLanes|n:n,n)}else u!==null?(Zo(t,u.cachePool),ih(t,u),rl(),t.memoizedState=null):(e!==null&&Zo(t,null),Au(),rl());return mt(e,t,c,n),t.child}function um(e,t,n,a){var c=bu();return c=c===null?null:{parent:nt._currentValue,pool:c},t.memoizedState={baseLanes:n,cachePool:c},e!==null&&Zo(t,null),Au(),Jh(t),e!==null&&Sr(e,t,a,!0),null}function ui(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Zu(e,t,n,a,c){return Xl(t),n=Du(e,t,n,a,void 0,c),a=Ou(),e!==null&&!ct?(Nu(e,t,c),Bn(e,t,c)):(De&&a&&fu(t),t.flags|=1,mt(e,t,n,c),t.child)}function sm(e,t,n,a,c,u){return Xl(t),t.updateQueue=null,n=uh(t,a,n,c),ch(e),a=Ou(),e!==null&&!ct?(Nu(e,t,u),Bn(e,t,u)):(De&&a&&fu(t),t.flags|=1,mt(e,t,n,u),t.child)}function fm(e,t,n,a,c){if(Xl(t),t.stateNode===null){var u=xa,v=n.contextType;typeof v=="object"&&v!==null&&(u=St(v)),u=new n(a,u),t.memoizedState=u.state!==null&&u.state!==void 0?u.state:null,u.updater=Xu,t.stateNode=u,u._reactInternals=t,u=t.stateNode,u.props=a,u.state=t.memoizedState,u.refs={},Su(t),v=n.contextType,u.context=typeof v=="object"&&v!==null?St(v):xa,u.state=t.memoizedState,v=n.getDerivedStateFromProps,typeof v=="function"&&(Vu(t,n,v,a),u.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof u.getSnapshotBeforeUpdate=="function"||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(v=u.state,typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount(),v!==u.state&&Xu.enqueueReplaceState(u,u.state,null),Dr(t,a,u,c),Tr(),u.state=t.memoizedState),typeof u.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){u=t.stateNode;var b=t.memoizedProps,A=Kl(n,b);u.props=A;var j=u.context,V=n.contextType;v=xa,typeof V=="object"&&V!==null&&(v=St(V));var F=n.getDerivedStateFromProps;V=typeof F=="function"||typeof u.getSnapshotBeforeUpdate=="function",b=t.pendingProps!==b,V||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(b||j!==v)&&Ph(t,u,a,v),el=!1;var L=t.memoizedState;u.state=L,Dr(t,a,u,c),Tr(),j=t.memoizedState,b||L!==j||el?(typeof F=="function"&&(Vu(t,n,F,a),j=t.memoizedState),(A=el||$h(t,n,A,a,L,j,v))?(V||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount()),typeof u.componentDidMount=="function"&&(t.flags|=4194308)):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=j),u.props=a,u.state=j,u.context=v,a=A):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{u=t.stateNode,Eu(e,t),v=t.memoizedProps,V=Kl(n,v),u.props=V,F=t.pendingProps,L=u.context,j=n.contextType,A=xa,typeof j=="object"&&j!==null&&(A=St(j)),b=n.getDerivedStateFromProps,(j=typeof b=="function"||typeof u.getSnapshotBeforeUpdate=="function")||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(v!==F||L!==A)&&Ph(t,u,a,A),el=!1,L=t.memoizedState,u.state=L,Dr(t,a,u,c),Tr();var k=t.memoizedState;v!==F||L!==k||el||e!==null&&e.dependencies!==null&&Xo(e.dependencies)?(typeof b=="function"&&(Vu(t,n,b,a),k=t.memoizedState),(V=el||$h(t,n,V,a,L,k,A)||e!==null&&e.dependencies!==null&&Xo(e.dependencies))?(j||typeof u.UNSAFE_componentWillUpdate!="function"&&typeof u.componentWillUpdate!="function"||(typeof u.componentWillUpdate=="function"&&u.componentWillUpdate(a,k,A),typeof u.UNSAFE_componentWillUpdate=="function"&&u.UNSAFE_componentWillUpdate(a,k,A)),typeof u.componentDidUpdate=="function"&&(t.flags|=4),typeof u.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof u.componentDidUpdate!="function"||v===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||v===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=k),u.props=a,u.state=k,u.context=A,a=V):(typeof u.componentDidUpdate!="function"||v===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||v===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),a=!1)}return u=a,ui(e,t),a=(t.flags&128)!==0,u||a?(u=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:u.render(),t.flags|=1,e!==null&&a?(t.child=Na(t,e.child,null,c),t.child=Na(t,null,n,c)):mt(e,t,n,c),t.memoizedState=u.state,e=t.child):e=Bn(e,t,c),e}function dm(e,t,n,a){return br(),t.flags|=256,mt(e,t,n,a),t.child}var Ku={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Fu(e){return{baseLanes:e,cachePool:Id()}}function Ju(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Pt),e}function hm(e,t,n){var a=t.pendingProps,c=!1,u=(t.flags&128)!==0,v;if((v=u)||(v=e!==null&&e.memoizedState===null?!1:(lt.current&2)!==0),v&&(c=!0,t.flags&=-129),v=(t.flags&32)!==0,t.flags&=-33,e===null){if(De){if(c?al(t):rl(),De){var b=Qe,A;if(A=b){e:{for(A=b,b=mn;A.nodeType!==8;){if(!b){b=null;break e}if(A=rn(A.nextSibling),A===null){b=null;break e}}b=A}b!==null?(t.memoizedState={dehydrated:b,treeContext:Hl!==null?{id:_n,overflow:zn}:null,retryLane:536870912,hydrationErrors:null},A=Lt(18,null,null,0),A.stateNode=b,A.return=t,t.child=A,Rt=t,Qe=null,A=!0):A=!1}A||Yl(t)}if(b=t.memoizedState,b!==null&&(b=b.dehydrated,b!==null))return _s(b)?t.lanes=32:t.lanes=536870912,null;kn(t)}return b=a.children,a=a.fallback,c?(rl(),c=t.mode,b=si({mode:"hidden",children:b},c),a=Bl(a,c,n,null),b.return=t,a.return=t,b.sibling=a,t.child=b,c=t.child,c.memoizedState=Fu(n),c.childLanes=Ju(e,v,n),t.memoizedState=Ku,a):(al(t),$u(t,b))}if(A=e.memoizedState,A!==null&&(b=A.dehydrated,b!==null)){if(u)t.flags&256?(al(t),t.flags&=-257,t=Pu(e,t,n)):t.memoizedState!==null?(rl(),t.child=e.child,t.flags|=128,t=null):(rl(),c=a.fallback,b=t.mode,a=si({mode:"visible",children:a.children},b),c=Bl(c,b,n,null),c.flags|=2,a.return=t,c.return=t,a.sibling=c,t.child=a,Na(t,e.child,null,n),a=t.child,a.memoizedState=Fu(n),a.childLanes=Ju(e,v,n),t.memoizedState=Ku,t=c);else if(al(t),_s(b)){if(v=b.nextSibling&&b.nextSibling.dataset,v)var j=v.dgst;v=j,a=Error(i(419)),a.stack="",a.digest=v,xr({value:a,source:null,stack:null}),t=Pu(e,t,n)}else if(ct||Sr(e,t,n,!1),v=(n&e.childLanes)!==0,ct||v){if(v=Le,v!==null&&(a=n&-n,a=(a&42)!==0?1:bt(a),a=(a&(v.suspendedLanes|n))!==0?0:a,a!==0&&a!==A.retryLane))throw A.retryLane=a,ba(e,a),qt(v,e,a),am;b.data==="$?"||vs(),t=Pu(e,t,n)}else b.data==="$?"?(t.flags|=192,t.child=e.child,t=null):(e=A.treeContext,Qe=rn(b.nextSibling),Rt=t,De=!0,ql=null,mn=!1,e!==null&&(Ft[Jt++]=_n,Ft[Jt++]=zn,Ft[Jt++]=Hl,_n=e.id,zn=e.overflow,Hl=t),t=$u(t,a.children),t.flags|=4096);return t}return c?(rl(),c=a.fallback,b=t.mode,A=e.child,j=A.sibling,a=Mn(A,{mode:"hidden",children:a.children}),a.subtreeFlags=A.subtreeFlags&65011712,j!==null?c=Mn(j,c):(c=Bl(c,b,n,null),c.flags|=2),c.return=t,a.return=t,a.sibling=c,t.child=a,a=c,c=t.child,b=e.child.memoizedState,b===null?b=Fu(n):(A=b.cachePool,A!==null?(j=nt._currentValue,A=A.parent!==j?{parent:j,pool:j}:A):A=Id(),b={baseLanes:b.baseLanes|n,cachePool:A}),c.memoizedState=b,c.childLanes=Ju(e,v,n),t.memoizedState=Ku,a):(al(t),n=e.child,e=n.sibling,n=Mn(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(v=t.deletions,v===null?(t.deletions=[e],t.flags|=16):v.push(e)),t.child=n,t.memoizedState=null,n)}function $u(e,t){return t=si({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function si(e,t){return e=Lt(22,e,null,t),e.lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function Pu(e,t,n){return Na(t,e.child,null,n),e=$u(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function mm(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),vu(e.return,t,n)}function Wu(e,t,n,a,c){var u=e.memoizedState;u===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:c}:(u.isBackwards=t,u.rendering=null,u.renderingStartTime=0,u.last=a,u.tail=n,u.tailMode=c)}function vm(e,t,n){var a=t.pendingProps,c=a.revealOrder,u=a.tail;if(mt(e,t,a.children,n),a=lt.current,(a&2)!==0)a=a&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&mm(e,n,t);else if(e.tag===19)mm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}switch(J(lt,a),c){case"forwards":for(n=t.child,c=null;n!==null;)e=n.alternate,e!==null&&oi(e)===null&&(c=n),n=n.sibling;n=c,n===null?(c=t.child,t.child=null):(c=n.sibling,n.sibling=null),Wu(t,!1,c,n,u);break;case"backwards":for(n=null,c=t.child,t.child=null;c!==null;){if(e=c.alternate,e!==null&&oi(e)===null){t.child=c;break}e=c.sibling,c.sibling=n,n=c,c=e}Wu(t,!0,n,null,u);break;case"together":Wu(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Bn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),sl|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(Sr(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=Mn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Mn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Iu(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&Xo(e)))}function D0(e,t,n){switch(t.tag){case 3:ye(t,t.stateNode.containerInfo),In(t,nt,e.memoizedState.cache),br();break;case 27:case 5:be(t);break;case 4:ye(t,t.stateNode.containerInfo);break;case 10:In(t,t.type,t.memoizedProps.value);break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(al(t),t.flags|=128,null):(n&t.child.childLanes)!==0?hm(e,t,n):(al(t),e=Bn(e,t,n),e!==null?e.sibling:null);al(t);break;case 19:var c=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(Sr(e,t,n,!1),a=(n&t.childLanes)!==0),c){if(a)return vm(e,t,n);t.flags|=128}if(c=t.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),J(lt,lt.current),a)break;return null;case 22:case 23:return t.lanes=0,cm(e,t,n);case 24:In(t,nt,e.memoizedState.cache)}return Bn(e,t,n)}function gm(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)ct=!0;else{if(!Iu(e,n)&&(t.flags&128)===0)return ct=!1,D0(e,t,n);ct=(e.flags&131072)!==0}else ct=!1,De&&(t.flags&1048576)!==0&&Zd(t,Vo,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var a=t.elementType,c=a._init;if(a=c(a._payload),t.type=a,typeof a=="function")cu(a)?(e=Kl(a,e),t.tag=1,t=fm(null,t,a,e,n)):(t.tag=0,t=Zu(null,t,a,e,n));else{if(a!=null){if(c=a.$$typeof,c===G){t.tag=11,t=rm(null,t,a,e,n);break e}else if(c===Q){t.tag=14,t=om(null,t,a,e,n);break e}}throw t=de(a)||a,Error(i(306,t,""))}}return t;case 0:return Zu(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,c=Kl(a,t.pendingProps),fm(e,t,a,c,n);case 3:e:{if(ye(t,t.stateNode.containerInfo),e===null)throw Error(i(387));a=t.pendingProps;var u=t.memoizedState;c=u.element,Eu(e,t),Dr(t,a,null,n);var v=t.memoizedState;if(a=v.cache,In(t,nt,a),a!==u.cache&&gu(t,[nt],n,!0),Tr(),a=v.element,u.isDehydrated)if(u={element:a,isDehydrated:!1,cache:v.cache},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){t=dm(e,t,a,n);break e}else if(a!==c){c=Zt(Error(i(424)),t),xr(c),t=dm(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(Qe=rn(e.firstChild),Rt=t,De=!0,ql=null,mn=!0,n=Fh(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(br(),a===c){t=Bn(e,t,n);break e}mt(e,t,a,n)}t=t.child}return t;case 26:return ui(e,t),e===null?(n=xv(t.type,null,t.pendingProps,null))?t.memoizedState=n:De||(n=t.type,e=t.pendingProps,a=wi(le.current).createElement(n),a[Be]=t,a[He]=e,gt(a,n,e),it(a),t.stateNode=a):t.memoizedState=xv(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return be(t),e===null&&De&&(a=t.stateNode=pv(t.type,t.pendingProps,le.current),Rt=t,mn=!0,c=Qe,ml(t.type)?(zs=c,Qe=rn(a.firstChild)):Qe=c),mt(e,t,t.pendingProps.children,n),ui(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&De&&((c=a=Qe)&&(a=nx(a,t.type,t.pendingProps,mn),a!==null?(t.stateNode=a,Rt=t,Qe=rn(a.firstChild),mn=!1,c=!0):c=!1),c||Yl(t)),be(t),c=t.type,u=t.pendingProps,v=e!==null?e.memoizedProps:null,a=u.children,Os(c,u)?a=null:v!==null&&Os(c,v)&&(t.flags|=32),t.memoizedState!==null&&(c=Du(e,t,x0,null,null,n),$r._currentValue=c),ui(e,t),mt(e,t,a,n),t.child;case 6:return e===null&&De&&((e=n=Qe)&&(n=lx(n,t.pendingProps,mn),n!==null?(t.stateNode=n,Rt=t,Qe=null,e=!0):e=!1),e||Yl(t)),null;case 13:return hm(e,t,n);case 4:return ye(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Na(t,null,a,n):mt(e,t,a,n),t.child;case 11:return rm(e,t,t.type,t.pendingProps,n);case 7:return mt(e,t,t.pendingProps,n),t.child;case 8:return mt(e,t,t.pendingProps.children,n),t.child;case 12:return mt(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,In(t,t.type,a.value),mt(e,t,a.children,n),t.child;case 9:return c=t.type._context,a=t.pendingProps.children,Xl(t),c=St(c),a=a(c),t.flags|=1,mt(e,t,a,n),t.child;case 14:return om(e,t,t.type,t.pendingProps,n);case 15:return im(e,t,t.type,t.pendingProps,n);case 19:return vm(e,t,n);case 31:return a=t.pendingProps,n=t.mode,a={mode:a.mode,children:a.children},e===null?(n=si(a,n),n.ref=t.ref,t.child=n,n.return=t,t=n):(n=Mn(e.child,a),n.ref=t.ref,t.child=n,n.return=t,t=n),t;case 22:return cm(e,t,n);case 24:return Xl(t),a=St(nt),e===null?(c=bu(),c===null&&(c=Le,u=pu(),c.pooledCache=u,u.refCount++,u!==null&&(c.pooledCacheLanes|=n),c=u),t.memoizedState={parent:a,cache:c},Su(t),In(t,nt,c)):((e.lanes&n)!==0&&(Eu(e,t),Dr(t,null,null,n),Tr()),c=e.memoizedState,u=t.memoizedState,c.parent!==a?(c={parent:a,cache:a},t.memoizedState=c,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=c),In(t,nt,a)):(a=u.cache,In(t,nt,a),a!==c.cache&&gu(t,[nt],n,!0))),mt(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Hn(e){e.flags|=4}function pm(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Av(t)){if(t=$t.current,t!==null&&((Re&4194048)===Re?vn!==null:(Re&62914560)!==Re&&(Re&536870912)===0||t!==vn))throw Ar=xu,eh;e.flags|=8192}}function fi(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Ro():536870912,e.lanes|=t,ja|=t)}function Ur(e,t){if(!De)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function Ve(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var c=e.child;c!==null;)n|=c.lanes|c.childLanes,a|=c.subtreeFlags&65011712,a|=c.flags&65011712,c.return=e,c=c.sibling;else for(c=e.child;c!==null;)n|=c.lanes|c.childLanes,a|=c.subtreeFlags,a|=c.flags,c.return=e,c=c.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function O0(e,t,n){var a=t.pendingProps;switch(du(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ve(t),null;case 1:return Ve(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Un(nt),ke(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(yr(t)?Hn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Jd())),Ve(t),null;case 26:return n=t.memoizedState,e===null?(Hn(t),n!==null?(Ve(t),pm(t,n)):(Ve(t),t.flags&=-16777217)):n?n!==e.memoizedState?(Hn(t),Ve(t),pm(t,n)):(Ve(t),t.flags&=-16777217):(e.memoizedProps!==a&&Hn(t),Ve(t),t.flags&=-16777217),null;case 27:pt(t),n=le.current;var c=t.type;if(e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Hn(t);else{if(!a){if(t.stateNode===null)throw Error(i(166));return Ve(t),null}e=W.current,yr(t)?Kd(t):(e=pv(c,a,n),t.stateNode=e,Hn(t))}return Ve(t),null;case 5:if(pt(t),n=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Hn(t);else{if(!a){if(t.stateNode===null)throw Error(i(166));return Ve(t),null}if(e=W.current,yr(t))Kd(t);else{switch(c=wi(le.current),e){case 1:e=c.createElementNS("http://www.w3.org/2000/svg",n);break;case 2:e=c.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;default:switch(n){case"svg":e=c.createElementNS("http://www.w3.org/2000/svg",n);break;case"math":e=c.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;case"script":e=c.createElement("div"),e.innerHTML=" + + + +
+ + diff --git a/src/web-view/public/vite.svg b/src/extension/view-dist/vite.svg similarity index 100% rename from src/web-view/public/vite.svg rename to src/extension/view-dist/vite.svg diff --git a/src/extension/src/adapters.ts b/src/internal/adapters.ts similarity index 94% rename from src/extension/src/adapters.ts rename to src/internal/adapters.ts index 41781da..42f9b51 100644 --- a/src/extension/src/adapters.ts +++ b/src/internal/adapters.ts @@ -1,7 +1,6 @@ import * as vscode from "vscode"; -import { ButtonConfig, RefreshButtonConfig } from "./types"; - -const CONFIG_SECTION = "quickCommandButtons"; +import { CONFIG_SECTION } from "../pkg/config-constants"; +import { ButtonConfig, RefreshButtonConfig } from "../pkg/types"; const DEFAULT_REFRESH_CONFIG: RefreshButtonConfig = { color: "#00BCD4", enabled: true, diff --git a/src/extension/src/command-executor.ts b/src/internal/command-executor.ts similarity index 98% rename from src/extension/src/command-executor.ts rename to src/internal/command-executor.ts index 9ea7507..ee45d9d 100644 --- a/src/extension/src/command-executor.ts +++ b/src/internal/command-executor.ts @@ -1,8 +1,8 @@ import * as vscode from "vscode"; -import { MESSAGES } from "../../shared/constants"; +import { ButtonConfig } from "../pkg/types"; +import { MESSAGES } from "../shared/constants"; import { TerminalExecutor, QuickPickCreator } from "./adapters"; import { findMatchingShortcut } from "./keyboard-layout-converter"; -import { ButtonConfig } from "./types"; export type QuickPickItem = { command: ButtonConfig; diff --git a/src/extension/src/keyboard-layout-converter.ts b/src/internal/keyboard-layout-converter.ts similarity index 100% rename from src/extension/src/keyboard-layout-converter.ts rename to src/internal/keyboard-layout-converter.ts diff --git a/src/extension/src/config-manager.ts b/src/internal/managers/config-manager.ts similarity index 96% rename from src/extension/src/config-manager.ts rename to src/internal/managers/config-manager.ts index 048237e..b5be900 100644 --- a/src/extension/src/config-manager.ts +++ b/src/internal/managers/config-manager.ts @@ -5,8 +5,8 @@ import { CONFIGURATION_TARGETS, VS_CODE_CONFIGURATION_TARGETS, ConfigurationTargetType, -} from "./config-constants"; -import { ButtonConfig } from "./types"; +} from "../../pkg/config-constants"; +import { ButtonConfig } from "../../pkg/types"; export class ConfigManager { static getConfigDataForWebview(configReader: { getButtons(): ButtonConfig[] }): { diff --git a/src/extension/src/status-bar-manager.ts b/src/internal/managers/status-bar-manager.ts similarity index 95% rename from src/extension/src/status-bar-manager.ts rename to src/internal/managers/status-bar-manager.ts index 7436c61..56a1c1e 100644 --- a/src/extension/src/status-bar-manager.ts +++ b/src/internal/managers/status-bar-manager.ts @@ -1,6 +1,6 @@ import * as vscode from "vscode"; -import { ConfigReader, StatusBarCreator } from "./adapters"; -import { ButtonConfig } from "./types"; +import { ButtonConfig } from "../../pkg/types"; +import { ConfigReader, StatusBarCreator } from "../adapters"; export const calculateButtonPriority = (index: number): number => { return 1000 - index; diff --git a/src/extension/src/terminal-manager.ts b/src/internal/managers/terminal-manager.ts similarity index 97% rename from src/extension/src/terminal-manager.ts rename to src/internal/managers/terminal-manager.ts index 505270a..a95d0d6 100644 --- a/src/extension/src/terminal-manager.ts +++ b/src/internal/managers/terminal-manager.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode"; -import { TerminalExecutor } from "./adapters"; +import { TerminalExecutor } from "../adapters"; export const shouldCreateNewTerminal = (terminal: vscode.Terminal | undefined): boolean => { return !terminal || !!terminal.exitStatus; diff --git a/src/extension/src/command-tree-provider.ts b/src/internal/providers/command-tree-provider.ts similarity index 96% rename from src/extension/src/command-tree-provider.ts rename to src/internal/providers/command-tree-provider.ts index bf126fb..82ab494 100644 --- a/src/extension/src/command-tree-provider.ts +++ b/src/internal/providers/command-tree-provider.ts @@ -1,6 +1,6 @@ import * as vscode from "vscode"; -import { ConfigReader, TerminalExecutor } from "./adapters"; -import { ButtonConfig } from "./types"; +import { ButtonConfig } from "../../pkg/types"; +import { ConfigReader, TerminalExecutor } from "../adapters"; export class CommandTreeItem extends vscode.TreeItem { public readonly buttonName: string; diff --git a/src/extension/src/webview-provider.ts b/src/internal/providers/webview-provider.ts similarity index 90% rename from src/extension/src/webview-provider.ts rename to src/internal/providers/webview-provider.ts index 0f13b50..6c2fac6 100644 --- a/src/extension/src/webview-provider.ts +++ b/src/internal/providers/webview-provider.ts @@ -1,10 +1,12 @@ import * as fs from "fs"; import * as path from "path"; import * as vscode from "vscode"; -import { ConfigReader } from "./adapters"; -import { ConfigurationTargetType } from "./config-constants"; -import { ConfigManager } from "./config-manager"; -import { ButtonConfig } from "./types"; +import { ConfigurationTargetType } from "../../pkg/config-constants"; +import { ButtonConfig } from "../../pkg/types"; +import { ConfigReader } from "../adapters"; +import { ConfigManager } from "../managers/config-manager"; + +const VIEW_DIST_PATH_SEGMENTS = ["src", "extension", "view-dist"]; export const generateFallbackHtml = (): string => { return ` @@ -18,8 +20,8 @@ export const generateFallbackHtml = (): string => {

Configuration UI Not Available

-

Please build the web-view first:

-
cd src/web-view && npm run build
+

Please build the view first:

+
cd src/view && npm run build
@@ -47,7 +49,7 @@ export const checkWebviewFilesExist = (webviewPath: string): boolean => { }; export const buildWebviewHtml = (extensionUri: vscode.Uri, webview: vscode.Webview): string => { - const webviewPath = path.join(extensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(extensionUri.fsPath, ...VIEW_DIST_PATH_SEGMENTS); if (!checkWebviewFilesExist(webviewPath)) { return generateFallbackHtml(); diff --git a/src/extension/src/show-all-commands.ts b/src/internal/show-all-commands.ts similarity index 92% rename from src/extension/src/show-all-commands.ts rename to src/internal/show-all-commands.ts index eee0ac2..2011af6 100644 --- a/src/extension/src/show-all-commands.ts +++ b/src/internal/show-all-commands.ts @@ -1,8 +1,8 @@ import * as vscode from "vscode"; -import { MESSAGES } from "../../shared/constants"; +import { ButtonConfig } from "../pkg/types"; +import { MESSAGES } from "../shared/constants"; import { ConfigReader, QuickPickCreator, TerminalExecutor } from "./adapters"; import { createQuickPickWithShortcuts, QuickPickItem } from "./command-executor"; -import { ButtonConfig } from "./types"; export const createQuickPickItemsFromButtons = (buttons: ButtonConfig[]): QuickPickItem[] => { return buttons.map((button) => ({ diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..f47b97f --- /dev/null +++ b/src/package.json @@ -0,0 +1,14 @@ +{ + "name": "quick-command-buttons-src", + "version": "0.0.1", + "private": true, + "type": "module", + "description": "Source code workspace for Quick Command Buttons", + "devDependencies": { + "@eslint/js": "9.17.0", + "eslint": "9.37.0", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-perfectionist": "4.15.1", + "typescript-eslint": "8.46.0" + } +} diff --git a/src/extension/src/config-constants.ts b/src/pkg/config-constants.ts similarity index 88% rename from src/extension/src/config-constants.ts rename to src/pkg/config-constants.ts index e802407..aab711d 100644 --- a/src/extension/src/config-constants.ts +++ b/src/pkg/config-constants.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode"; -import { CONFIG, CONFIGURATION_TARGET } from "../../shared/constants"; +import { CONFIG, CONFIGURATION_TARGET } from "../shared/constants"; export const CONFIG_SECTION = CONFIG.SECTION; export const CONFIG_KEYS = CONFIG.KEYS; diff --git a/src/extension/src/types.ts b/src/pkg/types.ts similarity index 84% rename from src/extension/src/types.ts rename to src/pkg/types.ts index 2499487..739d58d 100644 --- a/src/extension/src/types.ts +++ b/src/pkg/types.ts @@ -6,4 +6,4 @@ export type { ExtensionMessage, ExtensionMessageType, ConfigurationTarget, -} from "../../shared/types"; +} from "../shared/types"; diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml new file mode 100644 index 0000000..44dc243 --- /dev/null +++ b/src/pnpm-lock.yaml @@ -0,0 +1,3041 @@ +lockfileVersion: "9.0" + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + devDependencies: + "@eslint/js": + specifier: 9.17.0 + version: 9.17.0 + eslint: + specifier: 9.37.0 + version: 9.37.0 + eslint-plugin-import: + specifier: 2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0) + eslint-plugin-perfectionist: + specifier: 4.15.1 + version: 4.15.1(eslint@9.37.0)(typescript@5.9.3) + typescript-eslint: + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0)(typescript@5.9.3) + +packages: + "@eslint-community/eslint-utils@4.9.0": + resolution: + { + integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + "@eslint-community/regexpp@4.12.2": + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint/config-array@0.21.1": + resolution: + { + integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/config-helpers@0.4.2": + resolution: + { + integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/core@0.16.0": + resolution: + { + integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/core@0.17.0": + resolution: + { + integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/eslintrc@3.3.1": + resolution: + { + integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/js@9.17.0": + resolution: + { + integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/js@9.37.0": + resolution: + { + integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/object-schema@2.1.7": + resolution: + { + integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/plugin-kit@0.4.1": + resolution: + { + integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@humanfs/core@0.19.1": + resolution: + { + integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, + } + engines: { node: ">=18.18.0" } + + "@humanfs/node@0.16.7": + resolution: + { + integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==, + } + engines: { node: ">=18.18.0" } + + "@humanwhocodes/module-importer@1.0.1": + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + + "@humanwhocodes/retry@0.4.3": + resolution: + { + integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, + } + engines: { node: ">=18.18" } + + "@nodelib/fs.scandir@2.1.5": + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + + "@nodelib/fs.stat@2.0.5": + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + "@nodelib/fs.walk@1.2.8": + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + + "@rtsao/scc@1.1.0": + resolution: + { + integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==, + } + + "@types/estree@1.0.8": + resolution: + { + integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, + } + + "@types/json-schema@7.0.15": + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, + } + + "@types/json5@0.0.29": + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + + "@typescript-eslint/eslint-plugin@8.46.0": + resolution: + { + integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + "@typescript-eslint/parser": ^8.46.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/parser@8.46.0": + resolution: + { + integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/project-service@8.46.0": + resolution: + { + integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/project-service@8.47.0": + resolution: + { + integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/scope-manager@8.46.0": + resolution: + { + integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/scope-manager@8.47.0": + resolution: + { + integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/tsconfig-utils@8.46.0": + resolution: + { + integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/tsconfig-utils@8.47.0": + resolution: + { + integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/type-utils@8.46.0": + resolution: + { + integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/types@8.46.0": + resolution: + { + integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/types@8.47.0": + resolution: + { + integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/typescript-estree@8.46.0": + resolution: + { + integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/typescript-estree@8.47.0": + resolution: + { + integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/utils@8.46.0": + resolution: + { + integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/utils@8.47.0": + resolution: + { + integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/visitor-keys@8.46.0": + resolution: + { + integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/visitor-keys@8.47.0": + resolution: + { + integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + acorn-jsx@5.3.2: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: + { + integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, + } + engines: { node: ">=0.4.0" } + hasBin: true + + ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + + ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + + argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + + array-buffer-byte-length@1.0.2: + resolution: + { + integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==, + } + engines: { node: ">= 0.4" } + + array-includes@3.1.9: + resolution: + { + integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==, + } + engines: { node: ">= 0.4" } + + array.prototype.findlastindex@1.2.6: + resolution: + { + integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==, + } + engines: { node: ">= 0.4" } + + array.prototype.flat@1.3.3: + resolution: + { + integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==, + } + engines: { node: ">= 0.4" } + + array.prototype.flatmap@1.3.3: + resolution: + { + integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==, + } + engines: { node: ">= 0.4" } + + arraybuffer.prototype.slice@1.0.4: + resolution: + { + integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==, + } + engines: { node: ">= 0.4" } + + async-function@1.0.0: + resolution: + { + integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, + } + engines: { node: ">= 0.4" } + + available-typed-arrays@1.0.7: + resolution: + { + integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, + } + engines: { node: ">= 0.4" } + + balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + brace-expansion@1.1.12: + resolution: + { + integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, + } + + brace-expansion@2.0.2: + resolution: + { + integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, + } + + braces@3.0.3: + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + } + engines: { node: ">=8" } + + call-bind-apply-helpers@1.0.2: + resolution: + { + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, + } + engines: { node: ">= 0.4" } + + call-bind@1.0.8: + resolution: + { + integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, + } + engines: { node: ">= 0.4" } + + call-bound@1.0.4: + resolution: + { + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, + } + engines: { node: ">= 0.4" } + + callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: ">=6" } + + chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + + color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + + color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + + cross-spawn@7.0.6: + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + } + engines: { node: ">= 8" } + + data-view-buffer@1.0.2: + resolution: + { + integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==, + } + engines: { node: ">= 0.4" } + + data-view-byte-length@1.0.2: + resolution: + { + integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==, + } + engines: { node: ">= 0.4" } + + data-view-byte-offset@1.0.1: + resolution: + { + integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==, + } + engines: { node: ">= 0.4" } + + debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + + define-data-property@1.1.4: + resolution: + { + integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, + } + engines: { node: ">= 0.4" } + + define-properties@1.2.1: + resolution: + { + integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, + } + engines: { node: ">= 0.4" } + + doctrine@2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: ">=0.10.0" } + + dunder-proto@1.0.1: + resolution: + { + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, + } + engines: { node: ">= 0.4" } + + es-abstract@1.24.0: + resolution: + { + integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==, + } + engines: { node: ">= 0.4" } + + es-define-property@1.0.1: + resolution: + { + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, + } + engines: { node: ">= 0.4" } + + es-errors@1.3.0: + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + } + engines: { node: ">= 0.4" } + + es-object-atoms@1.1.1: + resolution: + { + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, + } + engines: { node: ">= 0.4" } + + es-set-tostringtag@2.1.0: + resolution: + { + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, + } + engines: { node: ">= 0.4" } + + es-shim-unscopables@1.1.0: + resolution: + { + integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==, + } + engines: { node: ">= 0.4" } + + es-to-primitive@1.3.0: + resolution: + { + integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==, + } + engines: { node: ">= 0.4" } + + escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } + + eslint-import-resolver-node@0.3.9: + resolution: + { + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, + } + + eslint-module-utils@2.12.1: + resolution: + { + integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: + { + integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + + eslint-plugin-perfectionist@4.15.1: + resolution: + { + integrity: sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==, + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + eslint: ">=8.45.0" + + eslint-scope@8.4.0: + resolution: + { + integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + eslint-visitor-keys@3.4.3: + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + eslint-visitor-keys@4.2.1: + resolution: + { + integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + eslint@9.37.0: + resolution: + { + integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + hasBin: true + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: + { + integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + esquery@1.6.0: + resolution: + { + integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, + } + engines: { node: ">=0.10" } + + esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + + estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } + + fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + fast-glob@3.3.3: + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + } + engines: { node: ">=8.6.0" } + + fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + + fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + + fastq@1.19.1: + resolution: + { + integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, + } + + file-entry-cache@8.0.0: + resolution: + { + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, + } + engines: { node: ">=16.0.0" } + + fill-range@7.1.1: + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + } + engines: { node: ">=8" } + + find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + + flat-cache@4.0.1: + resolution: + { + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, + } + engines: { node: ">=16" } + + flatted@3.3.3: + resolution: + { + integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, + } + + for-each@0.3.5: + resolution: + { + integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, + } + engines: { node: ">= 0.4" } + + function-bind@1.1.2: + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + } + + function.prototype.name@1.1.8: + resolution: + { + integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==, + } + engines: { node: ">= 0.4" } + + functions-have-names@1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + + generator-function@2.0.1: + resolution: + { + integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==, + } + engines: { node: ">= 0.4" } + + get-intrinsic@1.3.0: + resolution: + { + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, + } + engines: { node: ">= 0.4" } + + get-proto@1.0.1: + resolution: + { + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, + } + engines: { node: ">= 0.4" } + + get-symbol-description@1.1.0: + resolution: + { + integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==, + } + engines: { node: ">= 0.4" } + + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + + glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } + + globals@14.0.0: + resolution: + { + integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, + } + engines: { node: ">=18" } + + globalthis@1.0.4: + resolution: + { + integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, + } + engines: { node: ">= 0.4" } + + gopd@1.2.0: + resolution: + { + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, + } + engines: { node: ">= 0.4" } + + graphemer@1.4.0: + resolution: + { + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, + } + + has-bigints@1.1.0: + resolution: + { + integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==, + } + engines: { node: ">= 0.4" } + + has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + has-property-descriptors@1.0.2: + resolution: + { + integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, + } + + has-proto@1.2.0: + resolution: + { + integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==, + } + engines: { node: ">= 0.4" } + + has-symbols@1.1.0: + resolution: + { + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, + } + engines: { node: ">= 0.4" } + + has-tostringtag@1.0.2: + resolution: + { + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, + } + engines: { node: ">= 0.4" } + + hasown@2.0.2: + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + } + engines: { node: ">= 0.4" } + + ignore@5.3.2: + resolution: + { + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, + } + engines: { node: ">= 4" } + + ignore@7.0.5: + resolution: + { + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, + } + engines: { node: ">= 4" } + + import-fresh@3.3.1: + resolution: + { + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, + } + engines: { node: ">=6" } + + imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } + + internal-slot@1.1.0: + resolution: + { + integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==, + } + engines: { node: ">= 0.4" } + + is-array-buffer@3.0.5: + resolution: + { + integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==, + } + engines: { node: ">= 0.4" } + + is-async-function@2.1.1: + resolution: + { + integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==, + } + engines: { node: ">= 0.4" } + + is-bigint@1.1.0: + resolution: + { + integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==, + } + engines: { node: ">= 0.4" } + + is-boolean-object@1.2.2: + resolution: + { + integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==, + } + engines: { node: ">= 0.4" } + + is-callable@1.2.7: + resolution: + { + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, + } + engines: { node: ">= 0.4" } + + is-core-module@2.16.1: + resolution: + { + integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, + } + engines: { node: ">= 0.4" } + + is-data-view@1.0.2: + resolution: + { + integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==, + } + engines: { node: ">= 0.4" } + + is-date-object@1.1.0: + resolution: + { + integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==, + } + engines: { node: ">= 0.4" } + + is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + is-finalizationregistry@1.1.1: + resolution: + { + integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==, + } + engines: { node: ">= 0.4" } + + is-generator-function@1.1.2: + resolution: + { + integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==, + } + engines: { node: ">= 0.4" } + + is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + + is-map@2.0.3: + resolution: + { + integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, + } + engines: { node: ">= 0.4" } + + is-negative-zero@2.0.3: + resolution: + { + integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, + } + engines: { node: ">= 0.4" } + + is-number-object@1.1.1: + resolution: + { + integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==, + } + engines: { node: ">= 0.4" } + + is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + + is-regex@1.2.1: + resolution: + { + integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, + } + engines: { node: ">= 0.4" } + + is-set@2.0.3: + resolution: + { + integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, + } + engines: { node: ">= 0.4" } + + is-shared-array-buffer@1.0.4: + resolution: + { + integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==, + } + engines: { node: ">= 0.4" } + + is-string@1.1.1: + resolution: + { + integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, + } + engines: { node: ">= 0.4" } + + is-symbol@1.1.1: + resolution: + { + integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==, + } + engines: { node: ">= 0.4" } + + is-typed-array@1.1.15: + resolution: + { + integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==, + } + engines: { node: ">= 0.4" } + + is-weakmap@2.0.2: + resolution: + { + integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, + } + engines: { node: ">= 0.4" } + + is-weakref@1.1.1: + resolution: + { + integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==, + } + engines: { node: ">= 0.4" } + + is-weakset@2.0.4: + resolution: + { + integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==, + } + engines: { node: ">= 0.4" } + + isarray@2.0.5: + resolution: + { + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, + } + + isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + js-yaml@4.1.1: + resolution: + { + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, + } + hasBin: true + + json-buffer@3.0.1: + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + } + + json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + + json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + + json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + + keyv@4.5.4: + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, + } + + levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } + + locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + + lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + + math-intrinsics@1.1.0: + resolution: + { + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + } + engines: { node: ">= 0.4" } + + merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + + micromatch@4.0.8: + resolution: + { + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + } + engines: { node: ">=8.6" } + + minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + + minimatch@9.0.5: + resolution: + { + integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, + } + engines: { node: ">=16 || 14 >=14.17" } + + minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + + ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + + natural-orderby@5.0.0: + resolution: + { + integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==, + } + engines: { node: ">=18" } + + object-inspect@1.13.4: + resolution: + { + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, + } + engines: { node: ">= 0.4" } + + object-keys@1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: ">= 0.4" } + + object.assign@4.1.7: + resolution: + { + integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==, + } + engines: { node: ">= 0.4" } + + object.fromentries@2.0.8: + resolution: + { + integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==, + } + engines: { node: ">= 0.4" } + + object.groupby@1.0.3: + resolution: + { + integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==, + } + engines: { node: ">= 0.4" } + + object.values@1.2.1: + resolution: + { + integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==, + } + engines: { node: ">= 0.4" } + + optionator@0.9.4: + resolution: + { + integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, + } + engines: { node: ">= 0.8.0" } + + own-keys@1.0.1: + resolution: + { + integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==, + } + engines: { node: ">= 0.4" } + + p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + + p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + + parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: ">=6" } + + path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + + path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + + picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + + possible-typed-array-names@1.1.0: + resolution: + { + integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==, + } + engines: { node: ">= 0.4" } + + prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } + + punycode@2.3.1: + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + } + engines: { node: ">=6" } + + queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + + reflect.getprototypeof@1.0.10: + resolution: + { + integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==, + } + engines: { node: ">= 0.4" } + + regexp.prototype.flags@1.5.4: + resolution: + { + integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==, + } + engines: { node: ">= 0.4" } + + resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: ">=4" } + + resolve@1.22.11: + resolution: + { + integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==, + } + engines: { node: ">= 0.4" } + hasBin: true + + reusify@1.1.0: + resolution: + { + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + + safe-array-concat@1.1.3: + resolution: + { + integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==, + } + engines: { node: ">=0.4" } + + safe-push-apply@1.0.0: + resolution: + { + integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==, + } + engines: { node: ">= 0.4" } + + safe-regex-test@1.1.0: + resolution: + { + integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, + } + engines: { node: ">= 0.4" } + + semver@6.3.1: + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + } + hasBin: true + + semver@7.7.3: + resolution: + { + integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==, + } + engines: { node: ">=10" } + hasBin: true + + set-function-length@1.2.2: + resolution: + { + integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, + } + engines: { node: ">= 0.4" } + + set-function-name@2.0.2: + resolution: + { + integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, + } + engines: { node: ">= 0.4" } + + set-proto@1.0.0: + resolution: + { + integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==, + } + engines: { node: ">= 0.4" } + + shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + + shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + side-channel-list@1.0.0: + resolution: + { + integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, + } + engines: { node: ">= 0.4" } + + side-channel-map@1.0.1: + resolution: + { + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, + } + engines: { node: ">= 0.4" } + + side-channel-weakmap@1.0.2: + resolution: + { + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, + } + engines: { node: ">= 0.4" } + + side-channel@1.1.0: + resolution: + { + integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, + } + engines: { node: ">= 0.4" } + + stop-iteration-iterator@1.1.0: + resolution: + { + integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==, + } + engines: { node: ">= 0.4" } + + string.prototype.trim@1.2.10: + resolution: + { + integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==, + } + engines: { node: ">= 0.4" } + + string.prototype.trimend@1.0.9: + resolution: + { + integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==, + } + engines: { node: ">= 0.4" } + + string.prototype.trimstart@1.0.8: + resolution: + { + integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, + } + engines: { node: ">= 0.4" } + + strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + + strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + + supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + + to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + + ts-api-utils@2.1.0: + resolution: + { + integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, + } + engines: { node: ">=18.12" } + peerDependencies: + typescript: ">=4.8.4" + + tsconfig-paths@3.15.0: + resolution: + { + integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, + } + + type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } + + typed-array-buffer@1.0.3: + resolution: + { + integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==, + } + engines: { node: ">= 0.4" } + + typed-array-byte-length@1.0.3: + resolution: + { + integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==, + } + engines: { node: ">= 0.4" } + + typed-array-byte-offset@1.0.4: + resolution: + { + integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==, + } + engines: { node: ">= 0.4" } + + typed-array-length@1.0.7: + resolution: + { + integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==, + } + engines: { node: ">= 0.4" } + + typescript-eslint@8.46.0: + resolution: + { + integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + typescript@5.9.3: + resolution: + { + integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, + } + engines: { node: ">=14.17" } + hasBin: true + + unbox-primitive@1.1.0: + resolution: + { + integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==, + } + engines: { node: ">= 0.4" } + + uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + + which-boxed-primitive@1.1.1: + resolution: + { + integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==, + } + engines: { node: ">= 0.4" } + + which-builtin-type@1.2.1: + resolution: + { + integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==, + } + engines: { node: ">= 0.4" } + + which-collection@1.0.2: + resolution: + { + integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, + } + engines: { node: ">= 0.4" } + + which-typed-array@1.1.19: + resolution: + { + integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, + } + engines: { node: ">= 0.4" } + + which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + + word-wrap@1.2.5: + resolution: + { + integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + } + engines: { node: ">=0.10.0" } + + yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } + +snapshots: + "@eslint-community/eslint-utils@4.9.0(eslint@9.37.0)": + dependencies: + eslint: 9.37.0 + eslint-visitor-keys: 3.4.3 + + "@eslint-community/regexpp@4.12.2": {} + + "@eslint/config-array@0.21.1": + dependencies: + "@eslint/object-schema": 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + "@eslint/config-helpers@0.4.2": + dependencies: + "@eslint/core": 0.17.0 + + "@eslint/core@0.16.0": + dependencies: + "@types/json-schema": 7.0.15 + + "@eslint/core@0.17.0": + dependencies: + "@types/json-schema": 7.0.15 + + "@eslint/eslintrc@3.3.1": + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + "@eslint/js@9.17.0": {} + + "@eslint/js@9.37.0": {} + + "@eslint/object-schema@2.1.7": {} + + "@eslint/plugin-kit@0.4.1": + dependencies: + "@eslint/core": 0.17.0 + levn: 0.4.1 + + "@humanfs/core@0.19.1": {} + + "@humanfs/node@0.16.7": + dependencies: + "@humanfs/core": 0.19.1 + "@humanwhocodes/retry": 0.4.3 + + "@humanwhocodes/module-importer@1.0.1": {} + + "@humanwhocodes/retry@0.4.3": {} + + "@nodelib/fs.scandir@2.1.5": + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + "@nodelib/fs.stat@2.0.5": {} + + "@nodelib/fs.walk@1.2.8": + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.19.1 + + "@rtsao/scc@1.1.0": {} + + "@types/estree@1.0.8": {} + + "@types/json-schema@7.0.15": {} + + "@types/json5@0.0.29": {} + + "@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/type-utils": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.46.0 + eslint: 9.37.0 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3)": + dependencies: + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.46.0 + debug: 4.4.3 + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/project-service@8.46.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/tsconfig-utils": 8.46.0(typescript@5.9.3) + "@typescript-eslint/types": 8.46.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/project-service@8.47.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/tsconfig-utils": 8.47.0(typescript@5.9.3) + "@typescript-eslint/types": 8.47.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/scope-manager@8.46.0": + dependencies: + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/visitor-keys": 8.46.0 + + "@typescript-eslint/scope-manager@8.47.0": + dependencies: + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + + "@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)": + dependencies: + typescript: 5.9.3 + + "@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)": + dependencies: + typescript: 5.9.3 + + "@typescript-eslint/type-utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)": + dependencies: + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.37.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/types@8.46.0": {} + + "@typescript-eslint/types@8.47.0": {} + + "@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/project-service": 8.46.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.46.0(typescript@5.9.3) + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/visitor-keys": 8.46.0 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/project-service": 8.47.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.47.0(typescript@5.9.3) + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.37.0) + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/utils@8.47.0(eslint@9.37.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.37.0) + "@typescript-eslint/scope-manager": 8.47.0 + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/typescript-estree": 8.47.0(typescript@5.9.3) + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/visitor-keys@8.46.0": + dependencies: + "@typescript-eslint/types": 8.46.0 + eslint-visitor-keys: 4.2.1 + + "@typescript-eslint/visitor-keys@8.47.0": + dependencies: + "@typescript-eslint/types": 8.47.0 + eslint-visitor-keys: 4.2.1 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + balanced-match@1.0.2: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escape-string-regexp@4.0.0: {} + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + "@typescript-eslint/parser": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + eslint: 9.37.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0): + dependencies: + "@rtsao/scc": 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.37.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + "@typescript-eslint/parser": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-perfectionist@4.15.1(eslint@9.37.0)(typescript@5.9.3): + dependencies: + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/utils": 8.47.0(eslint@9.37.0)(typescript@5.9.3) + eslint: 9.37.0 + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.37.0: + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.37.0) + "@eslint-community/regexpp": 4.12.2 + "@eslint/config-array": 0.21.1 + "@eslint/config-helpers": 0.4.2 + "@eslint/core": 0.16.0 + "@eslint/eslintrc": 3.3.1 + "@eslint/js": 9.37.0 + "@eslint/plugin-kit": 0.4.1 + "@humanfs/node": 0.16.7 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.8 + "@types/json-schema": 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + picomatch@2.3.1: {} + + possible-typed-array-names@1.1.0: {} + + prelude-ls@1.2.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + resolve-from@4.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + semver@6.3.1: {} + + semver@7.7.3: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tsconfig-paths@3.15.0: + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.46.0(eslint@9.37.0)(typescript@5.9.3): + dependencies: + "@typescript-eslint/eslint-plugin": 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) + "@typescript-eslint/parser": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.37.0)(typescript@5.9.3) + eslint: 9.37.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yocto-queue@0.1.0: {} diff --git a/src/shared/constants.ts b/src/shared/constants.ts index 88db34e..e41d61b 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -1,10 +1,10 @@ export const CONFIG = { - SECTION: "quickCommandButtons", KEYS: { BUTTONS: "buttons", CONFIGURATION_TARGET: "configurationTarget", REFRESH_BUTTON: "refreshButton", }, + SECTION: "quickCommandButtons", } as const; export const CONFIGURATION_TARGET = { @@ -13,11 +13,11 @@ export const CONFIGURATION_TARGET = { } as const; export const MESSAGE_TYPE = { + CONFIG_DATA: "configData", + CONFIGURATION_TARGET_CHANGED: "configurationTargetChanged", GET_CONFIG: "getConfig", SET_CONFIG: "setConfig", SET_CONFIGURATION_TARGET: "setConfigurationTarget", - CONFIG_DATA: "configData", - CONFIGURATION_TARGET_CHANGED: "configurationTargetChanged", } as const; export const MESSAGES = { @@ -29,10 +29,10 @@ export const MESSAGES = { noCommands: "No commands found", }, INFO: { + commandsCount: (count: number) => `${count} commands`, + groupCommands: (buttonName: string) => `${buttonName} Commands`, + quickCommands: "Quick Commands", selectCommand: "Select a command to execute", selectCommandOrGroup: "Select a command/group to execute (or type shortcut key)", - quickCommands: "Quick Commands", - groupCommands: (buttonName: string) => `${buttonName} Commands`, - commandsCount: (count: number) => `${count} commands`, }, } as const; diff --git a/src/shared/types.ts b/src/shared/types.ts index 297ff56..0002c65 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -20,14 +20,14 @@ export type WebviewMessageType = "getConfig" | "setConfig" | "setConfigurationTa export type ExtensionMessageType = "configData" | "configurationTargetChanged"; export type WebviewMessage = { - type: WebviewMessageType; data?: ButtonConfig[] | ButtonConfig | string; target?: string; + type: WebviewMessageType; }; export type ExtensionMessage = { - type: ExtensionMessageType; data?: ButtonConfig[] | string; + type: ExtensionMessageType; }; export type ConfigurationTarget = "global" | "workspace"; diff --git a/src/extension/src/adapters.test.ts b/src/tests/adapters.spec.ts similarity index 95% rename from src/extension/src/adapters.test.ts rename to src/tests/adapters.spec.ts index 33d4c9a..606a62e 100644 --- a/src/extension/src/adapters.test.ts +++ b/src/tests/adapters.spec.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode"; -import { createVSCodeConfigReader } from "./adapters"; +import { createVSCodeConfigReader } from "../internal/adapters"; describe("adapters", () => { beforeEach(() => { diff --git a/src/extension/src/command-executor.test.ts b/src/tests/command-executor.spec.ts similarity index 99% rename from src/extension/src/command-executor.test.ts rename to src/tests/command-executor.spec.ts index a58aea2..62f0b5b 100644 --- a/src/extension/src/command-executor.test.ts +++ b/src/tests/command-executor.spec.ts @@ -5,8 +5,8 @@ import { createQuickPickItems, executeTerminalCommand, executeCommandsRecursively, -} from "./command-executor"; -import { ButtonConfig } from "./types"; +} from "../internal/command-executor"; +import { ButtonConfig } from "../pkg/types"; describe("command-executor", () => { describe("validateShortcuts", () => { diff --git a/src/extension/src/command-tree-provider.test.ts b/src/tests/command-tree-provider.spec.ts similarity index 98% rename from src/extension/src/command-tree-provider.test.ts rename to src/tests/command-tree-provider.spec.ts index ff561b8..b6936b7 100644 --- a/src/extension/src/command-tree-provider.test.ts +++ b/src/tests/command-tree-provider.spec.ts @@ -3,8 +3,8 @@ import { createRootTreeItems, CommandTreeItem, GroupTreeItem, -} from "./command-tree-provider"; -import { ButtonConfig } from "./types"; +} from "../internal/providers/command-tree-provider"; +import { ButtonConfig } from "../pkg/types"; describe("command-tree-provider", () => { describe("createTreeItemsFromGroup", () => { diff --git a/src/extension/src/keyboard-layout-converter.test.ts b/src/tests/keyboard-layout-converter.spec.ts similarity index 97% rename from src/extension/src/keyboard-layout-converter.test.ts rename to src/tests/keyboard-layout-converter.spec.ts index e50e4bd..b3c6634 100644 --- a/src/extension/src/keyboard-layout-converter.test.ts +++ b/src/tests/keyboard-layout-converter.spec.ts @@ -1,4 +1,4 @@ -import { generateKeyVariants, findMatchingShortcut } from "./keyboard-layout-converter"; +import { generateKeyVariants, findMatchingShortcut } from "../internal/keyboard-layout-converter"; describe("generateKeyVariants", () => { it("should return input key with case variations for single character", () => { diff --git a/src/extension/src/main.test.ts b/src/tests/main.spec.ts similarity index 89% rename from src/extension/src/main.test.ts rename to src/tests/main.spec.ts index 75e4cf7..93915ec 100644 --- a/src/extension/src/main.test.ts +++ b/src/tests/main.spec.ts @@ -1,27 +1,27 @@ import * as vscode from "vscode"; -import { CommandTreeProvider } from "./command-tree-provider"; -import { registerCommands } from "./main"; -import { createShowAllCommandsCommand } from "./show-all-commands"; -import { StatusBarManager } from "./status-bar-manager"; -import { TerminalManager } from "./terminal-manager"; -import { ConfigWebviewProvider } from "./webview-provider"; +import { registerCommands } from "../extension/main"; +import { StatusBarManager } from "../internal/managers/status-bar-manager"; +import { TerminalManager } from "../internal/managers/terminal-manager"; +import { CommandTreeProvider } from "../internal/providers/command-tree-provider"; +import { ConfigWebviewProvider } from "../internal/providers/webview-provider"; +import { createShowAllCommandsCommand } from "../internal/show-all-commands"; // Mock other modules -jest.mock("./command-executor", () => ({ +jest.mock("../internal/command-executor", () => ({ executeButtonCommand: jest.fn(), })); -jest.mock("./show-all-commands", () => ({ +jest.mock("../internal/show-all-commands", () => ({ createShowAllCommandsCommand: jest.fn(), })); -jest.mock("./webview-provider", () => ({ +jest.mock("../internal/providers/webview-provider", () => ({ ConfigWebviewProvider: { createWebviewCommand: jest.fn(), }, })); -jest.mock("./command-tree-provider", () => ({ +jest.mock("../internal/providers/command-tree-provider", () => ({ CommandTreeProvider: { executeFromTree: jest.fn(), }, diff --git a/src/extension/src/show-all-commands.test.ts b/src/tests/show-all-commands.spec.ts similarity index 97% rename from src/extension/src/show-all-commands.test.ts rename to src/tests/show-all-commands.spec.ts index 4ed2e68..4f046f2 100644 --- a/src/extension/src/show-all-commands.test.ts +++ b/src/tests/show-all-commands.spec.ts @@ -1,5 +1,5 @@ -import { createQuickPickItemsFromButtons } from "./show-all-commands"; -import { ButtonConfig } from "./types"; +import { createQuickPickItemsFromButtons } from "../internal/show-all-commands"; +import { ButtonConfig } from "../pkg/types"; describe("show-all-commands", () => { describe("createQuickPickItemsFromButtons", () => { diff --git a/src/extension/src/status-bar-manager.test.ts b/src/tests/status-bar-manager.spec.ts similarity index 98% rename from src/extension/src/status-bar-manager.test.ts rename to src/tests/status-bar-manager.spec.ts index ed53c81..92e30df 100644 --- a/src/extension/src/status-bar-manager.test.ts +++ b/src/tests/status-bar-manager.spec.ts @@ -3,8 +3,8 @@ import { createTooltipText, createButtonCommand, configureRefreshButton, -} from "./status-bar-manager"; -import { ButtonConfig } from "./types"; +} from "../internal/managers/status-bar-manager"; +import { ButtonConfig } from "../pkg/types"; describe("status-bar-manager", () => { describe("calculateButtonPriority", () => { diff --git a/src/extension/src/terminal-manager.test.ts b/src/tests/terminal-manager.spec.ts similarity index 98% rename from src/extension/src/terminal-manager.test.ts rename to src/tests/terminal-manager.spec.ts index 572ccc7..01cbd7f 100644 --- a/src/extension/src/terminal-manager.test.ts +++ b/src/tests/terminal-manager.spec.ts @@ -3,7 +3,7 @@ import { shouldCreateNewTerminal, determineTerminalName, TerminalManager, -} from "./terminal-manager"; +} from "../internal/managers/terminal-manager"; describe("terminal-manager", () => { describe("shouldCreateNewTerminal", () => { diff --git a/src/extension/src/webview-provider.test.ts b/src/tests/webview-provider.spec.ts similarity index 97% rename from src/extension/src/webview-provider.test.ts rename to src/tests/webview-provider.spec.ts index 711541d..b954b05 100644 --- a/src/extension/src/webview-provider.test.ts +++ b/src/tests/webview-provider.spec.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; import * as path from "path"; import * as vscode from "vscode"; -import { ConfigManager } from "./config-manager"; +import { ConfigManager } from "../internal/managers/config-manager"; import { generateFallbackHtml, replaceAssetPaths, @@ -9,10 +9,10 @@ import { checkWebviewFilesExist, buildWebviewHtml, updateButtonConfiguration, -} from "./webview-provider"; +} from "../internal/providers/webview-provider"; // Mock ConfigManager -jest.mock("./config-manager"); +jest.mock("../internal/managers/config-manager"); // Mock fs module jest.mock("fs"); @@ -25,7 +25,7 @@ describe("webview-provider", () => { expect(result).toContain(""); expect(result).toContain("Configuration UI"); expect(result).toContain("Configuration UI Not Available"); - expect(result).toContain("cd src/web-view && npm run build"); + expect(result).toContain("cd src/view && npm run build"); }); it("should return valid HTML structure", () => { @@ -330,7 +330,7 @@ describe("webview-provider", () => { }); it("should return fallback HTML when webview files do not exist", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); mockedFs.existsSync.mockImplementation((filePath) => filePath !== indexPath); @@ -338,12 +338,12 @@ describe("webview-provider", () => { const result = buildWebviewHtml(mockExtensionUri, mockWebview); expect(result).toContain("Configuration UI Not Available"); - expect(result).toContain("cd src/web-view && npm run build"); + expect(result).toContain("cd src/view && npm run build"); expect(mockedFs.existsSync).toHaveBeenCalledWith(indexPath); }); it("should process HTML file when webview files exist", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); const mockHtml = 'Test'; @@ -361,7 +361,7 @@ describe("webview-provider", () => { }); it("should replace asset paths and inject security content", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); const mockHtml = 'Test'; @@ -382,7 +382,7 @@ describe("webview-provider", () => { }); it("should handle complex HTML with multiple asset references", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); const mockHtml = ` @@ -412,7 +412,7 @@ describe("webview-provider", () => { }); it("should handle empty HTML file", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); const mockHtml = ""; @@ -426,7 +426,7 @@ describe("webview-provider", () => { }); it("should handle HTML without assets paths", () => { - const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "web-view-dist"); + const webviewPath = path.join(mockExtensionUri.fsPath, "src", "extension", "view-dist"); const indexPath = path.join(webviewPath, "index.html"); const mockHtml = "No Assets
Simple content
"; diff --git a/src/web-view/.gitignore b/src/view/.gitignore similarity index 100% rename from src/web-view/.gitignore rename to src/view/.gitignore diff --git a/src/web-view/README.md b/src/view/README.md similarity index 100% rename from src/web-view/README.md rename to src/view/README.md diff --git a/src/web-view/components.json b/src/view/components.json similarity index 100% rename from src/web-view/components.json rename to src/view/components.json diff --git a/src/web-view/eslint.config.js b/src/view/eslint.config.js similarity index 100% rename from src/web-view/eslint.config.js rename to src/view/eslint.config.js diff --git a/src/web-view/index.html b/src/view/index.html similarity index 100% rename from src/web-view/index.html rename to src/view/index.html diff --git a/src/web-view/package.json b/src/view/package.json similarity index 98% rename from src/web-view/package.json rename to src/view/package.json index 4656cd8..9c2a085 100644 --- a/src/web-view/package.json +++ b/src/view/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "tsc -b && vite build", "lint": "eslint --fix src/**/*.{ts,tsx}", "preview": "vite preview" diff --git a/src/web-view/pnpm-lock.yaml b/src/view/pnpm-lock.yaml similarity index 100% rename from src/web-view/pnpm-lock.yaml rename to src/view/pnpm-lock.yaml diff --git a/src/view/public/vite.svg b/src/view/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/src/view/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/web-view/src/app.tsx b/src/view/src/app.tsx similarity index 100% rename from src/web-view/src/app.tsx rename to src/view/src/app.tsx diff --git a/src/web-view/src/assets/react.svg b/src/view/src/assets/react.svg similarity index 100% rename from src/web-view/src/assets/react.svg rename to src/view/src/assets/react.svg diff --git a/src/web-view/src/components/command-form-dialog.tsx b/src/view/src/components/command-form-dialog.tsx similarity index 100% rename from src/web-view/src/components/command-form-dialog.tsx rename to src/view/src/components/command-form-dialog.tsx diff --git a/src/web-view/src/components/command-form.tsx b/src/view/src/components/command-form.tsx similarity index 100% rename from src/web-view/src/components/command-form.tsx rename to src/view/src/components/command-form.tsx diff --git a/src/web-view/src/components/command-list.tsx b/src/view/src/components/command-list.tsx similarity index 100% rename from src/web-view/src/components/command-list.tsx rename to src/view/src/components/command-list.tsx diff --git a/src/web-view/src/components/delete-confirmation-dialog.tsx b/src/view/src/components/delete-confirmation-dialog.tsx similarity index 100% rename from src/web-view/src/components/delete-confirmation-dialog.tsx rename to src/view/src/components/delete-confirmation-dialog.tsx diff --git a/src/web-view/src/components/group-command-editor.tsx b/src/view/src/components/group-command-editor.tsx similarity index 100% rename from src/web-view/src/components/group-command-editor.tsx rename to src/view/src/components/group-command-editor.tsx diff --git a/src/web-view/src/components/group-command-item.tsx b/src/view/src/components/group-command-item.tsx similarity index 100% rename from src/web-view/src/components/group-command-item.tsx rename to src/view/src/components/group-command-item.tsx diff --git a/src/web-view/src/components/group-command-list.tsx b/src/view/src/components/group-command-list.tsx similarity index 100% rename from src/web-view/src/components/group-command-list.tsx rename to src/view/src/components/group-command-list.tsx diff --git a/src/web-view/src/components/group-to-single-warning-dialog.tsx b/src/view/src/components/group-to-single-warning-dialog.tsx similarity index 100% rename from src/web-view/src/components/group-to-single-warning-dialog.tsx rename to src/view/src/components/group-to-single-warning-dialog.tsx diff --git a/src/web-view/src/components/header.tsx b/src/view/src/components/header.tsx similarity index 100% rename from src/web-view/src/components/header.tsx rename to src/view/src/components/header.tsx diff --git a/src/web-view/src/context/command-form-context.tsx b/src/view/src/context/command-form-context.tsx similarity index 100% rename from src/web-view/src/context/command-form-context.tsx rename to src/view/src/context/command-form-context.tsx diff --git a/src/web-view/src/context/vscode-command-context.tsx b/src/view/src/context/vscode-command-context.tsx similarity index 100% rename from src/web-view/src/context/vscode-command-context.tsx rename to src/view/src/context/vscode-command-context.tsx diff --git a/src/web-view/src/core/badge.tsx b/src/view/src/core/badge.tsx similarity index 100% rename from src/web-view/src/core/badge.tsx rename to src/view/src/core/badge.tsx diff --git a/src/web-view/src/core/button.tsx b/src/view/src/core/button.tsx similarity index 100% rename from src/web-view/src/core/button.tsx rename to src/view/src/core/button.tsx diff --git a/src/web-view/src/core/card.tsx b/src/view/src/core/card.tsx similarity index 100% rename from src/web-view/src/core/card.tsx rename to src/view/src/core/card.tsx diff --git a/src/web-view/src/core/checkbox.tsx b/src/view/src/core/checkbox.tsx similarity index 100% rename from src/web-view/src/core/checkbox.tsx rename to src/view/src/core/checkbox.tsx diff --git a/src/web-view/src/core/dialog.tsx b/src/view/src/core/dialog.tsx similarity index 100% rename from src/web-view/src/core/dialog.tsx rename to src/view/src/core/dialog.tsx diff --git a/src/web-view/src/core/form-label.tsx b/src/view/src/core/form-label.tsx similarity index 100% rename from src/web-view/src/core/form-label.tsx rename to src/view/src/core/form-label.tsx diff --git a/src/web-view/src/core/index.tsx b/src/view/src/core/index.tsx similarity index 100% rename from src/web-view/src/core/index.tsx rename to src/view/src/core/index.tsx diff --git a/src/web-view/src/core/input.tsx b/src/view/src/core/input.tsx similarity index 100% rename from src/web-view/src/core/input.tsx rename to src/view/src/core/input.tsx diff --git a/src/web-view/src/core/label.tsx b/src/view/src/core/label.tsx similarity index 100% rename from src/web-view/src/core/label.tsx rename to src/view/src/core/label.tsx diff --git a/src/web-view/src/core/radio-group.tsx b/src/view/src/core/radio-group.tsx similarity index 100% rename from src/web-view/src/core/radio-group.tsx rename to src/view/src/core/radio-group.tsx diff --git a/src/web-view/src/core/shadcn/badge.tsx b/src/view/src/core/shadcn/badge.tsx similarity index 100% rename from src/web-view/src/core/shadcn/badge.tsx rename to src/view/src/core/shadcn/badge.tsx diff --git a/src/web-view/src/core/shadcn/button.tsx b/src/view/src/core/shadcn/button.tsx similarity index 100% rename from src/web-view/src/core/shadcn/button.tsx rename to src/view/src/core/shadcn/button.tsx diff --git a/src/web-view/src/core/shadcn/card.tsx b/src/view/src/core/shadcn/card.tsx similarity index 100% rename from src/web-view/src/core/shadcn/card.tsx rename to src/view/src/core/shadcn/card.tsx diff --git a/src/web-view/src/core/shadcn/checkbox.tsx b/src/view/src/core/shadcn/checkbox.tsx similarity index 100% rename from src/web-view/src/core/shadcn/checkbox.tsx rename to src/view/src/core/shadcn/checkbox.tsx diff --git a/src/web-view/src/core/shadcn/dialog.tsx b/src/view/src/core/shadcn/dialog.tsx similarity index 100% rename from src/web-view/src/core/shadcn/dialog.tsx rename to src/view/src/core/shadcn/dialog.tsx diff --git a/src/web-view/src/core/shadcn/index.tsx b/src/view/src/core/shadcn/index.tsx similarity index 100% rename from src/web-view/src/core/shadcn/index.tsx rename to src/view/src/core/shadcn/index.tsx diff --git a/src/web-view/src/core/shadcn/input.tsx b/src/view/src/core/shadcn/input.tsx similarity index 100% rename from src/web-view/src/core/shadcn/input.tsx rename to src/view/src/core/shadcn/input.tsx diff --git a/src/web-view/src/core/shadcn/label.tsx b/src/view/src/core/shadcn/label.tsx similarity index 100% rename from src/web-view/src/core/shadcn/label.tsx rename to src/view/src/core/shadcn/label.tsx diff --git a/src/web-view/src/core/shadcn/radio-group.tsx b/src/view/src/core/shadcn/radio-group.tsx similarity index 100% rename from src/web-view/src/core/shadcn/radio-group.tsx rename to src/view/src/core/shadcn/radio-group.tsx diff --git a/src/web-view/src/core/shadcn/textarea.tsx b/src/view/src/core/shadcn/textarea.tsx similarity index 100% rename from src/web-view/src/core/shadcn/textarea.tsx rename to src/view/src/core/shadcn/textarea.tsx diff --git a/src/web-view/src/core/shadcn/tooltip.tsx b/src/view/src/core/shadcn/tooltip.tsx similarity index 100% rename from src/web-view/src/core/shadcn/tooltip.tsx rename to src/view/src/core/shadcn/tooltip.tsx diff --git a/src/web-view/src/core/shadcn/utils.tsx b/src/view/src/core/shadcn/utils.tsx similarity index 100% rename from src/web-view/src/core/shadcn/utils.tsx rename to src/view/src/core/shadcn/utils.tsx diff --git a/src/web-view/src/core/textarea.tsx b/src/view/src/core/textarea.tsx similarity index 100% rename from src/web-view/src/core/textarea.tsx rename to src/view/src/core/textarea.tsx diff --git a/src/web-view/src/core/tooltip.tsx b/src/view/src/core/tooltip.tsx similarity index 100% rename from src/web-view/src/core/tooltip.tsx rename to src/view/src/core/tooltip.tsx diff --git a/src/web-view/src/core/vscode-api.tsx b/src/view/src/core/vscode-api.tsx similarity index 100% rename from src/web-view/src/core/vscode-api.tsx rename to src/view/src/core/vscode-api.tsx diff --git a/src/web-view/src/hooks/use-command-operations.tsx b/src/view/src/hooks/use-command-operations.tsx similarity index 100% rename from src/web-view/src/hooks/use-command-operations.tsx rename to src/view/src/hooks/use-command-operations.tsx diff --git a/src/web-view/src/hooks/use-dark-mode.tsx b/src/view/src/hooks/use-dark-mode.tsx similarity index 100% rename from src/web-view/src/hooks/use-dark-mode.tsx rename to src/view/src/hooks/use-dark-mode.tsx diff --git a/src/web-view/src/hooks/use-sortable-item.tsx b/src/view/src/hooks/use-sortable-item.tsx similarity index 100% rename from src/web-view/src/hooks/use-sortable-item.tsx rename to src/view/src/hooks/use-sortable-item.tsx diff --git a/src/web-view/src/hooks/use-sortable-list.tsx b/src/view/src/hooks/use-sortable-list.tsx similarity index 100% rename from src/web-view/src/hooks/use-sortable-list.tsx rename to src/view/src/hooks/use-sortable-list.tsx diff --git a/src/web-view/src/main.tsx b/src/view/src/main.tsx similarity index 100% rename from src/web-view/src/main.tsx rename to src/view/src/main.tsx diff --git a/src/web-view/src/mock/mock-data.tsx b/src/view/src/mock/mock-data.tsx similarity index 100% rename from src/web-view/src/mock/mock-data.tsx rename to src/view/src/mock/mock-data.tsx diff --git a/src/web-view/src/mock/vscode-mock.tsx b/src/view/src/mock/vscode-mock.tsx similarity index 100% rename from src/web-view/src/mock/vscode-mock.tsx rename to src/view/src/mock/vscode-mock.tsx diff --git a/src/web-view/src/style.css b/src/view/src/style.css similarity index 100% rename from src/web-view/src/style.css rename to src/view/src/style.css diff --git a/src/web-view/src/types.tsx b/src/view/src/types.tsx similarity index 100% rename from src/web-view/src/types.tsx rename to src/view/src/types.tsx diff --git a/src/web-view/src/vite-env.d.ts b/src/view/src/vite-env.d.ts similarity index 100% rename from src/web-view/src/vite-env.d.ts rename to src/view/src/vite-env.d.ts diff --git a/src/web-view/tsconfig.app.json b/src/view/tsconfig.app.json similarity index 100% rename from src/web-view/tsconfig.app.json rename to src/view/tsconfig.app.json diff --git a/src/web-view/tsconfig.json b/src/view/tsconfig.json similarity index 100% rename from src/web-view/tsconfig.json rename to src/view/tsconfig.json diff --git a/src/web-view/tsconfig.node.json b/src/view/tsconfig.node.json similarity index 100% rename from src/web-view/tsconfig.node.json rename to src/view/tsconfig.node.json diff --git a/src/web-view/vite.config.ts b/src/view/vite.config.ts similarity index 100% rename from src/web-view/vite.config.ts rename to src/view/vite.config.ts