From b677cb6d3c8025a7687a26fc680e2ea38ac51d09 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 31 Jul 2026 20:57:08 +0000 Subject: [PATCH 1/3] feat(eslint-config): shared ESLint 9 flat config package Adds @constructive-io/eslint-config, a build-free leaf package that ports the legacy .eslintrc.json rule set to flat config, and consumes it from the repo root so pnpm lint works under eslint 9. --- .eslintrc.json | 63 - eslint.config.mjs | 3 + package.json | 1 + packages/eslint-config/README.md | 71 + packages/eslint-config/index.d.ts | 18 + packages/eslint-config/index.mjs | 85 + packages/eslint-config/package.json | 55 + pnpm-lock.yaml | 7913 +++++++++------------------ 8 files changed, 2898 insertions(+), 5311 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs create mode 100644 packages/eslint-config/README.md create mode 100644 packages/eslint-config/index.d.ts create mode 100644 packages/eslint-config/index.mjs create mode 100644 packages/eslint-config/package.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 9a3628bf..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true, - "node": true, - "jest": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "prettier" - ], - "overrides": [], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "simple-import-sort", - "unused-imports" - ], - "rules": { - "indent": [ - "error", - 2 - ], - "quotes": [ - "error", - "single", - { - "avoidEscape": true, - "allowTemplateLiterals": true - } - ], - "quote-props": [ - "error", - "as-needed" - ], - "semi": [ - "error", - "always" - ], - "simple-import-sort/imports": 1, - "simple-import-sort/exports": 1, - "unused-imports/no-unused-imports": 1, - "@typescript-eslint/no-unused-vars": [ - 1, - { - "argsIgnorePattern": "React|res|next|^_" - } - ], - "@typescript-eslint/no-explicit-any": 0, - "@typescript-eslint/no-var-requires": 0, - "no-console": 0, - "@typescript-eslint/ban-ts-comment": 0, - "prefer-const": 0, - "no-case-declarations": 0, - "no-implicit-globals": 0, - "@typescript-eslint/no-unsafe-declaration-merging": 0 - } -} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..8aa25b98 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,3 @@ +import base from '@constructive-io/eslint-config'; + +export default [...base]; diff --git a/package.json b/package.json index 6e22194a..d3d20575 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "deps": "pnpm up -r -i -L" }, "devDependencies": { + "@constructive-io/eslint-config": "workspace:*", "@types/jest": "^30.0.0", "@types/node": "^22.10.2", "@typescript-eslint/eslint-plugin": "^8.53.1", diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md new file mode 100644 index 00000000..ca2bcbbf --- /dev/null +++ b/packages/eslint-config/README.md @@ -0,0 +1,71 @@ +# @constructive-io/eslint-config + +

+
+ @constructive-io/eslint-config +
+ + + + + + +

+ +Shared [ESLint 9 flat config](https://eslint.org/docs/latest/use/configure/configuration-files) for Constructive repos. It is the flat-config translation of the `.eslintrc.json` that every repo used to carry, published once so the rules can't drift per repo. + +## install + +```sh +npm install --save-dev @constructive-io/eslint-config eslint +``` + +## usage + +```js +// eslint.config.mjs +import base from '@constructive-io/eslint-config'; + +export default [...base, { ignores: ['**/generated/**'] }]; +``` + +That's it — three lines. Anything you append wins, since flat config is last-match-wins. + +## what's in it + +- `@typescript-eslint` parser + `recommended`, on top of `eslint:recommended` +- `eslint-config-prettier` applied last, so formatting rules never fight prettier +- `simple-import-sort` for imports and exports (warn) +- `unused-imports/no-unused-imports` (warn) +- `indent: 2`, single quotes (escape/template-literal friendly), `quote-props: as-needed`, `semi: always` +- `@typescript-eslint/no-unused-vars` as a warning, ignoring `React`, `res`, `next` and `_`-prefixed args +- off: `no-explicit-any`, `no-var-requires` / `no-require-imports`, `ban-ts-comment`, `no-unsafe-declaration-merging`, `no-console`, `prefer-const`, `no-case-declarations`, `no-implicit-globals` +- browser + node + es2021 + jest globals (via [`globals`](https://www.npmjs.com/package/globals)) +- default ignores: `**/node_modules/**`, `**/dist/**`, `**/esm/**`, `**/coverage/**`, `**/build/**`, `**/generated/**`, `**/*.d.ts` + +## api + +### `default` — `Linter.Config[]` + +The config array. Spread it; this is what nearly every repo wants. + +### `createConfig(options?)` + +For repos that need to change the config rather than append to it. All options are optional and replace (not merge with) the defaults, except `rules`, which is merged last. + +```js +import { createConfig } from '@constructive-io/eslint-config'; + +export default createConfig({ + ignores: ['**/node_modules/**', '**/out/**'], + rules: { 'simple-import-sort/imports': 'error' } +}); +``` + +### `defaultIgnores`, `files`, `rules` + +The individual pieces, exported so you can build your own array without re-typing them. + +## no build step + +This package ships hand-written `.mjs` and `.d.ts` — it is intentionally a leaf with no build tooling of its own, so build tools (`makage`) can depend on it without creating a publish cycle. diff --git a/packages/eslint-config/index.d.ts b/packages/eslint-config/index.d.ts new file mode 100644 index 00000000..4d4e6c8b --- /dev/null +++ b/packages/eslint-config/index.d.ts @@ -0,0 +1,18 @@ +import type { Linter } from 'eslint'; + +export declare const defaultIgnores: string[]; +export declare const files: string[]; +export declare const rules: Linter.RulesRecord; + +export interface CreateConfigOptions { + ignores?: string[]; + files?: string[]; + rules?: Linter.RulesRecord; +} + +export declare function createConfig( + options?: CreateConfigOptions +): Linter.Config[]; + +declare const config: Linter.Config[]; +export default config; diff --git a/packages/eslint-config/index.mjs b/packages/eslint-config/index.mjs new file mode 100644 index 00000000..7bddd777 --- /dev/null +++ b/packages/eslint-config/index.mjs @@ -0,0 +1,85 @@ +import js from '@eslint/js'; +import tsPlugin from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import prettier from 'eslint-config-prettier'; +import simpleImportSort from 'eslint-plugin-simple-import-sort'; +import unusedImports from 'eslint-plugin-unused-imports'; +import globals from 'globals'; + +export const defaultIgnores = [ + '**/node_modules/**', + '**/dist/**', + '**/esm/**', + '**/coverage/**', + '**/build/**', + '**/generated/**', + '**/*.d.ts' +]; + +export const files = ['**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx}']; + +export const rules = { + indent: ['error', 2], + quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true }], + 'quote-props': ['error', 'as-needed'], + semi: ['error', 'always'], + + 'simple-import-sort/imports': 'warn', + 'simple-import-sort/exports': 'warn', + 'unused-imports/no-unused-imports': 'warn', + + '@typescript-eslint/no-unused-vars': [ + 'warn', + { argsIgnorePattern: 'React|res|next|^_' } + ], + + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-unsafe-declaration-merging': 'off', + 'no-console': 'off', + 'prefer-const': 'off', + 'no-case-declarations': 'off', + 'no-implicit-globals': 'off' +}; + +/** + * Build the shared config array. + * + * @param {{ ignores?: string[], files?: string[], rules?: Record }} [options] + */ +export function createConfig(options = {}) { + return [ + { ignores: options.ignores ?? defaultIgnores }, + { + files: options.files ?? files, + languageOptions: { + parser: tsParser, + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node, + ...globals.es2021, + ...globals.jest + } + }, + plugins: { + '@typescript-eslint': tsPlugin, + 'simple-import-sort': simpleImportSort, + 'unused-imports': unusedImports + }, + rules: { + ...js.configs.recommended.rules, + ...tsPlugin.configs['eslint-recommended'].overrides[0].rules, + ...tsPlugin.configs.recommended.rules, + ...prettier.rules, + ...rules, + ...options.rules + } + } + ]; +} + +export default createConfig(); diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json new file mode 100644 index 00000000..126b7250 --- /dev/null +++ b/packages/eslint-config/package.json @@ -0,0 +1,55 @@ +{ + "name": "@constructive-io/eslint-config", + "version": "0.1.0", + "author": "Constructive ", + "description": "Shared ESLint 9 flat config for Constructive repos", + "main": "index.mjs", + "types": "index.d.ts", + "exports": { + ".": { + "types": "./index.d.ts", + "default": "./index.mjs" + }, + "./package.json": "./package.json" + }, + "files": [ + "index.mjs", + "index.d.ts", + "README.md" + ], + "homepage": "https://github.com/constructive-io/dev-utils", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/constructive-io/dev-utils" + }, + "bugs": { + "url": "https://github.com/constructive-io/dev-utils/issues" + }, + "scripts": { + "lint": "eslint . --fix" + }, + "dependencies": { + "@eslint/js": "^9.39.2", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.3.0", + "globals": "^17.7.0" + }, + "peerDependencies": { + "eslint": "^9" + }, + "keywords": [ + "eslint", + "eslintconfig", + "flat-config", + "typescript", + "prettier", + "lint" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8323f043..11cb5cbf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,22 +1,26 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: + .: devDependencies: - "@types/jest": + '@constructive-io/eslint-config': + specifier: workspace:* + version: link:packages/eslint-config + '@types/jest': specifier: ^30.0.0 version: 30.0.0 - "@types/node": + '@types/node': specifier: ^22.10.2 version: 22.19.1 - "@typescript-eslint/eslint-plugin": + '@typescript-eslint/eslint-plugin': specifier: ^8.53.1 version: 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/parser": + '@typescript-eslint/parser': specifier: ^8.53.1 version: 8.53.1(eslint@9.39.2)(typescript@5.9.3) cpy-cli: @@ -75,16 +79,16 @@ importers: packages/cel-proto-parser: dependencies: - "@babel/generator": + '@babel/generator': specifier: ^7.28.6 version: 7.28.6 - "@babel/types": + '@babel/types': specifier: ^7.28.6 version: 7.28.6 - "@launchql/protobufjs": + '@launchql/protobufjs': specifier: ^7.2.6 version: 7.2.6 - "@marcbachmann/cel-js": + '@marcbachmann/cel-js': specifier: ^7.1.0 version: 7.1.0 nested-obj: @@ -94,7 +98,7 @@ importers: specifier: workspace:* version: link:../strfy-js/dist devDependencies: - "@types/babel__generator": + '@types/babel__generator': specifier: ^7.6.8 version: 7.27.0 makage: @@ -121,7 +125,7 @@ importers: specifier: ^4.1.0 version: 4.1.1 devDependencies: - "@types/js-yaml": + '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 cross-env: @@ -147,7 +151,7 @@ importers: specifier: ^1.2.8 version: 1.2.8 devDependencies: - "@types/minimist": + '@types/minimist': specifier: ^1.2.5 version: 1.2.5 makage: @@ -166,6 +170,33 @@ importers: version: 0.1.10 publishDirectory: dist + packages/eslint-config: + dependencies: + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 + '@typescript-eslint/eslint-plugin': + specifier: ^8.53.1 + version: 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^8.53.1 + version: 8.53.1(eslint@9.39.2)(typescript@5.9.3) + eslint: + specifier: ^9 + version: 9.39.2 + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.2) + eslint-plugin-simple-import-sort: + specifier: ^12.1.1 + version: 12.1.1(eslint@9.39.2) + eslint-plugin-unused-imports: + specifier: ^4.3.0 + version: 4.3.0(@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + globals: + specifier: ^17.7.0 + version: 17.8.0 + packages/fetch: devDependencies: makage: @@ -175,14 +206,14 @@ importers: packages/fetch-api-client: dependencies: - "@constructive-io/http-errors": + '@constructive-io/http-errors': specifier: workspace:* version: link:../http-errors/dist isomorphic-fetch: specifier: ^3.0.0 version: 3.0.0(encoding@0.1.13) devDependencies: - "@types/isomorphic-fetch": + '@types/isomorphic-fetch': specifier: ^0.0.39 version: 0.0.39 makage: @@ -250,7 +281,7 @@ importers: specifier: workspace:* version: link:../yanse/dist devDependencies: - "@types/minimist": + '@types/minimist': specifier: ^1.2.5 version: 1.2.5 clean-ansi: @@ -273,10 +304,10 @@ importers: specifier: workspace:* version: link:../inquirerer/dist devDependencies: - "@types/jest": + '@types/jest': specifier: ^30.0.0 version: 30.0.0 - "@types/minimist": + '@types/minimist': specifier: ^1.2.5 version: 1.2.5 jest: @@ -299,10 +330,10 @@ importers: specifier: ^7.7.4 version: 7.7.4 devDependencies: - "@types/minimist": + '@types/minimist': specifier: ^1.2.5 version: 1.2.5 - "@types/semver": + '@types/semver': specifier: ^7.7.1 version: 7.7.1 makage: @@ -358,7 +389,7 @@ importers: packages/node-api-client: dependencies: - "@constructive-io/http-errors": + '@constructive-io/http-errors': specifier: workspace:* version: link:../http-errors/dist devDependencies: @@ -383,19 +414,19 @@ importers: packages/schema-sdk: dependencies: - "@babel/generator": + '@babel/generator': specifier: 7.28.6 version: 7.28.6 - "@babel/parser": + '@babel/parser': specifier: ^7.28.6 version: 7.28.6 - "@babel/traverse": + '@babel/traverse': specifier: 7.28.6 version: 7.28.6 - "@babel/types": + '@babel/types': specifier: 7.28.6 version: 7.28.6 - "@constructive-io/fetch-api-client": + '@constructive-io/fetch-api-client': specifier: workspace:* version: link:../fetch-api-client/dist deepmerge: @@ -411,7 +442,7 @@ importers: specifier: workspace:* version: link:../schema-typescript/dist devDependencies: - "@types/babel__generator": + '@types/babel__generator': specifier: ^7.27.0 version: 7.27.0 jest-diff: @@ -431,10 +462,10 @@ importers: packages/schema-typescript: dependencies: - "@babel/generator": + '@babel/generator': specifier: ^7.28.6 version: 7.28.6 - "@babel/types": + '@babel/types': specifier: ^7.28.6 version: 7.28.6 deepmerge: @@ -447,7 +478,7 @@ importers: specifier: ^10.1.1 version: 10.1.1 devDependencies: - "@types/babel__generator": + '@types/babel__generator': specifier: ^7.27.0 version: 7.27.0 makage: @@ -499,7 +530,7 @@ importers: specifier: workspace:* version: link:../nested-obj/dist devDependencies: - "@types/js-yaml": + '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 makage: @@ -522,10 +553,10 @@ importers: specifier: workspace:* version: link:../yamlize/dist devDependencies: - "@types/js-yaml": + '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 - "@types/minimist": + '@types/minimist': specifier: ^1.2.5 version: 1.2.5 makage: @@ -541,2357 +572,1374 @@ importers: publishDirectory: dist packages: - "@babel/code-frame@7.27.1": - resolution: - { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, - } - engines: { node: ">=6.9.0" } - - "@babel/code-frame@7.28.6": - resolution: - { - integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/compat-data@7.28.5": - resolution: - { - integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==, - } - engines: { node: ">=6.9.0" } - - "@babel/core@7.28.5": - resolution: - { - integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==, - } - engines: { node: ">=6.9.0" } - - "@babel/generator@7.28.6": - resolution: - { - integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.27.2": - resolution: - { - integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-globals@7.28.0": - resolution: - { - integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.27.1": - resolution: - { - integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.28.3": - resolution: - { - integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, - } - engines: { node: ">=6.9.0" } + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-plugin-utils@7.27.1": - resolution: - { - integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.27.1": - resolution: - { - integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.28.5": - resolution: - { - integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-option@7.27.1": - resolution: - { - integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.28.4": - resolution: - { - integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.28.6": - resolution: - { - integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==, - } - engines: { node: ">=6.0.0" } + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/plugin-syntax-async-generators@7.8.4": - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-bigint@7.8.3": - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-class-properties@7.12.13": - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-class-static-block@7.14.5": - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-attributes@7.27.1": - resolution: - { - integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-import-meta@7.10.4": - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-json-strings@7.8.3": - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-jsx@7.27.1": - resolution: - { - integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4": - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-numeric-separator@7.10.4": - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-object-rest-spread@7.8.3": - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-optional-catch-binding@7.8.3": - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-optional-chaining@7.8.3": - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-private-property-in-object@7.14.5": - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-top-level-await@7.14.5": - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-typescript@7.27.1": - resolution: - { - integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/template@7.27.2": - resolution: - { - integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, - } - engines: { node: ">=6.9.0" } - - "@babel/template@7.28.6": - resolution: - { - integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/traverse@7.28.6": - resolution: - { - integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.28.6": - resolution: - { - integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==, - } - engines: { node: ">=6.9.0" } - - "@bcoe/v8-coverage@0.2.3": - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - - "@cspotcode/source-map-support@0.8.1": - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - - "@emnapi/core@1.7.1": - resolution: - { - integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==, - } - - "@emnapi/runtime@1.7.1": - resolution: - { - integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==, - } - - "@emnapi/wasi-threads@1.1.0": - resolution: - { - integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==, - } - - "@epic-web/invariant@1.0.0": - resolution: - { - integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==, - } - - "@eslint-community/eslint-utils@4.9.1": - resolution: - { - integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + 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.17.0": - resolution: - { - integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/eslintrc@3.3.3": - resolution: - { - integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/js@9.39.2": - resolution: - { - integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==, - } - 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" } - - "@hutson/parse-repository-url@3.0.2": - resolution: - { - integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==, - } - engines: { node: ">=6.9.0" } - - "@inquirer/external-editor@1.0.3": - resolution: - { - integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, - } - engines: { node: ">=18" } + '@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.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + 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'} + + '@hutson/parse-repository-url@3.0.2': + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} peerDependencies: - "@types/node": ">=18" + '@types/node': '>=18' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true - "@isaacs/balanced-match@4.0.1": - resolution: - { - integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==, - } - engines: { node: 20 || >=22 } - - "@isaacs/brace-expansion@5.0.0": - resolution: - { - integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==, - } - engines: { node: 20 || >=22 } - - "@isaacs/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - - "@isaacs/string-locale-compare@1.1.0": - resolution: - { - integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==, - } - - "@istanbuljs/load-nyc-config@1.1.0": - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - - "@istanbuljs/schema@0.1.3": - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - - "@jest/console@30.2.0": - resolution: - { - integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/core@30.2.0": - resolution: - { - integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/string-locale-compare@1.1.0': + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@30.2.0': + resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/core@30.2.0': + resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - "@jest/diff-sequences@30.0.1": - resolution: - { - integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/environment@30.2.0": - resolution: - { - integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/expect-utils@30.2.0": - resolution: - { - integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/expect@30.2.0": - resolution: - { - integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/fake-timers@30.2.0": - resolution: - { - integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/get-type@30.1.0": - resolution: - { - integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/globals@30.2.0": - resolution: - { - integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/pattern@30.0.1": - resolution: - { - integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/reporters@30.2.0": - resolution: - { - integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/environment@30.2.0': + resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect-utils@30.2.0': + resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect@30.2.0': + resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/fake-timers@30.2.0': + resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/globals@30.2.0': + resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@30.2.0': + resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - "@jest/schemas@29.6.3": - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/schemas@30.0.5": - resolution: - { - integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/snapshot-utils@30.2.0": - resolution: - { - integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/source-map@30.0.1": - resolution: - { - integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/test-result@30.2.0": - resolution: - { - integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/test-sequencer@30.2.0": - resolution: - { - integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/transform@30.2.0": - resolution: - { - integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/types@30.2.0": - resolution: - { - integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jridgewell/gen-mapping@0.3.13": - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } - - "@jridgewell/remapping@2.3.5": - resolution: - { - integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, - } - - "@jridgewell/resolve-uri@3.1.2": - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } - - "@jridgewell/trace-mapping@0.3.31": - resolution: - { - integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, - } - - "@jridgewell/trace-mapping@0.3.9": - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - - "@launchql/protobufjs@7.2.6": - resolution: - { - integrity: sha512-vwi1nG2/heVFsIMHQU1KxTjUp5c757CTtRAZn/jutApCkFlle1iv8tzM/DHlSZJKDldxaYqnNYTg0pTyp8Bbtg==, - } - engines: { node: ">=12.0.0" } - - "@lerna/create@8.2.4": - resolution: - { - integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==, - } - engines: { node: ">=18.0.0" } + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/snapshot-utils@30.2.0': + resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/source-map@30.0.1': + resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-result@30.2.0': + resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.2.0': + resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/transform@30.2.0': + resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/types@30.2.0': + resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@launchql/protobufjs@7.2.6': + resolution: {integrity: sha512-vwi1nG2/heVFsIMHQU1KxTjUp5c757CTtRAZn/jutApCkFlle1iv8tzM/DHlSZJKDldxaYqnNYTg0pTyp8Bbtg==} + engines: {node: '>=12.0.0'} + + '@lerna/create@8.2.4': + resolution: {integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==} + engines: {node: '>=18.0.0'} deprecated: This package is an implementation detail of Lerna and is no longer published separately. - "@marcbachmann/cel-js@7.1.0": - resolution: - { - integrity: sha512-pWAOYqaH41M47OBzt9OPcam7qello+vAdrjt+c2UFEbjVUjQq9rTfCRnEtzIAEScwarkPX90M5qMv0MK2ao5ZQ==, - } - engines: { node: ">=20.19.0" } + '@marcbachmann/cel-js@7.1.0': + resolution: {integrity: sha512-pWAOYqaH41M47OBzt9OPcam7qello+vAdrjt+c2UFEbjVUjQq9rTfCRnEtzIAEScwarkPX90M5qMv0MK2ao5ZQ==} + engines: {node: '>=20.19.0'} hasBin: true - "@napi-rs/wasm-runtime@0.2.12": - resolution: - { - integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, - } - - "@napi-rs/wasm-runtime@0.2.4": - resolution: - { - integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, - } - - "@nodelib/fs.scandir@2.1.5": - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - - "@npmcli/agent@2.2.2": - resolution: - { - integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/arborist@7.5.4": - resolution: - { - integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/agent@2.2.2': + resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/arborist@7.5.4': + resolution: {integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true - "@npmcli/fs@3.1.1": - resolution: - { - integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - "@npmcli/git@5.0.8": - resolution: - { - integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/installed-package-contents@2.1.0": - resolution: - { - integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/git@5.0.8': + resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/installed-package-contents@2.1.0': + resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - "@npmcli/map-workspaces@3.0.6": - resolution: - { - integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - "@npmcli/metavuln-calculator@7.1.1": - resolution: - { - integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/name-from-folder@2.0.0": - resolution: - { - integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - "@npmcli/node-gyp@3.0.0": - resolution: - { - integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - "@npmcli/package-json@5.2.0": - resolution: - { - integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/promise-spawn@7.0.2": - resolution: - { - integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/query@3.1.0": - resolution: - { - integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - "@npmcli/redact@2.0.1": - resolution: - { - integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@npmcli/run-script@8.1.0": - resolution: - { - integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@nx/devkit@20.8.3": - resolution: - { - integrity: sha512-5lbfJ6ICFOiGeirldQOU5fQ/W/VQ8L3dfWnmHG4UgpWSLoK/YFdRf4lTB4rS0aDXsBL0gyWABz3sZGLPGNYnPA==, - } + '@npmcli/map-workspaces@3.0.6': + resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/metavuln-calculator@7.1.1': + resolution: {integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/name-from-folder@2.0.0': + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/node-gyp@3.0.0': + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@5.2.0': + resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/promise-spawn@7.0.2': + resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/query@3.1.0': + resolution: {integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/redact@2.0.1': + resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/run-script@8.1.0': + resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@nx/devkit@20.8.3': + resolution: {integrity: sha512-5lbfJ6ICFOiGeirldQOU5fQ/W/VQ8L3dfWnmHG4UgpWSLoK/YFdRf4lTB4rS0aDXsBL0gyWABz3sZGLPGNYnPA==} peerDependencies: - nx: ">= 19 <= 21" - - "@nx/nx-darwin-arm64@20.8.3": - resolution: - { - integrity: sha512-BeYnPAcnaerg6q+qR0bAb0nebwwrsvm4STSVqqVlaqLmmQpU3Bfpx44CEa5d6T9b0V11ZqVE/bkmRhMqhUcrhw==, - } - engines: { node: ">= 10" } + nx: '>= 19 <= 21' + + '@nx/nx-darwin-arm64@20.8.3': + resolution: {integrity: sha512-BeYnPAcnaerg6q+qR0bAb0nebwwrsvm4STSVqqVlaqLmmQpU3Bfpx44CEa5d6T9b0V11ZqVE/bkmRhMqhUcrhw==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - "@nx/nx-darwin-x64@20.8.3": - resolution: - { - integrity: sha512-RIFg1VkQ4jhI+ErqEZuIeGBcJGD8t+u9J5CdQBDIASd8QRhtudBkiYLYCJb+qaQly09G7nVfxuyItlS2uRW3qA==, - } - engines: { node: ">= 10" } + '@nx/nx-darwin-x64@20.8.3': + resolution: {integrity: sha512-RIFg1VkQ4jhI+ErqEZuIeGBcJGD8t+u9J5CdQBDIASd8QRhtudBkiYLYCJb+qaQly09G7nVfxuyItlS2uRW3qA==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] - "@nx/nx-freebsd-x64@20.8.3": - resolution: - { - integrity: sha512-boQTgMUdnqpZhHMrV/xgnp/dTg5dfxw8I4d16NBwmW4j+Sez7zi/dydgsJpfZsj8TicOHvPu6KK4W5wzp82NPw==, - } - engines: { node: ">= 10" } + '@nx/nx-freebsd-x64@20.8.3': + resolution: {integrity: sha512-boQTgMUdnqpZhHMrV/xgnp/dTg5dfxw8I4d16NBwmW4j+Sez7zi/dydgsJpfZsj8TicOHvPu6KK4W5wzp82NPw==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - "@nx/nx-linux-arm-gnueabihf@20.8.3": - resolution: - { - integrity: sha512-wpiNyY1igx1rLN3EsTLum2lDtblFijdBZB9/9u/6UDub4z9CaQ4yaC4h9n5v7yFYILwfL44YTsQKzrE+iv0y1Q==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-arm-gnueabihf@20.8.3': + resolution: {integrity: sha512-wpiNyY1igx1rLN3EsTLum2lDtblFijdBZB9/9u/6UDub4z9CaQ4yaC4h9n5v7yFYILwfL44YTsQKzrE+iv0y1Q==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] - "@nx/nx-linux-arm64-gnu@20.8.3": - resolution: - { - integrity: sha512-nbi/eZtJfWxuDwdUCiP+VJolFubtrz6XxVtB26eMAkODnREOKELHZtMOrlm8JBZCdtWCvTqibq9Az74XsqSfdA==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-arm64-gnu@20.8.3': + resolution: {integrity: sha512-nbi/eZtJfWxuDwdUCiP+VJolFubtrz6XxVtB26eMAkODnREOKELHZtMOrlm8JBZCdtWCvTqibq9Az74XsqSfdA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - "@nx/nx-linux-arm64-musl@20.8.3": - resolution: - { - integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-arm64-musl@20.8.3': + resolution: {integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - "@nx/nx-linux-x64-gnu@20.8.3": - resolution: - { - integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-x64-gnu@20.8.3': + resolution: {integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - "@nx/nx-linux-x64-musl@20.8.3": - resolution: - { - integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-x64-musl@20.8.3': + resolution: {integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - "@nx/nx-win32-arm64-msvc@20.8.3": - resolution: - { - integrity: sha512-qUV7CyXKwRCM/lkvyS6Xa1MqgAuK5da6w27RAehh7LATBUKn1I4/M7DGn6L7ERCxpZuh1TrDz9pUzEy0R+Ekkg==, - } - engines: { node: ">= 10" } + '@nx/nx-win32-arm64-msvc@20.8.3': + resolution: {integrity: sha512-qUV7CyXKwRCM/lkvyS6Xa1MqgAuK5da6w27RAehh7LATBUKn1I4/M7DGn6L7ERCxpZuh1TrDz9pUzEy0R+Ekkg==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - "@nx/nx-win32-x64-msvc@20.8.3": - resolution: - { - integrity: sha512-gX1G8u6W6EPX6PO/wv07+B++UHyCHBXyVWXITA3Kv6HoSajOxIa2Kk1rv1iDQGmX1WWxBaj3bUyYJAFBDITe4w==, - } - engines: { node: ">= 10" } + '@nx/nx-win32-x64-msvc@20.8.3': + resolution: {integrity: sha512-gX1G8u6W6EPX6PO/wv07+B++UHyCHBXyVWXITA3Kv6HoSajOxIa2Kk1rv1iDQGmX1WWxBaj3bUyYJAFBDITe4w==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - "@octokit/auth-token@4.0.0": - resolution: - { - integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==, - } - engines: { node: ">= 18" } - - "@octokit/core@5.2.2": - resolution: - { - integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==, - } - engines: { node: ">= 18" } - - "@octokit/endpoint@9.0.6": - resolution: - { - integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==, - } - engines: { node: ">= 18" } - - "@octokit/graphql@7.1.1": - resolution: - { - integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==, - } - engines: { node: ">= 18" } - - "@octokit/openapi-types@24.2.0": - resolution: - { - integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==, - } - - "@octokit/plugin-enterprise-rest@6.0.1": - resolution: - { - integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==, - } - - "@octokit/plugin-paginate-rest@11.4.4-cjs.2": - resolution: - { - integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==, - } - engines: { node: ">= 18" } + '@octokit/auth-token@4.0.0': + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + + '@octokit/core@5.2.2': + resolution: {integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@9.0.6': + resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} + engines: {node: '>= 18'} + + '@octokit/graphql@7.1.1': + resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} + + '@octokit/plugin-enterprise-rest@6.0.1': + resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} + + '@octokit/plugin-paginate-rest@11.4.4-cjs.2': + resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} + engines: {node: '>= 18'} peerDependencies: - "@octokit/core": "5" - - "@octokit/plugin-request-log@4.0.1": - resolution: - { - integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==, - } - engines: { node: ">= 18" } + '@octokit/core': '5' + + '@octokit/plugin-request-log@4.0.1': + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} peerDependencies: - "@octokit/core": "5" - - "@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1": - resolution: - { - integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==, - } - engines: { node: ">= 18" } + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': + resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==} + engines: {node: '>= 18'} peerDependencies: - "@octokit/core": ^5 - - "@octokit/request-error@5.1.1": - resolution: - { - integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==, - } - engines: { node: ">= 18" } - - "@octokit/request@8.4.1": - resolution: - { - integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==, - } - engines: { node: ">= 18" } - - "@octokit/rest@20.1.2": - resolution: - { - integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==, - } - engines: { node: ">= 18" } - - "@octokit/types@13.10.0": - resolution: - { - integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==, - } - - "@pkgjs/parseargs@0.11.0": - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - - "@pkgr/core@0.2.9": - resolution: - { - integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - - "@protobufjs/aspromise@1.1.2": - resolution: - { - integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==, - } - - "@protobufjs/base64@1.1.2": - resolution: - { - integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==, - } - - "@protobufjs/codegen@2.0.4": - resolution: - { - integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==, - } - - "@protobufjs/eventemitter@1.1.0": - resolution: - { - integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==, - } - - "@protobufjs/fetch@1.1.0": - resolution: - { - integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==, - } - - "@protobufjs/float@1.0.2": - resolution: - { - integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==, - } - - "@protobufjs/inquire@1.1.0": - resolution: - { - integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==, - } - - "@protobufjs/path@1.1.2": - resolution: - { - integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==, - } - - "@protobufjs/pool@1.1.0": - resolution: - { - integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==, - } - - "@protobufjs/utf8@1.1.0": - resolution: - { - integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==, - } - - "@sigstore/bundle@2.3.2": - resolution: - { - integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@sigstore/core@1.1.0": - resolution: - { - integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@sigstore/protobuf-specs@0.3.3": - resolution: - { - integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==, - } - engines: { node: ^18.17.0 || >=20.5.0 } - - "@sigstore/sign@2.3.2": - resolution: - { - integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@sigstore/tuf@2.3.4": - resolution: - { - integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@sigstore/verify@1.2.1": - resolution: - { - integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@sinclair/typebox@0.27.8": - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - - "@sinclair/typebox@0.34.41": - resolution: - { - integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==, - } - - "@sindresorhus/merge-streams@4.0.0": - resolution: - { - integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==, - } - engines: { node: ">=18" } - - "@sinonjs/commons@3.0.1": - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } - - "@sinonjs/fake-timers@13.0.5": - resolution: - { - integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==, - } - - "@tsconfig/node10@1.0.12": - resolution: - { - integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==, - } - - "@tsconfig/node12@1.0.11": - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - "@tsconfig/node14@1.0.3": - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - "@tsconfig/node16@1.0.4": - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, - } - - "@tufjs/canonical-json@2.0.0": - resolution: - { - integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@tufjs/models@2.0.1": - resolution: - { - integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - "@tybys/wasm-util@0.10.1": - resolution: - { - integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==, - } - - "@tybys/wasm-util@0.9.0": - resolution: - { - integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, - } - - "@types/babel__core@7.20.5": - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - "@types/babel__generator@7.27.0": - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } - - "@types/babel__template@7.4.4": - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - "@types/babel__traverse@7.28.0": - resolution: - { - integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, - } - - "@types/estree@1.0.8": - resolution: - { - integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, - } - - "@types/isomorphic-fetch@0.0.39": - resolution: - { - integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==, - } - - "@types/istanbul-lib-coverage@2.0.6": - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } - - "@types/istanbul-lib-report@3.0.3": - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } - - "@types/istanbul-reports@3.0.4": - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } - - "@types/jest@30.0.0": - resolution: - { - integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==, - } - - "@types/js-yaml@4.0.9": - resolution: - { - integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==, - } - - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - "@types/minimatch@3.0.5": - resolution: - { - integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, - } - - "@types/minimist@1.2.5": - resolution: - { - integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==, - } - - "@types/node@22.19.1": - resolution: - { - integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==, - } - - "@types/normalize-package-data@2.4.4": - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - - "@types/semver@7.7.1": - resolution: - { - integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==, - } - - "@types/stack-utils@2.0.3": - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - - "@types/yargs-parser@21.0.3": - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - - "@types/yargs@17.0.35": - resolution: - { - integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, - } - - "@typescript-eslint/eslint-plugin@8.53.1": - resolution: - { - integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@octokit/core': ^5 + + '@octokit/request-error@5.1.1': + resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} + engines: {node: '>= 18'} + + '@octokit/request@8.4.1': + resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} + engines: {node: '>= 18'} + + '@octokit/rest@20.1.2': + resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} + engines: {node: '>= 18'} + + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@sigstore/bundle@2.3.2': + resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/core@1.1.0': + resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/protobuf-specs@0.3.3': + resolution: {integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@sigstore/sign@2.3.2': + resolution: {integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/tuf@2.3.4': + resolution: {integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/verify@1.2.1': + resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@13.0.5': + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@tufjs/models@2.0.1': + resolution: {integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/isomorphic-fetch@0.0.39': + resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/node@22.19.1': + resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@typescript-eslint/eslint-plugin@8.53.1': + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - "@typescript-eslint/parser": ^8.53.1 + '@typescript-eslint/parser': ^8.53.1 eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/parser@8.53.1": - resolution: - { - integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.53.1': + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} + 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.53.1": - resolution: - { - integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.53.1': + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/scope-manager@8.53.1": - resolution: - { - integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/tsconfig-utils@8.53.1": - resolution: - { - integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.53.1': + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.53.1': + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/type-utils@8.53.1": - resolution: - { - integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.53.1': + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} + 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.53.1": - resolution: - { - integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/typescript-estree@8.53.1": - resolution: - { - integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.53.1': + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.53.1': + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/utils@8.53.1": - resolution: - { - integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.53.1': + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} + 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.53.1": - resolution: - { - integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@ungap/structured-clone@1.3.0": - resolution: - { - integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, - } - - "@unrs/resolver-binding-android-arm-eabi@1.11.1": - resolution: - { - integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, - } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.53.1': + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] os: [android] - "@unrs/resolver-binding-android-arm64@1.11.1": - resolution: - { - integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==, - } + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} cpu: [arm64] os: [android] - "@unrs/resolver-binding-darwin-arm64@1.11.1": - resolution: - { - integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==, - } + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} cpu: [arm64] os: [darwin] - "@unrs/resolver-binding-darwin-x64@1.11.1": - resolution: - { - integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, - } + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} cpu: [x64] os: [darwin] - "@unrs/resolver-binding-freebsd-x64@1.11.1": - resolution: - { - integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==, - } + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} cpu: [x64] os: [freebsd] - "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": - resolution: - { - integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==, - } + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} cpu: [arm] os: [linux] - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": - resolution: - { - integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, - } + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} cpu: [arm] os: [linux] - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": - resolution: - { - integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, - } + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] libc: [glibc] - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": - resolution: - { - integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, - } + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] libc: [musl] - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": - resolution: - { - integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, - } + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] libc: [glibc] - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": - resolution: - { - integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, - } + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] libc: [glibc] - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": - resolution: - { - integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, - } + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] libc: [musl] - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": - resolution: - { - integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, - } + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] libc: [glibc] - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": - resolution: - { - integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, - } + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] libc: [glibc] - "@unrs/resolver-binding-linux-x64-musl@1.11.1": - resolution: - { - integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, - } + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] libc: [musl] - "@unrs/resolver-binding-wasm32-wasi@1.11.1": - resolution: - { - integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, - } - engines: { node: ">=14.0.0" } + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} cpu: [wasm32] - "@unrs/resolver-binding-win32-arm64-msvc@1.11.1": - resolution: - { - integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==, - } + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} cpu: [arm64] os: [win32] - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": - resolution: - { - integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, - } + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} cpu: [ia32] os: [win32] - "@unrs/resolver-binding-win32-x64-msvc@1.11.1": - resolution: - { - integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==, - } + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} cpu: [x64] os: [win32] - "@yarnpkg/lockfile@1.1.0": - resolution: - { - integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, - } - - "@yarnpkg/parsers@3.0.2": - resolution: - { - integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==, - } - engines: { node: ">=18.12.0" } - - "@zkochan/js-yaml@0.0.7": - resolution: - { - integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, - } + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + + '@yarnpkg/parsers@3.0.2': + resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} + engines: {node: '>=18.12.0'} + + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true abbrev@2.0.0: - resolution: - { - integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn-walk@8.3.4: - resolution: - { - integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} acorn@8.15.0: - resolution: - { - integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} hasBin: true add-stream@1.0.0: - resolution: - { - integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==, - } + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} agent-base@7.1.4: - resolution: - { - integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} aggregate-error@3.1.0: - resolution: - { - integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-regex@6.2.2: - resolution: - { - integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} ansi-styles@6.2.3: - resolution: - { - integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} aproba@2.0.0: - resolution: - { - integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==, - } + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} array-differ@3.0.0: - resolution: - { - integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} array-ify@1.0.0: - resolution: - { - integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, - } + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} arrify@2.0.1: - resolution: - { - integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} async@3.2.6: - resolution: - { - integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==, - } + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} axios@1.13.2: - resolution: - { - integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==, - } + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} babel-jest@30.2.0: - resolution: - { - integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-0 + '@babel/core': ^7.11.0 || ^8.0.0-0 babel-plugin-istanbul@7.0.1: - resolution: - { - integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} + engines: {node: '>=12'} babel-plugin-jest-hoist@30.2.0: - resolution: - { - integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} babel-preset-current-node-syntax@1.2.0: - resolution: - { - integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==, - } + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: - "@babel/core": ^7.0.0 || ^8.0.0-0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@30.2.0: - resolution: - { - integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-beta.1 + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.8.30: - resolution: - { - integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==, - } + resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==} hasBin: true before-after-hook@2.2.3: - resolution: - { - integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==, - } + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} bin-links@4.0.4: - resolution: - { - integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} brace-expansion@1.1.12: - resolution: - { - integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, - } + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.2: - resolution: - { - integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, - } + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.28.0: - resolution: - { - integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} byte-size@8.1.1: - resolution: - { - integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==, - } - engines: { node: ">=12.17" } + resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} + engines: {node: '>=12.17'} cacache@18.0.4: - resolution: - { - integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} + engines: {node: ^16.14.0 || >=18.0.0} call-bind-apply-helpers@1.0.2: - resolution: - { - integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} camelcase-keys@6.2.2: - resolution: - { - integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} caniuse-lite@1.0.30001756: - resolution: - { - integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==, - } + resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} chalk@4.1.0: - resolution: - { - integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} + engines: {node: '>=10'} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} chardet@2.1.1: - resolution: - { - integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==, - } + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} chownr@2.0.0: - resolution: - { - integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} ci-info@4.3.1: - resolution: - { - integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} cjs-module-lexer@2.1.1: - resolution: - { - integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==, - } + resolution: {integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==} clean-stack@2.2.0: - resolution: - { - integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} cli-cursor@3.1.0: - resolution: - { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} cli-spinners@2.6.1: - resolution: - { - integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} cli-width@3.0.0: - resolution: - { - integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} cliui@7.0.4: - resolution: - { - integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, - } + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: ">=0.8" } + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} cmd-shim@6.0.3: - resolution: - { - integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} collect-v8-coverage@1.0.3: - resolution: - { - integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==, - } + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } + 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==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color-support@1.1.3: - resolution: - { - integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, - } + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true columnify@1.6.0: - resolution: - { - integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} common-ancestor-path@1.0.1: - resolution: - { - integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, - } + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} compare-func@2.0.0: - resolution: - { - integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, - } + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} concat-stream@2.0.0: - resolution: - { - integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==, - } - engines: { "0": node >= 6.0 } + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} console-control-strings@1.1.0: - resolution: - { - integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, - } + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} conventional-changelog-angular@7.0.0: - resolution: - { - integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} conventional-changelog-core@5.0.1: - resolution: - { - integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} + engines: {node: '>=14'} conventional-changelog-preset-loader@3.0.0: - resolution: - { - integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} + engines: {node: '>=14'} conventional-changelog-writer@6.0.1: - resolution: - { - integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} + engines: {node: '>=14'} hasBin: true conventional-commits-filter@3.0.0: - resolution: - { - integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} + engines: {node: '>=14'} conventional-commits-parser@4.0.0: - resolution: - { - integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} hasBin: true conventional-recommended-bump@7.0.1: - resolution: - { - integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} + engines: {node: '>=14'} hasBin: true convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} copy-file@11.1.0: - resolution: - { - integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} + engines: {node: '>=18'} copyfiles@2.4.1: - resolution: - { - integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==, - } + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true core-util-is@1.0.3: - resolution: - { - integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, - } + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} cosmiconfig@9.0.0: - resolution: - { - integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} peerDependencies: - typescript: ">=4.9.5" + typescript: '>=4.9.5' peerDependenciesMeta: typescript: optional: true cpy-cli@6.0.0: - resolution: - { - integrity: sha512-q7GUqTDnRymCbScJ4Ph1IUM86wWdKG8JbgrvKLgvvehH4wrbRcVN+jRwOTlxJdwm7ykdXMKSp6IESksFeHa0eA==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-q7GUqTDnRymCbScJ4Ph1IUM86wWdKG8JbgrvKLgvvehH4wrbRcVN+jRwOTlxJdwm7ykdXMKSp6IESksFeHa0eA==} + engines: {node: '>=20'} hasBin: true cpy@12.1.0: - resolution: - { - integrity: sha512-3z9tP1rPBLG7pQYn9iRgl7JOSew0SMPuWmakaRfzhXpmFBHmRbp7JekpuqPkXbbWOdSeKSbInYEcdIZjov2fNQ==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-3z9tP1rPBLG7pQYn9iRgl7JOSew0SMPuWmakaRfzhXpmFBHmRbp7JekpuqPkXbbWOdSeKSbInYEcdIZjov2fNQ==} + engines: {node: '>=20'} create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} cross-env@10.1.0: - resolution: - { - integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} hasBin: true cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true dargs@7.0.0: - resolution: - { - integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} dateformat@3.0.3: - resolution: - { - integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==, - } + resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} debug@4.4.3: - resolution: - { - integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true decamelize-keys@1.1.1: - resolution: - { - integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} dedent@1.5.3: - resolution: - { - integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==, - } + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -2899,10 +1947,7 @@ packages: optional: true dedent@1.7.0: - resolution: - { - integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==, - } + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -2910,459 +1955,267 @@ packages: optional: true deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: - { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, - } + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} define-lazy-prop@2.0.0: - resolution: - { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} deprecation@2.3.1: - resolution: - { - integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==, - } + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} detect-indent@5.0.0: - resolution: - { - integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} + engines: {node: '>=4'} detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} dot-prop@5.3.0: - resolution: - { - integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} dotenv-expand@11.0.7: - resolution: - { - integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} dotenv@16.4.7: - resolution: - { - integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} dunder-proto@1.0.1: - resolution: - { - integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ejs@3.1.10: - resolution: - { - integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} hasBin: true electron-to-chromium@1.5.259: - resolution: - { - integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==, - } + resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==} emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} encoding@0.1.13: - resolution: - { - integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, - } + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} end-of-stream@1.4.5: - resolution: - { - integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, - } + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enquirer@2.3.6: - resolution: - { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} env-paths@2.2.1: - resolution: - { - integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} envinfo@7.13.0: - resolution: - { - integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} hasBin: true err-code@2.0.3: - resolution: - { - integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==, - } + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} error-ex@1.3.4: - resolution: - { - integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, - } + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-define-property@1.0.1: - resolution: - { - integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: ">= 0.4" } + 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" } + 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" } + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} eslint-config-prettier@10.1.8: - resolution: - { - integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, - } + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: - eslint: ">=7.0.0" + eslint: '>=7.0.0' eslint-plugin-prettier@5.5.5: - resolution: - { - integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' peerDependenciesMeta: - "@types/eslint": + '@types/eslint': optional: true eslint-config-prettier: optional: true eslint-plugin-simple-import-sort@12.1.1: - resolution: - { - integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==, - } + resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} peerDependencies: - eslint: ">=5.0.0" + eslint: '>=5.0.0' eslint-plugin-unused-imports@4.3.0: - resolution: - { - integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==, - } + resolution: {integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==} peerDependencies: - "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": + '@typescript-eslint/eslint-plugin': optional: true eslint-scope@8.4.0: - resolution: - { - integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.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 } + 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 } + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@9.39.2: - resolution: - { - integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: - jiti: "*" + 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 } + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true esquery@1.7.0: - resolution: - { - integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.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" } + 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" } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} eventemitter3@4.0.7: - resolution: - { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, - } + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} execa@5.0.0: - resolution: - { - integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} + engines: {node: '>=10'} execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} exit-x@0.2.2: - resolution: - { - integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} + engines: {node: '>= 0.8.0'} expect@30.2.0: - resolution: - { - integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} exponential-backoff@3.1.3: - resolution: - { - integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, - } + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: - resolution: - { - integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, - } + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} fast-glob@3.3.3: - resolution: - { - integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, - } - engines: { node: ">=8.6.0" } + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} fast-json-patch@3.1.1: - resolution: - { - integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==, - } + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fastq@1.19.1: - resolution: - { - integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, - } + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fdir@6.5.0: - resolution: - { - integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -3370,825 +2223,475 @@ packages: optional: true figures@3.2.0: - resolution: - { - integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} file-entry-cache@8.0.0: - resolution: - { - integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} filelist@1.0.4: - resolution: - { - integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==, - } + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} find-up@2.1.0: - resolution: - { - integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat-cache@4.0.1: - resolution: - { - integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flat@5.0.2: - resolution: - { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, - } + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true flatted@3.3.3: - resolution: - { - integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, - } + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} follow-redirects@1.15.11: - resolution: - { - integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} peerDependencies: - debug: "*" + debug: '*' peerDependenciesMeta: debug: optional: true foreground-child@3.3.1: - resolution: - { - integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} form-data@4.0.5: - resolution: - { - integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} front-matter@4.0.2: - resolution: - { - integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==, - } + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} fs-constants@1.0.0: - resolution: - { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, - } + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fs-extra@11.3.2: - resolution: - { - integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==, - } - engines: { node: ">=14.14" } + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} fs-minipass@2.1.0: - resolution: - { - integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} fs-minipass@3.0.3: - resolution: - { - integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} get-intrinsic@1.3.0: - resolution: - { - integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} get-pkg-repo@4.2.1: - resolution: - { - integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} + engines: {node: '>=6.9.0'} hasBin: true get-port@5.1.1: - resolution: - { - integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} get-proto@1.0.1: - resolution: - { - integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} get-stream@6.0.0: - resolution: - { - integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} + engines: {node: '>=10'} get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} git-raw-commits@3.0.0: - resolution: - { - integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} + engines: {node: '>=14'} deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. hasBin: true git-remote-origin-url@2.0.0: - resolution: - { - integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} + engines: {node: '>=4'} git-semver-tags@5.0.1: - resolution: - { - integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} + engines: {node: '>=14'} deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. hasBin: true git-up@7.0.0: - resolution: - { - integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==, - } + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} git-url-parse@14.0.0: - resolution: - { - integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==, - } + resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} gitconfiglocal@1.0.0: - resolution: - { - integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==, - } + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } + 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" } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} glob@10.5.0: - resolution: - { - integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==, - } + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.1.0: - resolution: - { - integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@13.0.0: - resolution: - { - integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} + engines: {node: 20 || >=22} glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@9.3.5: - resolution: - { - integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@14.0.0: - resolution: - { - integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@17.8.0: + resolution: {integrity: sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==} + engines: {node: '>=18'} globby@15.0.0: - resolution: - { - integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==} + engines: {node: '>=20'} gopd@1.2.0: - resolution: - { - integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} handlebars@4.7.8: - resolution: - { - integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, - } - engines: { node: ">=0.4.7" } + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} hasBin: true hard-rejection@2.1.0: - resolution: - { - integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} has-symbols@1.1.0: - resolution: - { - integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} has-unicode@2.0.1: - resolution: - { - integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, - } + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} hosted-git-info@4.1.0: - resolution: - { - integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} hosted-git-info@7.0.2: - resolution: - { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} http-cache-semantics@4.2.0: - resolution: - { - integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==, - } + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-proxy-agent@7.0.2: - resolution: - { - integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} https-proxy-agent@7.0.6: - resolution: - { - integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} iconv-lite@0.7.0: - resolution: - { - integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore-walk@6.0.5: - resolution: - { - integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} ignore@7.0.5: - resolution: - { - integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} import-fresh@3.3.1: - resolution: - { - integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} hasBin: true import-local@3.2.0: - resolution: - { - integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} hasBin: true imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} inflection@3.0.2: - resolution: - { - integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==, - } - engines: { node: ">=18.0.0" } + resolution: {integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==} + engines: {node: '>=18.0.0'} inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} ini@4.1.3: - resolution: - { - integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} init-package-json@6.0.3: - resolution: - { - integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==} + engines: {node: ^16.14.0 || >=18.0.0} inquirer@8.2.7: - resolution: - { - integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} + engines: {node: '>=12.0.0'} ip-address@10.1.0: - resolution: - { - integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==, - } - engines: { node: ">= 12" } + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-ci@3.0.1: - resolution: - { - integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==, - } + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true is-core-module@2.16.1: - resolution: - { - integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-interactive@1.0.0: - resolution: - { - integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} is-lambda@1.0.1: - resolution: - { - integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==, - } + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-obj@2.0.0: - resolution: - { - integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} is-plain-obj@1.1.0: - resolution: - { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} is-ssh@1.4.1: - resolution: - { - integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==, - } + resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} is-stream@2.0.0: - resolution: - { - integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} + engines: {node: '>=8'} is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} is-text-path@1.0.1: - resolution: - { - integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} isarray@0.0.1: - resolution: - { - integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==, - } + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} isarray@1.0.0: - resolution: - { - integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, - } + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isexe@3.1.1: - resolution: - { - integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} isomorphic-fetch@3.0.0: - resolution: - { - integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==, - } + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} istanbul-lib-instrument@6.0.3: - resolution: - { - integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} istanbul-lib-source-maps@5.0.6: - resolution: - { - integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} istanbul-reports@3.2.0: - resolution: - { - integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} jackspeak@3.4.3: - resolution: - { - integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, - } + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jackspeak@4.1.1: - resolution: - { - integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} jake@10.9.4: - resolution: - { - integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} hasBin: true jest-changed-files@30.2.0: - resolution: - { - integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-circus@30.2.0: - resolution: - { - integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-cli@30.2.0: - resolution: - { - integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -4197,17 +2700,14 @@ packages: optional: true jest-config@30.2.0: - resolution: - { - integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - "@types/node": "*" - esbuild-register: ">=3.4.0" - ts-node: ">=9.0.0" + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true esbuild-register: optional: true @@ -4215,170 +2715,101 @@ packages: optional: true jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-diff@30.2.0: - resolution: - { - integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-docblock@30.2.0: - resolution: - { - integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-each@30.2.0: - resolution: - { - integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-environment-node@30.2.0: - resolution: - { - integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-haste-map@30.2.0: - resolution: - { - integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-leak-detector@30.2.0: - resolution: - { - integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-matcher-utils@30.2.0: - resolution: - { - integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-message-util@30.2.0: - resolution: - { - integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-mock@30.2.0: - resolution: - { - integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-pnp-resolver@1.2.3: - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} peerDependencies: - jest-resolve: "*" + jest-resolve: '*' peerDependenciesMeta: jest-resolve: optional: true jest-regex-util@30.0.1: - resolution: - { - integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-resolve-dependencies@30.2.0: - resolution: - { - integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-resolve@30.2.0: - resolution: - { - integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-runner@30.2.0: - resolution: - { - integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-runtime@30.2.0: - resolution: - { - integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-snapshot@30.2.0: - resolution: - { - integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-util@30.2.0: - resolution: - { - integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-validate@30.2.0: - resolution: - { - integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-watcher@30.2.0: - resolution: - { - integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@30.2.0: - resolution: - { - integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest@30.2.0: - resolution: - { - integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -4387,636 +2818,354 @@ packages: optional: true js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.14.2: - resolution: - { - integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==, - } + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true js-yaml@4.1.1: - resolution: - { - integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, - } + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-parse-better-errors@1.0.2: - resolution: - { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, - } + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-parse-even-better-errors@3.0.2: - resolution: - { - integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json-stringify-nice@1.1.4: - resolution: - { - integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==, - } + resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, - } + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true jsonc-parser@3.2.0: - resolution: - { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, - } + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} jsonfile@6.2.0: - resolution: - { - integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, - } + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { "0": node >= 0.2.0 } + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} junk@4.0.1: - resolution: - { - integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==, - } - engines: { node: ">=12.20" } + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} + engines: {node: '>=12.20'} just-diff-apply@5.5.0: - resolution: - { - integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==, - } + resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} just-diff@6.0.2: - resolution: - { - integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==, - } + resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} kubernetesjs@0.7.6: - resolution: - { - integrity: sha512-swqDZZ7AJQSUgDI6FcIE1o6w1+5046wv4WfHkuz6E80bUY5SFVuKchQN6ivLJAPLdRlMnpTGc0WKB+MJo9LVOQ==, - } + resolution: {integrity: sha512-swqDZZ7AJQSUgDI6FcIE1o6w1+5046wv4WfHkuz6E80bUY5SFVuKchQN6ivLJAPLdRlMnpTGc0WKB+MJo9LVOQ==} lerna@8.2.4: - resolution: - { - integrity: sha512-0gaVWDIVT7fLfprfwpYcQajb7dBJv3EGavjG7zvJ+TmGx3/wovl5GklnSwM2/WeE0Z2wrIz7ndWhBcDUHVjOcQ==, - } - engines: { node: ">=18.0.0" } + resolution: {integrity: sha512-0gaVWDIVT7fLfprfwpYcQajb7dBJv3EGavjG7zvJ+TmGx3/wovl5GklnSwM2/WeE0Z2wrIz7ndWhBcDUHVjOcQ==} + engines: {node: '>=18.0.0'} hasBin: true leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} libnpmaccess@8.0.6: - resolution: - { - integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==} + engines: {node: ^16.14.0 || >=18.0.0} libnpmpublish@9.0.9: - resolution: - { - integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==} + engines: {node: ^16.14.0 || >=18.0.0} lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lines-and-columns@2.0.3: - resolution: - { - integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} load-json-file@4.0.0: - resolution: - { - integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} load-json-file@6.2.0: - resolution: - { - integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} locate-path@2.0.0: - resolution: - { - integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lodash.ismatch@4.4.0: - resolution: - { - integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==, - } + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} long@5.3.2: - resolution: - { - integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, - } + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.2.2: - resolution: - { - integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} makage@0.1.10: - resolution: - { - integrity: sha512-IQKuRbHOrDgVNlydle+XRO5iMyaozBq4Bb9vhEzwxtvzyk08JkQo5qpfFRep0dSum53gECdX2gBoTmkWDHIfJA==, - } + resolution: {integrity: sha512-IQKuRbHOrDgVNlydle+XRO5iMyaozBq4Bb9vhEzwxtvzyk08JkQo5qpfFRep0dSum53gECdX2gBoTmkWDHIfJA==} hasBin: true make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} make-fetch-happen@13.0.1: - resolution: - { - integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} + engines: {node: ^16.14.0 || >=18.0.0} makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} map-obj@1.0.1: - resolution: - { - integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} map-obj@4.3.0: - resolution: - { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} math-intrinsics@1.1.0: - resolution: - { - integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} meow@13.2.0: - resolution: - { - integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} meow@8.1.2: - resolution: - { - integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} minimatch@10.1.1: - resolution: - { - integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} minimatch@3.0.5: - resolution: - { - integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==, - } + resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} minimatch@5.1.6: - resolution: - { - integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} minimatch@8.0.4: - resolution: - { - integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} minimatch@9.0.5: - resolution: - { - integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} minimist-options@4.1.0: - resolution: - { - integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass-collect@2.0.1: - resolution: - { - integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} minipass-fetch@3.0.5: - resolution: - { - integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} minipass-flush@1.0.5: - resolution: - { - integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} minipass-pipeline@1.2.4: - resolution: - { - integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} minipass-sized@1.0.3: - resolution: - { - integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} minipass@3.3.6: - resolution: - { - integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} minipass@4.2.8: - resolution: - { - integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} minipass@5.0.0: - resolution: - { - integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} minipass@7.1.2: - resolution: - { - integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} minizlib@2.1.2: - resolution: - { - integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true mkdirp@3.0.1: - resolution: - { - integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} hasBin: true modify-values@1.0.1: - resolution: - { - integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} + engines: {node: '>=0.10.0'} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} multimatch@5.0.0: - resolution: - { - integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} mute-stream@0.0.8: - resolution: - { - integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, - } + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} mute-stream@1.0.0: - resolution: - { - integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} napi-postinstall@0.3.4: - resolution: - { - integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} negotiator@0.6.4: - resolution: - { - integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} neo-async@2.6.2: - resolution: - { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, - } + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} node-fetch@2.6.7: - resolution: - { - integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -5024,1282 +3173,733 @@ packages: optional: true node-gyp@10.3.1: - resolution: - { - integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-machine-id@1.1.12: - resolution: - { - integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==, - } + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} node-releases@2.0.27: - resolution: - { - integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==, - } + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} noms@0.0.0: - resolution: - { - integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==, - } + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} nopt@7.2.1: - resolution: - { - integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} normalize-package-data@3.0.3: - resolution: - { - integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} normalize-package-data@6.0.2: - resolution: - { - integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} npm-bundled@3.0.1: - resolution: - { - integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} npm-install-checks@6.3.0: - resolution: - { - integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} npm-normalize-package-bin@3.0.1: - resolution: - { - integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} npm-package-arg@11.0.2: - resolution: - { - integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==} + engines: {node: ^16.14.0 || >=18.0.0} npm-packlist@8.0.2: - resolution: - { - integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} npm-pick-manifest@9.1.0: - resolution: - { - integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} + engines: {node: ^16.14.0 || >=18.0.0} npm-registry-fetch@17.1.0: - resolution: - { - integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==} + engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} nx@20.8.3: - resolution: - { - integrity: sha512-8w815WSMWar3A/LFzwtmEY+E8cVW62lMiFuPDXje+C8O8hFndfvscP56QHNMn2Zdhz3q0+BZUe+se4Em1BKYdA==, - } + resolution: {integrity: sha512-8w815WSMWar3A/LFzwtmEY+E8cVW62lMiFuPDXje+C8O8hFndfvscP56QHNMn2Zdhz3q0+BZUe+se4Em1BKYdA==} hasBin: true peerDependencies: - "@swc-node/register": ^1.8.0 - "@swc/core": ^1.3.85 + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 peerDependenciesMeta: - "@swc-node/register": + '@swc-node/register': optional: true - "@swc/core": + '@swc/core': optional: true once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} open@8.4.2: - resolution: - { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} ora@5.3.0: - resolution: - { - integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} ora@5.4.1: - resolution: - { - integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} p-event@6.0.1: - resolution: - { - integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==, - } - engines: { node: ">=16.17" } + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} p-filter@4.1.0: - resolution: - { - integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} p-finally@1.0.0: - resolution: - { - integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} p-limit@1.3.0: - resolution: - { - integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@2.0.0: - resolution: - { - integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} p-map-series@2.1.0: - resolution: - { - integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} + engines: {node: '>=8'} p-map@4.0.0: - resolution: - { - integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} p-map@7.0.4: - resolution: - { - integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + engines: {node: '>=18'} p-pipe@3.1.0: - resolution: - { - integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} + engines: {node: '>=8'} p-queue@6.6.2: - resolution: - { - integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} p-reduce@2.1.0: - resolution: - { - integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} p-timeout@3.2.0: - resolution: - { - integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} p-timeout@6.1.4: - resolution: - { - integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==, - } - engines: { node: ">=14.16" } + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} p-try@1.0.0: - resolution: - { - integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} p-waterfall@2.1.1: - resolution: - { - integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} + engines: {node: '>=8'} package-json-from-dist@1.0.1: - resolution: - { - integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, - } + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} pacote@18.0.6: - resolution: - { - integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} parse-conflict-json@3.0.1: - resolution: - { - integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} parse-json@4.0.0: - resolution: - { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} parse-path@7.1.0: - resolution: - { - integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==, - } + resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==} parse-url@8.1.0: - resolution: - { - integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==, - } + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} path-exists@3.0.0: - resolution: - { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-scurry@1.11.1: - resolution: - { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-scurry@2.0.1: - resolution: - { - integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} path-type@3.0.0: - resolution: - { - integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} path-type@6.0.0: - resolution: - { - integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} picomatch@4.0.3: - resolution: - { - integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} pify@2.3.0: - resolution: - { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} pify@3.0.0: - resolution: - { - integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} pify@5.0.0: - resolution: - { - integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} pirates@4.0.7: - resolution: - { - integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} postcss-selector-parser@6.1.2: - resolution: - { - integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} prettier-linter-helpers@1.0.1: - resolution: - { - integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} prettier@3.8.0: - resolution: - { - integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + engines: {node: '>=14'} hasBin: true pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-format@30.2.0: - resolution: - { - integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} proc-log@4.2.0: - resolution: - { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} process-nextick-args@2.0.1: - resolution: - { - integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, - } + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} proggy@2.0.0: - resolution: - { - integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} promise-all-reject-late@1.0.1: - resolution: - { - integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==, - } + resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} promise-call-limit@3.0.2: - resolution: - { - integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==, - } + resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==} promise-inflight@1.0.1: - resolution: - { - integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, - } + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: - bluebird: "*" + bluebird: '*' peerDependenciesMeta: bluebird: optional: true promise-retry@2.0.1: - resolution: - { - integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} promzard@1.0.2: - resolution: - { - integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} protocols@2.0.2: - resolution: - { - integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==, - } + resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==} proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, - } + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} pure-rand@7.0.1: - resolution: - { - integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==, - } + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} quick-lru@4.0.1: - resolution: - { - integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} read-cmd-shim@4.0.0: - resolution: - { - integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} read-package-json-fast@3.0.2: - resolution: - { - integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} read-pkg-up@3.0.0: - resolution: - { - integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} read-pkg@3.0.0: - resolution: - { - integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} read@3.0.1: - resolution: - { - integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} readable-stream@1.0.34: - resolution: - { - integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==, - } + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} readable-stream@2.3.8: - resolution: - { - integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, - } + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve.exports@2.0.3: - resolution: - { - integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} resolve@1.22.11: - resolution: - { - integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} hasBin: true restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} retry@0.12.0: - resolution: - { - integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} reusify@1.1.0: - resolution: - { - integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rimraf@4.4.1: - resolution: - { - integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} hasBin: true rimraf@6.1.2: - resolution: - { - integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} + engines: {node: 20 || >=22} hasBin: true run-async@2.4.1: - resolution: - { - integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, - } - engines: { node: ">=0.12.0" } + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rxjs@7.8.2: - resolution: - { - integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, - } + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-buffer@5.1.2: - resolution: - { - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, - } + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, - } + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.7.3: - resolution: - { - integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} hasBin: true semver@7.7.4: - resolution: - { - integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} hasBin: true set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} sigstore@2.3.1: - resolution: - { - integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==} + engines: {node: ^16.14.0 || >=18.0.0} slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} slash@5.1.0: - resolution: - { - integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, - } - engines: { node: ">=14.16" } + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} smart-buffer@4.2.0: - resolution: - { - integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, - } - engines: { node: ">= 6.0.0", npm: ">= 3.0.0" } + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} socks-proxy-agent@8.0.5: - resolution: - { - integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} socks@2.8.7: - resolution: - { - integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==, - } - engines: { node: ">= 10.0.0", npm: ">= 3.0.0" } + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-keys@2.0.0: - resolution: - { - integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} spdx-exceptions@2.5.0: - resolution: - { - integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, - } + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} spdx-license-ids@3.0.22: - resolution: - { - integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==, - } + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} split2@3.2.2: - resolution: - { - integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, - } + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} split@1.0.1: - resolution: - { - integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==, - } + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} ssri@10.0.6: - resolution: - { - integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} string_decoder@0.10.31: - resolution: - { - integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==, - } + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} string_decoder@1.1.1: - resolution: - { - integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, - } + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-ansi@7.1.2: - resolution: - { - integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } + 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" } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} synckit@0.11.11: - resolution: - { - integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} synckit@0.11.12: - resolution: - { - integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} + engines: {node: ^14.18.0 || >=16.0.0} tar-stream@2.2.0: - resolution: - { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} tar@6.2.1: - resolution: - { - integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me temp-dir@1.0.0: - resolution: - { - integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} text-extensions@1.9.0: - resolution: - { - integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} through2@2.0.5: - resolution: - { - integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==, - } + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} tinyglobby@0.2.12: - resolution: - { - integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} tinyglobby@0.2.15: - resolution: - { - integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} tmp@0.2.5: - resolution: - { - integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==, - } - engines: { node: ">=14.14" } + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} treeverse@3.0.0: - resolution: - { - integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} trim-newlines@3.0.1: - resolution: - { - integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} ts-api-utils@2.4.0: - resolution: - { - integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==, - } - engines: { node: ">=18.12" } + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: ">=4.8.4" + typescript: '>=4.8.4' ts-jest@29.4.6: - resolution: - { - integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0 } + resolution: {integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/transform": ^29.0.0 || ^30.0.0 - "@jest/types": ^29.0.0 || ^30.0.0 + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 babel-jest: ^29.0.0 || ^30.0.0 - esbuild: "*" + esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" + typescript: '>=4.3 <6' peerDependenciesMeta: - "@babel/core": + '@babel/core': optional: true - "@jest/transform": + '@jest/transform': optional: true - "@jest/types": + '@jest/types': optional: true babel-jest: optional: true @@ -6309,462 +3909,277 @@ packages: optional: true ts-node@10.9.2: - resolution: - { - integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==, - } + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' peerDependenciesMeta: - "@swc/core": + '@swc/core': optional: true - "@swc/wasm": + '@swc/wasm': optional: true tsconfig-paths@4.2.0: - resolution: - { - integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tuf-js@2.2.1: - resolution: - { - integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} + engines: {node: ^16.14.0 || >=18.0.0} type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} type-fest@0.18.1: - resolution: - { - integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} type-fest@0.4.1: - resolution: - { - integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} + engines: {node: '>=6'} type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} type-fest@4.41.0: - resolution: - { - integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} typedarray@0.0.6: - resolution: - { - integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, - } + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} typescript@5.9.3: - resolution: - { - integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} hasBin: true uglify-js@3.19.3: - resolution: - { - integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} hasBin: true undici-types@6.21.0: - resolution: - { - integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, - } + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} unicorn-magic@0.3.0: - resolution: - { - integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} unique-filename@3.0.0: - resolution: - { - integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} unique-slug@4.0.0: - resolution: - { - integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} universal-user-agent@6.0.1: - resolution: - { - integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==, - } + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} universalify@2.0.1: - resolution: - { - integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, - } - engines: { node: ">= 10.0.0" } + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} unrs-resolver@1.11.1: - resolution: - { - integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==, - } + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} untildify@4.0.0: - resolution: - { - integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} upath@2.0.1: - resolution: - { - integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} update-browserslist-db@1.1.4: - resolution: - { - integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==, - } + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: - browserslist: ">= 4.21.0" + browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} uuid@10.0.0: - resolution: - { - integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==, - } + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} v8-to-istanbul@9.3.0: - resolution: - { - integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==, - } - engines: { node: ">=10.12.0" } + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} validate-npm-package-name@5.0.1: - resolution: - { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} walk-up-path@3.0.1: - resolution: - { - integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==, - } + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} whatwg-fetch@3.6.20: - resolution: - { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, - } + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true which@4.0.0: - resolution: - { - integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, - } - engines: { node: ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} hasBin: true wide-align@1.1.5: - resolution: - { - integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, - } + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} wordwrap@1.0.0: - resolution: - { - integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, - } + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@2.4.3: - resolution: - { - integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==, - } + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} write-file-atomic@5.0.1: - resolution: - { - integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} write-json-file@3.2.0: - resolution: - { - integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} + engines: {node: '>=6'} write-pkg@4.0.0: - resolution: - { - integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} + engines: {node: '>=8'} xtend@4.0.2: - resolution: - { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, - } - engines: { node: ">=0.4" } + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} yaml@2.8.2: - resolution: - { - integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==, - } - engines: { node: ">= 14.6" } + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@20.2.9: - resolution: - { - integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs@16.2.0: - resolution: - { - integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} snapshots: - "@babel/code-frame@7.27.1": + + '@babel/code-frame@7.27.1': dependencies: - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/code-frame@7.28.6": + '@babel/code-frame@7.28.6': dependencies: - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.28.5": {} + '@babel/compat-data@7.28.5': {} - "@babel/core@7.28.5": + '@babel/core@7.28.5': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.6 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.5) - "@babel/helpers": 7.28.4 - "@babel/parser": 7.28.6 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.6 - "@babel/types": 7.28.6 - "@jridgewell/remapping": 2.3.5 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.6 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 gensync: 1.0.0-beta.2 @@ -6773,216 +4188,216 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.28.6": + '@babel/generator@7.28.6': dependencies: - "@babel/parser": 7.28.6 - "@babel/types": 7.28.6 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - "@babel/helper-compilation-targets@7.27.2": + '@babel/helper-compilation-targets@7.27.2': dependencies: - "@babel/compat-data": 7.28.5 - "@babel/helper-validator-option": 7.27.1 + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-globals@7.28.0": {} + '@babel/helper-globals@7.28.0': {} - "@babel/helper-module-imports@7.27.1": + '@babel/helper-module-imports@7.27.1': dependencies: - "@babel/traverse": 7.28.6 - "@babel/types": 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)": + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-validator-identifier": 7.28.5 - "@babel/traverse": 7.28.6 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - "@babel/helper-plugin-utils@7.27.1": {} + '@babel/helper-plugin-utils@7.27.1': {} - "@babel/helper-string-parser@7.27.1": {} + '@babel/helper-string-parser@7.27.1': {} - "@babel/helper-validator-identifier@7.28.5": {} + '@babel/helper-validator-identifier@7.28.5': {} - "@babel/helper-validator-option@7.27.1": {} + '@babel/helper-validator-option@7.27.1': {} - "@babel/helpers@7.28.4": + '@babel/helpers@7.28.4': dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.6 + '@babel/template': 7.27.2 + '@babel/types': 7.28.6 - "@babel/parser@7.28.6": + '@babel/parser@7.28.6': dependencies: - "@babel/types": 7.28.6 + '@babel/types': 7.28.6 - "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)": + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/template@7.27.2": + '@babel/template@7.27.2': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/parser": 7.28.6 - "@babel/types": 7.28.6 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - "@babel/template@7.28.6": + '@babel/template@7.28.6': dependencies: - "@babel/code-frame": 7.28.6 - "@babel/parser": 7.28.6 - "@babel/types": 7.28.6 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - "@babel/traverse@7.28.6": + '@babel/traverse@7.28.6': dependencies: - "@babel/code-frame": 7.28.6 - "@babel/generator": 7.28.6 - "@babel/helper-globals": 7.28.0 - "@babel/parser": 7.28.6 - "@babel/template": 7.28.6 - "@babel/types": 7.28.6 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color - "@babel/types@7.28.6": + '@babel/types@7.28.6': dependencies: - "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - "@bcoe/v8-coverage@0.2.3": {} + '@bcoe/v8-coverage@0.2.3': {} - "@cspotcode/source-map-support@0.8.1": + '@cspotcode/source-map-support@0.8.1': dependencies: - "@jridgewell/trace-mapping": 0.3.9 + '@jridgewell/trace-mapping': 0.3.9 - "@emnapi/core@1.7.1": + '@emnapi/core@1.7.1': dependencies: - "@emnapi/wasi-threads": 1.1.0 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - "@emnapi/runtime@1.7.1": + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 - "@emnapi/wasi-threads@1.1.0": + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 - "@epic-web/invariant@1.0.0": {} + '@epic-web/invariant@1.0.0': {} - "@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)": + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': dependencies: eslint: 9.39.2 eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.2": {} + '@eslint-community/regexpp@4.12.2': {} - "@eslint/config-array@0.21.1": + '@eslint/config-array@0.21.1': dependencies: - "@eslint/object-schema": 2.1.7 + '@eslint/object-schema': 2.1.7 debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.4.2": + '@eslint/config-helpers@0.4.2': dependencies: - "@eslint/core": 0.17.0 + '@eslint/core': 0.17.0 - "@eslint/core@0.17.0": + '@eslint/core@0.17.0': dependencies: - "@types/json-schema": 7.0.15 + '@types/json-schema': 7.0.15 - "@eslint/eslintrc@3.3.3": + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3 @@ -6996,42 +4411,42 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.39.2": {} + '@eslint/js@9.39.2': {} - "@eslint/object-schema@2.1.7": {} + '@eslint/object-schema@2.1.7': {} - "@eslint/plugin-kit@0.4.1": + '@eslint/plugin-kit@0.4.1': dependencies: - "@eslint/core": 0.17.0 + '@eslint/core': 0.17.0 levn: 0.4.1 - "@humanfs/core@0.19.1": {} + '@humanfs/core@0.19.1': {} - "@humanfs/node@0.16.7": + '@humanfs/node@0.16.7': dependencies: - "@humanfs/core": 0.19.1 - "@humanwhocodes/retry": 0.4.3 + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 - "@humanwhocodes/module-importer@1.0.1": {} + '@humanwhocodes/module-importer@1.0.1': {} - "@humanwhocodes/retry@0.4.3": {} + '@humanwhocodes/retry@0.4.3': {} - "@hutson/parse-repository-url@3.0.2": {} + '@hutson/parse-repository-url@3.0.2': {} - "@inquirer/external-editor@1.0.3(@types/node@22.19.1)": + '@inquirer/external-editor@1.0.3(@types/node@22.19.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - "@types/node": 22.19.1 + '@types/node': 22.19.1 - "@isaacs/balanced-match@4.0.1": {} + '@isaacs/balanced-match@4.0.1': {} - "@isaacs/brace-expansion@5.0.0": + '@isaacs/brace-expansion@5.0.0': dependencies: - "@isaacs/balanced-match": 4.0.1 + '@isaacs/balanced-match': 4.0.1 - "@isaacs/cliui@8.0.2": + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -7040,9 +4455,9 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - "@isaacs/string-locale-compare@1.1.0": {} + '@isaacs/string-locale-compare@1.1.0': {} - "@istanbuljs/load-nyc-config@1.1.0": + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 @@ -7050,26 +4465,26 @@ snapshots: js-yaml: 3.14.2 resolve-from: 5.0.0 - "@istanbuljs/schema@0.1.3": {} + '@istanbuljs/schema@0.1.3': {} - "@jest/console@30.2.0": + '@jest/console@30.2.0': dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 chalk: 4.1.2 jest-message-util: 30.2.0 jest-util: 30.2.0 slash: 3.0.0 - "@jest/core@30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))": + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))': dependencies: - "@jest/console": 30.2.0 - "@jest/pattern": 30.0.1 - "@jest/reporters": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.3.1 @@ -7097,60 +4512,60 @@ snapshots: - supports-color - ts-node - "@jest/diff-sequences@30.0.1": {} + '@jest/diff-sequences@30.0.1': {} - "@jest/environment@30.2.0": + '@jest/environment@30.2.0': dependencies: - "@jest/fake-timers": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 jest-mock: 30.2.0 - "@jest/expect-utils@30.2.0": + '@jest/expect-utils@30.2.0': dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 - "@jest/expect@30.2.0": + '@jest/expect@30.2.0': dependencies: expect: 30.2.0 jest-snapshot: 30.2.0 transitivePeerDependencies: - supports-color - "@jest/fake-timers@30.2.0": + '@jest/fake-timers@30.2.0': dependencies: - "@jest/types": 30.2.0 - "@sinonjs/fake-timers": 13.0.5 - "@types/node": 22.19.1 + '@jest/types': 30.2.0 + '@sinonjs/fake-timers': 13.0.5 + '@types/node': 22.19.1 jest-message-util: 30.2.0 jest-mock: 30.2.0 jest-util: 30.2.0 - "@jest/get-type@30.1.0": {} + '@jest/get-type@30.1.0': {} - "@jest/globals@30.2.0": + '@jest/globals@30.2.0': dependencies: - "@jest/environment": 30.2.0 - "@jest/expect": 30.2.0 - "@jest/types": 30.2.0 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/types': 30.2.0 jest-mock: 30.2.0 transitivePeerDependencies: - supports-color - "@jest/pattern@30.0.1": + '@jest/pattern@30.0.1': dependencies: - "@types/node": 22.19.1 + '@types/node': 22.19.1 jest-regex-util: 30.0.1 - "@jest/reporters@30.2.0": + '@jest/reporters@30.2.0': dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@jridgewell/trace-mapping": 0.3.31 - "@types/node": 22.19.1 + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 22.19.1 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -7170,46 +4585,46 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/schemas@29.6.3": + '@jest/schemas@29.6.3': dependencies: - "@sinclair/typebox": 0.27.8 + '@sinclair/typebox': 0.27.8 - "@jest/schemas@30.0.5": + '@jest/schemas@30.0.5': dependencies: - "@sinclair/typebox": 0.34.41 + '@sinclair/typebox': 0.34.41 - "@jest/snapshot-utils@30.2.0": + '@jest/snapshot-utils@30.2.0': dependencies: - "@jest/types": 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 graceful-fs: 4.2.11 natural-compare: 1.4.0 - "@jest/source-map@30.0.1": + '@jest/source-map@30.0.1': dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 - "@jest/test-result@30.2.0": + '@jest/test-result@30.2.0': dependencies: - "@jest/console": 30.2.0 - "@jest/types": 30.2.0 - "@types/istanbul-lib-coverage": 2.0.6 + '@jest/console': 30.2.0 + '@jest/types': 30.2.0 + '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 - "@jest/test-sequencer@30.2.0": + '@jest/test-sequencer@30.2.0': dependencies: - "@jest/test-result": 30.2.0 + '@jest/test-result': 30.2.0 graceful-fs: 4.2.11 jest-haste-map: 30.2.0 slash: 3.0.0 - "@jest/transform@30.2.0": + '@jest/transform@30.2.0': dependencies: - "@babel/core": 7.28.5 - "@jest/types": 30.2.0 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/core': 7.28.5 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 7.0.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -7225,63 +4640,63 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/types@30.2.0": + '@jest/types@30.2.0': dependencies: - "@jest/pattern": 30.0.1 - "@jest/schemas": 30.0.5 - "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports": 3.0.4 - "@types/node": 22.19.1 - "@types/yargs": 17.0.35 + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.19.1 + '@types/yargs': 17.0.35 chalk: 4.1.2 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/remapping@2.3.5": + '@jridgewell/remapping@2.3.5': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.31": + '@jridgewell/trace-mapping@0.3.31': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@jridgewell/trace-mapping@0.3.9": + '@jridgewell/trace-mapping@0.3.9': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@launchql/protobufjs@7.2.6": + '@launchql/protobufjs@7.2.6': dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.4 - "@protobufjs/eventemitter": 1.1.0 - "@protobufjs/fetch": 1.1.0 - "@protobufjs/float": 1.0.2 - "@protobufjs/inquire": 1.1.0 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.0 - "@types/node": 22.19.1 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.19.1 long: 5.3.2 - "@lerna/create@8.2.4(@types/node@22.19.1)(encoding@0.1.13)(typescript@5.9.3)": + '@lerna/create@8.2.4(@types/node@22.19.1)(encoding@0.1.13)(typescript@5.9.3)': dependencies: - "@npmcli/arborist": 7.5.4 - "@npmcli/package-json": 5.2.0 - "@npmcli/run-script": 8.1.0 - "@nx/devkit": 20.8.3(nx@20.8.3) - "@octokit/plugin-enterprise-rest": 6.0.1 - "@octokit/rest": 20.1.2 + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.3(nx@20.8.3) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -7346,9 +4761,9 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - "@swc-node/register" - - "@swc/core" - - "@types/node" + - '@swc-node/register' + - '@swc/core' + - '@types/node' - babel-plugin-macros - bluebird - debug @@ -7356,34 +4771,34 @@ snapshots: - supports-color - typescript - "@marcbachmann/cel-js@7.1.0": {} + '@marcbachmann/cel-js@7.1.0': {} - "@napi-rs/wasm-runtime@0.2.12": + '@napi-rs/wasm-runtime@0.2.12': dependencies: - "@emnapi/core": 1.7.1 - "@emnapi/runtime": 1.7.1 - "@tybys/wasm-util": 0.10.1 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 optional: true - "@napi-rs/wasm-runtime@0.2.4": + '@napi-rs/wasm-runtime@0.2.4': dependencies: - "@emnapi/core": 1.7.1 - "@emnapi/runtime": 1.7.1 - "@tybys/wasm-util": 0.9.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.9.0 - "@nodelib/fs.scandir@2.1.5": + '@nodelib/fs.scandir@2.1.5': dependencies: - "@nodelib/fs.stat": 2.0.5 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - "@nodelib/fs.stat@2.0.5": {} + '@nodelib/fs.stat@2.0.5': {} - "@nodelib/fs.walk@1.2.8": + '@nodelib/fs.walk@1.2.8': dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - "@npmcli/agent@2.2.2": + '@npmcli/agent@2.2.2': dependencies: agent-base: 7.1.4 http-proxy-agent: 7.0.2 @@ -7393,19 +4808,19 @@ snapshots: transitivePeerDependencies: - supports-color - "@npmcli/arborist@7.5.4": - dependencies: - "@isaacs/string-locale-compare": 1.1.0 - "@npmcli/fs": 3.1.1 - "@npmcli/installed-package-contents": 2.1.0 - "@npmcli/map-workspaces": 3.0.6 - "@npmcli/metavuln-calculator": 7.1.1 - "@npmcli/name-from-folder": 2.0.0 - "@npmcli/node-gyp": 3.0.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/query": 3.1.0 - "@npmcli/redact": 2.0.1 - "@npmcli/run-script": 8.1.0 + '@npmcli/arborist@7.5.4': + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/fs': 3.1.1 + '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/map-workspaces': 3.0.6 + '@npmcli/metavuln-calculator': 7.1.1 + '@npmcli/name-from-folder': 2.0.0 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/query': 3.1.0 + '@npmcli/redact': 2.0.1 + '@npmcli/run-script': 8.1.0 bin-links: 4.0.4 cacache: 18.0.4 common-ancestor-path: 1.0.1 @@ -7434,13 +4849,13 @@ snapshots: - bluebird - supports-color - "@npmcli/fs@3.1.1": + '@npmcli/fs@3.1.1': dependencies: semver: 7.7.3 - "@npmcli/git@5.0.8": + '@npmcli/git@5.0.8': dependencies: - "@npmcli/promise-spawn": 7.0.2 + '@npmcli/promise-spawn': 7.0.2 ini: 4.1.3 lru-cache: 10.4.3 npm-pick-manifest: 9.1.0 @@ -7452,19 +4867,19 @@ snapshots: transitivePeerDependencies: - bluebird - "@npmcli/installed-package-contents@2.1.0": + '@npmcli/installed-package-contents@2.1.0': dependencies: npm-bundled: 3.0.1 npm-normalize-package-bin: 3.0.1 - "@npmcli/map-workspaces@3.0.6": + '@npmcli/map-workspaces@3.0.6': dependencies: - "@npmcli/name-from-folder": 2.0.0 + '@npmcli/name-from-folder': 2.0.0 glob: 10.5.0 minimatch: 9.0.5 read-package-json-fast: 3.0.2 - "@npmcli/metavuln-calculator@7.1.1": + '@npmcli/metavuln-calculator@7.1.1': dependencies: cacache: 18.0.4 json-parse-even-better-errors: 3.0.2 @@ -7475,13 +4890,13 @@ snapshots: - bluebird - supports-color - "@npmcli/name-from-folder@2.0.0": {} + '@npmcli/name-from-folder@2.0.0': {} - "@npmcli/node-gyp@3.0.0": {} + '@npmcli/node-gyp@3.0.0': {} - "@npmcli/package-json@5.2.0": + '@npmcli/package-json@5.2.0': dependencies: - "@npmcli/git": 5.0.8 + '@npmcli/git': 5.0.8 glob: 10.5.0 hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 @@ -7491,21 +4906,21 @@ snapshots: transitivePeerDependencies: - bluebird - "@npmcli/promise-spawn@7.0.2": + '@npmcli/promise-spawn@7.0.2': dependencies: which: 4.0.0 - "@npmcli/query@3.1.0": + '@npmcli/query@3.1.0': dependencies: postcss-selector-parser: 6.1.2 - "@npmcli/redact@2.0.1": {} + '@npmcli/redact@2.0.1': {} - "@npmcli/run-script@8.1.0": + '@npmcli/run-script@8.1.0': dependencies: - "@npmcli/node-gyp": 3.0.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/promise-spawn": 7.0.2 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 node-gyp: 10.3.1 proc-log: 4.2.0 which: 4.0.0 @@ -7513,7 +4928,7 @@ snapshots: - bluebird - supports-color - "@nx/devkit@20.8.3(nx@20.8.3)": + '@nx/devkit@20.8.3(nx@20.8.3)': dependencies: ejs: 3.1.10 enquirer: 2.3.6 @@ -7525,271 +4940,271 @@ snapshots: tslib: 2.8.1 yargs-parser: 21.1.1 - "@nx/nx-darwin-arm64@20.8.3": + '@nx/nx-darwin-arm64@20.8.3': optional: true - "@nx/nx-darwin-x64@20.8.3": + '@nx/nx-darwin-x64@20.8.3': optional: true - "@nx/nx-freebsd-x64@20.8.3": + '@nx/nx-freebsd-x64@20.8.3': optional: true - "@nx/nx-linux-arm-gnueabihf@20.8.3": + '@nx/nx-linux-arm-gnueabihf@20.8.3': optional: true - "@nx/nx-linux-arm64-gnu@20.8.3": + '@nx/nx-linux-arm64-gnu@20.8.3': optional: true - "@nx/nx-linux-arm64-musl@20.8.3": + '@nx/nx-linux-arm64-musl@20.8.3': optional: true - "@nx/nx-linux-x64-gnu@20.8.3": + '@nx/nx-linux-x64-gnu@20.8.3': optional: true - "@nx/nx-linux-x64-musl@20.8.3": + '@nx/nx-linux-x64-musl@20.8.3': optional: true - "@nx/nx-win32-arm64-msvc@20.8.3": + '@nx/nx-win32-arm64-msvc@20.8.3': optional: true - "@nx/nx-win32-x64-msvc@20.8.3": + '@nx/nx-win32-x64-msvc@20.8.3': optional: true - "@octokit/auth-token@4.0.0": {} + '@octokit/auth-token@4.0.0': {} - "@octokit/core@5.2.2": + '@octokit/core@5.2.2': dependencies: - "@octokit/auth-token": 4.0.0 - "@octokit/graphql": 7.1.1 - "@octokit/request": 8.4.1 - "@octokit/request-error": 5.1.1 - "@octokit/types": 13.10.0 + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.1 + '@octokit/request': 8.4.1 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 - "@octokit/endpoint@9.0.6": + '@octokit/endpoint@9.0.6': dependencies: - "@octokit/types": 13.10.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/graphql@7.1.1": + '@octokit/graphql@7.1.1': dependencies: - "@octokit/request": 8.4.1 - "@octokit/types": 13.10.0 + '@octokit/request': 8.4.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/openapi-types@24.2.0": {} + '@octokit/openapi-types@24.2.0': {} - "@octokit/plugin-enterprise-rest@6.0.1": {} + '@octokit/plugin-enterprise-rest@6.0.1': {} - "@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)": + '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 - "@octokit/types": 13.10.0 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - "@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)": + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 + '@octokit/core': 5.2.2 - "@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)": + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 - "@octokit/types": 13.10.0 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - "@octokit/request-error@5.1.1": + '@octokit/request-error@5.1.1': dependencies: - "@octokit/types": 13.10.0 + '@octokit/types': 13.10.0 deprecation: 2.3.1 once: 1.4.0 - "@octokit/request@8.4.1": + '@octokit/request@8.4.1': dependencies: - "@octokit/endpoint": 9.0.6 - "@octokit/request-error": 5.1.1 - "@octokit/types": 13.10.0 + '@octokit/endpoint': 9.0.6 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/rest@20.1.2": + '@octokit/rest@20.1.2': dependencies: - "@octokit/core": 5.2.2 - "@octokit/plugin-paginate-rest": 11.4.4-cjs.2(@octokit/core@5.2.2) - "@octokit/plugin-request-log": 4.0.1(@octokit/core@5.2.2) - "@octokit/plugin-rest-endpoint-methods": 13.3.2-cjs.1(@octokit/core@5.2.2) + '@octokit/core': 5.2.2 + '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) + '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) - "@octokit/types@13.10.0": + '@octokit/types@13.10.0': dependencies: - "@octokit/openapi-types": 24.2.0 + '@octokit/openapi-types': 24.2.0 - "@pkgjs/parseargs@0.11.0": + '@pkgjs/parseargs@0.11.0': optional: true - "@pkgr/core@0.2.9": {} + '@pkgr/core@0.2.9': {} - "@protobufjs/aspromise@1.1.2": {} + '@protobufjs/aspromise@1.1.2': {} - "@protobufjs/base64@1.1.2": {} + '@protobufjs/base64@1.1.2': {} - "@protobufjs/codegen@2.0.4": {} + '@protobufjs/codegen@2.0.4': {} - "@protobufjs/eventemitter@1.1.0": {} + '@protobufjs/eventemitter@1.1.0': {} - "@protobufjs/fetch@1.1.0": + '@protobufjs/fetch@1.1.0': dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/inquire": 1.1.0 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 - "@protobufjs/float@1.0.2": {} + '@protobufjs/float@1.0.2': {} - "@protobufjs/inquire@1.1.0": {} + '@protobufjs/inquire@1.1.0': {} - "@protobufjs/path@1.1.2": {} + '@protobufjs/path@1.1.2': {} - "@protobufjs/pool@1.1.0": {} + '@protobufjs/pool@1.1.0': {} - "@protobufjs/utf8@1.1.0": {} + '@protobufjs/utf8@1.1.0': {} - "@sigstore/bundle@2.3.2": + '@sigstore/bundle@2.3.2': dependencies: - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/protobuf-specs': 0.3.3 - "@sigstore/core@1.1.0": {} + '@sigstore/core@1.1.0': {} - "@sigstore/protobuf-specs@0.3.3": {} + '@sigstore/protobuf-specs@0.3.3': {} - "@sigstore/sign@2.3.2": + '@sigstore/sign@2.3.2': dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 make-fetch-happen: 13.0.1 proc-log: 4.2.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - "@sigstore/tuf@2.3.4": + '@sigstore/tuf@2.3.4': dependencies: - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/protobuf-specs': 0.3.3 tuf-js: 2.2.1 transitivePeerDependencies: - supports-color - "@sigstore/verify@1.2.1": + '@sigstore/verify@1.2.1': dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 - "@sinclair/typebox@0.27.8": {} + '@sinclair/typebox@0.27.8': {} - "@sinclair/typebox@0.34.41": {} + '@sinclair/typebox@0.34.41': {} - "@sindresorhus/merge-streams@4.0.0": {} + '@sindresorhus/merge-streams@4.0.0': {} - "@sinonjs/commons@3.0.1": + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - "@sinonjs/fake-timers@13.0.5": + '@sinonjs/fake-timers@13.0.5': dependencies: - "@sinonjs/commons": 3.0.1 + '@sinonjs/commons': 3.0.1 - "@tsconfig/node10@1.0.12": {} + '@tsconfig/node10@1.0.12': {} - "@tsconfig/node12@1.0.11": {} + '@tsconfig/node12@1.0.11': {} - "@tsconfig/node14@1.0.3": {} + '@tsconfig/node14@1.0.3': {} - "@tsconfig/node16@1.0.4": {} + '@tsconfig/node16@1.0.4': {} - "@tufjs/canonical-json@2.0.0": {} + '@tufjs/canonical-json@2.0.0': {} - "@tufjs/models@2.0.1": + '@tufjs/models@2.0.1': dependencies: - "@tufjs/canonical-json": 2.0.0 + '@tufjs/canonical-json': 2.0.0 minimatch: 9.0.5 - "@tybys/wasm-util@0.10.1": + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true - "@tybys/wasm-util@0.9.0": + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 - "@types/babel__core@7.20.5": + '@types/babel__core@7.20.5': dependencies: - "@babel/parser": 7.28.6 - "@babel/types": 7.28.6 - "@types/babel__generator": 7.27.0 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.28.0 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 - "@types/babel__generator@7.27.0": + '@types/babel__generator@7.27.0': dependencies: - "@babel/types": 7.28.6 + '@babel/types': 7.28.6 - "@types/babel__template@7.4.4": + '@types/babel__template@7.4.4': dependencies: - "@babel/parser": 7.28.6 - "@babel/types": 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - "@types/babel__traverse@7.28.0": + '@types/babel__traverse@7.28.0': dependencies: - "@babel/types": 7.28.6 + '@babel/types': 7.28.6 - "@types/estree@1.0.8": {} + '@types/estree@1.0.8': {} - "@types/isomorphic-fetch@0.0.39": {} + '@types/isomorphic-fetch@0.0.39': {} - "@types/istanbul-lib-coverage@2.0.6": {} + '@types/istanbul-lib-coverage@2.0.6': {} - "@types/istanbul-lib-report@3.0.3": + '@types/istanbul-lib-report@3.0.3': dependencies: - "@types/istanbul-lib-coverage": 2.0.6 + '@types/istanbul-lib-coverage': 2.0.6 - "@types/istanbul-reports@3.0.4": + '@types/istanbul-reports@3.0.4': dependencies: - "@types/istanbul-lib-report": 3.0.3 + '@types/istanbul-lib-report': 3.0.3 - "@types/jest@30.0.0": + '@types/jest@30.0.0': dependencies: expect: 30.2.0 pretty-format: 30.2.0 - "@types/js-yaml@4.0.9": {} + '@types/js-yaml@4.0.9': {} - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} - "@types/minimatch@3.0.5": {} + '@types/minimatch@3.0.5': {} - "@types/minimist@1.2.5": {} + '@types/minimist@1.2.5': {} - "@types/node@22.19.1": + '@types/node@22.19.1': dependencies: undici-types: 6.21.0 - "@types/normalize-package-data@2.4.4": {} + '@types/normalize-package-data@2.4.4': {} - "@types/semver@7.7.1": {} + '@types/semver@7.7.1': {} - "@types/stack-utils@2.0.3": {} + '@types/stack-utils@2.0.3': {} - "@types/yargs-parser@21.0.3": {} + '@types/yargs-parser@21.0.3': {} - "@types/yargs@17.0.35": + '@types/yargs@17.0.35': dependencies: - "@types/yargs-parser": 21.0.3 + '@types/yargs-parser': 21.0.3 - "@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@eslint-community/regexpp": 4.12.2 - "@typescript-eslint/parser": 8.53.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.53.1 - "@typescript-eslint/type-utils": 8.53.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/utils": 8.53.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.53.1 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -7798,41 +5213,41 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@typescript-eslint/scope-manager": 8.53.1 - "@typescript-eslint/types": 8.53.1 - "@typescript-eslint/typescript-estree": 8.53.1(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.53.1 + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.53.1(typescript@5.9.3)": + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/tsconfig-utils": 8.53.1(typescript@5.9.3) - "@typescript-eslint/types": 8.53.1 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.53.1": + '@typescript-eslint/scope-manager@8.53.1': dependencies: - "@typescript-eslint/types": 8.53.1 - "@typescript-eslint/visitor-keys": 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 - "@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)": + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@typescript-eslint/types": 8.53.1 - "@typescript-eslint/typescript-estree": 8.53.1(typescript@5.9.3) - "@typescript-eslint/utils": 8.53.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -7840,14 +5255,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.53.1": {} + '@typescript-eslint/types@8.53.1': {} - "@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)": + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/project-service": 8.53.1(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.53.1(typescript@5.9.3) - "@typescript-eslint/types": 8.53.1 - "@typescript-eslint/visitor-keys": 8.53.1 + '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -7857,91 +5272,91 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/utils@8.53.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@eslint-community/eslint-utils": 4.9.1(eslint@9.39.2) - "@typescript-eslint/scope-manager": 8.53.1 - "@typescript-eslint/types": 8.53.1 - "@typescript-eslint/typescript-estree": 8.53.1(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.53.1": + '@typescript-eslint/visitor-keys@8.53.1': dependencies: - "@typescript-eslint/types": 8.53.1 + '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 - "@ungap/structured-clone@1.3.0": {} + '@ungap/structured-clone@1.3.0': {} - "@unrs/resolver-binding-android-arm-eabi@1.11.1": + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true - "@unrs/resolver-binding-android-arm64@1.11.1": + '@unrs/resolver-binding-android-arm64@1.11.1': optional: true - "@unrs/resolver-binding-darwin-arm64@1.11.1": + '@unrs/resolver-binding-darwin-arm64@1.11.1': optional: true - "@unrs/resolver-binding-darwin-x64@1.11.1": + '@unrs/resolver-binding-darwin-x64@1.11.1': optional: true - "@unrs/resolver-binding-freebsd-x64@1.11.1": + '@unrs/resolver-binding-freebsd-x64@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': optional: true - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': optional: true - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-x64-musl@1.11.1": + '@unrs/resolver-binding-linux-x64-musl@1.11.1': optional: true - "@unrs/resolver-binding-wasm32-wasi@1.11.1": + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - "@napi-rs/wasm-runtime": 0.2.12 + '@napi-rs/wasm-runtime': 0.2.12 optional: true - "@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': optional: true - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': optional: true - "@unrs/resolver-binding-win32-x64-msvc@1.11.1": + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - "@yarnpkg/lockfile@1.1.0": {} + '@yarnpkg/lockfile@1.1.0': {} - "@yarnpkg/parsers@3.0.2": + '@yarnpkg/parsers@3.0.2': dependencies: js-yaml: 3.14.2 tslib: 2.8.1 - "@zkochan/js-yaml@0.0.7": + '@zkochan/js-yaml@0.0.7': dependencies: argparse: 2.0.1 @@ -8035,9 +5450,9 @@ snapshots: babel-jest@30.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 - "@jest/transform": 30.2.0 - "@types/babel__core": 7.20.5 + '@babel/core': 7.28.5 + '@jest/transform': 30.2.0 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 7.0.1 babel-preset-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 @@ -8048,9 +5463,9 @@ snapshots: babel-plugin-istanbul@7.0.1: dependencies: - "@babel/helper-plugin-utils": 7.27.1 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 6.0.3 test-exclude: 6.0.0 transitivePeerDependencies: @@ -8058,30 +5473,30 @@ snapshots: babel-plugin-jest-hoist@30.2.0: dependencies: - "@types/babel__core": 7.20.5 + '@types/babel__core': 7.20.5 babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.28.5) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.28.5) - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.28.5) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.5) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.28.5) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.28.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) babel-preset-jest@30.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) @@ -8146,7 +5561,7 @@ snapshots: cacache@18.0.4: dependencies: - "@npmcli/fs": 3.1.1 + '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 glob: 10.5.0 lru-cache: 10.4.3 @@ -8371,7 +5786,7 @@ snapshots: cross-env@10.1.0: dependencies: - "@epic-web/invariant": 1.0.0 + '@epic-web/invariant': 1.0.0 cross-spawn: 7.0.6 cross-spawn@7.0.6: @@ -8520,7 +5935,7 @@ snapshots: dependencies: eslint: 9.39.2 optionalDependencies: - "@typescript-eslint/eslint-plugin": 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) eslint-scope@8.4.0: dependencies: @@ -8533,18 +5948,18 @@ snapshots: eslint@9.39.2: dependencies: - "@eslint-community/eslint-utils": 4.9.1(eslint@9.39.2) - "@eslint-community/regexpp": 4.12.2 - "@eslint/config-array": 0.21.1 - "@eslint/config-helpers": 0.4.2 - "@eslint/core": 0.17.0 - "@eslint/eslintrc": 3.3.3 - "@eslint/js": 9.39.2 - "@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 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@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 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -8620,8 +6035,8 @@ snapshots: expect@30.2.0: dependencies: - "@jest/expect-utils": 30.2.0 - "@jest/get-type": 30.1.0 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 jest-matcher-utils: 30.2.0 jest-message-util: 30.2.0 jest-mock: 30.2.0 @@ -8635,8 +6050,8 @@ snapshots: fast-glob@3.3.3: dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + '@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 @@ -8761,7 +6176,7 @@ snapshots: get-pkg-repo@4.2.1: dependencies: - "@hutson/parse-repository-url": 3.0.2 + '@hutson/parse-repository-url': 3.0.2 hosted-git-info: 4.1.0 through2: 2.0.5 yargs: 16.2.0 @@ -8856,9 +6271,11 @@ snapshots: globals@14.0.0: {} + globals@17.8.0: {} + globby@15.0.0: dependencies: - "@sindresorhus/merge-streams": 4.0.0 + '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 ignore: 7.0.5 path-type: 6.0.0 @@ -8977,7 +6394,7 @@ snapshots: init-package-json@6.0.3: dependencies: - "@npmcli/package-json": 5.2.0 + '@npmcli/package-json': 5.2.0 npm-package-arg: 11.0.2 promzard: 1.0.2 read: 3.0.1 @@ -8989,7 +6406,7 @@ snapshots: inquirer@8.2.7(@types/node@22.19.1): dependencies: - "@inquirer/external-editor": 1.0.3(@types/node@22.19.1) + '@inquirer/external-editor': 1.0.3(@types/node@22.19.1) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -9005,7 +6422,7 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 transitivePeerDependencies: - - "@types/node" + - '@types/node' ip-address@10.1.0: {} @@ -9084,9 +6501,9 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - "@babel/core": 7.28.5 - "@babel/parser": 7.28.6 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.6 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 transitivePeerDependencies: @@ -9100,7 +6517,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: @@ -9113,13 +6530,13 @@ snapshots: jackspeak@3.4.3: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 optionalDependencies: - "@pkgjs/parseargs": 0.11.0 + '@pkgjs/parseargs': 0.11.0 jackspeak@4.1.1: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 jake@10.9.4: dependencies: @@ -9135,11 +6552,11 @@ snapshots: jest-circus@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/expect": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.0 @@ -9161,9 +6578,9 @@ snapshots: jest-cli@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: - "@jest/core": 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 @@ -9172,7 +6589,7 @@ snapshots: jest-validate: 30.2.0 yargs: 17.7.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - esbuild-register - supports-color @@ -9180,11 +6597,11 @@ snapshots: jest-config@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: - "@babel/core": 7.28.5 - "@jest/get-type": 30.1.0 - "@jest/pattern": 30.0.1 - "@jest/test-sequencer": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 babel-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 4.3.1 @@ -9205,7 +6622,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - "@types/node": 22.19.1 + '@types/node': 22.19.1 ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros @@ -9220,8 +6637,8 @@ snapshots: jest-diff@30.2.0: dependencies: - "@jest/diff-sequences": 30.0.1 - "@jest/get-type": 30.1.0 + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 chalk: 4.1.2 pretty-format: 30.2.0 @@ -9231,18 +6648,18 @@ snapshots: jest-each@30.2.0: dependencies: - "@jest/get-type": 30.1.0 - "@jest/types": 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 chalk: 4.1.2 jest-util: 30.2.0 pretty-format: 30.2.0 jest-environment-node@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/fake-timers": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 jest-mock: 30.2.0 jest-util: 30.2.0 jest-validate: 30.2.0 @@ -9251,8 +6668,8 @@ snapshots: jest-haste-map@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9266,21 +6683,21 @@ snapshots: jest-leak-detector@30.2.0: dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 pretty-format: 30.2.0 jest-matcher-utils@30.2.0: dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 chalk: 4.1.2 jest-diff: 30.2.0 pretty-format: 30.2.0 jest-message-util@30.2.0: dependencies: - "@babel/code-frame": 7.27.1 - "@jest/types": 30.2.0 - "@types/stack-utils": 2.0.3 + '@babel/code-frame': 7.27.1 + '@jest/types': 30.2.0 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.8 @@ -9290,8 +6707,8 @@ snapshots: jest-mock@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 jest-util: 30.2.0 jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): @@ -9320,12 +6737,12 @@ snapshots: jest-runner@30.2.0: dependencies: - "@jest/console": 30.2.0 - "@jest/environment": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/console': 30.2.0 + '@jest/environment': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -9347,14 +6764,14 @@ snapshots: jest-runtime@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/fake-timers": 30.2.0 - "@jest/globals": 30.2.0 - "@jest/source-map": 30.0.1 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/globals': 30.2.0 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 chalk: 4.1.2 cjs-module-lexer: 2.1.1 collect-v8-coverage: 1.0.3 @@ -9374,16 +6791,16 @@ snapshots: jest-snapshot@30.2.0: dependencies: - "@babel/core": 7.28.5 - "@babel/generator": 7.28.6 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.5) - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.5) - "@babel/types": 7.28.6 - "@jest/expect-utils": 30.2.0 - "@jest/get-type": 30.1.0 - "@jest/snapshot-utils": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.6 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 30.2.0 @@ -9400,8 +6817,8 @@ snapshots: jest-util@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 chalk: 4.1.2 ci-info: 4.3.1 graceful-fs: 4.2.11 @@ -9409,8 +6826,8 @@ snapshots: jest-validate@30.2.0: dependencies: - "@jest/get-type": 30.1.0 - "@jest/types": 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 camelcase: 6.3.0 chalk: 4.1.2 leven: 3.1.0 @@ -9418,9 +6835,9 @@ snapshots: jest-watcher@30.2.0: dependencies: - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.1 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -9429,20 +6846,20 @@ snapshots: jest-worker@30.2.0: dependencies: - "@types/node": 22.19.1 - "@ungap/structured-clone": 1.3.0 + '@types/node': 22.19.1 + '@ungap/structured-clone': 1.3.0 jest-util: 30.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: - "@jest/core": 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) - "@jest/types": 30.2.0 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) + '@jest/types': 30.2.0 import-local: 3.2.0 jest-cli: 30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - esbuild-register - supports-color @@ -9509,13 +6926,13 @@ snapshots: lerna@8.2.4(@types/node@22.19.1)(encoding@0.1.13): dependencies: - "@lerna/create": 8.2.4(@types/node@22.19.1)(encoding@0.1.13)(typescript@5.9.3) - "@npmcli/arborist": 7.5.4 - "@npmcli/package-json": 5.2.0 - "@npmcli/run-script": 8.1.0 - "@nx/devkit": 20.8.3(nx@20.8.3) - "@octokit/plugin-enterprise-rest": 6.0.1 - "@octokit/rest": 20.1.2 + '@lerna/create': 8.2.4(@types/node@22.19.1)(encoding@0.1.13)(typescript@5.9.3) + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.3(nx@20.8.3) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -9589,9 +7006,9 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - "@swc-node/register" - - "@swc/core" - - "@types/node" + - '@swc-node/register' + - '@swc/core' + - '@types/node' - babel-plugin-macros - bluebird - debug @@ -9701,7 +7118,7 @@ snapshots: make-fetch-happen@13.0.1: dependencies: - "@npmcli/agent": 2.2.2 + '@npmcli/agent': 2.2.2 cacache: 18.0.4 http-cache-semantics: 4.2.0 is-lambda: 1.0.1 @@ -9730,7 +7147,7 @@ snapshots: meow@8.1.2: dependencies: - "@types/minimist": 1.2.5 + '@types/minimist': 1.2.5 camelcase-keys: 6.2.2 decamelize-keys: 1.1.1 hard-rejection: 2.1.0 @@ -9763,7 +7180,7 @@ snapshots: minimatch@10.1.1: dependencies: - "@isaacs/brace-expansion": 5.0.0 + '@isaacs/brace-expansion': 5.0.0 minimatch@3.0.5: dependencies: @@ -9846,7 +7263,7 @@ snapshots: multimatch@5.0.0: dependencies: - "@types/minimatch": 3.0.5 + '@types/minimatch': 3.0.5 array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 @@ -9952,7 +7369,7 @@ snapshots: npm-registry-fetch@17.1.0: dependencies: - "@npmcli/redact": 2.0.1 + '@npmcli/redact': 2.0.1 jsonparse: 1.3.1 make-fetch-happen: 13.0.1 minipass: 7.1.2 @@ -9969,10 +7386,10 @@ snapshots: nx@20.8.3: dependencies: - "@napi-rs/wasm-runtime": 0.2.4 - "@yarnpkg/lockfile": 1.1.0 - "@yarnpkg/parsers": 3.0.2 - "@zkochan/js-yaml": 0.0.7 + '@napi-rs/wasm-runtime': 0.2.4 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.2 + '@zkochan/js-yaml': 0.0.7 axios: 1.13.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -10004,16 +7421,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - "@nx/nx-darwin-arm64": 20.8.3 - "@nx/nx-darwin-x64": 20.8.3 - "@nx/nx-freebsd-x64": 20.8.3 - "@nx/nx-linux-arm-gnueabihf": 20.8.3 - "@nx/nx-linux-arm64-gnu": 20.8.3 - "@nx/nx-linux-arm64-musl": 20.8.3 - "@nx/nx-linux-x64-gnu": 20.8.3 - "@nx/nx-linux-x64-musl": 20.8.3 - "@nx/nx-win32-arm64-msvc": 20.8.3 - "@nx/nx-win32-x64-msvc": 20.8.3 + '@nx/nx-darwin-arm64': 20.8.3 + '@nx/nx-darwin-x64': 20.8.3 + '@nx/nx-freebsd-x64': 20.8.3 + '@nx/nx-linux-arm-gnueabihf': 20.8.3 + '@nx/nx-linux-arm64-gnu': 20.8.3 + '@nx/nx-linux-arm64-musl': 20.8.3 + '@nx/nx-linux-x64-gnu': 20.8.3 + '@nx/nx-linux-x64-musl': 20.8.3 + '@nx/nx-win32-arm64-msvc': 20.8.3 + '@nx/nx-win32-x64-msvc': 20.8.3 transitivePeerDependencies: - debug @@ -10132,11 +7549,11 @@ snapshots: pacote@18.0.6: dependencies: - "@npmcli/git": 5.0.8 - "@npmcli/installed-package-contents": 2.1.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/promise-spawn": 7.0.2 - "@npmcli/run-script": 8.1.0 + '@npmcli/git': 5.0.8 + '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 + '@npmcli/run-script': 8.1.0 cacache: 18.0.4 fs-minipass: 3.0.3 minipass: 7.1.2 @@ -10170,7 +7587,7 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.27.1 + '@babel/code-frame': 7.27.1 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10244,13 +7661,13 @@ snapshots: pretty-format@29.7.0: dependencies: - "@jest/schemas": 29.6.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 pretty-format@30.2.0: dependencies: - "@jest/schemas": 30.0.5 + '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -10315,7 +7732,7 @@ snapshots: read-pkg@5.2.0: dependencies: - "@types/normalize-package-data": 2.4.4 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -10430,12 +7847,12 @@ snapshots: sigstore@2.3.1: dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 - "@sigstore/sign": 2.3.2 - "@sigstore/tuf": 2.3.4 - "@sigstore/verify": 1.2.1 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 + '@sigstore/sign': 2.3.2 + '@sigstore/tuf': 2.3.4 + '@sigstore/verify': 1.2.1 transitivePeerDependencies: - supports-color @@ -10560,11 +7977,11 @@ snapshots: synckit@0.11.11: dependencies: - "@pkgr/core": 0.2.9 + '@pkgr/core': 0.2.9 synckit@0.11.12: dependencies: - "@pkgr/core": 0.2.9 + '@pkgr/core': 0.2.9 tar-stream@2.2.0: dependencies: @@ -10587,7 +8004,7 @@ snapshots: test-exclude@6.0.0: dependencies: - "@istanbuljs/schema": 0.1.3 + '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 @@ -10642,20 +8059,20 @@ snapshots: typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - "@babel/core": 7.28.5 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 babel-jest: 30.2.0(@babel/core@7.28.5) jest-util: 30.2.0 ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3): dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.12 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 22.19.1 + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.19.1 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10676,7 +8093,7 @@ snapshots: tuf-js@2.2.1: dependencies: - "@tufjs/models": 2.0.1 + '@tufjs/models': 2.0.1 debug: 4.4.3 make-fetch-happen: 13.0.1 transitivePeerDependencies: @@ -10727,25 +8144,25 @@ snapshots: dependencies: napi-postinstall: 0.3.4 optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi": 1.11.1 - "@unrs/resolver-binding-android-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-x64": 1.11.1 - "@unrs/resolver-binding-freebsd-x64": 1.11.1 - "@unrs/resolver-binding-linux-arm-gnueabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm-musleabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-arm64-musl": 1.11.1 - "@unrs/resolver-binding-linux-ppc64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-musl": 1.11.1 - "@unrs/resolver-binding-linux-s390x-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-musl": 1.11.1 - "@unrs/resolver-binding-wasm32-wasi": 1.11.1 - "@unrs/resolver-binding-win32-arm64-msvc": 1.11.1 - "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1 - "@unrs/resolver-binding-win32-x64-msvc": 1.11.1 + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 untildify@4.0.0: {} @@ -10769,8 +8186,8 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - "@jridgewell/trace-mapping": 0.3.31 - "@types/istanbul-lib-coverage": 2.0.6 + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: From 6db688b005f236bb7745c6bb289c526306a343bd Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 31 Jul 2026 21:01:51 +0000 Subject: [PATCH 2/3] chore(eslint-config): repo overrides + allow empty interfaces Ports of the legacy rule set surface three classes of pre-existing errors that are not code smells: empty interfaces used as extension points (relaxed in the shared config via allowInterfaces), ANSI control characters in the terminal packages, and the vendored noble-hashes port (both scoped to this repo's eslint.config.mjs). Generated __fixtures__/output is ignored. --- eslint.config.mjs | 20 +++++++++++++++++++- packages/eslint-config/LICENSE | 21 +++++++++++++++++++++ packages/eslint-config/index.mjs | 6 ++++++ packages/eslint-config/package.json | 3 ++- 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 packages/eslint-config/LICENSE diff --git a/eslint.config.mjs b/eslint.config.mjs index 8aa25b98..9d09ec8d 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,3 +1,21 @@ import base from '@constructive-io/eslint-config'; -export default [...base]; +export default [ + ...base, + { ignores: ['**/__fixtures__/output/**'] }, + { + // terminal packages match/emit ANSI escape sequences on purpose + files: ['packages/{yanse,clean-ansi,inquirerer}/**'], + rules: { + 'no-control-regex': 'off' + } + }, + { + // vendored port of noble-hashes; keep it diffable against upstream + files: ['packages/noble-hashes/**'], + rules: { + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-unused-expressions': 'off' + } + } +]; diff --git a/packages/eslint-config/LICENSE b/packages/eslint-config/LICENSE new file mode 100644 index 00000000..f9958efd --- /dev/null +++ b/packages/eslint-config/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2025 Constructive + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/eslint-config/index.mjs b/packages/eslint-config/index.mjs index 7bddd777..06063c65 100644 --- a/packages/eslint-config/index.mjs +++ b/packages/eslint-config/index.mjs @@ -33,6 +33,12 @@ export const rules = { { argsIgnorePattern: 'React|res|next|^_' } ], + // empty interfaces are used as extension points / named aliases + '@typescript-eslint/no-empty-object-type': [ + 'error', + { allowInterfaces: 'always' } + ], + '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-require-imports': 'off', '@typescript-eslint/no-var-requires': 'off', diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 126b7250..3aaa9bd2 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -15,7 +15,8 @@ "files": [ "index.mjs", "index.d.ts", - "README.md" + "README.md", + "LICENSE" ], "homepage": "https://github.com/constructive-io/dev-utils", "license": "MIT", From 49a6c52031a7d09c97563b621bb5c7c0c928de23 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 31 Jul 2026 21:02:14 +0000 Subject: [PATCH 3/3] style: apply eslint --fix across the monorepo Mechanical output of `eslint . --fix` under the new flat config (mostly import sorting and unused-import removal), plus a few hand fixes for rules autofix can't handle: useless escapes in strfy-js regexes, useless try/catch rethrows, and comments in empty catch blocks. No behavior changes. --- packages/appstash/__tests__/appstash.test.ts | 1 + .../appstash/__tests__/config-store.test.ts | 1 + packages/appstash/src/config-store.ts | 1 + packages/appstash/src/index.ts | 5 +- packages/bash-ast/test-utils/index.ts | 6 +- .../__tests__/roundtrip.test.ts | 2 +- packages/cel-proto-parser/scripts/generate.ts | 1 + .../scripts/test-roundtrip.ts | 7 +- packages/cel-proto-parser/src/ast/index.ts | 2 +- packages/cel-proto-parser/src/ast/types.ts | 23 +- .../cel-proto-parser/src/converter/index.ts | 340 ++++---- .../cel-proto-parser/src/deparser/index.ts | 2 +- packages/cel-proto-parser/src/index.ts | 32 +- .../cel-proto-parser/src/options/index.ts | 2 +- packages/cel-proto-parser/src/parser.ts | 28 +- packages/cel-proto-parser/src/utils/index.ts | 3 +- packages/cel-proto-parser/test-utils/index.ts | 18 +- packages/clean-ansi/jest.config.js | 30 +- packages/clean-ansi/src/index.ts | 38 +- packages/confstash/src/index.ts | 2 +- packages/confstash/src/loader.ts | 2 +- packages/confstash/src/loaders.ts | 52 +- packages/create-gen-app-test/dev/index.ts | 17 +- .../src/__tests__/cached-template.test.ts | 7 +- .../src/__tests__/cli.test.ts | 6 +- packages/create-gen-app-test/src/cli.ts | 173 ++-- packages/create-gen-app-test/src/index.ts | 2 +- .../src/test-utils/integration-helpers.ts | 3 +- packages/docker-parser/test-utils/index.ts | 6 +- packages/fetch/src/localhost-fetch.ts | 4 +- packages/genomic/__tests__/create-gen.test.ts | 4 +- packages/genomic/__tests__/licenses.test.ts | 2 +- .../genomic/__tests__/ttl-expiration.test.ts | 1 + packages/genomic/jest.config.js | 32 +- packages/genomic/src/cache/cache-manager.ts | 5 +- packages/genomic/src/git/git-cloner.ts | 3 +- packages/genomic/src/index.ts | 4 +- packages/genomic/src/scaffolder/index.ts | 2 +- .../src/scaffolder/template-scaffolder.ts | 20 +- packages/genomic/src/template/replace.ts | 6 +- packages/genomic/src/template/templatizer.ts | 1 + .../genomic/src/utils/npm-version-check.ts | 1 + .../http-errors/__tests__/http-errors.test.ts | 7 +- packages/http-errors/jest.config.js | 30 +- packages/inflekt/__tests__/inflection.test.ts | 16 +- packages/inflekt/__tests__/matching.test.ts | 4 +- packages/inflekt/jest.config.js | 32 +- packages/inflekt/src/case.ts | 8 +- packages/inflekt/src/index.ts | 4 +- packages/inquirerer-test/src/fixture.ts | 5 +- packages/inquirerer-test/src/harness.ts | 3 +- packages/inquirerer-test/src/index.ts | 12 +- packages/inquirerer-utils/src/index.ts | 11 +- packages/inquirerer-utils/src/update-check.ts | 4 +- packages/inquirerer/__tests__/alias.test.ts | 3 +- .../inquirerer/__tests__/autocomplete.test.ts | 2 +- packages/inquirerer/__tests__/cli.test.ts | 2 +- .../inquirerer/__tests__/defaultFrom.test.ts | 7 +- packages/inquirerer/__tests__/prompt.test.ts | 3 +- .../inquirerer/__tests__/resolvers.test.ts | 448 +++++----- packages/inquirerer/__tests__/setFrom.test.ts | 7 +- packages/inquirerer/dev/ai/aicode.ts | 41 +- packages/inquirerer/dev/demo-ai-code.ts | 13 +- packages/inquirerer/dev/demo-chat.ts | 5 +- .../inquirerer/dev/demo-prompts-engine.ts | 13 +- packages/inquirerer/dev/demo-upgrade.ts | 5 +- packages/inquirerer/dev/dev.ts | 8 +- packages/inquirerer/dev/index.ts | 7 +- .../examples/defaultFrom-example.ts | 142 ++-- packages/inquirerer/jest.config.js | 30 +- packages/inquirerer/src/cli/argv.ts | 2 +- packages/inquirerer/src/cli/index.ts | 10 +- packages/inquirerer/src/prompt.ts | 176 ++-- packages/inquirerer/src/question/types.ts | 20 +- packages/inquirerer/src/resolvers/date.ts | 12 +- packages/inquirerer/src/resolvers/git.ts | 25 +- packages/inquirerer/src/resolvers/index.ts | 100 +-- packages/inquirerer/src/resolvers/npm.ts | 23 +- .../inquirerer/src/resolvers/workspace.ts | 205 ++--- packages/inquirerer/src/ui/engine.ts | 3 +- packages/inquirerer/src/ui/index.ts | 26 +- packages/inquirerer/src/ui/progress.ts | 25 +- packages/inquirerer/src/ui/prompts.ts | 223 ++--- packages/inquirerer/src/ui/spinner.ts | 39 +- packages/inquirerer/src/ui/stream.ts | 1 + packages/inquirerer/src/ui/upgrade.ts | 261 +++--- packages/inquirerer/src/utils.ts | 2 +- packages/inquirerer/test-utils/setup.ts | 204 ++--- .../__tests__/builder/config-merging.test.ts | 2 +- .../__tests__/builder/general.test.ts | 4 +- .../builder/populate-entities.test.ts | 2 +- .../__tests__/event.inlined.test.ts | 2 +- .../__tests__/image-event.inllined.test.ts | 2 +- .../__tests__/image-event.test.ts | 2 +- packages/jsonld-tools/__tests__/image.test.ts | 2 +- .../__tests__/jsonld/graph-validation.test.ts | 60 +- .../__tests__/jsonld/jsonld-api.test.ts | 24 +- .../jsonld/property-filtering.test.ts | 2 +- packages/jsonld-tools/jest.config.js | 14 +- packages/jsonld-tools/src/builder.ts | 6 +- packages/jsonld-tools/src/config.ts | 2 +- packages/jsonld-tools/src/index.ts | 15 +- packages/jsonld-tools/src/jsonld-utils.ts | 798 +++++++++--------- packages/komoji/__tests__/casing.test.ts | 8 +- packages/komoji/src/index.ts | 8 +- .../__tests__/wait-for-pods.test.ts | 4 +- packages/kubernetes-test/src/types.ts | 4 +- packages/kubernetes-test/src/wait-for-pods.ts | 10 +- packages/nested-obj/jest.config.js | 32 +- packages/noble-hashes/src/argon2.ts | 8 +- packages/noble-hashes/src/blake1.ts | 4 +- packages/noble-hashes/src/blake2.ts | 13 +- packages/noble-hashes/src/blake3.ts | 12 +- packages/noble-hashes/src/hmac.ts | 2 +- packages/noble-hashes/src/legacy.ts | 8 +- packages/noble-hashes/src/pbkdf2.ts | 6 +- packages/noble-hashes/src/scrypt.ts | 13 +- packages/noble-hashes/src/sha2.ts | 2 +- packages/noble-hashes/src/sha3-addons.ts | 18 +- packages/noble-hashes/src/sha3.ts | 11 +- packages/noble-hashes/src/webcrypto.ts | 4 +- .../promql-ast/__tests__/builders.test.ts | 2 +- packages/promql-ast/src/deparser.ts | 96 +-- packages/promql-ast/src/index.ts | 2 +- packages/promql-ast/src/lexer.ts | 196 ++--- packages/promql-ast/src/parser.ts | 142 ++-- .../rego-deparser/__tests__/deparser.test.ts | 9 +- packages/rego-deparser/src/deparser.ts | 81 +- packages/rego-deparser/src/index.ts | 71 +- packages/schema-sdk/__tests__/hooks.test.ts | 7 +- .../__tests__/jsonpatch.intorstring.test.ts | 1 - .../schema-sdk/__tests__/jsonpatch.test.ts | 2 +- packages/schema-sdk/src/openapi.ts | 26 +- packages/schema-sdk/src/types.ts | 2 +- .../strfy-js/__tests__/assetlist-mods.test.ts | 4 +- .../__tests__/camel.assets.json.test.ts | 3 +- .../strfy-js/__tests__/camel.assets.test.ts | 3 +- .../__tests__/camel.chain.json.test.ts | 3 +- .../strfy-js/__tests__/camel.chain.test.ts | 3 +- .../strfy-js/__tests__/camel.ibc.json.test.ts | 42 +- packages/strfy-js/__tests__/camel.ibc.test.ts | 42 +- .../strfy-js/__tests__/default-values.test.ts | 52 +- packages/strfy-js/__tests__/includes.test.ts | 28 +- packages/strfy-js/__tests__/odd-props.test.ts | 10 +- .../__tests__/property-rename.test.ts | 2 +- .../strfy-js/__tests__/stringify.json.test.ts | 2 +- packages/strfy-js/__tests__/stringify.test.ts | 2 +- packages/strfy-js/__tests__/strings.test.ts | 6 +- packages/strfy-js/jest.config.js | 32 +- packages/strfy-js/src/js.ts | 106 +-- packages/strfy-js/src/utils.ts | 6 +- packages/toml-ast/__tests__/parser.test.ts | 2 +- packages/toml-ast/src/index.ts | 18 +- packages/visual-diff/__tests__/diff.test.ts | 2 +- .../visual-diff/__tests__/highlight.test.ts | 2 +- packages/visual-diff/__tests__/render.test.ts | 2 +- packages/visual-diff/__tests__/themes.test.ts | 11 +- .../dev/fixtures/typescript-new.ts | 2 +- packages/visual-diff/dev/index.ts | 2 +- packages/visual-diff/src/diff.ts | 20 +- packages/visual-diff/src/index.ts | 91 +- packages/visual-diff/src/render/html.ts | 45 +- packages/visual-diff/src/render/index.ts | 10 +- packages/visual-diff/src/render/terminal.ts | 42 +- packages/visual-diff/src/themes.ts | 2 +- packages/yamlize-cli/jest.config.js | 32 +- packages/yamlize-cli/src/commands.ts | 2 +- packages/yamlize-cli/src/index.ts | 2 +- packages/yamlize/__tests__/merge.test.ts | 2 +- packages/yamlize/__tests__/yamlize.test.ts | 4 +- packages/yamlize/jest.config.js | 32 +- packages/yamlize/src/index.ts | 9 +- packages/yamlize/src/parse.ts | 2 +- packages/yamlize/src/yamlize.ts | 2 +- packages/yanse/__tests__/yanse.test.ts | 2 +- packages/yanse/src/index.ts | 2 +- 176 files changed, 2763 insertions(+), 2792 deletions(-) diff --git a/packages/appstash/__tests__/appstash.test.ts b/packages/appstash/__tests__/appstash.test.ts index bcce8cd9..498b1a2a 100644 --- a/packages/appstash/__tests__/appstash.test.ts +++ b/packages/appstash/__tests__/appstash.test.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; + import { appstash, ensure, resolve } from '../src'; describe('appstash', () => { diff --git a/packages/appstash/__tests__/config-store.test.ts b/packages/appstash/__tests__/config-store.test.ts index 3e2d337c..16131724 100644 --- a/packages/appstash/__tests__/config-store.test.ts +++ b/packages/appstash/__tests__/config-store.test.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; + import { createConfigStore } from '../src'; describe('createConfigStore', () => { diff --git a/packages/appstash/src/config-store.ts b/packages/appstash/src/config-store.ts index 29ba6f88..e2b4daba 100644 --- a/packages/appstash/src/config-store.ts +++ b/packages/appstash/src/config-store.ts @@ -1,5 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; + import { appstash, resolve } from './index'; export interface ContextTargetEndpoint { diff --git a/packages/appstash/src/index.ts b/packages/appstash/src/index.ts index 68010d9d..4036c24d 100644 --- a/packages/appstash/src/index.ts +++ b/packages/appstash/src/index.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; -import * as path from 'path'; import * as os from 'os'; +import * as path from 'path'; /** * Result from appstash() containing all resolved directory paths @@ -56,6 +56,7 @@ function getHomeDir(): string | null { return home; } } catch { + // ignore } return null; } @@ -275,7 +276,6 @@ export function resolve( return path.join(dirs[kind], ...parts); } -export { createConfigStore } from './config-store'; export type { ClientConfig, ConfigStore, @@ -286,3 +286,4 @@ export type { Credentials, GlobalSettings, } from './config-store'; +export { createConfigStore } from './config-store'; diff --git a/packages/bash-ast/test-utils/index.ts b/packages/bash-ast/test-utils/index.ts index 5b437985..b60681f8 100644 --- a/packages/bash-ast/test-utils/index.ts +++ b/packages/bash-ast/test-utils/index.ts @@ -102,11 +102,7 @@ export class FixtureTestUtils extends TestUtils { } const entries = this.getTestEntries(filters); for (const [relativePath, source] of entries) { - try { - await this.expectAstMatch(relativePath, source); - } catch (err) { - throw err; - } + await this.expectAstMatch(relativePath, source); } } } diff --git a/packages/cel-proto-parser/__tests__/roundtrip.test.ts b/packages/cel-proto-parser/__tests__/roundtrip.test.ts index 47700ceb..3a382d0a 100644 --- a/packages/cel-proto-parser/__tests__/roundtrip.test.ts +++ b/packages/cel-proto-parser/__tests__/roundtrip.test.ts @@ -10,8 +10,8 @@ * manually constructed ASTs that match the @marcbachmann/cel-js format. */ -import { deparse, Expr } from '../src/deparser'; import { convertToProtoExpr, MarcAstNode } from '../src/converter'; +import { deparse } from '../src/deparser'; describe('CEL AST Converter', () => { describe('Value Conversion', () => { diff --git a/packages/cel-proto-parser/scripts/generate.ts b/packages/cel-proto-parser/scripts/generate.ts index f9580258..329c1995 100644 --- a/packages/cel-proto-parser/scripts/generate.ts +++ b/packages/cel-proto-parser/scripts/generate.ts @@ -1,4 +1,5 @@ import { join, resolve } from 'path'; + import { CelProtoParser, CelProtoParserOptions } from '../src'; const inFile: string = join(__dirname, '../__fixtures__/syntax.proto'); diff --git a/packages/cel-proto-parser/scripts/test-roundtrip.ts b/packages/cel-proto-parser/scripts/test-roundtrip.ts index fa27d6b4..a3d3ca13 100644 --- a/packages/cel-proto-parser/scripts/test-roundtrip.ts +++ b/packages/cel-proto-parser/scripts/test-roundtrip.ts @@ -10,12 +10,13 @@ */ import { parse } from '@marcbachmann/cel-js'; -import { deparse, Expr } from '../src/deparser'; -import { convertToProtoExpr, MarcAstNode } from '../src/converter'; import { readFileSync } from 'fs'; -import { resolve, dirname } from 'path'; +import { dirname,resolve } from 'path'; import { fileURLToPath } from 'url'; +import { convertToProtoExpr, MarcAstNode } from '../src/converter'; +import { deparse, Expr } from '../src/deparser'; + const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); diff --git a/packages/cel-proto-parser/src/ast/index.ts b/packages/cel-proto-parser/src/ast/index.ts index dc5ee069..968a2867 100644 --- a/packages/cel-proto-parser/src/ast/index.ts +++ b/packages/cel-proto-parser/src/ast/index.ts @@ -1,2 +1,2 @@ -export * from './types'; export * from './enums'; +export * from './types'; diff --git a/packages/cel-proto-parser/src/ast/types.ts b/packages/cel-proto-parser/src/ast/types.ts index 54ddfb19..f0275272 100644 --- a/packages/cel-proto-parser/src/ast/types.ts +++ b/packages/cel-proto-parser/src/ast/types.ts @@ -1,6 +1,7 @@ import * as t from '@babel/types'; + import { ResolvedCelProtoParserOptions } from '../options'; -import { toCamelCase, getFieldName, createNamedImport } from '../utils'; +import { createNamedImport,getFieldName, toCamelCase } from '../utils'; // Type mapping from protobuf to TypeScript const PROTO_TO_TS_TYPE: Record = { @@ -35,16 +36,16 @@ export function resolveTypeName(typeName: string): t.TSType { const tsType = PROTO_TO_TS_TYPE[typeName]; if (tsType) { switch (tsType) { - case 'string': - return t.tsStringKeyword(); - case 'boolean': - return t.tsBooleanKeyword(); - case 'number': - return t.tsNumberKeyword(); - case 'bigint': - return t.tsBigIntKeyword(); - default: - return t.tsTypeReference(t.identifier(tsType)); + case 'string': + return t.tsStringKeyword(); + case 'boolean': + return t.tsBooleanKeyword(); + case 'number': + return t.tsNumberKeyword(); + case 'bigint': + return t.tsBigIntKeyword(); + default: + return t.tsTypeReference(t.identifier(tsType)); } } diff --git a/packages/cel-proto-parser/src/converter/index.ts b/packages/cel-proto-parser/src/converter/index.ts index 97d55c92..9991ccd0 100644 --- a/packages/cel-proto-parser/src/converter/index.ts +++ b/packages/cel-proto-parser/src/converter/index.ts @@ -5,7 +5,7 @@ * used by our deparser. */ -import type { Expr, Constant, Call, CreateList, CreateStruct, Entry } from '../deparser'; +import type { Constant,Expr } from '../deparser'; /** * AST node from @marcbachmann/cel-js @@ -23,191 +23,191 @@ export function convertToProtoExpr(node: MarcAstNode, idCounter = { value: 1 }): const id = BigInt(idCounter.value++); switch (node.op) { - case 'value': - return { - id, - constExpr: convertValue(node.args) - }; + case 'value': + return { + id, + constExpr: convertValue(node.args) + }; - case 'id': - return { - id, - identExpr: { name: node.args as string } - }; + case 'id': + return { + id, + identExpr: { name: node.args as string } + }; - case '.': { - const args = node.args as [MarcAstNode, string]; - return { - id, - selectExpr: { - operand: convertToProtoExpr(args[0], idCounter), - field: args[1] - } - }; - } + case '.': { + const args = node.args as [MarcAstNode, string]; + return { + id, + selectExpr: { + operand: convertToProtoExpr(args[0], idCounter), + field: args[1] + } + }; + } - case 'call': { - const args = node.args as [string, MarcAstNode[]]; - const funcName = args[0]; - const funcArgs = args[1]; + case 'call': { + const args = node.args as [string, MarcAstNode[]]; + const funcName = args[0]; + const funcArgs = args[1]; - // Special handling for has() macro - if (funcName === 'has' && funcArgs.length === 1) { - const selectNode = funcArgs[0]; - if (selectNode.op === '.') { - const selectArgs = selectNode.args as [MarcAstNode, string]; - return { - id, - selectExpr: { - operand: convertToProtoExpr(selectArgs[0], idCounter), - field: selectArgs[1], - testOnly: true - } - }; - } + // Special handling for has() macro + if (funcName === 'has' && funcArgs.length === 1) { + const selectNode = funcArgs[0]; + if (selectNode.op === '.') { + const selectArgs = selectNode.args as [MarcAstNode, string]; + return { + id, + selectExpr: { + operand: convertToProtoExpr(selectArgs[0], idCounter), + field: selectArgs[1], + testOnly: true + } + }; } - - return { - id, - callExpr: { - function: funcName, - args: funcArgs.map((a) => convertToProtoExpr(a, idCounter)) - } - }; } - case 'rcall': { - // Receiver call: target.method(args) - const args = node.args as [string, MarcAstNode, MarcAstNode[]]; - const funcName = args[0]; - const target = args[1]; - const funcArgs = args[2]; + return { + id, + callExpr: { + function: funcName, + args: funcArgs.map((a) => convertToProtoExpr(a, idCounter)) + } + }; + } - return { - id, - callExpr: { - target: convertToProtoExpr(target, idCounter), - function: funcName, - args: funcArgs.map((a) => convertToProtoExpr(a, idCounter)) - } - }; - } + case 'rcall': { + // Receiver call: target.method(args) + const args = node.args as [string, MarcAstNode, MarcAstNode[]]; + const funcName = args[0]; + const target = args[1]; + const funcArgs = args[2]; - case 'list': { - const elements = node.args as MarcAstNode[]; - return { - id, - listExpr: { - elements: elements.map((e) => convertToProtoExpr(e, idCounter)) - } - }; - } + return { + id, + callExpr: { + target: convertToProtoExpr(target, idCounter), + function: funcName, + args: funcArgs.map((a) => convertToProtoExpr(a, idCounter)) + } + }; + } - case 'map': { - const entries = node.args as [MarcAstNode, MarcAstNode][]; - return { - id, - structExpr: { - entries: entries.map(([key, value]) => ({ - id: BigInt(idCounter.value++), - mapKey: convertToProtoExpr(key, idCounter), - value: convertToProtoExpr(value, idCounter) - })) - } - }; - } + case 'list': { + const elements = node.args as MarcAstNode[]; + return { + id, + listExpr: { + elements: elements.map((e) => convertToProtoExpr(e, idCounter)) + } + }; + } - case 'struct': { - const args = node.args as [string, [string, MarcAstNode][]]; - const messageName = args[0]; - const fields = args[1]; + case 'map': { + const entries = node.args as [MarcAstNode, MarcAstNode][]; + return { + id, + structExpr: { + entries: entries.map(([key, value]) => ({ + id: BigInt(idCounter.value++), + mapKey: convertToProtoExpr(key, idCounter), + value: convertToProtoExpr(value, idCounter) + })) + } + }; + } - return { - id, - structExpr: { - messageName, - entries: fields.map(([fieldKey, value]) => ({ - id: BigInt(idCounter.value++), - fieldKey, - value: convertToProtoExpr(value, idCounter) - })) - } - }; - } + case 'struct': { + const args = node.args as [string, [string, MarcAstNode][]]; + const messageName = args[0]; + const fields = args[1]; - case '?:': { - // Ternary conditional - const args = node.args as [MarcAstNode, MarcAstNode, MarcAstNode]; - return { - id, - callExpr: { - function: '_?_:_', - args: args.map((a) => convertToProtoExpr(a, idCounter)) - } - }; - } + return { + id, + structExpr: { + messageName, + entries: fields.map(([fieldKey, value]) => ({ + id: BigInt(idCounter.value++), + fieldKey, + value: convertToProtoExpr(value, idCounter) + })) + } + }; + } - case 'index': - case '[]': { - // Index access: obj[key] - const args = node.args as [MarcAstNode, MarcAstNode]; - return { - id, - callExpr: { - function: '_[_]', - args: args.map((a) => convertToProtoExpr(a, idCounter)) - } - }; - } + case '?:': { + // Ternary conditional + const args = node.args as [MarcAstNode, MarcAstNode, MarcAstNode]; + return { + id, + callExpr: { + function: '_?_:_', + args: args.map((a) => convertToProtoExpr(a, idCounter)) + } + }; + } - // Binary operators - case '+': - case '-': - case '*': - case '/': - case '%': - case '==': - case '!=': - case '<': - case '<=': - case '>': - case '>=': - case '&&': - case '||': - case 'in': { - const args = node.args as [MarcAstNode, MarcAstNode]; - const funcName = getBinaryOperatorName(node.op); - return { - id, - callExpr: { - function: funcName, - args: args.map((a) => convertToProtoExpr(a, idCounter)) - } - }; - } + case 'index': + case '[]': { + // Index access: obj[key] + const args = node.args as [MarcAstNode, MarcAstNode]; + return { + id, + callExpr: { + function: '_[_]', + args: args.map((a) => convertToProtoExpr(a, idCounter)) + } + }; + } - // Unary operators - case '!': - case '!_': - case 'neg': - case '-_': { - // Args can be either a single node or an array with one element - const argNode = Array.isArray(node.args) - ? (node.args as MarcAstNode[])[0] - : (node.args as MarcAstNode); - const funcName = node.op === '!' || node.op === '!_' ? '!_' : '-_'; - return { - id, - callExpr: { - function: funcName, - args: [convertToProtoExpr(argNode, idCounter)] - } - }; - } + // Binary operators + case '+': + case '-': + case '*': + case '/': + case '%': + case '==': + case '!=': + case '<': + case '<=': + case '>': + case '>=': + case '&&': + case '||': + case 'in': { + const args = node.args as [MarcAstNode, MarcAstNode]; + const funcName = getBinaryOperatorName(node.op); + return { + id, + callExpr: { + function: funcName, + args: args.map((a) => convertToProtoExpr(a, idCounter)) + } + }; + } + + // Unary operators + case '!': + case '!_': + case 'neg': + case '-_': { + // Args can be either a single node or an array with one element + const argNode = Array.isArray(node.args) + ? (node.args as MarcAstNode[])[0] + : (node.args as MarcAstNode); + const funcName = node.op === '!' || node.op === '!_' ? '!_' : '-_'; + return { + id, + callExpr: { + function: funcName, + args: [convertToProtoExpr(argNode, idCounter)] + } + }; + } - default: - console.warn(`Unknown operator: ${node.op}`); - return { id }; + default: + console.warn(`Unknown operator: ${node.op}`); + return { id }; } } @@ -271,7 +271,7 @@ function getBinaryOperatorName(op: string): string { '>=': '_>=_', '&&': '_&&_', '||': '_||_', - 'in': '_in_' + in: '_in_' }; return mapping[op] || op; } diff --git a/packages/cel-proto-parser/src/deparser/index.ts b/packages/cel-proto-parser/src/deparser/index.ts index 1b2b4827..50057183 100644 --- a/packages/cel-proto-parser/src/deparser/index.ts +++ b/packages/cel-proto-parser/src/deparser/index.ts @@ -35,7 +35,7 @@ const BINARY_OPERATORS: Record = '_>_': { symbol: '>', precedence: PRECEDENCE.RELATION }, '_>=_': { symbol: '>=', precedence: PRECEDENCE.RELATION }, '@in': { symbol: 'in', precedence: PRECEDENCE.RELATION }, - '_in_': { symbol: 'in', precedence: PRECEDENCE.RELATION }, + _in_: { symbol: 'in', precedence: PRECEDENCE.RELATION }, '_+_': { symbol: '+', precedence: PRECEDENCE.ADDITION }, '_-_': { symbol: '-', precedence: PRECEDENCE.ADDITION }, '_*_': { symbol: '*', precedence: PRECEDENCE.MULTIPLICATION }, diff --git a/packages/cel-proto-parser/src/index.ts b/packages/cel-proto-parser/src/index.ts index 20a86f41..690ee264 100644 --- a/packages/cel-proto-parser/src/index.ts +++ b/packages/cel-proto-parser/src/index.ts @@ -1,23 +1,21 @@ -export { CelProtoParser } from './parser'; -export { - CelProtoParserOptions, - ResolvedCelProtoParserOptions, - getOptionsWithDefaults -} from './options'; +export * from './ast'; +export { convertToProtoExpr, MarcAstNode } from './converter'; export { - deparse, - PRECEDENCE, - DeparserOptions, - Expr, - Constant, - Ident, - Select, Call, + Comprehension, + Constant, CreateList, CreateStruct, + deparse, + DeparserOptions, Entry, - Comprehension -} from './deparser'; -export { convertToProtoExpr, MarcAstNode } from './converter'; -export * from './ast'; + Expr, + Ident, + PRECEDENCE, + Select} from './deparser'; +export { + CelProtoParserOptions, + getOptionsWithDefaults, + ResolvedCelProtoParserOptions} from './options'; +export { CelProtoParser } from './parser'; export * from './utils'; diff --git a/packages/cel-proto-parser/src/options/index.ts b/packages/cel-proto-parser/src/options/index.ts index c7098fd4..d7da1d68 100644 --- a/packages/cel-proto-parser/src/options/index.ts +++ b/packages/cel-proto-parser/src/options/index.ts @@ -1,2 +1,2 @@ -export * from './types'; export * from './defaults'; +export * from './types'; diff --git a/packages/cel-proto-parser/src/parser.ts b/packages/cel-proto-parser/src/parser.ts index a595304a..2281d409 100644 --- a/packages/cel-proto-parser/src/parser.ts +++ b/packages/cel-proto-parser/src/parser.ts @@ -1,24 +1,22 @@ -import { Root, parse } from '@launchql/protobufjs'; -import { readFileSync, writeFileSync, mkdirSync } from 'fs'; -import { join, dirname } from 'path'; -import * as t from '@babel/types'; import generate from '@babel/generator'; +import * as t from '@babel/types'; +import { parse,Root } from '@launchql/protobufjs'; +import { mkdirSync,readFileSync, writeFileSync } from 'fs'; +import {join } from 'path'; -import { - CelProtoParserOptions, - ResolvedCelProtoParserOptions, - getOptionsWithDefaults -} from './options'; import { convertTypeToTsInterface, - generateNodeUnionType, generateAstHelperMethods, - generateTypeImportSpecifiers, - generateEnumImports -} from './ast'; -import { convertEnumToTsUnionType, convertEnumToTsEnumDeclaration } from './ast/enums'; -import { createDefaultImport, convertAstToCode } from './utils'; + generateEnumImports, + generateNodeUnionType, + generateTypeImportSpecifiers} from './ast'; +import { convertEnumToTsEnumDeclaration,convertEnumToTsUnionType } from './ast/enums'; import { generateDeparserCode } from './deparser'; +import { + CelProtoParserOptions, + getOptionsWithDefaults, + ResolvedCelProtoParserOptions} from './options'; +import {createDefaultImport } from './utils'; const GENERATED_HEADER = `/** * This file was automatically generated by cel-proto-parser. diff --git a/packages/cel-proto-parser/src/utils/index.ts b/packages/cel-proto-parser/src/utils/index.ts index ed6c32af..3e82848a 100644 --- a/packages/cel-proto-parser/src/utils/index.ts +++ b/packages/cel-proto-parser/src/utils/index.ts @@ -1,7 +1,8 @@ -import * as t from '@babel/types'; import generate from '@babel/generator'; +import * as t from '@babel/types'; import { mkdirSync, writeFileSync } from 'fs'; import { dirname } from 'path'; + import { ResolvedCelProtoParserOptions } from '../options'; /** diff --git a/packages/cel-proto-parser/test-utils/index.ts b/packages/cel-proto-parser/test-utils/index.ts index 5b9d7e00..b847ac2a 100644 --- a/packages/cel-proto-parser/test-utils/index.ts +++ b/packages/cel-proto-parser/test-utils/index.ts @@ -8,10 +8,10 @@ */ import { parse } from '@marcbachmann/cel-js'; -import { deparse, Expr } from '../src/deparser'; -import { convertToProtoExpr, MarcAstNode } from '../src/converter'; import { readFileSync } from 'fs'; -import { join } from 'path'; + +import { convertToProtoExpr, MarcAstNode } from '../src/converter'; +import { deparse, Expr } from '../src/deparser'; export interface RoundTripResult { original: string; @@ -156,11 +156,11 @@ export function expectRoundTrip( '', result.redeparsed !== null ? [ - 'Re-deparsed CEL:', - '──────────────────────────────────────────────────────────────────────────────', - result.redeparsed, - '' - ].join('\n') + 'Re-deparsed CEL:', + '──────────────────────────────────────────────────────────────────────────────', + result.redeparsed, + '' + ].join('\n') : '', 'Error:', '──────────────────────────────────────────────────────────────────────────────', @@ -271,4 +271,4 @@ export class CelTest { } } -export { Expr, deparse, parseCel as parse }; +export { deparse, Expr, parseCel as parse }; diff --git a/packages/clean-ansi/jest.config.js b/packages/clean-ansi/jest.config.js index 2659bc28..057a9420 100644 --- a/packages/clean-ansi/jest.config.js +++ b/packages/clean-ansi/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] }; diff --git a/packages/clean-ansi/src/index.ts b/packages/clean-ansi/src/index.ts index 1c6e9cf5..4e45c7e8 100644 --- a/packages/clean-ansi/src/index.ts +++ b/packages/clean-ansi/src/index.ts @@ -6,29 +6,29 @@ * - Other escape sequences: \u001b followed by single characters */ export function cleanAnsi(input: string): string { - if (!input) return ''; + if (!input) return ''; - // Match CSI (Control Sequence Introducer) sequences: ESC[ followed by parameters and final character - // Examples: \u001b[31m, \u001b[A, \u001b[2J, \u001b[?25h - const csiPattern = /\u001b\[[0-9;?]*[A-Za-z]/g; + // Match CSI (Control Sequence Introducer) sequences: ESC[ followed by parameters and final character + // Examples: \u001b[31m, \u001b[A, \u001b[2J, \u001b[?25h + const csiPattern = /\u001b\[[0-9;?]*[A-Za-z]/g; - // Match OSC (Operating System Command) sequences: ESC] followed by parameters and terminator - // Terminated by BEL (\u0007) or ESC\ (\u001b\\) - // Examples: \u001b]0;title\u0007, \u001b]2;title\u001b\\ - // Handle BEL-terminated sequences - const oscBelPattern = /\u001b\][^\u0007]*\u0007/g; - // Handle ESC\-terminated sequences (more complex, need to match ESC\ specifically) - const oscEscPattern = /\u001b\][^\u001b]*\u001b\\/g; + // Match OSC (Operating System Command) sequences: ESC] followed by parameters and terminator + // Terminated by BEL (\u0007) or ESC\ (\u001b\\) + // Examples: \u001b]0;title\u0007, \u001b]2;title\u001b\\ + // Handle BEL-terminated sequences + const oscBelPattern = /\u001b\][^\u0007]*\u0007/g; + // Handle ESC\-terminated sequences (more complex, need to match ESC\ specifically) + const oscEscPattern = /\u001b\][^\u001b]*\u001b\\/g; - // Match other escape sequences: ESC followed by single character - // Examples: \u001bD (index), \u001bM (reverse index), \u001b7 (save cursor), \u001b8 (restore cursor) - const otherEscPattern = /\u001b[0-9A-Za-z]/g; + // Match other escape sequences: ESC followed by single character + // Examples: \u001bD (index), \u001bM (reverse index), \u001b7 (save cursor), \u001b8 (restore cursor) + const otherEscPattern = /\u001b[0-9A-Za-z]/g; - return input - .replace(csiPattern, '') - .replace(oscBelPattern, '') - .replace(oscEscPattern, '') - .replace(otherEscPattern, ''); + return input + .replace(csiPattern, '') + .replace(oscBelPattern, '') + .replace(oscEscPattern, '') + .replace(otherEscPattern, ''); } // Alias for compatibility diff --git a/packages/confstash/src/index.ts b/packages/confstash/src/index.ts index 0383c5e6..6d8d7849 100644 --- a/packages/confstash/src/index.ts +++ b/packages/confstash/src/index.ts @@ -9,7 +9,7 @@ export { defaultSearchPlaces, findConfigSync, findUpDir, type FoundConfig } from './discover'; export { expandExtends, type ExtendsContext } from './extends'; -export { createConfigLoader, defineConfig, type ConfigLoader } from './loader'; +export { type ConfigLoader,createConfigLoader, defineConfig } from './loader'; export { ConfigLoadError, loadFile, loadFileSync } from './loaders'; export { deepMerge, explainLayers, mergeLayers } from './merge'; export type { diff --git a/packages/confstash/src/loader.ts b/packages/confstash/src/loader.ts index 68754b7d..a351439d 100644 --- a/packages/confstash/src/loader.ts +++ b/packages/confstash/src/loader.ts @@ -1,6 +1,6 @@ +import { appstash, resolve as stashResolve } from 'appstash'; import * as fs from 'fs'; import * as path from 'path'; -import { appstash, resolve as stashResolve } from 'appstash'; import { defaultSearchPlaces, findConfigSync, type FoundConfig } from './discover'; import { expandExtends } from './extends'; diff --git a/packages/confstash/src/loaders.ts b/packages/confstash/src/loaders.ts index 77f6602d..6917ce8f 100644 --- a/packages/confstash/src/loaders.ts +++ b/packages/confstash/src/loaders.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; -import * as path from 'path'; import yaml from 'js-yaml'; +import * as path from 'path'; import type { FoundConfig } from './discover'; @@ -30,31 +30,31 @@ export function loadFileSync(found: FoundConfig): Record { const ext = path.extname(filepath); switch (ext) { - case '.json': - return asObject(parseJsonFile(filepath), filepath, 'JSON config'); - case '.yaml': - case '.yml': - return asObject(parseYamlFile(filepath), filepath, 'YAML config'); - case '.js': - case '.cjs': - case '.ts': - return requireModule(filepath); - case '.mjs': - throw new ConfigLoadError( - `Cannot load ESM config "${filepath}" synchronously — use the async loader (load()) instead.`, - filepath - ); - case '': { - // extensionless rc file: try JSON first, then YAML - const raw = fs.readFileSync(filepath, 'utf8'); - try { - return asObject(JSON.parse(raw), filepath, 'rc config'); - } catch { - return asObject(yaml.load(raw), filepath, 'rc config'); - } + case '.json': + return asObject(parseJsonFile(filepath), filepath, 'JSON config'); + case '.yaml': + case '.yml': + return asObject(parseYamlFile(filepath), filepath, 'YAML config'); + case '.js': + case '.cjs': + case '.ts': + return requireModule(filepath); + case '.mjs': + throw new ConfigLoadError( + `Cannot load ESM config "${filepath}" synchronously — use the async loader (load()) instead.`, + filepath + ); + case '': { + // extensionless rc file: try JSON first, then YAML + const raw = fs.readFileSync(filepath, 'utf8'); + try { + return asObject(JSON.parse(raw), filepath, 'rc config'); + } catch { + return asObject(yaml.load(raw), filepath, 'rc config'); } - default: - throw new ConfigLoadError(`Unsupported config file type: ${ext}`, filepath); + } + default: + throw new ConfigLoadError(`Unsupported config file type: ${ext}`, filepath); } } @@ -89,7 +89,7 @@ function isEsmRequireError(err: unknown): boolean { function requireModule(filepath: string): Record { try { delete require.cache[require.resolve(filepath)]; - // eslint-disable-next-line @typescript-eslint/no-var-requires + const mod = require(filepath); return asObject(mod?.default ?? mod, filepath, 'module config'); } catch (err) { diff --git a/packages/create-gen-app-test/dev/index.ts b/packages/create-gen-app-test/dev/index.ts index f0529586..465532b8 100644 --- a/packages/create-gen-app-test/dev/index.ts +++ b/packages/create-gen-app-test/dev/index.ts @@ -1,10 +1,9 @@ import * as fs from 'fs'; +import { cloneRepo, extractVariables, promptUser, replaceVariables } from 'genomic'; import { Inquirerer, ListQuestion } from 'inquirerer'; import minimist from 'minimist'; import * as path from 'path'; -import { cloneRepo, extractVariables, promptUser, replaceVariables } from 'genomic'; - const DEFAULT_REPO = 'https://github.com/constructive-io/pgpm-boilerplates/'; const OUTPUT_DIR = './test-output'; @@ -37,13 +36,13 @@ async function main() { const autoDir = argv.path === undefined && fs.existsSync(configPath) ? (() => { - try { - const parsed = JSON.parse(fs.readFileSync(configPath, 'utf8')); - return typeof parsed?.dir === 'string' ? parsed.dir : undefined; - } catch { - return undefined; - } - })() + try { + const parsed = JSON.parse(fs.readFileSync(configPath, 'utf8')); + return typeof parsed?.dir === 'string' ? parsed.dir : undefined; + } catch { + return undefined; + } + })() : undefined; const effectivePath = argv.path ?? autoDir ?? '.'; diff --git a/packages/create-gen-app-test/src/__tests__/cached-template.test.ts b/packages/create-gen-app-test/src/__tests__/cached-template.test.ts index 60f9f79d..a65ec774 100644 --- a/packages/create-gen-app-test/src/__tests__/cached-template.test.ts +++ b/packages/create-gen-app-test/src/__tests__/cached-template.test.ts @@ -1,11 +1,10 @@ +import { appstash, resolve } from 'appstash'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; -import { appstash, resolve } from 'appstash'; - -import { createFromTemplate, CacheManager, GitCloner } from '../index'; -import { buildAnswers, TEST_REPO, resolveTemplateBaseDir, TEST_BRANCH, TEST_TEMPLATE } from '../test-utils/integration-helpers'; +import { CacheManager, createFromTemplate, GitCloner } from '../index'; +import { buildAnswers, resolveTemplateBaseDir, TEST_BRANCH, TEST_REPO, TEST_TEMPLATE } from '../test-utils/integration-helpers'; const DEFAULT_TEMPLATE_URL = TEST_REPO; diff --git a/packages/create-gen-app-test/src/__tests__/cli.test.ts b/packages/create-gen-app-test/src/__tests__/cli.test.ts index 67071514..05f83416 100644 --- a/packages/create-gen-app-test/src/__tests__/cli.test.ts +++ b/packages/create-gen-app-test/src/__tests__/cli.test.ts @@ -3,13 +3,13 @@ import * as path from 'path'; import { runCli } from '../cli'; import { - TEST_BRANCH, - TEST_REPO, - TEST_TEMPLATE, buildAnswers, cleanupWorkspace, createTempWorkspace, resolveTemplateBaseDir, + TEST_BRANCH, + TEST_REPO, + TEST_TEMPLATE, } from '../test-utils/integration-helpers'; jest.setTimeout(180_000); diff --git a/packages/create-gen-app-test/src/cli.ts b/packages/create-gen-app-test/src/cli.ts index 6e8a8c13..d2e13fcd 100644 --- a/packages/create-gen-app-test/src/cli.ts +++ b/packages/create-gen-app-test/src/cli.ts @@ -1,12 +1,11 @@ #!/usr/bin/env node import * as fs from 'fs'; -import * as path from 'path'; - +import { CacheManager, checkNpmVersion,GitCloner } from 'genomic'; import { Inquirerer, ListQuestion } from 'inquirerer'; import minimist, { ParsedArgs } from 'minimist'; +import * as path from 'path'; -import { CacheManager, GitCloner, checkNpmVersion } from 'genomic'; import { createFromTemplate } from './index'; const DEFAULT_REPO = 'https://github.com/constructive-io/pgpm-boilerplates.git'; @@ -150,99 +149,95 @@ export async function runCli( console.log('Template cached for future runs'); } - try { - const userProvidedPath = typeof args.path === 'string'; - const configPath = path.join(templateDir, '.boilerplates.json'); - const autoDir = - !userProvidedPath && fs.existsSync(configPath) - ? (() => { - try { - const parsed = JSON.parse(fs.readFileSync(configPath, 'utf8')); - return typeof parsed?.dir === 'string' ? parsed.dir : undefined; - } catch { - return undefined; - } - })() - : undefined; - const effectivePath = - (userProvidedPath ? args.path : undefined) ?? autoDir ?? '.'; - - const selectionRoot = path.join(templateDir, effectivePath); - if ( - !fs.existsSync(selectionRoot) || - !fs.statSync(selectionRoot).isDirectory() - ) { - throw new Error( - `Template path "${effectivePath}" does not exist in ${args.repo}` - ); - } + const userProvidedPath = typeof args.path === 'string'; + const configPath = path.join(templateDir, '.boilerplates.json'); + const autoDir = + !userProvidedPath && fs.existsSync(configPath) + ? (() => { + try { + const parsed = JSON.parse(fs.readFileSync(configPath, 'utf8')); + return typeof parsed?.dir === 'string' ? parsed.dir : undefined; + } catch { + return undefined; + } + })() + : undefined; + const effectivePath = + (userProvidedPath ? args.path : undefined) ?? autoDir ?? '.'; + + const selectionRoot = path.join(templateDir, effectivePath); + if ( + !fs.existsSync(selectionRoot) || + !fs.statSync(selectionRoot).isDirectory() + ) { + throw new Error( + `Template path "${effectivePath}" does not exist in ${args.repo}` + ); + } - const templates = fs - .readdirSync(selectionRoot, { withFileTypes: true }) - .filter((entry) => entry.isDirectory() && !entry.name.startsWith('.')) - .map((entry) => entry.name) - .sort(); + const templates = fs + .readdirSync(selectionRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory() && !entry.name.startsWith('.')) + .map((entry) => entry.name) + .sort(); - if (templates.length === 0) { - throw new Error('No template folders found in repository'); - } + if (templates.length === 0) { + throw new Error('No template folders found in repository'); + } - let selectedTemplate: string | undefined = args.template; - - if (selectedTemplate) { - if (!templates.includes(selectedTemplate)) { - throw new Error( - `Template "${selectedTemplate}" not found in ${args.repo}${ - effectivePath === '.' ? '' : `/${effectivePath}` - }` - ); - } - } else if (templates.length === 1) { - selectedTemplate = templates[0]; - console.log(`Using the only available template: ${selectedTemplate}`); - } else { - selectedTemplate = await promptForTemplate(templates); - } + let selectedTemplate: string | undefined = args.template; - if (!selectedTemplate) { - throw new Error('Template selection failed'); + if (selectedTemplate) { + if (!templates.includes(selectedTemplate)) { + throw new Error( + `Template "${selectedTemplate}" not found in ${args.repo}${ + effectivePath === '.' ? '' : `/${effectivePath}` + }` + ); } + } else if (templates.length === 1) { + selectedTemplate = templates[0]; + console.log(`Using the only available template: ${selectedTemplate}`); + } else { + selectedTemplate = await promptForTemplate(templates); + } - const normalizedBasePath = - effectivePath === '.' || effectivePath === './' - ? '' - : effectivePath.replace(/^[./]+/, '').replace(/\/+$/, ''); - const fromPath = normalizedBasePath - ? path.join(normalizedBasePath, selectedTemplate) - : selectedTemplate; - - const outputDir = resolveOutputDir(args.output, selectedTemplate); - ensureOutputDir(outputDir, Boolean(args.force)); - - const answerOverrides = extractAnswerOverrides(args); - const noTty = Boolean( - args['no-tty'] ?? - (args as Record).noTty ?? - (args as Record).tty === false - ); - - // Use the createFromTemplate function which will use the same cache - await createFromTemplate({ - templateUrl: args.repo, - branch: args.branch, - fromPath, - outputDir, - answers: answerOverrides, - noTty, - toolName: DEFAULT_TOOL_NAME, - ttl, - }); - - console.log(`\n✨ Done! Project ready at ${outputDir}`); - return { outputDir, template: selectedTemplate }; - } catch (error) { - throw error; + if (!selectedTemplate) { + throw new Error('Template selection failed'); } + + const normalizedBasePath = + effectivePath === '.' || effectivePath === './' + ? '' + : effectivePath.replace(/^[./]+/, '').replace(/\/+$/, ''); + const fromPath = normalizedBasePath + ? path.join(normalizedBasePath, selectedTemplate) + : selectedTemplate; + + const outputDir = resolveOutputDir(args.output, selectedTemplate); + ensureOutputDir(outputDir, Boolean(args.force)); + + const answerOverrides = extractAnswerOverrides(args); + const noTty = Boolean( + args['no-tty'] ?? + (args as Record).noTty ?? + (args as Record).tty === false + ); + + // Use the createFromTemplate function which will use the same cache + await createFromTemplate({ + templateUrl: args.repo, + branch: args.branch, + fromPath, + outputDir, + answers: answerOverrides, + noTty, + toolName: DEFAULT_TOOL_NAME, + ttl, + }); + + console.log(`\n✨ Done! Project ready at ${outputDir}`); + return { outputDir, template: selectedTemplate }; } function printHelp(): void { diff --git a/packages/create-gen-app-test/src/index.ts b/packages/create-gen-app-test/src/index.ts index b8ed1df2..77787156 100644 --- a/packages/create-gen-app-test/src/index.ts +++ b/packages/create-gen-app-test/src/index.ts @@ -1,7 +1,7 @@ -import * as path from 'path'; import { CacheManager } from 'genomic'; import { GitCloner } from 'genomic'; import { Templatizer } from 'genomic'; +import * as path from 'path'; // Configuration constants (top-most layer owns defaults) const DEFAULT_TOOL_NAME = 'pgpm'; diff --git a/packages/create-gen-app-test/src/test-utils/integration-helpers.ts b/packages/create-gen-app-test/src/test-utils/integration-helpers.ts index 86a60bd0..fe7c3fd3 100644 --- a/packages/create-gen-app-test/src/test-utils/integration-helpers.ts +++ b/packages/create-gen-app-test/src/test-utils/integration-helpers.ts @@ -1,9 +1,8 @@ import * as fs from 'fs'; +import { CacheManager, GitCloner } from 'genomic'; import * as os from 'os'; import * as path from 'path'; -import { CacheManager, GitCloner } from 'genomic'; - export const TEST_REPO = process.env.CREATE_GEN_TEST_REPO ?? 'https://github.com/constructive-io/pgpm-boilerplates-testing.git'; diff --git a/packages/docker-parser/test-utils/index.ts b/packages/docker-parser/test-utils/index.ts index 83b0a815..d254ee35 100644 --- a/packages/docker-parser/test-utils/index.ts +++ b/packages/docker-parser/test-utils/index.ts @@ -102,11 +102,7 @@ export class FixtureTestUtils extends TestUtils { } const entries = this.getTestEntries(filters); for (const [relativePath, source] of entries) { - try { - await this.expectAstMatch(relativePath, source); - } catch (err) { - throw err; - } + await this.expectAstMatch(relativePath, source); } } } diff --git a/packages/fetch/src/localhost-fetch.ts b/packages/fetch/src/localhost-fetch.ts index 048e524e..494bf23a 100644 --- a/packages/fetch/src/localhost-fetch.ts +++ b/packages/fetch/src/localhost-fetch.ts @@ -133,9 +133,9 @@ export function createFetch(): FetchFunction { // In Node.js, build a fetch that handles *.localhost via node:http if (typeof process !== 'undefined' && process.versions?.node) { try { - // eslint-disable-next-line @typescript-eslint/no-require-imports + const http = require('node:http'); - // eslint-disable-next-line @typescript-eslint/no-require-imports + const https = require('node:https'); _fetch = buildNodeFetch(http, https); return _fetch; diff --git a/packages/genomic/__tests__/create-gen.test.ts b/packages/genomic/__tests__/create-gen.test.ts index d1745f01..09b89650 100644 --- a/packages/genomic/__tests__/create-gen.test.ts +++ b/packages/genomic/__tests__/create-gen.test.ts @@ -1,9 +1,9 @@ +import { execSync } from 'child_process'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; -import { execSync } from 'child_process'; -import { extractVariables, promptUser, replaceVariables, ExtractedVariables, GitCloner } from '../src/index'; +import { ExtractedVariables, extractVariables, GitCloner,promptUser, replaceVariables } from '../src/index'; jest.mock('child_process', () => { return { diff --git a/packages/genomic/__tests__/licenses.test.ts b/packages/genomic/__tests__/licenses.test.ts index 61eca795..3dfe2285 100644 --- a/packages/genomic/__tests__/licenses.test.ts +++ b/packages/genomic/__tests__/licenses.test.ts @@ -1,4 +1,4 @@ -import { renderLicense, isSupportedLicense, listSupportedLicenses } from '../src/licenses'; +import { isSupportedLicense, listSupportedLicenses,renderLicense } from '../src/licenses'; describe('license templates', () => { const context = { diff --git a/packages/genomic/__tests__/ttl-expiration.test.ts b/packages/genomic/__tests__/ttl-expiration.test.ts index d112fa91..0ae29b97 100644 --- a/packages/genomic/__tests__/ttl-expiration.test.ts +++ b/packages/genomic/__tests__/ttl-expiration.test.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; + import { CacheManager } from '../src/cache/cache-manager'; import { GitCloner } from '../src/git/git-cloner'; diff --git a/packages/genomic/jest.config.js b/packages/genomic/jest.config.js index 2a14d9e0..672d123e 100644 --- a/packages/genomic/jest.config.js +++ b/packages/genomic/jest.config.js @@ -1,19 +1,19 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'], - testPathIgnorePatterns: ['/node_modules/', '/test-output/'] + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'], + testPathIgnorePatterns: ['/node_modules/', '/test-output/'] }; diff --git a/packages/genomic/src/cache/cache-manager.ts b/packages/genomic/src/cache/cache-manager.ts index 7b203904..fab1bf56 100644 --- a/packages/genomic/src/cache/cache-manager.ts +++ b/packages/genomic/src/cache/cache-manager.ts @@ -1,8 +1,9 @@ +import { appstash, AppStashResult,resolve as resolveAppstash } from 'appstash'; import * as crypto from 'crypto'; import * as fs from 'fs'; import * as path from 'path'; -import { appstash, resolve as resolveAppstash, AppStashResult } from 'appstash'; -import { CacheManagerConfig, CacheMetadata, CacheEntryInfo } from './types'; + +import { CacheEntryInfo,CacheManagerConfig, CacheMetadata } from './types'; export class CacheManager { private config: CacheManagerConfig; diff --git a/packages/genomic/src/git/git-cloner.ts b/packages/genomic/src/git/git-cloner.ts index 63ab2e07..0af57289 100644 --- a/packages/genomic/src/git/git-cloner.ts +++ b/packages/genomic/src/git/git-cloner.ts @@ -1,8 +1,9 @@ import { execSync } from 'child_process'; import * as fs from 'fs'; +import { createSpinner } from 'inquirerer'; import * as os from 'os'; import * as path from 'path'; -import { createSpinner } from 'inquirerer'; + import { GitCloneOptions, GitCloneResult } from './types'; export class GitCloner { diff --git a/packages/genomic/src/index.ts b/packages/genomic/src/index.ts index 46d4024d..6653f94f 100644 --- a/packages/genomic/src/index.ts +++ b/packages/genomic/src/index.ts @@ -1,12 +1,10 @@ -import * as fs from 'fs'; -import * as path from 'path'; import { registerDefaultResolver } from 'inquirerer'; +import { listSupportedLicenses } from './licenses'; import { extractVariables } from './template/extract'; import { promptUser } from './template/prompt'; import { replaceVariables } from './template/replace'; -import { listSupportedLicenses } from './licenses'; import { CreateGenOptions } from './types'; // Register the 'licenses' resolver for optionsFrom support diff --git a/packages/genomic/src/scaffolder/index.ts b/packages/genomic/src/scaffolder/index.ts index 2539a11b..f84f10c7 100644 --- a/packages/genomic/src/scaffolder/index.ts +++ b/packages/genomic/src/scaffolder/index.ts @@ -1,3 +1,3 @@ +export * from './scan-boilerplates'; export * from './template-scaffolder'; export * from './types'; -export * from './scan-boilerplates'; diff --git a/packages/genomic/src/scaffolder/template-scaffolder.ts b/packages/genomic/src/scaffolder/template-scaffolder.ts index 1c64fd35..8f3d3653 100644 --- a/packages/genomic/src/scaffolder/template-scaffolder.ts +++ b/packages/genomic/src/scaffolder/template-scaffolder.ts @@ -5,20 +5,20 @@ import { CacheManager } from '../cache/cache-manager'; import { GitCloner } from '../git/git-cloner'; import { Templatizer } from '../template/templatizer'; import { - TemplateScaffolderConfig, - ScaffoldOptions, - ScaffoldResult, - BoilerplatesConfig, + findBoilerplateByPath, + ScanBoilerplatesOptions, + scanBoilerplatesRecursive, + ScannedBoilerplate, +} from './scan-boilerplates'; +import { BoilerplateConfig, + BoilerplatesConfig, InspectOptions, InspectResult, + ScaffoldOptions, + ScaffoldResult, + TemplateScaffolderConfig, } from './types'; -import { - ScannedBoilerplate, - ScanBoilerplatesOptions, - scanBoilerplatesRecursive, - findBoilerplateByPath, -} from './scan-boilerplates'; /** * High-level orchestrator for template scaffolding operations. diff --git a/packages/genomic/src/template/replace.ts b/packages/genomic/src/template/replace.ts index cc9931ac..bbe934f8 100644 --- a/packages/genomic/src/template/replace.ts +++ b/packages/genomic/src/template/replace.ts @@ -3,14 +3,14 @@ import * as path from 'path'; import { Transform } from 'stream'; import { pipeline } from 'stream/promises'; -import { ExtractedVariables } from '../types'; import { - renderLicense, - isSupportedLicense, findLicenseAuthor, findLicenseEmail, findLicenseValue, + isSupportedLicense, + renderLicense, } from '../licenses'; +import { ExtractedVariables } from '../types'; /** * Replace variables in all files in the template directory diff --git a/packages/genomic/src/template/templatizer.ts b/packages/genomic/src/template/templatizer.ts index 32b67414..ca960797 100644 --- a/packages/genomic/src/template/templatizer.ts +++ b/packages/genomic/src/template/templatizer.ts @@ -1,5 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; + import { ExtractedVariables } from '../types'; import { extractVariables } from './extract'; import { promptUser } from './prompt'; diff --git a/packages/genomic/src/utils/npm-version-check.ts b/packages/genomic/src/utils/npm-version-check.ts index 06fec5e7..c30e7b6e 100644 --- a/packages/genomic/src/utils/npm-version-check.ts +++ b/packages/genomic/src/utils/npm-version-check.ts @@ -1,4 +1,5 @@ import { execSync } from 'child_process'; + import { VersionCheckResult } from './types'; /** diff --git a/packages/http-errors/__tests__/http-errors.test.ts b/packages/http-errors/__tests__/http-errors.test.ts index c32dbf9f..a528f171 100644 --- a/packages/http-errors/__tests__/http-errors.test.ts +++ b/packages/http-errors/__tests__/http-errors.test.ts @@ -1,10 +1,9 @@ import { - HTTPError, - NotFoundError, BadRequestError, + createHTTPError, + HTTPError, InternalServerError, - createHTTPError -} from '../src'; + NotFoundError} from '../src'; describe('http-errors', () => { it('should create a NotFoundError with correct properties', () => { diff --git a/packages/http-errors/jest.config.js b/packages/http-errors/jest.config.js index 2659bc28..057a9420 100644 --- a/packages/http-errors/jest.config.js +++ b/packages/http-errors/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] }; diff --git a/packages/inflekt/__tests__/inflection.test.ts b/packages/inflekt/__tests__/inflection.test.ts index 800c6667..cc30e13c 100644 --- a/packages/inflekt/__tests__/inflection.test.ts +++ b/packages/inflekt/__tests__/inflection.test.ts @@ -1,19 +1,19 @@ import { - singularize, - pluralize, - singularizeLast, - pluralizeLast, distinctPluralize, distinctPluralizeLast, + fixCapitalisedPlural, lcFirst, - ucFirst, + pluralize, + pluralizeLast, + singularize, + singularizeLast, toCamelCase, + toFieldName, toPascalCase, + toQueryName, toScreamingSnake, + ucFirst, underscore, - fixCapitalisedPlural, - toFieldName, - toQueryName, } from '../src'; describe('singularize', () => { diff --git a/packages/inflekt/__tests__/matching.test.ts b/packages/inflekt/__tests__/matching.test.ts index 43f8c2e5..29e6ad59 100644 --- a/packages/inflekt/__tests__/matching.test.ts +++ b/packages/inflekt/__tests__/matching.test.ts @@ -1,8 +1,8 @@ import { - normalizeName, - normalizeNameSingular, fuzzyFindByName, namesMatch, + normalizeName, + normalizeNameSingular, } from '../src'; describe('normalizeName', () => { diff --git a/packages/inflekt/jest.config.js b/packages/inflekt/jest.config.js index 7fa2ca25..057a9420 100644 --- a/packages/inflekt/jest.config.js +++ b/packages/inflekt/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] - }; + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] +}; diff --git a/packages/inflekt/src/case.ts b/packages/inflekt/src/case.ts index 636520ad..ae67bd40 100644 --- a/packages/inflekt/src/case.ts +++ b/packages/inflekt/src/case.ts @@ -8,16 +8,16 @@ import { lcFirst, - ucFirst, toCamelCase as _toCamelCase, + toConstantCase, + toKebabCase, toPascalCase, toSnakeCase, - toKebabCase, - toConstantCase, + ucFirst, } from 'komoji'; // Re-export komoji functions directly -export { lcFirst, ucFirst, toPascalCase, toSnakeCase, toKebabCase, toConstantCase }; +export { lcFirst, toConstantCase,toKebabCase, toPascalCase, toSnakeCase, ucFirst }; // Re-export toCamelCase — komoji's version accepts a second parameter // (stripLeadingNonAlphabetChars) so we wrap to keep the simpler inflekt signature diff --git a/packages/inflekt/src/index.ts b/packages/inflekt/src/index.ts index 7a65ef3b..61434098 100644 --- a/packages/inflekt/src/index.ts +++ b/packages/inflekt/src/index.ts @@ -5,8 +5,8 @@ * It uses the 'inflection' package with custom overrides for Latin plural suffixes * that PostGraphile handles differently than standard English pluralization. */ -export * from './pluralize'; export * from './case'; -export * from './naming'; export * from './matching'; +export * from './naming'; +export * from './pluralize'; export * from './transform-keys'; diff --git a/packages/inquirerer-test/src/fixture.ts b/packages/inquirerer-test/src/fixture.ts index f605dd4f..18bd4bce 100644 --- a/packages/inquirerer-test/src/fixture.ts +++ b/packages/inquirerer-test/src/fixture.ts @@ -1,8 +1,9 @@ import fs from 'fs'; +import { CLIOptions,Inquirerer } from 'inquirerer'; +import { ParsedArgs } from 'minimist'; import os from 'os'; import path from 'path'; -import { Inquirerer, CLIOptions } from 'inquirerer'; -import { ParsedArgs } from 'minimist'; + import { createTestEnvironment, TestEnvironment } from './harness'; const { mkdtempSync, rmSync, cpSync } = fs; diff --git a/packages/inquirerer-test/src/harness.ts b/packages/inquirerer-test/src/harness.ts index 660deccd..c9d59dd4 100644 --- a/packages/inquirerer-test/src/harness.ts +++ b/packages/inquirerer-test/src/harness.ts @@ -1,7 +1,8 @@ +import { cleanAnsi } from 'clean-ansi'; import { CLIOptions } from 'inquirerer'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { cleanAnsi } from 'clean-ansi'; + import { humanizeKeySequences } from './keys'; /** diff --git a/packages/inquirerer-test/src/index.ts b/packages/inquirerer-test/src/index.ts index 91b269b6..953f7e24 100644 --- a/packages/inquirerer-test/src/index.ts +++ b/packages/inquirerer-test/src/index.ts @@ -1,22 +1,22 @@ // Key sequences for simulating user input -export { KEY_SEQUENCES } from './keys'; export type { KeySequence } from './keys'; +export { KEY_SEQUENCES } from './keys'; // Test environment setup -export { setupTests, createTestEnvironment } from './harness'; -export type { TestEnvironment, InputResponse } from './harness'; +export type { InputResponse,TestEnvironment } from './harness'; +export { createTestEnvironment,setupTests } from './harness'; // Test fixture for CLI testing +export type { RunCmdResult,TestFixture, TestFixtureOptions } from './fixture'; export { createTestFixture } from './fixture'; -export type { TestFixture, TestFixtureOptions, RunCmdResult } from './fixture'; // Snapshot utilities -export { normalizePackageJsonForSnapshot } from './snapshot'; export type { NormalizeOptions } from './snapshot'; +export { normalizePackageJsonForSnapshot } from './snapshot'; // Subprocess testing for CLI E2E tests -export { runCli, parseArgString, RunCliError } from './subprocess'; export type { RunCliOptions, RunCliResult } from './subprocess'; +export { parseArgString, runCli, RunCliError } from './subprocess'; // ANSI utilities (re-exported from clean-ansi for convenience) export { cleanAnsi } from 'clean-ansi'; diff --git a/packages/inquirerer-utils/src/index.ts b/packages/inquirerer-utils/src/index.ts index 87ff0259..9343e948 100644 --- a/packages/inquirerer-utils/src/index.ts +++ b/packages/inquirerer-utils/src/index.ts @@ -1,14 +1,13 @@ // Re-export core CLI utilities from inquirerer +export type { CliExitOptions, PackageJson,ParseArgvOptions, ParsedArgs } from 'inquirerer'; export { - parseArgv, - extractFirst, cliExitWithError, + extractFirst, getPackageJson, + getPackageName, getPackageVersion, - getPackageName -} from 'inquirerer'; -export type { ParsedArgs, ParseArgvOptions, CliExitOptions, PackageJson } from 'inquirerer'; + parseArgv} from 'inquirerer'; // Update checking (requires appstash, not available in inquirerer) -export { checkForUpdates, clearUpdateCache, shouldSkipUpdateCheck, suppressUpdateCheck } from './update-check'; export type { UpdateCheckOptions, UpdateCheckResult } from './update-check'; +export { checkForUpdates, clearUpdateCache, shouldSkipUpdateCheck, suppressUpdateCheck } from './update-check'; diff --git a/packages/inquirerer-utils/src/update-check.ts b/packages/inquirerer-utils/src/update-check.ts index 6ed6c956..79a4d6dc 100644 --- a/packages/inquirerer-utils/src/update-check.ts +++ b/packages/inquirerer-utils/src/update-check.ts @@ -79,7 +79,9 @@ export function clearUpdateCache(toolName: string): boolean { fs.unlinkSync(cacheFile); return true; } - } catch {} + } catch { + // ignore + } return false; } diff --git a/packages/inquirerer/__tests__/alias.test.ts b/packages/inquirerer/__tests__/alias.test.ts index 15742c39..ee30ded5 100644 --- a/packages/inquirerer/__tests__/alias.test.ts +++ b/packages/inquirerer/__tests__/alias.test.ts @@ -1,6 +1,7 @@ +import { stripAnsi } from 'clean-ansi'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { stripAnsi } from 'clean-ansi'; + import { Inquirerer } from '../src'; import { Question } from '../src/question'; diff --git a/packages/inquirerer/__tests__/autocomplete.test.ts b/packages/inquirerer/__tests__/autocomplete.test.ts index 6d81145b..87813f63 100644 --- a/packages/inquirerer/__tests__/autocomplete.test.ts +++ b/packages/inquirerer/__tests__/autocomplete.test.ts @@ -11,7 +11,7 @@ describe('Inquirerer', () => { }); it('prompts user and correctly processes delayed input', async () => { - const { mockInput, mockOutput, writeResults, transformResults, enqueueInputResponse } = environment; + const { mockInput, mockOutput, writeResults, transformResults, enqueueInputResponse } = environment; const prompter = new Inquirerer({ input: mockInput, diff --git a/packages/inquirerer/__tests__/cli.test.ts b/packages/inquirerer/__tests__/cli.test.ts index 437fdb15..6599632d 100644 --- a/packages/inquirerer/__tests__/cli.test.ts +++ b/packages/inquirerer/__tests__/cli.test.ts @@ -1,4 +1,4 @@ -import { parseArgv, extractFirst, getPackageJson, getPackageVersion, getPackageName } from '../src'; +import { extractFirst, getPackageJson, getPackageName,getPackageVersion, parseArgv } from '../src'; describe('CLI utilities', () => { describe('parseArgv', () => { diff --git a/packages/inquirerer/__tests__/defaultFrom.test.ts b/packages/inquirerer/__tests__/defaultFrom.test.ts index 0d352219..e3624e30 100644 --- a/packages/inquirerer/__tests__/defaultFrom.test.ts +++ b/packages/inquirerer/__tests__/defaultFrom.test.ts @@ -1,12 +1,13 @@ +import { stripAnsi } from 'clean-ansi'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { stripAnsi } from 'clean-ansi'; -import { Inquirerer, DefaultResolverRegistry } from '../src'; + +import { DefaultResolverRegistry,Inquirerer } from '../src'; import { Question } from '../src/question'; jest.mock('readline'); jest.mock('child_process', () => ({ - execSync: jest.fn() + execSync: jest.fn() })); import { execSync } from 'child_process'; diff --git a/packages/inquirerer/__tests__/prompt.test.ts b/packages/inquirerer/__tests__/prompt.test.ts index 1f11aba9..db158f5f 100644 --- a/packages/inquirerer/__tests__/prompt.test.ts +++ b/packages/inquirerer/__tests__/prompt.test.ts @@ -1,6 +1,7 @@ +import { stripAnsi } from 'clean-ansi'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { stripAnsi } from 'clean-ansi'; + import { Inquirerer } from '../src'; import { Question } from '../src/question'; diff --git a/packages/inquirerer/__tests__/resolvers.test.ts b/packages/inquirerer/__tests__/resolvers.test.ts index 65659a26..8db218c3 100644 --- a/packages/inquirerer/__tests__/resolvers.test.ts +++ b/packages/inquirerer/__tests__/resolvers.test.ts @@ -1,21 +1,21 @@ import { DefaultResolverRegistry, + getGitConfig, + getNpmWhoami, globalResolverRegistry, registerDefaultResolver, resolveDefault, - getGitConfig, - getNpmWhoami, -} from "../src/resolvers"; +} from '../src/resolvers'; // Mock child_process.execSync for git config tests -jest.mock("child_process", () => ({ +jest.mock('child_process', () => ({ execSync: jest.fn(), })); -import { execSync } from "child_process"; +import { execSync } from 'child_process'; const mockedExecSync = execSync as jest.MockedFunction; -describe("DefaultResolverRegistry", () => { +describe('DefaultResolverRegistry', () => { let registry: DefaultResolverRegistry; beforeEach(() => { @@ -23,263 +23,263 @@ describe("DefaultResolverRegistry", () => { jest.clearAllMocks(); }); - describe("register and resolve", () => { - it("should register and resolve a simple synchronous resolver", async () => { - registry.register("test.value", () => "test-result"); + describe('register and resolve', () => { + it('should register and resolve a simple synchronous resolver', async () => { + registry.register('test.value', () => 'test-result'); - const result = await registry.resolve("test.value"); + const result = await registry.resolve('test.value'); - expect(result).toBe("test-result"); + expect(result).toBe('test-result'); }); - it("should register and resolve an async resolver", async () => { - registry.register("test.async", async () => { + it('should register and resolve an async resolver', async () => { + registry.register('test.async', async () => { return new Promise((resolve) => - setTimeout(() => resolve("async-result"), 10) + setTimeout(() => resolve('async-result'), 10) ); }); - const result = await registry.resolve("test.async"); + const result = await registry.resolve('test.async'); - expect(result).toBe("async-result"); + expect(result).toBe('async-result'); }); - it("should return undefined for non-existent resolver", async () => { - const result = await registry.resolve("non.existent"); + it('should return undefined for non-existent resolver', async () => { + const result = await registry.resolve('non.existent'); expect(result).toBeUndefined(); }); - it("should treat empty string as undefined", async () => { - registry.register("test.empty", () => ""); + it('should treat empty string as undefined', async () => { + registry.register('test.empty', () => ''); - const result = await registry.resolve("test.empty"); + const result = await registry.resolve('test.empty'); expect(result).toBeUndefined(); }); - it("should return undefined when resolver throws error", async () => { - registry.register("test.error", () => { - throw new Error("Test error"); + it('should return undefined when resolver throws error', async () => { + registry.register('test.error', () => { + throw new Error('Test error'); }); - const result = await registry.resolve("test.error"); + const result = await registry.resolve('test.error'); expect(result).toBeUndefined(); }); - it("should handle resolver that returns null", async () => { - registry.register("test.null", () => null); + it('should handle resolver that returns null', async () => { + registry.register('test.null', () => null); - const result = await registry.resolve("test.null"); + const result = await registry.resolve('test.null'); expect(result).toBeNull(); }); - it("should handle resolver that returns false", async () => { - registry.register("test.false", () => false); + it('should handle resolver that returns false', async () => { + registry.register('test.false', () => false); - const result = await registry.resolve("test.false"); + const result = await registry.resolve('test.false'); expect(result).toBe(false); }); - it("should handle resolver that returns 0", async () => { - registry.register("test.zero", () => 0); + it('should handle resolver that returns 0', async () => { + registry.register('test.zero', () => 0); - const result = await registry.resolve("test.zero"); + const result = await registry.resolve('test.zero'); expect(result).toBe(0); }); }); - describe("unregister", () => { - it("should unregister a resolver", async () => { - registry.register("test.value", () => "test-result"); - registry.unregister("test.value"); + describe('unregister', () => { + it('should unregister a resolver', async () => { + registry.register('test.value', () => 'test-result'); + registry.unregister('test.value'); - const result = await registry.resolve("test.value"); + const result = await registry.resolve('test.value'); expect(result).toBeUndefined(); }); }); - describe("has", () => { - it("should return true for registered resolver", () => { - registry.register("test.value", () => "test-result"); + describe('has', () => { + it('should return true for registered resolver', () => { + registry.register('test.value', () => 'test-result'); - expect(registry.has("test.value")).toBe(true); + expect(registry.has('test.value')).toBe(true); }); - it("should return false for non-existent resolver", () => { - expect(registry.has("non.existent")).toBe(false); + it('should return false for non-existent resolver', () => { + expect(registry.has('non.existent')).toBe(false); }); }); - describe("keys", () => { - it("should return all registered keys", () => { - registry.register("test.one", () => "one"); - registry.register("test.two", () => "two"); - registry.register("test.three", () => "three"); + describe('keys', () => { + it('should return all registered keys', () => { + registry.register('test.one', () => 'one'); + registry.register('test.two', () => 'two'); + registry.register('test.three', () => 'three'); const keys = registry.keys(); - expect(keys).toEqual(["test.one", "test.two", "test.three"]); + expect(keys).toEqual(['test.one', 'test.two', 'test.three']); }); - it("should return empty array when no resolvers registered", () => { + it('should return empty array when no resolvers registered', () => { const keys = registry.keys(); expect(keys).toEqual([]); }); }); - describe("clone", () => { - it("should create a copy with all resolvers", async () => { - registry.register("test.value", () => "test-result"); + describe('clone', () => { + it('should create a copy with all resolvers', async () => { + registry.register('test.value', () => 'test-result'); const cloned = registry.clone(); - const result = await cloned.resolve("test.value"); + const result = await cloned.resolve('test.value'); - expect(result).toBe("test-result"); + expect(result).toBe('test-result'); }); - it("should not affect original when modifying clone", async () => { - registry.register("test.value", () => "original"); + it('should not affect original when modifying clone', async () => { + registry.register('test.value', () => 'original'); const cloned = registry.clone(); - cloned.register("test.value", () => "modified"); + cloned.register('test.value', () => 'modified'); - const originalResult = await registry.resolve("test.value"); - const clonedResult = await cloned.resolve("test.value"); + const originalResult = await registry.resolve('test.value'); + const clonedResult = await cloned.resolve('test.value'); - expect(originalResult).toBe("original"); - expect(clonedResult).toBe("modified"); + expect(originalResult).toBe('original'); + expect(clonedResult).toBe('modified'); }); }); }); -describe("Git Resolvers", () => { +describe('Git Resolvers', () => { beforeEach(() => { jest.clearAllMocks(); }); - describe("getGitConfig", () => { - it("should return git config value when successful", () => { - mockedExecSync.mockReturnValue("John Doe\n" as any); + describe('getGitConfig', () => { + it('should return git config value when successful', () => { + mockedExecSync.mockReturnValue('John Doe\n' as any); - const result = getGitConfig("user.name"); + const result = getGitConfig('user.name'); - expect(result).toBe("John Doe"); + expect(result).toBe('John Doe'); expect(mockedExecSync).toHaveBeenCalledWith( - "git config --global user.name", + 'git config --global user.name', expect.objectContaining({ - encoding: "utf8", - stdio: ["pipe", "pipe", "ignore"], + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'ignore'], }) ); }); - it("should trim whitespace from git config value", () => { - mockedExecSync.mockReturnValue(" test@example.com \n" as any); + it('should trim whitespace from git config value', () => { + mockedExecSync.mockReturnValue(' test@example.com \n' as any); - const result = getGitConfig("user.email"); + const result = getGitConfig('user.email'); - expect(result).toBe("test@example.com"); + expect(result).toBe('test@example.com'); }); - it("should return undefined when git config fails", () => { + it('should return undefined when git config fails', () => { mockedExecSync.mockImplementation(() => { - throw new Error("Git config not found"); + throw new Error('Git config not found'); }); - const result = getGitConfig("user.name"); + const result = getGitConfig('user.name'); expect(result).toBeUndefined(); }); - it("should return undefined when git config returns empty string", () => { - mockedExecSync.mockReturnValue("" as any); + it('should return undefined when git config returns empty string', () => { + mockedExecSync.mockReturnValue('' as any); - const result = getGitConfig("user.name"); + const result = getGitConfig('user.name'); expect(result).toBeUndefined(); }); }); - describe("git.user.name resolver", () => { - it("should resolve git user name", async () => { - mockedExecSync.mockReturnValue("Jane Smith\n" as any); + describe('git.user.name resolver', () => { + it('should resolve git user name', async () => { + mockedExecSync.mockReturnValue('Jane Smith\n' as any); - const result = await globalResolverRegistry.resolve("git.user.name"); + const result = await globalResolverRegistry.resolve('git.user.name'); - expect(result).toBe("Jane Smith"); + expect(result).toBe('Jane Smith'); }); - it("should return undefined when git config fails", async () => { + it('should return undefined when git config fails', async () => { mockedExecSync.mockImplementation(() => { - throw new Error("Git not configured"); + throw new Error('Git not configured'); }); - const result = await globalResolverRegistry.resolve("git.user.name"); + const result = await globalResolverRegistry.resolve('git.user.name'); expect(result).toBeUndefined(); }); }); - describe("git.user.email resolver", () => { - it("should resolve git user email", async () => { - mockedExecSync.mockReturnValue("jane@example.com\n" as any); + describe('git.user.email resolver', () => { + it('should resolve git user email', async () => { + mockedExecSync.mockReturnValue('jane@example.com\n' as any); - const result = await globalResolverRegistry.resolve("git.user.email"); + const result = await globalResolverRegistry.resolve('git.user.email'); - expect(result).toBe("jane@example.com"); + expect(result).toBe('jane@example.com'); }); - it("should return undefined when git config fails", async () => { + it('should return undefined when git config fails', async () => { mockedExecSync.mockImplementation(() => { - throw new Error("Git not configured"); + throw new Error('Git not configured'); }); - const result = await globalResolverRegistry.resolve("git.user.email"); + const result = await globalResolverRegistry.resolve('git.user.email'); expect(result).toBeUndefined(); }); }); }); -describe("NPM Resolvers", () => { +describe('NPM Resolvers', () => { beforeEach(() => { jest.clearAllMocks(); }); - describe("getNpmWhoami", () => { - it("should return npm username when logged in", () => { - mockedExecSync.mockReturnValue("johndoe\n" as any); + describe('getNpmWhoami', () => { + it('should return npm username when logged in', () => { + mockedExecSync.mockReturnValue('johndoe\n' as any); const result = getNpmWhoami(); - expect(result).toBe("johndoe"); + expect(result).toBe('johndoe'); expect(mockedExecSync).toHaveBeenCalledWith( - "npm whoami", + 'npm whoami', expect.objectContaining({ - encoding: "utf8", - stdio: ["pipe", "pipe", "ignore"], + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'ignore'], }) ); }); - it("should trim whitespace from npm username", () => { - mockedExecSync.mockReturnValue(" janedoe \n" as any); + it('should trim whitespace from npm username', () => { + mockedExecSync.mockReturnValue(' janedoe \n' as any); const result = getNpmWhoami(); - expect(result).toBe("janedoe"); + expect(result).toBe('janedoe'); }); - it("should return undefined when not logged in to npm", () => { + it('should return undefined when not logged in to npm', () => { mockedExecSync.mockImplementation(() => { - throw new Error("Not logged in"); + throw new Error('Not logged in'); }); const result = getNpmWhoami(); @@ -287,8 +287,8 @@ describe("NPM Resolvers", () => { expect(result).toBeUndefined(); }); - it("should return undefined when npm whoami returns empty string", () => { - mockedExecSync.mockReturnValue("" as any); + it('should return undefined when npm whoami returns empty string', () => { + mockedExecSync.mockReturnValue('' as any); const result = getNpmWhoami(); @@ -296,170 +296,170 @@ describe("NPM Resolvers", () => { }); }); - describe("npm.whoami resolver", () => { - it("should resolve npm username", async () => { - mockedExecSync.mockReturnValue("npmuser\n" as any); + describe('npm.whoami resolver', () => { + it('should resolve npm username', async () => { + mockedExecSync.mockReturnValue('npmuser\n' as any); - const result = await globalResolverRegistry.resolve("npm.whoami"); + const result = await globalResolverRegistry.resolve('npm.whoami'); - expect(result).toBe("npmuser"); + expect(result).toBe('npmuser'); }); - it("should return undefined when npm not logged in", async () => { + it('should return undefined when npm not logged in', async () => { mockedExecSync.mockImplementation(() => { - throw new Error("Not logged in"); + throw new Error('Not logged in'); }); - const result = await globalResolverRegistry.resolve("npm.whoami"); + const result = await globalResolverRegistry.resolve('npm.whoami'); expect(result).toBeUndefined(); }); }); }); -describe("Date Resolvers", () => { +describe('Date Resolvers', () => { beforeEach(() => { // Mock Date to return consistent values jest.useFakeTimers(); - jest.setSystemTime(new Date("2025-11-23T15:30:45.123Z")); + jest.setSystemTime(new Date('2025-11-23T15:30:45.123Z')); }); afterEach(() => { jest.useRealTimers(); }); - describe("date.year", () => { - it("should resolve current year", async () => { - const result = await globalResolverRegistry.resolve("date.year"); + describe('date.year', () => { + it('should resolve current year', async () => { + const result = await globalResolverRegistry.resolve('date.year'); - expect(result).toBe("2025"); + expect(result).toBe('2025'); }); }); - describe("date.month", () => { - it("should resolve current month with zero padding", async () => { - const result = await globalResolverRegistry.resolve("date.month"); + describe('date.month', () => { + it('should resolve current month with zero padding', async () => { + const result = await globalResolverRegistry.resolve('date.month'); - expect(result).toBe("11"); + expect(result).toBe('11'); }); - it("should zero-pad single digit months", async () => { - jest.setSystemTime(new Date("2025-03-15T12:00:00Z")); + it('should zero-pad single digit months', async () => { + jest.setSystemTime(new Date('2025-03-15T12:00:00Z')); - const result = await globalResolverRegistry.resolve("date.month"); + const result = await globalResolverRegistry.resolve('date.month'); - expect(result).toBe("03"); + expect(result).toBe('03'); }); }); - describe("date.day", () => { - it("should resolve current day with zero padding", async () => { - const result = await globalResolverRegistry.resolve("date.day"); + describe('date.day', () => { + it('should resolve current day with zero padding', async () => { + const result = await globalResolverRegistry.resolve('date.day'); - expect(result).toBe("23"); + expect(result).toBe('23'); }); - it("should zero-pad single digit days", async () => { - jest.setSystemTime(new Date("2025-03-05T12:00:00Z")); + it('should zero-pad single digit days', async () => { + jest.setSystemTime(new Date('2025-03-05T12:00:00Z')); - const result = await globalResolverRegistry.resolve("date.day"); + const result = await globalResolverRegistry.resolve('date.day'); - expect(result).toBe("05"); + expect(result).toBe('05'); }); }); - describe("date.now", () => { - it("should resolve current ISO timestamp", async () => { - const result = await globalResolverRegistry.resolve("date.now"); + describe('date.now', () => { + it('should resolve current ISO timestamp', async () => { + const result = await globalResolverRegistry.resolve('date.now'); - expect(result).toBe("2025-11-23T15:30:45.123Z"); + expect(result).toBe('2025-11-23T15:30:45.123Z'); }); }); - describe("date.iso", () => { - it("should resolve current date in YYYY-MM-DD format", async () => { - const result = await globalResolverRegistry.resolve("date.iso"); + describe('date.iso', () => { + it('should resolve current date in YYYY-MM-DD format', async () => { + const result = await globalResolverRegistry.resolve('date.iso'); - expect(result).toBe("2025-11-23"); + expect(result).toBe('2025-11-23'); }); }); - describe("date.timestamp", () => { - it("should resolve current timestamp in milliseconds", async () => { - const result = await globalResolverRegistry.resolve("date.timestamp"); + describe('date.timestamp', () => { + it('should resolve current timestamp in milliseconds', async () => { + const result = await globalResolverRegistry.resolve('date.timestamp'); // 2025-11-23T15:30:45.123Z corresponds to this timestamp expect(result).toBe( - String(new Date("2025-11-23T15:30:45.123Z").getTime()) + String(new Date('2025-11-23T15:30:45.123Z').getTime()) ); }); }); }); -describe("Global Registry", () => { - it("should have git resolvers registered by default", () => { - expect(globalResolverRegistry.has("git.user.name")).toBe(true); - expect(globalResolverRegistry.has("git.user.email")).toBe(true); +describe('Global Registry', () => { + it('should have git resolvers registered by default', () => { + expect(globalResolverRegistry.has('git.user.name')).toBe(true); + expect(globalResolverRegistry.has('git.user.email')).toBe(true); }); - it("should have npm resolvers registered by default", () => { - expect(globalResolverRegistry.has("npm.whoami")).toBe(true); + it('should have npm resolvers registered by default', () => { + expect(globalResolverRegistry.has('npm.whoami')).toBe(true); }); - it("should have date resolvers registered by default", () => { - expect(globalResolverRegistry.has("date.year")).toBe(true); - expect(globalResolverRegistry.has("date.month")).toBe(true); - expect(globalResolverRegistry.has("date.day")).toBe(true); - expect(globalResolverRegistry.has("date.now")).toBe(true); - expect(globalResolverRegistry.has("date.iso")).toBe(true); - expect(globalResolverRegistry.has("date.timestamp")).toBe(true); + it('should have date resolvers registered by default', () => { + expect(globalResolverRegistry.has('date.year')).toBe(true); + expect(globalResolverRegistry.has('date.month')).toBe(true); + expect(globalResolverRegistry.has('date.day')).toBe(true); + expect(globalResolverRegistry.has('date.now')).toBe(true); + expect(globalResolverRegistry.has('date.iso')).toBe(true); + expect(globalResolverRegistry.has('date.timestamp')).toBe(true); }); }); -describe("Convenience Functions", () => { +describe('Convenience Functions', () => { beforeEach(() => { jest.clearAllMocks(); // Reset any custom resolvers by creating a fresh state jest.useFakeTimers(); - jest.setSystemTime(new Date("2025-11-23T15:30:45.123Z")); + jest.setSystemTime(new Date('2025-11-23T15:30:45.123Z')); }); afterEach(() => { jest.useRealTimers(); }); - describe("registerDefaultResolver", () => { - it("should register a resolver on the global registry", async () => { - registerDefaultResolver("custom.test", () => "custom-value"); + describe('registerDefaultResolver', () => { + it('should register a resolver on the global registry', async () => { + registerDefaultResolver('custom.test', () => 'custom-value'); - const result = await resolveDefault("custom.test"); + const result = await resolveDefault('custom.test'); - expect(result).toBe("custom-value"); + expect(result).toBe('custom-value'); }); }); - describe("resolveDefault", () => { - it("should resolve from the global registry", async () => { - const result = await resolveDefault("date.year"); + describe('resolveDefault', () => { + it('should resolve from the global registry', async () => { + const result = await resolveDefault('date.year'); - expect(result).toBe("2025"); + expect(result).toBe('2025'); }); - it("should return undefined for non-existent resolver", async () => { - const result = await resolveDefault("non.existent"); + it('should return undefined for non-existent resolver', async () => { + const result = await resolveDefault('non.existent'); expect(result).toBeUndefined(); }); }); }); -describe("Debug Mode", () => { +describe('Debug Mode', () => { let originalDebug: string | undefined; let consoleErrorSpy: jest.SpyInstance; beforeEach(() => { originalDebug = process.env.DEBUG; - consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(); + consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); }); afterEach(() => { @@ -471,15 +471,15 @@ describe("Debug Mode", () => { consoleErrorSpy.mockRestore(); }); - it("should log errors when DEBUG=genomic is set", async () => { - process.env.DEBUG = "genomic"; + it('should log errors when DEBUG=genomic is set', async () => { + process.env.DEBUG = 'genomic'; const registry = new DefaultResolverRegistry(); - registry.register("test.error", () => { - throw new Error("Test error message"); + registry.register('test.error', () => { + throw new Error('Test error message'); }); - await registry.resolve("test.error"); + await registry.resolve('test.error'); expect(consoleErrorSpy).toHaveBeenCalledWith( "[genomic] Resolver 'test.error' failed:", @@ -487,85 +487,85 @@ describe("Debug Mode", () => { ); }); - it("should not log errors when DEBUG is not set", async () => { + it('should not log errors when DEBUG is not set', async () => { delete process.env.DEBUG; const registry = new DefaultResolverRegistry(); - registry.register("test.error", () => { - throw new Error("Test error message"); + registry.register('test.error', () => { + throw new Error('Test error message'); }); - await registry.resolve("test.error"); + await registry.resolve('test.error'); expect(consoleErrorSpy).not.toHaveBeenCalled(); }); }); -describe("Workspace Resolvers", () => { - it("should have workspace resolvers registered by default", () => { - expect(globalResolverRegistry.has("workspace.name")).toBe(true); - expect(globalResolverRegistry.has("workspace.repo.name")).toBe(true); - expect(globalResolverRegistry.has("workspace.repo.organization")).toBe( +describe('Workspace Resolvers', () => { + it('should have workspace resolvers registered by default', () => { + expect(globalResolverRegistry.has('workspace.name')).toBe(true); + expect(globalResolverRegistry.has('workspace.repo.name')).toBe(true); + expect(globalResolverRegistry.has('workspace.repo.organization')).toBe( true ); - expect(globalResolverRegistry.has("workspace.organization.name")).toBe( + expect(globalResolverRegistry.has('workspace.organization.name')).toBe( true ); - expect(globalResolverRegistry.has("workspace.license")).toBe(true); - expect(globalResolverRegistry.has("workspace.author")).toBe(true); - expect(globalResolverRegistry.has("workspace.author.name")).toBe(true); - expect(globalResolverRegistry.has("workspace.author.email")).toBe(true); + expect(globalResolverRegistry.has('workspace.license')).toBe(true); + expect(globalResolverRegistry.has('workspace.author')).toBe(true); + expect(globalResolverRegistry.has('workspace.author.name')).toBe(true); + expect(globalResolverRegistry.has('workspace.author.email')).toBe(true); }); - it("should resolve workspace.name preferring repo name", async () => { - const result = await globalResolverRegistry.resolve("workspace.name"); + it('should resolve workspace.name preferring repo name', async () => { + const result = await globalResolverRegistry.resolve('workspace.name'); // Repository slug of dev-utils package - expect(result).toBe("dev-utils"); + expect(result).toBe('dev-utils'); }); - it("should resolve workspace.repo.name from package.json", async () => { + it('should resolve workspace.repo.name from package.json', async () => { // This test runs from the dev-utils directory which has a package.json with repository - const result = await globalResolverRegistry.resolve("workspace.repo.name"); + const result = await globalResolverRegistry.resolve('workspace.repo.name'); - expect(result).toBe("dev-utils"); + expect(result).toBe('dev-utils'); }); - it("should resolve workspace.repo.organization from package.json", async () => { + it('should resolve workspace.repo.organization from package.json', async () => { const result = await globalResolverRegistry.resolve( - "workspace.repo.organization" + 'workspace.repo.organization' ); // Tests run from genomic package which has constructive-io as the org - expect(result).toBe("constructive-io"); + expect(result).toBe('constructive-io'); }); - it("should resolve workspace.organization.name from package.json", async () => { + it('should resolve workspace.organization.name from package.json', async () => { const result = await globalResolverRegistry.resolve( - "workspace.organization.name" + 'workspace.organization.name' ); - expect(result).toBe("constructive-io"); + expect(result).toBe('constructive-io'); }); - it("should resolve workspace.license from package.json", async () => { - const result = await globalResolverRegistry.resolve("workspace.license"); + it('should resolve workspace.license from package.json', async () => { + const result = await globalResolverRegistry.resolve('workspace.license'); - expect(result).toBe("MIT"); + expect(result).toBe('MIT'); }); - it("should resolve workspace.author from package.json", async () => { - const result = await globalResolverRegistry.resolve("workspace.author"); + it('should resolve workspace.author from package.json', async () => { + const result = await globalResolverRegistry.resolve('workspace.author'); - expect(result).toBe("Constructive"); + expect(result).toBe('Constructive'); }); - it("should resolve workspace.author.email from package.json", async () => { + it('should resolve workspace.author.email from package.json', async () => { const result = await globalResolverRegistry.resolve( - "workspace.author.email" + 'workspace.author.email' ); // Tests run from genomic package which has developers@constructive.io - expect(result).toBe("developers@constructive.io"); + expect(result).toBe('developers@constructive.io'); }); }); diff --git a/packages/inquirerer/__tests__/setFrom.test.ts b/packages/inquirerer/__tests__/setFrom.test.ts index bbbcace3..ec7ff85a 100644 --- a/packages/inquirerer/__tests__/setFrom.test.ts +++ b/packages/inquirerer/__tests__/setFrom.test.ts @@ -1,12 +1,13 @@ +import { stripAnsi } from 'clean-ansi'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { stripAnsi } from 'clean-ansi'; -import { Inquirerer, DefaultResolverRegistry } from '../src'; + +import { DefaultResolverRegistry,Inquirerer } from '../src'; import { Question } from '../src/question'; jest.mock('readline'); jest.mock('child_process', () => ({ - execSync: jest.fn() + execSync: jest.fn() })); import { execSync } from 'child_process'; diff --git a/packages/inquirerer/dev/ai/aicode.ts b/packages/inquirerer/dev/ai/aicode.ts index e809606e..22a2d007 100644 --- a/packages/inquirerer/dev/ai/aicode.ts +++ b/packages/inquirerer/dev/ai/aicode.ts @@ -11,12 +11,13 @@ * Based on the terminal UI spec for building interactive coding tools. */ +import { cleanAnsi } from 'clean-ansi'; import { Readable, Writable } from 'stream'; -import { cyan, dim, green, white, yellow, blue, inverse, magenta } from 'yanse'; -import { TerminalKeypress, KEY_CODES } from '../../src/keypress'; -import { ViewportRenderer, createViewport } from './viewport'; import stringWidth from 'string-width'; -import { cleanAnsi } from 'clean-ansi'; +import { cyan, dim, green, inverse, magenta, yellow } from 'yanse'; + +import { KEY_CODES,TerminalKeypress } from '../../src/keypress'; +import { createViewport,ViewportRenderer } from './viewport'; // Box drawing characters const BOX = { @@ -418,14 +419,14 @@ export class AICodeUI { */ private getRolePrefix(role: MessageRole): string { switch (role) { - case 'user': - return cyan('You: '); - case 'assistant': - return green('AI: '); - case 'system': - return yellow('System: '); - default: - return ''; + case 'user': + return cyan('You: '); + case 'assistant': + return green('AI: '); + case 'system': + return yellow('System: '); + default: + return ''; } } @@ -434,14 +435,14 @@ export class AICodeUI { */ private getRolePrefixLength(role: MessageRole): number { switch (role) { - case 'user': - return 5; // "You: " - case 'assistant': - return 4; // "AI: " - case 'system': - return 8; // "System: " - default: - return 0; + case 'user': + return 5; // "You: " + case 'assistant': + return 4; // "AI: " + case 'system': + return 8; // "System: " + default: + return 0; } } diff --git a/packages/inquirerer/dev/demo-ai-code.ts b/packages/inquirerer/dev/demo-ai-code.ts index ad1238fc..f3554b5d 100644 --- a/packages/inquirerer/dev/demo-ai-code.ts +++ b/packages/inquirerer/dev/demo-ai-code.ts @@ -13,22 +13,23 @@ * Run with: pnpm dev:ai-code */ +import { cyan, dim, green,white } from 'yanse'; + import { createAICodeUI } from './ai/aicode'; -import { white, dim, cyan, green } from 'yanse'; const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); // Simulated AI responses based on user input const AI_RESPONSES: Record = { - 'hello': "Hello! I'm your AI coding assistant. I can help you with:\n\n- Writing and explaining code\n- Debugging issues\n- Refactoring suggestions\n- Git workflows\n- And much more!\n\nWhat would you like help with today?", + hello: "Hello! I'm your AI coding assistant. I can help you with:\n\n- Writing and explaining code\n- Debugging issues\n- Refactoring suggestions\n- Git workflows\n- And much more!\n\nWhat would you like help with today?", - 'help': "Here are some things you can ask me:\n\n1. 'explain [code]' - I'll explain how code works\n2. 'write [description]' - I'll write code for you\n3. 'debug [error]' - I'll help debug issues\n4. 'refactor [code]' - I'll suggest improvements\n\nJust type naturally and I'll do my best to help!", + help: "Here are some things you can ask me:\n\n1. 'explain [code]' - I'll explain how code works\n2. 'write [description]' - I'll write code for you\n3. 'debug [error]' - I'll help debug issues\n4. 'refactor [code]' - I'll suggest improvements\n\nJust type naturally and I'll do my best to help!", - 'typescript': "TypeScript is a strongly typed programming language that builds on JavaScript. Here's a quick example:\n\n```typescript\ninterface User {\n name: string;\n age: number;\n}\n\nfunction greet(user: User): string {\n return `Hello, ${user.name}!`;\n}\n```\n\nKey benefits:\n- Type safety catches errors at compile time\n- Better IDE support with autocomplete\n- Self-documenting code through types", + typescript: "TypeScript is a strongly typed programming language that builds on JavaScript. Here's a quick example:\n\n```typescript\ninterface User {\n name: string;\n age: number;\n}\n\nfunction greet(user: User): string {\n return `Hello, ${user.name}!`;\n}\n```\n\nKey benefits:\n- Type safety catches errors at compile time\n- Better IDE support with autocomplete\n- Self-documenting code through types", - 'git': "Here are some useful git commands:\n\n```bash\n# Create a new branch\ngit checkout -b feature/my-feature\n\n# Stage and commit changes\ngit add .\ngit commit -m \"feat: add new feature\"\n\n# Push to remote\ngit push origin feature/my-feature\n\n# Create a PR (using gh cli)\ngh pr create --title \"My Feature\" --body \"Description\"\n```\n\nWant me to explain any of these in more detail?", + git: 'Here are some useful git commands:\n\n```bash\n# Create a new branch\ngit checkout -b feature/my-feature\n\n# Stage and commit changes\ngit add .\ngit commit -m "feat: add new feature"\n\n# Push to remote\ngit push origin feature/my-feature\n\n# Create a PR (using gh cli)\ngh pr create --title "My Feature" --body "Description"\n```\n\nWant me to explain any of these in more detail?', - 'default': "I understand you're asking about that. Let me think...\n\nBased on my analysis, here's what I can tell you:\n\n1. First, consider the context of your question\n2. Then, break down the problem into smaller parts\n3. Finally, apply the appropriate solution\n\nWould you like me to elaborate on any specific aspect?", + default: "I understand you're asking about that. Let me think...\n\nBased on my analysis, here's what I can tell you:\n\n1. First, consider the context of your question\n2. Then, break down the problem into smaller parts\n3. Finally, apply the appropriate solution\n\nWould you like me to elaborate on any specific aspect?", }; /** diff --git a/packages/inquirerer/dev/demo-chat.ts b/packages/inquirerer/dev/demo-chat.ts index 27a93e5b..d40995ca 100644 --- a/packages/inquirerer/dev/demo-chat.ts +++ b/packages/inquirerer/dev/demo-chat.ts @@ -6,15 +6,16 @@ * Or: npx ts-node dev/demo-chat.ts */ -import { createStream, createSpinner } from '../src/ui'; import { cyan, dim, green, white } from 'yanse'; +import { createSpinner,createStream } from '../src/ui'; + const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); // Simulated AI responses const AI_RESPONSES = [ "Hello! I'm an AI assistant. I can help you with coding questions, explain concepts, or assist with various tasks. What would you like to know?", - "TypeScript is a strongly typed programming language that builds on JavaScript. It adds optional static typing and class-based object-oriented programming to the language. Here are some key benefits:\n\n1. **Type Safety**: Catch errors at compile time rather than runtime\n2. **Better IDE Support**: Enhanced autocomplete and refactoring\n3. **Improved Readability**: Types serve as documentation\n4. **Modern Features**: Access to latest ECMAScript features", + 'TypeScript is a strongly typed programming language that builds on JavaScript. It adds optional static typing and class-based object-oriented programming to the language. Here are some key benefits:\n\n1. **Type Safety**: Catch errors at compile time rather than runtime\n2. **Better IDE Support**: Enhanced autocomplete and refactoring\n3. **Improved Readability**: Types serve as documentation\n4. **Modern Features**: Access to latest ECMAScript features', "Here's a simple example of a TypeScript function:\n\n```typescript\nfunction greet(name: string): string {\n return `Hello, ${name}!`;\n}\n\nconst message = greet('World');\nconsole.log(message); // Output: Hello, World!\n```\n\nThe `: string` after the parameter and function declaration specifies the types.", ]; diff --git a/packages/inquirerer/dev/demo-prompts-engine.ts b/packages/inquirerer/dev/demo-prompts-engine.ts index ffc6d8fe..72b9f88f 100644 --- a/packages/inquirerer/dev/demo-prompts-engine.ts +++ b/packages/inquirerer/dev/demo-prompts-engine.ts @@ -7,17 +7,16 @@ * Run with: pnpm dev:prompts */ -import { Inquirerer } from '../src'; +import { cyan, dim,green, white, yellow } from 'yanse'; + +import { TerminalKeypress } from '../src/keypress'; import { - listPromptEngine, + AutocompletePromptConfig, autocompletePromptEngine, + CheckboxPromptConfig, checkboxPromptEngine, ListPromptConfig, - AutocompletePromptConfig, - CheckboxPromptConfig -} from '../src/ui'; -import { TerminalKeypress } from '../src/keypress'; -import { white, green, cyan, yellow, dim } from 'yanse'; + listPromptEngine} from '../src/ui'; const COLORS = [ { name: 'Red', value: 'red' }, diff --git a/packages/inquirerer/dev/demo-upgrade.ts b/packages/inquirerer/dev/demo-upgrade.ts index d4faa85d..fa0eaa56 100644 --- a/packages/inquirerer/dev/demo-upgrade.ts +++ b/packages/inquirerer/dev/demo-upgrade.ts @@ -6,8 +6,9 @@ * Or: npx ts-node dev/demo-upgrade.ts */ -import { upgradePrompt, PackageInfo, createSpinner } from '../src/ui'; -import { cyan, green, yellow, dim, white } from 'yanse'; +import { cyan, dim, green, white,yellow } from 'yanse'; + +import { createSpinner,PackageInfo, upgradePrompt } from '../src/ui'; const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); diff --git a/packages/inquirerer/dev/dev.ts b/packages/inquirerer/dev/dev.ts index b2664111..e6931fd9 100644 --- a/packages/inquirerer/dev/dev.ts +++ b/packages/inquirerer/dev/dev.ts @@ -2,7 +2,7 @@ import minimist from 'minimist'; import { Prompter } from '../src'; -import { AutocompleteQuestion, ConfirmQuestion, Question } from '../src/question'; +import { Question } from '../src/question'; import { displayVersion } from '../src/utils'; const argv = minimist(process.argv.slice(2), { @@ -118,7 +118,7 @@ const main = async () => { 'Xigua (Chinese Watermelon)', 'Yellow Plum', 'Zucchini' - ] + ] }; const args3 = await prompter.prompt({}, [question]); @@ -252,8 +252,8 @@ const main = async () => { ] } - ]) - console.log(JSON.stringify(massive, null, 2)) + ]); + console.log(JSON.stringify(massive, null, 2)); prompter.close(); }; diff --git a/packages/inquirerer/dev/index.ts b/packages/inquirerer/dev/index.ts index a1d7e6e0..88413c5f 100644 --- a/packages/inquirerer/dev/index.ts +++ b/packages/inquirerer/dev/index.ts @@ -2,7 +2,6 @@ import minimist from 'minimist'; import { Prompter } from '../src'; -import { AutocompleteQuestion, ConfirmQuestion, Question } from '../src/question'; import { displayVersion } from '../src/utils'; const argv = minimist(process.argv.slice(2), { @@ -69,9 +68,9 @@ const main = async () => { return !!(res && res.selected); } } - ]) - console.log(JSON.stringify(massive, null, 2)) - console.log(JSON.stringify(after, null, 2)) + ]); + console.log(JSON.stringify(massive, null, 2)); + console.log(JSON.stringify(after, null, 2)); prompter.close(); }; diff --git a/packages/inquirerer/examples/defaultFrom-example.ts b/packages/inquirerer/examples/defaultFrom-example.ts index f6920b88..0670c35a 100644 --- a/packages/inquirerer/examples/defaultFrom-example.ts +++ b/packages/inquirerer/examples/defaultFrom-example.ts @@ -10,95 +10,95 @@ import { Prompter, registerDefaultResolver } from '../src'; */ async function basicExample() { - console.log('=== Basic Example: Git and Date Resolvers ===\n'); + console.log('=== Basic Example: Git and Date Resolvers ===\n'); - const questions = [ - { - name: 'authorName', - type: 'text' as const, - message: 'Author name?', - defaultFrom: 'git.user.name' // Auto-fills from git config - }, - { - name: 'authorEmail', - type: 'text' as const, - message: 'Author email?', - defaultFrom: 'git.user.email' // Auto-fills from git config - }, - { - name: 'year', - type: 'text' as const, - message: 'Copyright year?', - defaultFrom: 'date.year' // Auto-fills current year - } - ]; + const questions = [ + { + name: 'authorName', + type: 'text' as const, + message: 'Author name?', + defaultFrom: 'git.user.name' // Auto-fills from git config + }, + { + name: 'authorEmail', + type: 'text' as const, + message: 'Author email?', + defaultFrom: 'git.user.email' // Auto-fills from git config + }, + { + name: 'year', + type: 'text' as const, + message: 'Copyright year?', + defaultFrom: 'date.year' // Auto-fills current year + } + ]; - const prompter = new Prompter(); - const answers = await prompter.prompt({}, questions); + const prompter = new Prompter(); + const answers = await prompter.prompt({}, questions); - console.log('\nAnswers:', answers); - prompter.close(); + console.log('\nAnswers:', answers); + prompter.close(); } async function customResolverExample() { - console.log('\n=== Custom Resolver Example ===\n'); + console.log('\n=== Custom Resolver Example ===\n'); - // Register custom resolvers - registerDefaultResolver('package.name', async () => { - // In a real app, you'd read from package.json - return 'my-awesome-package'; - }); + // Register custom resolvers + registerDefaultResolver('package.name', async () => { + // In a real app, you'd read from package.json + return 'my-awesome-package'; + }); - registerDefaultResolver('cwd.name', () => { - return process.cwd().split('/').pop(); - }); + registerDefaultResolver('cwd.name', () => { + return process.cwd().split('/').pop(); + }); - const questions = [ - { - name: 'pkgName', - type: 'text' as const, - message: 'Package name?', - defaultFrom: 'package.name' // Uses custom resolver - }, - { - name: 'dirName', - type: 'text' as const, - message: 'Directory name?', - defaultFrom: 'cwd.name' // Uses custom resolver - } - ]; + const questions = [ + { + name: 'pkgName', + type: 'text' as const, + message: 'Package name?', + defaultFrom: 'package.name' // Uses custom resolver + }, + { + name: 'dirName', + type: 'text' as const, + message: 'Directory name?', + defaultFrom: 'cwd.name' // Uses custom resolver + } + ]; - const prompter = new Prompter(); - const answers = await prompter.prompt({}, questions); + const prompter = new Prompter(); + const answers = await prompter.prompt({}, questions); - console.log('\nAnswers:', answers); - prompter.close(); + console.log('\nAnswers:', answers); + prompter.close(); } async function allAvailableResolvers() { - console.log('\n=== All Built-in Resolvers ===\n'); + console.log('\n=== All Built-in Resolvers ===\n'); - const builtInResolvers = [ - 'git.user.name', - 'git.user.email', - 'date.year', - 'date.month', - 'date.day', - 'date.now', - 'date.iso', - 'date.timestamp' - ]; + const builtInResolvers = [ + 'git.user.name', + 'git.user.email', + 'date.year', + 'date.month', + 'date.day', + 'date.now', + 'date.iso', + 'date.timestamp' + ]; - console.log('Built-in resolvers available:'); - builtInResolvers.forEach(resolver => { - console.log(` - ${resolver}`); - }); + console.log('Built-in resolvers available:'); + builtInResolvers.forEach(resolver => { + console.log(` - ${resolver}`); + }); } // Run examples (async () => { - await allAvailableResolvers(); - // Uncomment to run interactive examples: - // await basicExample(); - // await customResolverExample(); + await allAvailableResolvers(); + // Uncomment to run interactive examples: + // await basicExample(); + // await customResolverExample(); })(); diff --git a/packages/inquirerer/jest.config.js b/packages/inquirerer/jest.config.js index 2659bc28..057a9420 100644 --- a/packages/inquirerer/jest.config.js +++ b/packages/inquirerer/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] }; diff --git a/packages/inquirerer/src/cli/argv.ts b/packages/inquirerer/src/cli/argv.ts index ea02f7a9..5a3e9d11 100644 --- a/packages/inquirerer/src/cli/argv.ts +++ b/packages/inquirerer/src/cli/argv.ts @@ -35,4 +35,4 @@ export const extractFirst = (argv: Partial) => { return { first, newArgv }; }; -export type { ParsedArgs, Opts as ParseArgvOptions } from 'minimist'; +export type { Opts as ParseArgvOptions,ParsedArgs } from 'minimist'; diff --git a/packages/inquirerer/src/cli/index.ts b/packages/inquirerer/src/cli/index.ts index 0ad198aa..1edc1f37 100644 --- a/packages/inquirerer/src/cli/index.ts +++ b/packages/inquirerer/src/cli/index.ts @@ -1,8 +1,6 @@ -export { parseArgv, extractFirst } from './argv'; -export type { ParsedArgs, ParseArgvOptions } from './argv'; - -export { cliExitWithError } from './error'; +export type { ParseArgvOptions,ParsedArgs } from './argv'; +export { extractFirst,parseArgv } from './argv'; export type { CliExitOptions } from './error'; - -export { getPackageJson, getPackageVersion, getPackageName } from './package'; +export { cliExitWithError } from './error'; export type { PackageJson } from './package'; +export { getPackageJson, getPackageName,getPackageVersion } from './package'; diff --git a/packages/inquirerer/src/prompt.ts b/packages/inquirerer/src/prompt.ts index 00112841..472e04cf 100644 --- a/packages/inquirerer/src/prompt.ts +++ b/packages/inquirerer/src/prompt.ts @@ -1,9 +1,9 @@ -import yanse, { red, whiteBright, yellow, gray, dim, green, cyan, white, blue } from 'yanse'; import readline from 'readline'; import { Readable, Writable } from 'stream'; +import { blue, dim, gray, red, white, whiteBright, yellow } from 'yanse'; import { KEY_CODES, TerminalKeypress } from './keypress'; -import { AutocompleteQuestion, BooleanQuestion, CheckboxQuestion, ConfirmQuestion, JsonQuestion, ListQuestion, NumberQuestion, OptionValue, PasswordQuestion, Question, TextQuestion, Validation, Value } from './question'; +import { AutocompleteQuestion, CheckboxQuestion, ConfirmQuestion, JsonQuestion, ListQuestion, NumberQuestion, OptionValue, PasswordQuestion, Question, TextQuestion, Validation } from './question'; import { DefaultResolverRegistry, globalResolverRegistry } from './resolvers'; // import { writeFileSync } from 'fs'; @@ -67,12 +67,12 @@ const validationMessage = (question: Question, ctx: PromptContext): string => { } switch (ctx.validation.type) { - case 'required': - return red(`The field "${question.name}" is required. Please provide a value.\n`); - case 'pattern': - return red(`The field "${question.name}" does not match the pattern: ${question.pattern}.\n`); - default: - return red(`The field "${question.name}" is invalid. Please try again.\n`); + case 'required': + return red(`The field "${question.name}" is required. Please provide a value.\n`); + case 'pattern': + return red(`The field "${question.name}" does not match the pattern: ${question.pattern}.\n`); + default: + return red(`The field "${question.name}" is invalid. Please try again.\n`); } }; class PromptContext { @@ -128,44 +128,44 @@ function generatePromptMessage(question: Question, ctx: PromptContext): string { // 1. Main prompt label with --name inline (and aliases if present) const aliasInfo = question.alias ? `, ${(Array.isArray(question.alias) ? question.alias : [question.alias]) - .map(a => a.length === 1 ? `-${a}` : `--${a}`) - .join(', ')}` + .map(a => a.length === 1 ? `-${a}` : `--${a}`) + .join(', ')}` : ''; let promptLine = whiteBright.bold(message || `${name}?`) + ' ' + dim(`(--${name}${aliasInfo})`); // 2. Append default inline (only if present) switch (type) { - case 'confirm': - case 'boolean': - promptLine += ' (y/n)'; - if (def !== undefined) { - promptLine += ` ${yellow(`[${def ? 'y' : 'n'}]`)}`; - } - break; - - case 'json': - promptLine += dim(' (JSON)'); - if (def !== undefined) { - promptLine += ` ${yellow(`[${JSON.stringify(def)}]`)}`; - } - break; + case 'confirm': + case 'boolean': + promptLine += ' (y/n)'; + if (def !== undefined) { + promptLine += ` ${yellow(`[${def ? 'y' : 'n'}]`)}`; + } + break; - case 'text': - case 'number': - if (def !== undefined) { - promptLine += ` ${yellow(`[${def}]`)}`; - } - break; + case 'json': + promptLine += dim(' (JSON)'); + if (def !== undefined) { + promptLine += ` ${yellow(`[${JSON.stringify(def)}]`)}`; + } + break; - case 'autocomplete': - case 'list': - case 'checkbox': - if (def !== undefined) { - const defaults = Array.isArray(def) ? def : [def]; - const rendered = defaults.map(d => yellow(d)).join(gray(', ')); - promptLine += ` ${yellow(`[${rendered}]`)}`; - } - break; + case 'text': + case 'number': + if (def !== undefined) { + promptLine += ` ${yellow(`[${def}]`)}`; + } + break; + + case 'autocomplete': + case 'list': + case 'checkbox': + if (def !== undefined) { + const defaults = Array.isArray(def) ? def : [def]; + const rendered = defaults.map(d => yellow(d)).join(gray(', ')); + promptLine += ` ${yellow(`[${rendered}]`)}`; + } + break; } lines.push(promptLine); @@ -238,7 +238,7 @@ export class Inquirerer { mutateArgs = true, resolverRegistry = globalResolverRegistry, timeout - } = options ?? {} + } = options ?? {}; this.useDefaults = useDefaults; this.noTty = noTty; @@ -390,27 +390,27 @@ export class Inquirerer { if (success) { return { success - } + }; } else { return { type: 'pattern', success: false, reason: question.pattern - } + }; } } return { success: true - } + }; } private isEmptyAnswer(answer: any): boolean { switch (true) { - case answer === undefined: - case answer === null: - case answer === '': - case Array.isArray(answer) && answer.length === 0: - return true; + case answer === undefined: + case answer === null: + case answer === '': + case Array.isArray(answer) && answer.length === 0: + return true; } return false; } @@ -749,21 +749,21 @@ export class Inquirerer { this.handledKeys.add(question.name); switch (question.type) { - case 'text': - case 'number': - case 'confirm': - // do nothing, already set! - break; - case 'checkbox': - this.handleOverridesForCheckboxOptions(argv, obj, question); - break; - case 'autocomplete': - case 'list': - // get the value from options :) - this.handleOverridesWithOptions(argv, obj, question); - break; - default: - return; + case 'text': + case 'number': + case 'confirm': + // do nothing, already set! + break; + case 'checkbox': + this.handleOverridesForCheckboxOptions(argv, obj, question); + break; + case 'autocomplete': + case 'list': + // get the value from options :) + this.handleOverridesWithOptions(argv, obj, question); + break; + default: + return; } } @@ -832,26 +832,26 @@ export class Inquirerer { private async handleQuestionType(question: Question, ctx: PromptContext): Promise { this.keypress?.clearHandlers(); switch (question.type) { - case 'confirm': - return this.confirm(question as ConfirmQuestion, ctx); - case 'boolean': - return this.confirm(question as unknown as ConfirmQuestion, ctx); - case 'json': - return this.json(question as JsonQuestion, ctx); - case 'checkbox': - return this.checkbox(question as CheckboxQuestion, ctx); - case 'list': - return this.list(question as ListQuestion, ctx); - case 'autocomplete': - return this.autocomplete(question as AutocompleteQuestion, ctx); - case 'number': - return this.number(question as NumberQuestion, ctx); - case 'password': - return this.password(question as PasswordQuestion, ctx); - case 'text': - return this.text(question as TextQuestion, ctx); - default: - return this.text(question as TextQuestion, ctx); + case 'confirm': + return this.confirm(question as ConfirmQuestion, ctx); + case 'boolean': + return this.confirm(question as unknown as ConfirmQuestion, ctx); + case 'json': + return this.json(question as JsonQuestion, ctx); + case 'checkbox': + return this.checkbox(question as CheckboxQuestion, ctx); + case 'list': + return this.list(question as ListQuestion, ctx); + case 'autocomplete': + return this.autocomplete(question as AutocompleteQuestion, ctx); + case 'number': + return this.number(question as NumberQuestion, ctx); + case 'password': + return this.password(question as PasswordQuestion, ctx); + case 'text': + return this.text(question as TextQuestion, ctx); + default: + return this.text(question as TextQuestion, ctx); } } @@ -1045,7 +1045,7 @@ export class Inquirerer { let filteredOptions = options; let selectedIndex = 0; let startIndex = 0; // Start index for visible options - const maxLines = this.getMaxLines(question, options.length) // Use provided max or total options + const maxLines = this.getMaxLines(question, options.length); // Use provided max or total options // const selections: boolean[] = new Array(options.length).fill(false); const selections: boolean[] = options.map(opt => { @@ -1198,7 +1198,7 @@ export class Inquirerer { let filteredOptions = options; let selectedIndex = 0; let startIndex = 0; // Start index for visible options - const maxLines = this.getMaxLines(question, options.length) // Use provided max or total options + const maxLines = this.getMaxLines(question, options.length); // Use provided max or total options const display = (): void => { this.clearScreen(); @@ -1302,7 +1302,7 @@ export class Inquirerer { let input = ''; let selectedIndex = 0; let startIndex = 0; // Start index for visible options - const maxLines = this.getMaxLines(question, options.length) // Use provided max or total options + const maxLines = this.getMaxLines(question, options.length); // Use provided max or total options const display = (): void => { this.clearScreen(); @@ -1477,8 +1477,8 @@ export class Inquirerer { const flag = `--${q.name}`; const aliases = q.alias ? (Array.isArray(q.alias) ? q.alias : [q.alias]) - .map(a => a.length === 1 ? `-${a}` : `--${a}`) - .join(', ') + .map(a => a.length === 1 ? `-${a}` : `--${a}`) + .join(', ') : ''; const aliasStr = aliases ? ` (${aliases})` : ''; const label = q.message || q.name; diff --git a/packages/inquirerer/src/question/types.ts b/packages/inquirerer/src/question/types.ts index 102f746a..16275a9a 100644 --- a/packages/inquirerer/src/question/types.ts +++ b/packages/inquirerer/src/question/types.ts @@ -35,36 +35,36 @@ export interface BaseQuestion { skipPrompt?: boolean; } - export interface ConfirmQuestion extends BaseQuestion { +export interface ConfirmQuestion extends BaseQuestion { type: 'confirm'; default?: boolean; // Defaults are typically boolean for confirm types } - export interface BooleanQuestion extends BaseQuestion { +export interface BooleanQuestion extends BaseQuestion { type: 'boolean'; default?: boolean; // Alias for confirm — same behavior, semantic name } - export interface JsonQuestion extends BaseQuestion { +export interface JsonQuestion extends BaseQuestion { type: 'json'; default?: Record; // Default JSON value } - export interface AutocompleteQuestion extends BaseQuestion { +export interface AutocompleteQuestion extends BaseQuestion { type: 'autocomplete'; options: (string|OptionValue)[]; maxDisplayLines?: number; allowCustomOptions?: boolean; } - export interface ListQuestion extends BaseQuestion { +export interface ListQuestion extends BaseQuestion { type: 'list'; options: (string|OptionValue)[]; maxDisplayLines?: number; allowCustomOptions?: boolean; } - export interface CheckboxQuestion extends BaseQuestion { +export interface CheckboxQuestion extends BaseQuestion { type: 'checkbox'; options: (string|OptionValue)[]; maxDisplayLines?: number; @@ -73,19 +73,19 @@ export interface BaseQuestion { default?: string[]; } - export interface TextQuestion extends BaseQuestion { +export interface TextQuestion extends BaseQuestion { type: 'text'; default?: string; } - export interface NumberQuestion extends BaseQuestion { +export interface NumberQuestion extends BaseQuestion { type: 'number'; default?: number; } - export interface PasswordQuestion extends BaseQuestion { +export interface PasswordQuestion extends BaseQuestion { type: 'password'; mask?: string; // Character to use for masking (default: '*') } - export type Question = ConfirmQuestion | BooleanQuestion | JsonQuestion | ListQuestion | AutocompleteQuestion | CheckboxQuestion | TextQuestion | NumberQuestion | PasswordQuestion; +export type Question = ConfirmQuestion | BooleanQuestion | JsonQuestion | ListQuestion | AutocompleteQuestion | CheckboxQuestion | TextQuestion | NumberQuestion | PasswordQuestion; diff --git a/packages/inquirerer/src/resolvers/date.ts b/packages/inquirerer/src/resolvers/date.ts index b41988af..debc82e4 100644 --- a/packages/inquirerer/src/resolvers/date.ts +++ b/packages/inquirerer/src/resolvers/date.ts @@ -4,10 +4,10 @@ import type { ResolverRegistry } from './types'; * Built-in date/time resolvers. */ export const dateResolvers: ResolverRegistry = { - 'date.year': () => new Date().getFullYear().toString(), - 'date.month': () => (new Date().getMonth() + 1).toString().padStart(2, '0'), - 'date.day': () => new Date().getDate().toString().padStart(2, '0'), - 'date.now': () => new Date().toISOString(), - 'date.iso': () => new Date().toISOString().split('T')[0], // YYYY-MM-DD - 'date.timestamp': () => Date.now().toString(), + 'date.year': () => new Date().getFullYear().toString(), + 'date.month': () => (new Date().getMonth() + 1).toString().padStart(2, '0'), + 'date.day': () => new Date().getDate().toString().padStart(2, '0'), + 'date.now': () => new Date().toISOString(), + 'date.iso': () => new Date().toISOString().split('T')[0], // YYYY-MM-DD + 'date.timestamp': () => Date.now().toString(), }; diff --git a/packages/inquirerer/src/resolvers/git.ts b/packages/inquirerer/src/resolvers/git.ts index 79c0f160..43210cc3 100644 --- a/packages/inquirerer/src/resolvers/git.ts +++ b/packages/inquirerer/src/resolvers/git.ts @@ -1,4 +1,5 @@ import { execSync } from 'child_process'; + import type { ResolverRegistry } from './types'; /** @@ -7,22 +8,22 @@ import type { ResolverRegistry } from './types'; * @returns The config value as a string, or undefined if not found or error occurs */ export function getGitConfig(key: string): string | undefined { - try { - const result = execSync(`git config --global ${key}`, { - encoding: 'utf8', - stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr - }); - const trimmed = result.trim(); - return trimmed || undefined; // Treat empty string as undefined - } catch { - return undefined; - } + try { + const result = execSync(`git config --global ${key}`, { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr + }); + const trimmed = result.trim(); + return trimmed || undefined; // Treat empty string as undefined + } catch { + return undefined; + } } /** * Built-in git configuration resolvers. */ export const gitResolvers: ResolverRegistry = { - 'git.user.name': () => getGitConfig('user.name'), - 'git.user.email': () => getGitConfig('user.email'), + 'git.user.name': () => getGitConfig('user.name'), + 'git.user.email': () => getGitConfig('user.email'), }; diff --git a/packages/inquirerer/src/resolvers/index.ts b/packages/inquirerer/src/resolvers/index.ts index 267a6b7d..ae3cc93a 100644 --- a/packages/inquirerer/src/resolvers/index.ts +++ b/packages/inquirerer/src/resolvers/index.ts @@ -1,86 +1,86 @@ -import { gitResolvers } from './git'; import { dateResolvers } from './date'; +import { gitResolvers } from './git'; import { npmResolvers } from './npm'; -import { workspaceResolvers } from './workspace'; import type { DefaultResolver, ResolverRegistry } from './types'; +import { workspaceResolvers } from './workspace'; /** * A registry for managing default value resolvers. * Allows registration of custom resolvers and provides resolution logic. */ export class DefaultResolverRegistry { - private resolvers: ResolverRegistry; + private resolvers: ResolverRegistry; - constructor(initialResolvers: ResolverRegistry = {}) { - this.resolvers = { ...initialResolvers }; - } + constructor(initialResolvers: ResolverRegistry = {}) { + this.resolvers = { ...initialResolvers }; + } - /** + /** * Register a custom resolver. * @param key The resolver key (e.g., 'git.user.name') * @param resolver The resolver function */ - register(key: string, resolver: DefaultResolver): void { - this.resolvers[key] = resolver; - } + register(key: string, resolver: DefaultResolver): void { + this.resolvers[key] = resolver; + } - /** + /** * Unregister a resolver. * @param key The resolver key to remove */ - unregister(key: string): void { - delete this.resolvers[key]; - } + unregister(key: string): void { + delete this.resolvers[key]; + } - /** + /** * Resolve a key to its value. * Returns undefined if the resolver doesn't exist or if it throws an error. * @param key The resolver key * @returns The resolved value or undefined */ - async resolve(key: string): Promise { - const resolver = this.resolvers[key]; - if (!resolver) { - return undefined; - } + async resolve(key: string): Promise { + const resolver = this.resolvers[key]; + if (!resolver) { + return undefined; + } - try { - const result = await Promise.resolve(resolver()); - // Treat empty strings as undefined - return result === '' ? undefined : result; - } catch (error) { - // Silent failure - log only in debug mode - if (process.env.DEBUG === 'genomic') { - console.error(`[genomic] Resolver '${key}' failed:`, error); - } - return undefined; - } + try { + const result = await Promise.resolve(resolver()); + // Treat empty strings as undefined + return result === '' ? undefined : result; + } catch (error) { + // Silent failure - log only in debug mode + if (process.env.DEBUG === 'genomic') { + console.error(`[genomic] Resolver '${key}' failed:`, error); + } + return undefined; } + } - /** + /** * Check if a resolver exists for the given key. * @param key The resolver key * @returns True if the resolver exists */ - has(key: string): boolean { - return key in this.resolvers; - } + has(key: string): boolean { + return key in this.resolvers; + } - /** + /** * Get all registered resolver keys. * @returns Array of resolver keys */ - keys(): string[] { - return Object.keys(this.resolvers); - } + keys(): string[] { + return Object.keys(this.resolvers); + } - /** + /** * Create a copy of this registry with all current resolvers. * @returns A new DefaultResolverRegistry instance */ - clone(): DefaultResolverRegistry { - return new DefaultResolverRegistry({ ...this.resolvers }); - } + clone(): DefaultResolverRegistry { + return new DefaultResolverRegistry({ ...this.resolvers }); + } } /** @@ -88,10 +88,10 @@ export class DefaultResolverRegistry { * This is the default registry used by Inquirerer unless a custom one is provided. */ export const globalResolverRegistry = new DefaultResolverRegistry({ - ...gitResolvers, - ...dateResolvers, - ...npmResolvers, - ...workspaceResolvers, + ...gitResolvers, + ...dateResolvers, + ...npmResolvers, + ...workspaceResolvers, }); /** @@ -100,7 +100,7 @@ export const globalResolverRegistry = new DefaultResolverRegistry({ * @param resolver The resolver function */ export function registerDefaultResolver(key: string, resolver: DefaultResolver): void { - globalResolverRegistry.register(key, resolver); + globalResolverRegistry.register(key, resolver); } /** @@ -109,10 +109,10 @@ export function registerDefaultResolver(key: string, resolver: DefaultResolver): * @returns The resolved value or undefined */ export function resolveDefault(key: string): Promise { - return globalResolverRegistry.resolve(key); + return globalResolverRegistry.resolve(key); } // Re-export types and utilities -export type { DefaultResolver, ResolverRegistry } from './types'; export { getGitConfig } from './git'; export { getNpmWhoami } from './npm'; +export type { DefaultResolver, ResolverRegistry } from './types'; diff --git a/packages/inquirerer/src/resolvers/npm.ts b/packages/inquirerer/src/resolvers/npm.ts index 906439d2..a33819fd 100644 --- a/packages/inquirerer/src/resolvers/npm.ts +++ b/packages/inquirerer/src/resolvers/npm.ts @@ -1,4 +1,5 @@ import { execSync } from 'child_process'; + import type { ResolverRegistry } from './types'; /** @@ -6,21 +7,21 @@ import type { ResolverRegistry } from './types'; * @returns The npm username, or undefined if not logged in or error occurs */ export function getNpmWhoami(): string | undefined { - try { - const result = execSync('npm whoami', { - encoding: 'utf8', - stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr - }); - const trimmed = result.trim(); - return trimmed || undefined; // Treat empty string as undefined - } catch { - return undefined; - } + try { + const result = execSync('npm whoami', { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr + }); + const trimmed = result.trim(); + return trimmed || undefined; // Treat empty string as undefined + } catch { + return undefined; + } } /** * Built-in npm resolvers. */ export const npmResolvers: ResolverRegistry = { - 'npm.whoami': () => getNpmWhoami(), + 'npm.whoami': () => getNpmWhoami(), }; diff --git a/packages/inquirerer/src/resolvers/workspace.ts b/packages/inquirerer/src/resolvers/workspace.ts index b8096a71..63c59279 100644 --- a/packages/inquirerer/src/resolvers/workspace.ts +++ b/packages/inquirerer/src/resolvers/workspace.ts @@ -1,16 +1,17 @@ -import type { ResolverRegistry } from './types'; import { findAndRequirePackageJson, PackageJson } from 'find-and-require-package-json'; +import type { ResolverRegistry } from './types'; + /** * Find and read the nearest package.json starting from cwd. * Returns undefined if not found (instead of throwing). */ function findPackageJsonFromCwd(): PackageJson | undefined { - try { - return findAndRequirePackageJson(process.cwd()); - } catch { - return undefined; - } + try { + return findAndRequirePackageJson(process.cwd()); + } catch { + return undefined; + } } /** @@ -22,23 +23,23 @@ function findPackageJsonFromCwd(): PackageJson | undefined { * - git://github.com/org/repo.git */ function parseGitHubUrl(url: string): { organization?: string; name?: string } { - if (!url) { - return {}; - } + if (!url) { + return {}; + } - // Handle git@github.com:org/repo.git format - const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/.]+)(?:\.git)?/); - if (sshMatch) { - return { organization: sshMatch[1], name: sshMatch[2] }; - } + // Handle git@github.com:org/repo.git format + const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/.]+)(?:\.git)?/); + if (sshMatch) { + return { organization: sshMatch[1], name: sshMatch[2] }; + } - // Handle https://github.com/org/repo or git://github.com/org/repo formats - const httpsMatch = url.match(/(?:https?|git):\/\/github\.com\/([^/]+)\/([^/.]+)(?:\.git)?/); - if (httpsMatch) { - return { organization: httpsMatch[1], name: httpsMatch[2] }; - } + // Handle https://github.com/org/repo or git://github.com/org/repo formats + const httpsMatch = url.match(/(?:https?|git):\/\/github\.com\/([^/]+)\/([^/.]+)(?:\.git)?/); + if (httpsMatch) { + return { organization: httpsMatch[1], name: httpsMatch[2] }; + } - return {}; + return {}; } /** @@ -46,15 +47,15 @@ function parseGitHubUrl(url: string): { organization?: string; name?: string } { * Handles both string and object formats. */ function getRepositoryUrl(pkg: PackageJson): string | undefined { - if (!pkg.repository) { - return undefined; - } + if (!pkg.repository) { + return undefined; + } - if (typeof pkg.repository === 'string') { - return pkg.repository; - } + if (typeof pkg.repository === 'string') { + return pkg.repository; + } - return pkg.repository.url; + return pkg.repository.url; } /** @@ -65,22 +66,22 @@ function parseAuthor(author: string | { name?: string; email?: string; url?: str name?: string; email?: string; } { - if (!author) { - return {}; - } + if (!author) { + return {}; + } - if (typeof author === 'object') { - return { name: author.name, email: author.email }; - } + if (typeof author === 'object') { + return { name: author.name, email: author.email }; + } - // Parse string format: "Name (url)" - const nameMatch = author.match(/^([^<(]+)/); - const emailMatch = author.match(/<([^>]+)>/); + // Parse string format: "Name (url)" + const nameMatch = author.match(/^([^<(]+)/); + const emailMatch = author.match(/<([^>]+)>/); - return { - name: nameMatch ? nameMatch[1].trim() : undefined, - email: emailMatch ? emailMatch[1] : undefined, - }; + return { + name: nameMatch ? nameMatch[1].trim() : undefined, + email: emailMatch ? emailMatch[1] : undefined, + }; } /** @@ -88,66 +89,66 @@ function parseAuthor(author: string | { name?: string; email?: string; url?: str * These resolve values from the nearest package.json in the current working directory. */ export const workspaceResolvers: ResolverRegistry = { - 'workspace.name': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const url = getRepositoryUrl(pkg); - // Prefer repo slug when repository is set; fall back to package name - if (url) { - const parsed = parseGitHubUrl(url); - if (parsed.name) return parsed.name; - } - return pkg.name; - }, - - 'workspace.repo.name': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const url = getRepositoryUrl(pkg); - if (!url) return undefined; - return parseGitHubUrl(url).name; - }, - - 'workspace.repo.organization': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const url = getRepositoryUrl(pkg); - if (!url) return undefined; - return parseGitHubUrl(url).organization; - }, - - // Alias for repo.organization for template readability - 'workspace.organization.name': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const url = getRepositoryUrl(pkg); - if (!url) return undefined; - return parseGitHubUrl(url).organization; - }, - - 'workspace.license': () => { - const pkg = findPackageJsonFromCwd(); - return pkg?.license; - }, - - 'workspace.author': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const parsed = parseAuthor(pkg.author); - return parsed.name; - }, - - 'workspace.author.name': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const parsed = parseAuthor(pkg.author); - return parsed.name; - }, - - 'workspace.author.email': () => { - const pkg = findPackageJsonFromCwd(); - if (!pkg) return undefined; - const parsed = parseAuthor(pkg.author); - return parsed.email; - }, + 'workspace.name': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const url = getRepositoryUrl(pkg); + // Prefer repo slug when repository is set; fall back to package name + if (url) { + const parsed = parseGitHubUrl(url); + if (parsed.name) return parsed.name; + } + return pkg.name; + }, + + 'workspace.repo.name': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const url = getRepositoryUrl(pkg); + if (!url) return undefined; + return parseGitHubUrl(url).name; + }, + + 'workspace.repo.organization': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const url = getRepositoryUrl(pkg); + if (!url) return undefined; + return parseGitHubUrl(url).organization; + }, + + // Alias for repo.organization for template readability + 'workspace.organization.name': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const url = getRepositoryUrl(pkg); + if (!url) return undefined; + return parseGitHubUrl(url).organization; + }, + + 'workspace.license': () => { + const pkg = findPackageJsonFromCwd(); + return pkg?.license; + }, + + 'workspace.author': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const parsed = parseAuthor(pkg.author); + return parsed.name; + }, + + 'workspace.author.name': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const parsed = parseAuthor(pkg.author); + return parsed.name; + }, + + 'workspace.author.email': () => { + const pkg = findPackageJsonFromCwd(); + if (!pkg) return undefined; + const parsed = parseAuthor(pkg.author); + return parsed.email; + }, }; diff --git a/packages/inquirerer/src/ui/engine.ts b/packages/inquirerer/src/ui/engine.ts index 4d892f6e..5c2500d0 100644 --- a/packages/inquirerer/src/ui/engine.ts +++ b/packages/inquirerer/src/ui/engine.ts @@ -6,8 +6,9 @@ */ import { Readable, Writable } from 'stream'; + import { KEY_CODES, TerminalKeypress } from '../keypress'; -import { Key, UIEvent, UIScreenConfig, EventResult } from './types'; +import {Key, UIEvent, UIScreenConfig } from './types'; /** * Maps raw key codes to normalized Key enum diff --git a/packages/inquirerer/src/ui/index.ts b/packages/inquirerer/src/ui/index.ts index e1b50269..04930e5f 100644 --- a/packages/inquirerer/src/ui/index.ts +++ b/packages/inquirerer/src/ui/index.ts @@ -5,35 +5,35 @@ */ // Core engine -export { UIEngine, UIEngineOptions, ANSI } from './engine'; +export { ANSI,UIEngine, UIEngineOptions } from './engine'; // Types export { - Key, - UIEvent, EventResult, - UIScreenConfig, - SpinnerConfig, + Key, + PackageInfo, ProgressConfig, + SpinnerConfig, StreamConfig, - PackageInfo, + UIEvent, + UIScreenConfig, UpgradeSelection, } from './types'; // Components -export { Spinner, createSpinner, SPINNER_STYLES } from './spinner'; -export { ProgressBar, createProgress } from './progress'; -export { StreamingText, createStream } from './stream'; +export { createProgress,ProgressBar } from './progress'; +export { createSpinner, Spinner, SPINNER_STYLES } from './spinner'; +export { createStream,StreamingText } from './stream'; export { interactiveUpgrade, upgradePrompt } from './upgrade'; // Engine-based prompt implementations (internal use) export { - listPromptEngine, + AutocompletePromptConfig, autocompletePromptEngine, + CheckboxPromptConfig, checkboxPromptEngine, filterOptions, - renderPromptHeader, ListPromptConfig, - AutocompletePromptConfig, - CheckboxPromptConfig, + listPromptEngine, + renderPromptHeader, } from './prompts'; diff --git a/packages/inquirerer/src/ui/progress.ts b/packages/inquirerer/src/ui/progress.ts index 705e78b0..11d0e480 100644 --- a/packages/inquirerer/src/ui/progress.ts +++ b/packages/inquirerer/src/ui/progress.ts @@ -5,7 +5,8 @@ */ import { Writable } from 'stream'; -import { green, cyan, dim, white } from 'yanse'; +import { cyan, dim, green, white } from 'yanse'; + import { ProgressConfig } from './types'; interface ProgressState { @@ -120,17 +121,17 @@ export class ProgressBar { let icon: string; switch (status) { - case 'complete': - bar = green('█'.repeat(this.width)); - icon = green('✔'); - break; - case 'error': - bar = dim('█'.repeat(filled) + '░'.repeat(empty)); - icon = '\x1B[31m✖\x1B[0m'; // red - break; - default: - bar = cyan('█'.repeat(filled)) + dim('░'.repeat(empty)); - icon = cyan('◐'); + case 'complete': + bar = green('█'.repeat(this.width)); + icon = green('✔'); + break; + case 'error': + bar = dim('█'.repeat(filled) + '░'.repeat(empty)); + icon = '\x1B[31m✖\x1B[0m'; // red + break; + default: + bar = cyan('█'.repeat(filled)) + dim('░'.repeat(empty)); + icon = cyan('◐'); } let line = `${icon} ${text} [${bar}]`; diff --git a/packages/inquirerer/src/ui/prompts.ts b/packages/inquirerer/src/ui/prompts.ts index daf2f723..998f496e 100644 --- a/packages/inquirerer/src/ui/prompts.ts +++ b/packages/inquirerer/src/ui/prompts.ts @@ -5,12 +5,13 @@ * using the UIEngine for rendering and event handling. */ +import { Readable, Writable } from 'stream'; import { blue } from 'yanse'; -import { UIEngine } from './engine'; -import { Key, UIEvent, EventResult } from './types'; + import { TerminalKeypress } from '../keypress'; import { OptionValue } from '../question'; -import { Readable, Writable } from 'stream'; +import { UIEngine } from './engine'; +import { EventResult,Key, UIEvent } from './types'; /** * Render the prompt header lines @@ -97,30 +98,30 @@ function listOnEvent(event: UIEvent, state: ListState): EventResult= 0 ? selectedIndex - 1 : options.length - 1; - if (selectedIndex < startIndex) { - startIndex = selectedIndex; - } else if (selectedIndex === options.length - 1) { - startIndex = Math.max(0, options.length - maxLines); - } - break; + case Key.UP: + selectedIndex = selectedIndex - 1 >= 0 ? selectedIndex - 1 : options.length - 1; + if (selectedIndex < startIndex) { + startIndex = selectedIndex; + } else if (selectedIndex === options.length - 1) { + startIndex = Math.max(0, options.length - maxLines); + } + break; - case Key.DOWN: - selectedIndex = (selectedIndex + 1) % options.length; - if (selectedIndex >= startIndex + maxLines) { - startIndex = selectedIndex - maxLines + 1; - } else if (selectedIndex === 0) { - startIndex = 0; - } - break; + case Key.DOWN: + selectedIndex = (selectedIndex + 1) % options.length; + if (selectedIndex >= startIndex + maxLines) { + startIndex = selectedIndex - maxLines + 1; + } else if (selectedIndex === 0) { + startIndex = 0; + } + break; - case Key.ENTER: - return { - state: { ...state, selectedIndex, startIndex }, - done: true, - value: options[selectedIndex]?.value - }; + case Key.ENTER: + return { + state: { ...state, selectedIndex, startIndex }, + done: true, + value: options[selectedIndex]?.value + }; } } @@ -216,43 +217,43 @@ function autocompleteOnEvent(event: UIEvent, state: AutocompleteState): EventRes if (event.type === 'key') { switch (event.key) { - case Key.UP: - if (filteredOptions.length === 0) break; - selectedIndex = selectedIndex - 1 >= 0 ? selectedIndex - 1 : filteredOptions.length - 1; - if (selectedIndex < startIndex) { - startIndex = selectedIndex; - } else if (selectedIndex === filteredOptions.length - 1) { - startIndex = Math.max(0, filteredOptions.length - maxLines); - } - break; + case Key.UP: + if (filteredOptions.length === 0) break; + selectedIndex = selectedIndex - 1 >= 0 ? selectedIndex - 1 : filteredOptions.length - 1; + if (selectedIndex < startIndex) { + startIndex = selectedIndex; + } else if (selectedIndex === filteredOptions.length - 1) { + startIndex = Math.max(0, filteredOptions.length - maxLines); + } + break; - case Key.DOWN: - if (filteredOptions.length === 0) break; - selectedIndex = (selectedIndex + 1) % filteredOptions.length; - if (selectedIndex >= startIndex + maxLines) { - startIndex = selectedIndex - maxLines + 1; - } else if (selectedIndex === 0) { - startIndex = 0; - } - break; + case Key.DOWN: + if (filteredOptions.length === 0) break; + selectedIndex = (selectedIndex + 1) % filteredOptions.length; + if (selectedIndex >= startIndex + maxLines) { + startIndex = selectedIndex - maxLines + 1; + } else if (selectedIndex === 0) { + startIndex = 0; + } + break; - case Key.BACKSPACE: - input = input.slice(0, -1); - updateFiltered(); - break; + case Key.BACKSPACE: + input = input.slice(0, -1); + updateFiltered(); + break; - case Key.SPACE: - // In autocomplete, space is part of input (unlike checkbox) - input += ' '; - updateFiltered(); - break; + case Key.SPACE: + // In autocomplete, space is part of input (unlike checkbox) + input += ' '; + updateFiltered(); + break; - case Key.ENTER: - return { - state: { ...state, input, filteredOptions, selectedIndex, startIndex }, - done: true, - value: filteredOptions[selectedIndex]?.value || input - }; + case Key.ENTER: + return { + state: { ...state, input, filteredOptions, selectedIndex, startIndex }, + done: true, + value: filteredOptions[selectedIndex]?.value || input + }; } } else if (event.type === 'char') { input += event.char; @@ -364,68 +365,68 @@ function checkboxOnEvent(event: UIEvent, state: CheckboxState): EventResult 0 ? selectedIndex - 1 : filteredOptions.length - 1; - if (selectedIndex < startIndex) { - startIndex = selectedIndex; - } else if (selectedIndex === filteredOptions.length - 1) { - startIndex = Math.max(0, filteredOptions.length - maxLines); - } - break; + case Key.UP: + if (filteredOptions.length === 0) break; + selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : filteredOptions.length - 1; + if (selectedIndex < startIndex) { + startIndex = selectedIndex; + } else if (selectedIndex === filteredOptions.length - 1) { + startIndex = Math.max(0, filteredOptions.length - maxLines); + } + break; - case Key.DOWN: - if (filteredOptions.length === 0) break; - selectedIndex = (selectedIndex + 1) % filteredOptions.length; - if (selectedIndex >= startIndex + maxLines) { - startIndex = selectedIndex - maxLines + 1; - } else if (selectedIndex === 0) { - startIndex = 0; - } - break; + case Key.DOWN: + if (filteredOptions.length === 0) break; + selectedIndex = (selectedIndex + 1) % filteredOptions.length; + if (selectedIndex >= startIndex + maxLines) { + startIndex = selectedIndex - maxLines + 1; + } else if (selectedIndex === 0) { + startIndex = 0; + } + break; - case Key.BACKSPACE: - input = input.slice(0, -1); - updateFiltered(); - break; + case Key.BACKSPACE: + input = input.slice(0, -1); + updateFiltered(); + break; - case Key.SPACE: - // Toggle selection - if (filteredOptions.length > 0 && filteredOptions[selectedIndex]) { - const originalIndex = options.indexOf(filteredOptions[selectedIndex]); - if (originalIndex >= 0) { - selections = [...selections]; - selections[originalIndex] = !selections[originalIndex]; - } + case Key.SPACE: + // Toggle selection + if (filteredOptions.length > 0 && filteredOptions[selectedIndex]) { + const originalIndex = options.indexOf(filteredOptions[selectedIndex]); + if (originalIndex >= 0) { + selections = [...selections]; + selections[originalIndex] = !selections[originalIndex]; } - break; + } + break; - case Key.ENTER: - const result: OptionValue[] = []; - if (returnFullResults) { - options.forEach((option, index) => { + case Key.ENTER: + const result: OptionValue[] = []; + if (returnFullResults) { + options.forEach((option, index) => { + result.push({ + name: option.name, + value: option.value, + selected: selections[index] + }); + }); + } else { + options.forEach((option, index) => { + if (selections[index]) { result.push({ name: option.name, value: option.value, - selected: selections[index] + selected: true }); - }); - } else { - options.forEach((option, index) => { - if (selections[index]) { - result.push({ - name: option.name, - value: option.value, - selected: true - }); - } - }); - } - return { - state: { ...state, input, filteredOptions, selections, selectedIndex, startIndex }, - done: true, - value: result - }; + } + }); + } + return { + state: { ...state, input, filteredOptions, selections, selectedIndex, startIndex }, + done: true, + value: result + }; } } else if (event.type === 'char') { input += event.char; diff --git a/packages/inquirerer/src/ui/spinner.ts b/packages/inquirerer/src/ui/spinner.ts index a68da37d..d3683b74 100644 --- a/packages/inquirerer/src/ui/spinner.ts +++ b/packages/inquirerer/src/ui/spinner.ts @@ -5,9 +5,10 @@ */ import { Writable } from 'stream'; +import { cyan,green, red, yellow } from 'yanse'; + import { UIEngine } from './engine'; import { SpinnerConfig } from './types'; -import { green, red, yellow, cyan } from 'yanse'; /** * Default spinner frames (dots style) @@ -160,24 +161,24 @@ export class Spinner { let displayText = finalText ?? text; switch (status) { - case 'success': - icon = green('✔'); - displayText = green(displayText); - break; - case 'error': - icon = red('✖'); - displayText = red(displayText); - break; - case 'warning': - icon = yellow('⚠'); - displayText = yellow(displayText); - break; - case 'info': - icon = cyan('ℹ'); - displayText = cyan(displayText); - break; - default: - icon = cyan(this.frames[frame]); + case 'success': + icon = green('✔'); + displayText = green(displayText); + break; + case 'error': + icon = red('✖'); + displayText = red(displayText); + break; + case 'warning': + icon = yellow('⚠'); + displayText = yellow(displayText); + break; + case 'info': + icon = cyan('ℹ'); + displayText = cyan(displayText); + break; + default: + icon = cyan(this.frames[frame]); } // Clear line and write diff --git a/packages/inquirerer/src/ui/stream.ts b/packages/inquirerer/src/ui/stream.ts index e91815b1..d4656dcf 100644 --- a/packages/inquirerer/src/ui/stream.ts +++ b/packages/inquirerer/src/ui/stream.ts @@ -6,6 +6,7 @@ import { Writable } from 'stream'; import { cyan } from 'yanse'; + import { StreamConfig } from './types'; interface StreamState { diff --git a/packages/inquirerer/src/ui/upgrade.ts b/packages/inquirerer/src/ui/upgrade.ts index be35a03d..f34b1afe 100644 --- a/packages/inquirerer/src/ui/upgrade.ts +++ b/packages/inquirerer/src/ui/upgrade.ts @@ -4,9 +4,10 @@ * pnpm-style interactive dependency upgrade interface */ +import { cyan, dim,green, white } from 'yanse'; + import { UIEngine } from './engine'; -import { Key, UIEvent, EventResult, PackageInfo, UpgradeSelection } from './types'; -import { cyan, green, yellow, red, dim, white, blue, gray } from 'yanse'; +import { EventResult, Key, PackageInfo, UpgradeSelection } from './types'; interface UpgradeState { packages: PackageInfo[]; @@ -174,176 +175,176 @@ export async function interactiveUpgrade( if (event.type === 'key') { switch (event.key) { - case Key.UP: { - if (filteredPackages.length === 0) return { state }; + case Key.UP: { + if (filteredPackages.length === 0) return { state }; + + let newIndex = state.selectedIndex - 1; + let newStartIndex = state.startIndex; - let newIndex = state.selectedIndex - 1; - let newStartIndex = state.startIndex; + if (newIndex < 0) { + newIndex = filteredPackages.length - 1; + newStartIndex = Math.max(0, filteredPackages.length - state.maxLines); + } else if (newIndex < state.startIndex) { + newStartIndex = newIndex; + } - if (newIndex < 0) { - newIndex = filteredPackages.length - 1; - newStartIndex = Math.max(0, filteredPackages.length - state.maxLines); - } else if (newIndex < state.startIndex) { - newStartIndex = newIndex; + return { + state: { + ...state, + selectedIndex: newIndex, + startIndex: newStartIndex, + mode: 'select', } + }; + } + + case Key.DOWN: { + if (filteredPackages.length === 0) return { state }; - return { - state: { - ...state, - selectedIndex: newIndex, - startIndex: newStartIndex, - mode: 'select', - } - }; + let newIndex = (state.selectedIndex + 1) % filteredPackages.length; + let newStartIndex = state.startIndex; + + if (newIndex === 0) { + newStartIndex = 0; + } else if (newIndex >= state.startIndex + state.maxLines) { + newStartIndex = newIndex - state.maxLines + 1; } + + return { + state: { + ...state, + selectedIndex: newIndex, + startIndex: newStartIndex, + mode: 'select', + } + }; + } - case Key.DOWN: { - if (filteredPackages.length === 0) return { state }; + case Key.SPACE: { + if (filteredPackages.length === 0) return { state }; - let newIndex = (state.selectedIndex + 1) % filteredPackages.length; - let newStartIndex = state.startIndex; + const pkg = filteredPackages[state.selectedIndex]; + const newSelections = new Map(state.selections); + const current = newSelections.get(pkg.name)!; + newSelections.set(pkg.name, { + ...current, + selected: !current.selected, + }); - if (newIndex === 0) { - newStartIndex = 0; - } else if (newIndex >= state.startIndex + state.maxLines) { - newStartIndex = newIndex - state.maxLines + 1; + return { + state: { + ...state, + selections: newSelections, } + }; + } + + case Key.RIGHT: { + if (filteredPackages.length === 0) return { state }; + const pkg = filteredPackages[state.selectedIndex]; + // Generate version options (simplified - in real use, these would come from npm) + const versionOptions = [ + pkg.latest, + `^${pkg.latest}`, + `~${pkg.latest}`, + pkg.current, + ]; + + return { + state: { + ...state, + mode: 'version', + versionOptions, + versionIndex: 0, + } + }; + } + + case Key.LEFT: { + if (state.mode === 'version') { + const newIndex = (state.versionIndex - 1 + state.versionOptions.length) % state.versionOptions.length; return { state: { ...state, - selectedIndex: newIndex, - startIndex: newStartIndex, - mode: 'select', + versionIndex: newIndex, } }; } + return { state }; + } - case Key.SPACE: { - if (filteredPackages.length === 0) return { state }; - + case Key.ENTER: { + if (state.mode === 'version') { + // Apply selected version const pkg = filteredPackages[state.selectedIndex]; const newSelections = new Map(state.selections); const current = newSelections.get(pkg.name)!; newSelections.set(pkg.name, { ...current, - selected: !current.selected, + selected: true, + targetVersion: state.versionOptions[state.versionIndex], }); - + return { state: { ...state, selections: newSelections, + mode: 'select', } }; } - - case Key.RIGHT: { - if (filteredPackages.length === 0) return { state }; - const pkg = filteredPackages[state.selectedIndex]; - // Generate version options (simplified - in real use, these would come from npm) - const versionOptions = [ - pkg.latest, - `^${pkg.latest}`, - `~${pkg.latest}`, - pkg.current, - ]; + // Confirm and return results + const updates: UpgradeResult['updates'] = []; + state.selections.forEach((selection, name) => { + if (selection.selected) { + const pkg = state.packages.find(p => p.name === name)!; + updates.push({ + name, + from: pkg.current, + to: selection.targetVersion, + }); + } + }); + return { + state, + done: true, + value: { updates }, + }; + } + + case Key.ESCAPE: { + if (state.mode === 'version') { return { state: { ...state, - mode: 'version', - versionOptions, - versionIndex: 0, - } - }; - } - - case Key.LEFT: { - if (state.mode === 'version') { - const newIndex = (state.versionIndex - 1 + state.versionOptions.length) % state.versionOptions.length; - return { - state: { - ...state, - versionIndex: newIndex, - } - }; - } - return { state }; - } - - case Key.ENTER: { - if (state.mode === 'version') { - // Apply selected version - const pkg = filteredPackages[state.selectedIndex]; - const newSelections = new Map(state.selections); - const current = newSelections.get(pkg.name)!; - newSelections.set(pkg.name, { - ...current, - selected: true, - targetVersion: state.versionOptions[state.versionIndex], - }); - - return { - state: { - ...state, - selections: newSelections, - mode: 'select', - } - }; - } - - // Confirm and return results - const updates: UpgradeResult['updates'] = []; - state.selections.forEach((selection, name) => { - if (selection.selected) { - const pkg = state.packages.find(p => p.name === name)!; - updates.push({ - name, - from: pkg.current, - to: selection.targetVersion, - }); + mode: 'select', } - }); - - return { - state, - done: true, - value: { updates }, }; } + // Cancel + return { + state, + done: true, + value: { updates: [] }, + }; + } - case Key.ESCAPE: { - if (state.mode === 'version') { - return { - state: { - ...state, - mode: 'select', - } - }; - } - // Cancel + case Key.BACKSPACE: { + if (state.filter.length > 0) { return { - state, - done: true, - value: { updates: [] }, + state: { + ...state, + filter: state.filter.slice(0, -1), + selectedIndex: 0, + startIndex: 0, + } }; } - - case Key.BACKSPACE: { - if (state.filter.length > 0) { - return { - state: { - ...state, - filter: state.filter.slice(0, -1), - selectedIndex: 0, - startIndex: 0, - } - }; - } - return { state }; - } + return { state }; + } } } diff --git a/packages/inquirerer/src/utils.ts b/packages/inquirerer/src/utils.ts index 5c155047..bedf4d77 100644 --- a/packages/inquirerer/src/utils.ts +++ b/packages/inquirerer/src/utils.ts @@ -1,5 +1,5 @@ -import { green, blue } from 'yanse'; import { findAndRequirePackageJson } from 'find-and-require-package-json'; +import { blue,green } from 'yanse'; // Function to display the version information export function displayVersion(): any { diff --git a/packages/inquirerer/test-utils/setup.ts b/packages/inquirerer/test-utils/setup.ts index 0ac98c2e..44fa62c5 100644 --- a/packages/inquirerer/test-utils/setup.ts +++ b/packages/inquirerer/test-utils/setup.ts @@ -1,25 +1,25 @@ +import { stripAnsi } from 'clean-ansi'; import readline from 'readline'; import { Readable, Transform, Writable } from 'stream'; -import { stripAnsi } from 'clean-ansi'; import { CLIOptions } from '../src'; export const KEY_SEQUENCES = { - ENTER: '\u000d', - UP_ARROW: '\u001b[A', - DOWN_ARROW: '\u001b[B', - SPACE: ' ' + ENTER: '\u000d', + UP_ARROW: '\u001b[A', + DOWN_ARROW: '\u001b[B', + SPACE: ' ' }; function humanizeKeySequences(data: string): string { - const keyMap: { [key: string]: string } = { - '\u000d': '', - '\u001b[A': '', - '\u001b[B': '', - ' ': '' - }; - - return data.replace(/[\u000d\u001b[A\u001b[B ]/g, (match) => keyMap[match] ?? match); + const keyMap: { [key: string]: string } = { + '\u000d': '', + '\u001b[A': '', + '\u001b[B': '', + ' ': '' + }; + + return data.replace(/[\u000d\u001b[A\u001b[B ]/g, (match) => keyMap[match] ?? match); } interface InputResponse { type: 'key' | 'read'; @@ -41,98 +41,98 @@ export interface TestEnvironment { } function setupReadlineMock(inputQueue: InputResponse[], currentInputIndex: number): void { - readline.createInterface = jest.fn().mockReturnValue({ - question: (questionText: string, cb: (input: string) => void) => { - const nextInput = inputQueue[currentInputIndex++]; - if (nextInput && nextInput.type === 'read') { - setTimeout(() => cb(nextInput.value), 1); - } - }, - close: jest.fn(), - } as MockReadline); + readline.createInterface = jest.fn().mockReturnValue({ + question: (questionText: string, cb: (input: string) => void) => { + const nextInput = inputQueue[currentInputIndex++]; + if (nextInput && nextInput.type === 'read') { + setTimeout(() => cb(nextInput.value), 1); + } + }, + close: jest.fn(), + } as MockReadline); } export function setupTests(): () => TestEnvironment { - let options: Partial; - let mockWrite: jest.Mock; - let mockInput: Readable; - let mockOutput: Writable; - let transformStream: Transform; - - let writeResults: string[] = []; - let transformResults: string[] = []; - - let inputQueue: InputResponse[] = []; - let currentInputIndex = 0; - let lastScheduledTime = 0; - - - const beforeEachSetup = (): TestEnvironment => { - jest.clearAllMocks(); - mockWrite = jest.fn(); - writeResults = []; - transformResults = []; - - mockInput = new Readable({ read(size) { } }); - (mockInput as any).setRawMode = jest.fn(); - - mockOutput = new Writable({ - write: (chunk, encoding, callback) => { - const str = chunk.toString(); - const humanizedStr = humanizeKeySequences(str); - const cleanStr = stripAnsi(humanizedStr); - writeResults.push(cleanStr); - mockWrite(str); - callback(); - } - }); - - // mock I/O streams so we can keep TTY for testing and CI/CD 🎨 - options = { - noTty: false, - input: mockInput, - output: mockOutput, - minimistOpts: { - alias: { - v: 'version' - } - } - }; - - transformStream = new Transform({ - transform(chunk, encoding, callback) { - const data = chunk.toString(); - const humanizedData = humanizeKeySequences(data); - const cleanData = stripAnsi(humanizedData); - transformResults.push(cleanData); - this.push(chunk); - callback(); - } - }); - - setupReadlineMock(inputQueue, currentInputIndex); - mockInput.pipe(transformStream); - - const enqueueInputResponse = (input: InputResponse) => { - lastScheduledTime += 1; - - if (input.type === 'key') { - setTimeout(() => mockInput.push(input.value), lastScheduledTime); - } else { - inputQueue.push(input); // We assume that handling read inputs remains the same unless you need to delay these as well - } - }; - - - return { - options, - mockInput, - mockOutput, - writeResults, - transformResults, - enqueueInputResponse - }; + let options: Partial; + let mockWrite: jest.Mock; + let mockInput: Readable; + let mockOutput: Writable; + let transformStream: Transform; + + let writeResults: string[] = []; + let transformResults: string[] = []; + + let inputQueue: InputResponse[] = []; + let currentInputIndex = 0; + let lastScheduledTime = 0; + + + const beforeEachSetup = (): TestEnvironment => { + jest.clearAllMocks(); + mockWrite = jest.fn(); + writeResults = []; + transformResults = []; + + mockInput = new Readable({ read(size) { } }); + (mockInput as any).setRawMode = jest.fn(); + + mockOutput = new Writable({ + write: (chunk, encoding, callback) => { + const str = chunk.toString(); + const humanizedStr = humanizeKeySequences(str); + const cleanStr = stripAnsi(humanizedStr); + writeResults.push(cleanStr); + mockWrite(str); + callback(); + } + }); + + // mock I/O streams so we can keep TTY for testing and CI/CD 🎨 + options = { + noTty: false, + input: mockInput, + output: mockOutput, + minimistOpts: { + alias: { + v: 'version' + } + } + }; + + transformStream = new Transform({ + transform(chunk, encoding, callback) { + const data = chunk.toString(); + const humanizedData = humanizeKeySequences(data); + const cleanData = stripAnsi(humanizedData); + transformResults.push(cleanData); + this.push(chunk); + callback(); + } + }); + + setupReadlineMock(inputQueue, currentInputIndex); + mockInput.pipe(transformStream); + + const enqueueInputResponse = (input: InputResponse) => { + lastScheduledTime += 1; + + if (input.type === 'key') { + setTimeout(() => mockInput.push(input.value), lastScheduledTime); + } else { + inputQueue.push(input); // We assume that handling read inputs remains the same unless you need to delay these as well + } + }; + + + return { + options, + mockInput, + mockOutput, + writeResults, + transformResults, + enqueueInputResponse }; + }; - return beforeEachSetup; + return beforeEachSetup; } diff --git a/packages/jsonld-tools/__tests__/builder/config-merging.test.ts b/packages/jsonld-tools/__tests__/builder/config-merging.test.ts index 19a60eeb..dea46eb0 100644 --- a/packages/jsonld-tools/__tests__/builder/config-merging.test.ts +++ b/packages/jsonld-tools/__tests__/builder/config-merging.test.ts @@ -4,7 +4,7 @@ * Tests the new consistent merging behavior and clear methods */ -import { createJsonLdConfig, createJsonLdBuilder } from '../../src'; +import { createJsonLdBuilder,createJsonLdConfig } from '../../src'; describe('Config Merging Behavior', () => { describe('Default Merging', () => { diff --git a/packages/jsonld-tools/__tests__/builder/general.test.ts b/packages/jsonld-tools/__tests__/builder/general.test.ts index 133d81fe..d606abf4 100644 --- a/packages/jsonld-tools/__tests__/builder/general.test.ts +++ b/packages/jsonld-tools/__tests__/builder/general.test.ts @@ -5,9 +5,9 @@ * using real fixture data and extensive snapshot testing */ -import { createJsonLdBuilder, createJsonLdConfig } from '../../src'; -import type { JsonLdEntity, JsonLdGraph } from '../../src'; import graph from '../../../../__fixtures__/jsonld-tools/graph.json'; +import type { JsonLdEntity, JsonLdGraph } from '../../src'; +import { createJsonLdBuilder, createJsonLdConfig } from '../../src'; describe('JsonLdConfigBuilder', () => { test('creates empty config', () => { diff --git a/packages/jsonld-tools/__tests__/builder/populate-entities.test.ts b/packages/jsonld-tools/__tests__/builder/populate-entities.test.ts index 4be2cc23..178c9619 100644 --- a/packages/jsonld-tools/__tests__/builder/populate-entities.test.ts +++ b/packages/jsonld-tools/__tests__/builder/populate-entities.test.ts @@ -5,8 +5,8 @@ * populateConfig, and script tag ID handling. */ -import { createJsonLdBuilder, createJsonLdConfig } from '../../src'; import type { JsonLdGraph, PopulateConfig } from '../../src'; +import { createJsonLdBuilder, createJsonLdConfig } from '../../src'; // Test data const testGraph: JsonLdGraph = [ diff --git a/packages/jsonld-tools/__tests__/event.inlined.test.ts b/packages/jsonld-tools/__tests__/event.inlined.test.ts index 39691f77..7df35903 100644 --- a/packages/jsonld-tools/__tests__/event.inlined.test.ts +++ b/packages/jsonld-tools/__tests__/event.inlined.test.ts @@ -1,5 +1,5 @@ -import { extractSubgraph, inlineReferences } from '../src/index'; import graph from '../../../__fixtures__/jsonld-tools/graph.json'; +import { extractSubgraph, inlineReferences } from '../src/index'; it('event:osmocon-2023-paris expanded with inlined references', async () => { // Extract the subgraph containing the event and all its references diff --git a/packages/jsonld-tools/__tests__/image-event.inllined.test.ts b/packages/jsonld-tools/__tests__/image-event.inllined.test.ts index 98cef1c4..6f01c2c3 100644 --- a/packages/jsonld-tools/__tests__/image-event.inllined.test.ts +++ b/packages/jsonld-tools/__tests__/image-event.inllined.test.ts @@ -1,5 +1,5 @@ -import { extractSubgraph, inlineReferences } from '../src/index'; import graph from '../../../__fixtures__/jsonld-tools/graph.json'; +import { extractSubgraph, inlineReferences } from '../src/index'; it('image:cosmjs-roadmap-announcement expanded with inlined references', async () => { // Extract the subgraph containing the image and all its references diff --git a/packages/jsonld-tools/__tests__/image-event.test.ts b/packages/jsonld-tools/__tests__/image-event.test.ts index 72fe0298..78677a5d 100644 --- a/packages/jsonld-tools/__tests__/image-event.test.ts +++ b/packages/jsonld-tools/__tests__/image-event.test.ts @@ -1,5 +1,5 @@ -import { extractSubgraph } from '../src/index'; import graph from '../../../__fixtures__/jsonld-tools/graph.json'; +import { extractSubgraph } from '../src/index'; it('event:cosmjs-roadmap', () => { const subgraph = extractSubgraph(graph, 'event:cosmjs-roadmap'); diff --git a/packages/jsonld-tools/__tests__/image.test.ts b/packages/jsonld-tools/__tests__/image.test.ts index d51029c9..4114f315 100644 --- a/packages/jsonld-tools/__tests__/image.test.ts +++ b/packages/jsonld-tools/__tests__/image.test.ts @@ -1,5 +1,5 @@ -import { extractSubgraph } from '../src/index'; import graph from '../../../__fixtures__/jsonld-tools/graph.json'; +import { extractSubgraph } from '../src/index'; it('image:cosmjs-roadmap-announcement', () => { const subgraph = extractSubgraph(graph, 'image:cosmjs-roadmap-announcement'); diff --git a/packages/jsonld-tools/__tests__/jsonld/graph-validation.test.ts b/packages/jsonld-tools/__tests__/jsonld/graph-validation.test.ts index 3f78bdf2..62bc173f 100644 --- a/packages/jsonld-tools/__tests__/jsonld/graph-validation.test.ts +++ b/packages/jsonld-tools/__tests__/jsonld/graph-validation.test.ts @@ -1,10 +1,10 @@ +import enrichedGraph from '../../../../__fixtures__/jsonld-tools/graph.json'; import { findMissingReferences, findNestedEntities, findOrphans, type JsonLdGraph } from '../../src/index'; -import enrichedGraph from '../../../../__fixtures__/jsonld-tools/graph.json'; describe('Graph Validation Methods', () => { describe('findMissingReferences', () => { @@ -22,8 +22,8 @@ describe('Graph Validation Methods', () => { it('should handle graph with no missing references', () => { const completeGraph: JsonLdGraph = [ - { '@id': 'a', 'ref': { '@id': 'b' } }, - { '@id': 'b', 'ref': { '@id': 'a' } } + { '@id': 'a', ref: { '@id': 'b' } }, + { '@id': 'b', ref: { '@id': 'a' } } ]; const missing = findMissingReferences(completeGraph); @@ -32,9 +32,9 @@ describe('Graph Validation Methods', () => { it('should find missing references in test graph', () => { const testGraph: JsonLdGraph = [ - { '@id': 'entity:1', 'knows': 'person:missing' }, - { '@id': 'entity:2', 'worksFor': { '@id': 'org:missing' } }, - { '@id': 'entity:3', 'refs': ['ref:1', 'ref:missing', 'ref:2'] }, + { '@id': 'entity:1', knows: 'person:missing' }, + { '@id': 'entity:2', worksFor: { '@id': 'org:missing' } }, + { '@id': 'entity:3', refs: ['ref:1', 'ref:missing', 'ref:2'] }, { '@id': 'ref:1' }, { '@id': 'ref:2' } ]; @@ -66,32 +66,32 @@ describe('Graph Validation Methods', () => { const testGraph: JsonLdGraph = [ { '@id': 'person:1', - 'name': 'John', - 'address': { + name: 'John', + address: { '@type': 'PostalAddress', - 'streetAddress': '123 Main St', - 'addressLocality': 'Anytown' + streetAddress: '123 Main St', + addressLocality: 'Anytown' }, - 'worksFor': { '@id': 'org:1' }, // Just a reference, not nested - 'knows': [ + worksFor: { '@id': 'org:1' }, // Just a reference, not nested + knows: [ { '@id': 'person:2' }, // Just a reference { '@type': 'Person', - 'name': 'Jane', - 'email': 'jane@example.com' + name: 'Jane', + email: 'jane@example.com' } ] }, { '@id': 'org:1', - 'location': { + location: { '@id': 'place:1', '@type': 'Place', - 'name': 'HQ', - 'geo': { + name: 'HQ', + geo: { '@type': 'GeoCoordinates', - 'latitude': 37.7749, - 'longitude': -122.4194 + latitude: 37.7749, + longitude: -122.4194 } } } @@ -107,7 +107,7 @@ describe('Graph Validation Methods', () => { property: 'address', nestedEntity: expect.objectContaining({ '@type': 'PostalAddress', - 'streetAddress': '123 Main St' + streetAddress: '123 Main St' }), hasId: false }); @@ -118,7 +118,7 @@ describe('Graph Validation Methods', () => { property: 'knows[1]', nestedEntity: expect.objectContaining({ '@type': 'Person', - 'name': 'Jane' + name: 'Jane' }), hasId: false }); @@ -130,7 +130,7 @@ describe('Graph Validation Methods', () => { nestedEntity: expect.objectContaining({ '@id': 'place:1', '@type': 'Place', - 'name': 'HQ' + name: 'HQ' }), hasId: true }); @@ -141,7 +141,7 @@ describe('Graph Validation Methods', () => { property: 'location.geo', nestedEntity: expect.objectContaining({ '@type': 'GeoCoordinates', - 'latitude': 37.7749 + latitude: 37.7749 }), hasId: false }); @@ -151,9 +151,9 @@ describe('Graph Validation Methods', () => { const testGraph: JsonLdGraph = [ { '@id': 'test:1', - 'ref1': { '@id': 'other:1' }, - 'ref2': 'string:ref', - 'refs': [{ '@id': 'array:1' }, { '@id': 'array:2' }] + ref1: { '@id': 'other:1' }, + ref2: 'string:ref', + refs: [{ '@id': 'array:1' }, { '@id': 'array:2' }] } ]; @@ -187,9 +187,9 @@ describe('Graph Validation Methods', () => { it('should handle graph with no orphans', () => { const connectedGraph: JsonLdGraph = [ - { '@id': 'root', 'child': { '@id': 'a' } }, - { '@id': 'a', 'child': { '@id': 'b' } }, - { '@id': 'b', 'parent': { '@id': 'a' } } + { '@id': 'root', child: { '@id': 'a' } }, + { '@id': 'a', child: { '@id': 'b' } }, + { '@id': 'b', parent: { '@id': 'a' } } ]; const orphans = findOrphans(connectedGraph); @@ -201,7 +201,7 @@ describe('Graph Validation Methods', () => { const testGraph: JsonLdGraph = [ { '@id': 'orphan1', '@type': 'Thing' }, { '@id': 'orphan2', '@type': 'Thing' }, - { '@id': 'parent', 'child': { '@id': 'child' } }, + { '@id': 'parent', child: { '@id': 'child' } }, { '@id': 'child', '@type': 'Thing' } ]; diff --git a/packages/jsonld-tools/__tests__/jsonld/jsonld-api.test.ts b/packages/jsonld-tools/__tests__/jsonld/jsonld-api.test.ts index 4a1d9de3..d6add32f 100644 --- a/packages/jsonld-tools/__tests__/jsonld/jsonld-api.test.ts +++ b/packages/jsonld-tools/__tests__/jsonld/jsonld-api.test.ts @@ -1,13 +1,11 @@ import { - findEntity, - findEntities, - findEntitiesByType, extractSubgraph, extractSubgraphs, - findReferencingEntities, extractSubgraphWithDepth, - extractReferences, - type JsonLdEntity, + findEntities, + findEntitiesByType, + findEntity, + findReferencingEntities, type JsonLdGraph } from '../../src/index'; @@ -477,10 +475,10 @@ describe('JSON-LD Graph Library', () => { describe('extractSubgraphWithDepth', () => { it('should extract entities up to specified depth', () => { const graph: JsonLdGraph = [ - { '@id': 'root', 'ref': { '@id': 'level1' } }, - { '@id': 'level1', 'ref': { '@id': 'level2' } }, - { '@id': 'level2', 'ref': { '@id': 'level3' } }, - { '@id': 'level3', 'ref': { '@id': 'level4' } }, + { '@id': 'root', ref: { '@id': 'level1' } }, + { '@id': 'level1', ref: { '@id': 'level2' } }, + { '@id': 'level2', ref: { '@id': 'level3' } }, + { '@id': 'level3', ref: { '@id': 'level4' } }, { '@id': 'level4' } ]; @@ -496,9 +494,9 @@ describe('extractSubgraphWithDepth', () => { it('should handle circular references at depth limit', () => { const graph: JsonLdGraph = [ - { '@id': 'a', 'ref': { '@id': 'b' } }, - { '@id': 'b', 'ref': { '@id': 'c' } }, - { '@id': 'c', 'ref': { '@id': 'a' } } + { '@id': 'a', ref: { '@id': 'b' } }, + { '@id': 'b', ref: { '@id': 'c' } }, + { '@id': 'c', ref: { '@id': 'a' } } ]; const depth2 = extractSubgraphWithDepth(graph, 'a', 2); diff --git a/packages/jsonld-tools/__tests__/jsonld/property-filtering.test.ts b/packages/jsonld-tools/__tests__/jsonld/property-filtering.test.ts index 4ef153d9..88750541 100644 --- a/packages/jsonld-tools/__tests__/jsonld/property-filtering.test.ts +++ b/packages/jsonld-tools/__tests__/jsonld/property-filtering.test.ts @@ -2,8 +2,8 @@ import { extractSubgraphs, filterEntityProperties, filterGraphProperties, - matchesSelector, type JsonLdEntity, + matchesSelector, type PropertyFilterConfig, } from '../../src/jsonld-utils'; diff --git a/packages/jsonld-tools/jest.config.js b/packages/jsonld-tools/jest.config.js index 46e5fbf5..057a9420 100644 --- a/packages/jsonld-tools/jest.config.js +++ b/packages/jsonld-tools/jest.config.js @@ -3,13 +3,13 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], }, transformIgnorePatterns: [`/node_modules/*`], testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', diff --git a/packages/jsonld-tools/src/builder.ts b/packages/jsonld-tools/src/builder.ts index fcb3c768..345b10c6 100644 --- a/packages/jsonld-tools/src/builder.ts +++ b/packages/jsonld-tools/src/builder.ts @@ -6,15 +6,15 @@ * the current head-manager system. */ -import { JsonLdConfigBuilder } from './config'; -import { extractSubgraphs, filterGraphProperties, type JsonLdGraph } from './jsonld-utils'; -import type { BuildOptions, JsonLdConfig } from './types'; import { applyPopulateConfig, buildPropertyFilterConfig, filterJsonLdGraph, validateRuntimeConfig, } from './builder-utils'; +import { JsonLdConfigBuilder } from './config'; +import { extractSubgraphs, filterGraphProperties, type JsonLdGraph } from './jsonld-utils'; +import type { BuildOptions, JsonLdConfig } from './types'; /** * Mutable builder class that extends config builder with automatic method delegation diff --git a/packages/jsonld-tools/src/config.ts b/packages/jsonld-tools/src/config.ts index 99972b1b..321c1545 100644 --- a/packages/jsonld-tools/src/config.ts +++ b/packages/jsonld-tools/src/config.ts @@ -6,6 +6,7 @@ * configuration object for safe reuse and extension. */ +import { mergeConfigs, mergeFilterOptions } from './builder-utils'; import type { IJsonLdConfigBuilder, JsonLdConfig, @@ -18,7 +19,6 @@ import type { PropertyFilterByIdRule, PropertyFilterByTypeRule, } from './types'; -import { mergeConfigs, mergeFilterOptions } from './builder-utils'; /** * Immutable configuration builder class diff --git a/packages/jsonld-tools/src/index.ts b/packages/jsonld-tools/src/index.ts index 50c16f49..9394b6e1 100644 --- a/packages/jsonld-tools/src/index.ts +++ b/packages/jsonld-tools/src/index.ts @@ -1,15 +1,11 @@ -export { createJsonLdConfig, JsonLdConfigBuilder } from './config'; export { createJsonLdBuilder, JsonLdBuilder } from './builder'; - -export type { JsonLdConfig, JsonLdFilterOptions, BuildOptions, PopulateConfig } from './types'; - +export { filterJsonLdGraph } from './builder-utils'; +export { createJsonLdConfig, JsonLdConfigBuilder } from './config'; export { - type JsonLdEntity, - type JsonLdGraph, extractReferences, extractSubgraph, - extractSubgraphWithDepth, extractSubgraphs, + extractSubgraphWithDepth, filterEntityProperties, filterGraphProperties, findEntities, @@ -20,6 +16,7 @@ export { findOrphans, findReferencingEntities, inlineReferences, + type JsonLdEntity, + type JsonLdGraph, } from './jsonld-utils'; - -export { filterJsonLdGraph } from './builder-utils'; +export type { BuildOptions, JsonLdConfig, JsonLdFilterOptions, PopulateConfig } from './types'; diff --git a/packages/jsonld-tools/src/jsonld-utils.ts b/packages/jsonld-tools/src/jsonld-utils.ts index facd53c9..2f936619 100644 --- a/packages/jsonld-tools/src/jsonld-utils.ts +++ b/packages/jsonld-tools/src/jsonld-utils.ts @@ -29,34 +29,34 @@ export type PropertyFilterConfig = PropertyFilterRule[]; * Check if an entity matches a property filter selector */ export function matchesSelector(entity: JsonLdEntity, selector: PropertyFilterSelector): boolean { - // Global selector - matches everything - if (selector === '*') return true; + // Global selector - matches everything + if (selector === '*') return true; - // Empty object selector - matches everything - if (typeof selector === 'object' && Object.keys(selector).length === 0) return true; + // Empty object selector - matches everything + if (typeof selector === 'object' && Object.keys(selector).length === 0) return true; - // Property-based matching - return Object.entries(selector).every(([property, expectedValue]) => { - const entityValue = entity[property]; + // Property-based matching + return Object.entries(selector).every(([property, expectedValue]) => { + const entityValue = entity[property]; - // Handle array values - check if expectedValue is in the array - if (Array.isArray(entityValue)) { - return entityValue.includes(expectedValue); - } + // Handle array values - check if expectedValue is in the array + if (Array.isArray(entityValue)) { + return entityValue.includes(expectedValue); + } - // Handle object references - compare @id if expectedValue is an object with @id - if ( - typeof expectedValue === 'object' && + // Handle object references - compare @id if expectedValue is an object with @id + if ( + typeof expectedValue === 'object' && expectedValue['@id'] && typeof entityValue === 'object' && entityValue['@id'] - ) { - return entityValue['@id'] === expectedValue['@id']; - } + ) { + return entityValue['@id'] === expectedValue['@id']; + } - // Direct value comparison - return entityValue === expectedValue; - }); + // Direct value comparison + return entityValue === expectedValue; + }); } /** @@ -67,7 +67,7 @@ export function matchesSelector(entity: JsonLdEntity, selector: PropertyFilterSe * @returns The entity if found, undefined otherwise */ export function findEntity(graph: JsonLdGraph, id: string): JsonLdEntity | undefined { - return graph.find((entity) => entity['@id'] === id); + return graph.find((entity) => entity['@id'] === id); } /** @@ -78,8 +78,8 @@ export function findEntity(graph: JsonLdGraph, id: string): JsonLdEntity | undef * @returns Array of found entities (may be fewer than requested if some not found) */ export function findEntities(graph: JsonLdGraph, ids: string[]): JsonLdEntity[] { - const idSet = new Set(ids); - return graph.filter((entity) => idSet.has(entity['@id'])); + const idSet = new Set(ids); + return graph.filter((entity) => idSet.has(entity['@id'])); } /** @@ -90,13 +90,13 @@ export function findEntities(graph: JsonLdGraph, ids: string[]): JsonLdEntity[] * @returns Array of entities matching the type */ export function findEntitiesByType(graph: JsonLdGraph, type: string): JsonLdEntity[] { - return graph.filter((entity) => { - const entityType = entity['@type']; - if (Array.isArray(entityType)) { - return entityType.includes(type); - } - return entityType === type; - }); + return graph.filter((entity) => { + const entityType = entity['@type']; + if (Array.isArray(entityType)) { + return entityType.includes(type); + } + return entityType === type; + }); } /** @@ -106,56 +106,56 @@ export function findEntitiesByType(graph: JsonLdGraph, type: string): JsonLdEnti * @returns Set of @id strings found in the entity */ export function extractReferences(entity: JsonLdEntity): Set { - const references = new Set(); - - function scanValue(value: any): void { - if (value === null || value === undefined) { - return; - } - - if (typeof value === 'string') { - // Check if it looks like an @id reference using regex pattern - // Pattern: ^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?[^\s]+$ - // This matches: - // - URIs with scheme: scheme:path (e.g., mailto:user@example.com) - // - Compact URIs: prefix:suffix (e.g., person:danlynch, org:hyperweb) - // - Must not contain spaces (filters out titles/descriptions with colons) - const idPattern = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)[^\s]+$/; - // Additional checks: - // - Must match the pattern - // - Must contain a colon (to be a reference) - // - Exclude http/https URLs (handled separately) - if (idPattern.test(value) && value.includes(':') && !value.startsWith('http')) { - references.add(value); - } - return; - } - - if (Array.isArray(value)) { - value.forEach(scanValue); - return; - } - - if (typeof value === 'object') { - // If it has an @id, add it - if (value['@id']) { - references.add(value['@id']); - } - - // Recursively scan all properties - Object.values(value).forEach(scanValue); - return; - } - } - - // Scan all properties except @id and @type - Object.entries(entity).forEach(([key, value]) => { - if (key !== '@id' && key !== '@type') { - scanValue(value); - } - }); - - return references; + const references = new Set(); + + function scanValue(value: any): void { + if (value === null || value === undefined) { + return; + } + + if (typeof value === 'string') { + // Check if it looks like an @id reference using regex pattern + // Pattern: ^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?[^\s]+$ + // This matches: + // - URIs with scheme: scheme:path (e.g., mailto:user@example.com) + // - Compact URIs: prefix:suffix (e.g., person:danlynch, org:hyperweb) + // - Must not contain spaces (filters out titles/descriptions with colons) + const idPattern = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)[^\s]+$/; + // Additional checks: + // - Must match the pattern + // - Must contain a colon (to be a reference) + // - Exclude http/https URLs (handled separately) + if (idPattern.test(value) && value.includes(':') && !value.startsWith('http')) { + references.add(value); + } + return; + } + + if (Array.isArray(value)) { + value.forEach(scanValue); + return; + } + + if (typeof value === 'object') { + // If it has an @id, add it + if (value['@id']) { + references.add(value['@id']); + } + + // Recursively scan all properties + Object.values(value).forEach(scanValue); + return; + } + } + + // Scan all properties except @id and @type + Object.entries(entity).forEach(([key, value]) => { + if (key !== '@id' && key !== '@type') { + scanValue(value); + } + }); + + return references; } /** @@ -171,45 +171,45 @@ export function extractReferences(entity: JsonLdEntity): Set { * @returns Array containing the root entity and all recursively referenced entities */ export function extractSubgraph( - graph: JsonLdGraph, - id: string, - propertyFilters?: PropertyFilterConfig, + graph: JsonLdGraph, + id: string, + propertyFilters?: PropertyFilterConfig, ): JsonLdEntity[] { - const result = new Map(); - const visited = new Set(); - const toProcess = new Set([id]); - - while (toProcess.size > 0) { - const currentId = toProcess.values().next().value!; - toProcess.delete(currentId); - - if (visited.has(currentId)) { - continue; - } - - visited.add(currentId); - - const entity = findEntity(graph, currentId); - if (!entity) { - continue; - } - - // Apply property filtering to this specific entity as we encounter it - const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; - result.set(currentId, filteredEntity); - - // Find all references in the filtered entity (only surviving properties) - const references = extractReferences(filteredEntity); - - // Add unvisited references to process queue - references.forEach((refId) => { - if (!visited.has(refId)) { - toProcess.add(refId); - } - }); - } + const result = new Map(); + const visited = new Set(); + const toProcess = new Set([id]); - return Array.from(result.values()); + while (toProcess.size > 0) { + const currentId = toProcess.values().next().value!; + toProcess.delete(currentId); + + if (visited.has(currentId)) { + continue; + } + + visited.add(currentId); + + const entity = findEntity(graph, currentId); + if (!entity) { + continue; + } + + // Apply property filtering to this specific entity as we encounter it + const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; + result.set(currentId, filteredEntity); + + // Find all references in the filtered entity (only surviving properties) + const references = extractReferences(filteredEntity); + + // Add unvisited references to process queue + references.forEach((refId) => { + if (!visited.has(refId)) { + toProcess.add(refId); + } + }); + } + + return Array.from(result.values()); } /** @@ -221,20 +221,20 @@ export function extractSubgraph( * @returns Array containing all entities and their recursively referenced entities */ export function extractSubgraphs( - graph: JsonLdGraph, - ids: string[], - propertyFilters?: PropertyFilterConfig, + graph: JsonLdGraph, + ids: string[], + propertyFilters?: PropertyFilterConfig, ): JsonLdEntity[] { - const allEntities = new Map(); + const allEntities = new Map(); - ids.forEach((id) => { - const subgraph = extractSubgraph(graph, id, propertyFilters); - subgraph.forEach((entity) => { - allEntities.set(entity['@id'], entity); - }); - }); + ids.forEach((id) => { + const subgraph = extractSubgraph(graph, id, propertyFilters); + subgraph.forEach((entity) => { + allEntities.set(entity['@id'], entity); + }); + }); - return Array.from(allEntities.values()); + return Array.from(allEntities.values()); } /** @@ -246,23 +246,23 @@ export function extractSubgraphs( * @returns Array of entities that reference the target @id */ export function findReferencingEntities( - graph: JsonLdGraph, - targetId: string, - propertyFilters?: PropertyFilterConfig, + graph: JsonLdGraph, + targetId: string, + propertyFilters?: PropertyFilterConfig, ): JsonLdEntity[] { - return graph - .filter((entity) => { - // Apply property filtering to this specific entity - const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; - - // Check if the filtered entity references the target ID - const references = extractReferences(filteredEntity); - return references.has(targetId); - }) - .map((entity) => { - // Return the filtered version of entities that match - return propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; - }); + return graph + .filter((entity) => { + // Apply property filtering to this specific entity + const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; + + // Check if the filtered entity references the target ID + const references = extractReferences(filteredEntity); + return references.has(targetId); + }) + .map((entity) => { + // Return the filtered version of entities that match + return propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; + }); } /** @@ -278,51 +278,51 @@ export function findReferencingEntities( * @returns Array containing entities up to the specified depth */ export function extractSubgraphWithDepth( - graph: JsonLdGraph, - id: string, - maxDepth: number, - propertyFilters?: PropertyFilterConfig, + graph: JsonLdGraph, + id: string, + maxDepth: number, + propertyFilters?: PropertyFilterConfig, ): JsonLdEntity[] { - if (maxDepth < 1) { - return []; - } + if (maxDepth < 1) { + return []; + } - const result = new Map(); - const visited = new Set(); + const result = new Map(); + const visited = new Set(); // Queue items with their current depth type QueueItem = { id: string; depth: number }; const toProcess: QueueItem[] = [{ id, depth: 0 }]; while (toProcess.length > 0) { - const current = toProcess.shift()!; - - if (visited.has(current.id) || current.depth > maxDepth) { - continue; - } - - visited.add(current.id); - - const entity = findEntity(graph, current.id); - if (!entity) { - continue; - } - - // Apply property filtering to this specific entity as we encounter it - const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; - result.set(current.id, filteredEntity); - - // Only process references if we haven't reached max depth - if (current.depth < maxDepth) { - // Find all references in the filtered entity (only surviving properties) - const references = extractReferences(filteredEntity); - - references.forEach((refId) => { - if (!visited.has(refId)) { - toProcess.push({ id: refId, depth: current.depth + 1 }); - } - }); - } + const current = toProcess.shift()!; + + if (visited.has(current.id) || current.depth > maxDepth) { + continue; + } + + visited.add(current.id); + + const entity = findEntity(graph, current.id); + if (!entity) { + continue; + } + + // Apply property filtering to this specific entity as we encounter it + const filteredEntity = propertyFilters ? filterEntityProperties(entity, propertyFilters) : entity; + result.set(current.id, filteredEntity); + + // Only process references if we haven't reached max depth + if (current.depth < maxDepth) { + // Find all references in the filtered entity (only surviving properties) + const references = extractReferences(filteredEntity); + + references.forEach((refId) => { + if (!visited.has(refId)) { + toProcess.push({ id: refId, depth: current.depth + 1 }); + } + }); + } } return Array.from(result.values()); @@ -334,32 +334,32 @@ export function extractSubgraphWithDepth( * @returns Array of missing @id references */ export function findMissingReferences(graph: JsonLdGraph): string[] { - // First, collect all entity @ids that exist in the graph - const existingIds = new Set(); - for (const entity of graph) { - if (entity['@id']) { - existingIds.add(entity['@id']); - } - } - - // Then, collect all referenced @ids - const allReferences = new Set(); - for (const entity of graph) { - const references = extractReferences(entity); - for (const ref of references) { - allReferences.add(ref); - } - } - - // Find references that don't exist - const missing: string[] = []; - for (const ref of allReferences) { - if (!existingIds.has(ref)) { - missing.push(ref); - } - } - - return missing.sort(); // Sort for consistent output + // First, collect all entity @ids that exist in the graph + const existingIds = new Set(); + for (const entity of graph) { + if (entity['@id']) { + existingIds.add(entity['@id']); + } + } + + // Then, collect all referenced @ids + const allReferences = new Set(); + for (const entity of graph) { + const references = extractReferences(entity); + for (const ref of references) { + allReferences.add(ref); + } + } + + // Find references that don't exist + const missing: string[] = []; + for (const ref of allReferences) { + if (!existingIds.has(ref)) { + missing.push(ref); + } + } + + return missing.sort(); // Sort for consistent output } /** @@ -373,71 +373,71 @@ export function findNestedEntities(graph: JsonLdGraph): Array<{ nestedEntity: any; hasId: boolean; }> { - const results: Array<{ + const results: Array<{ parentId: string; property: string; nestedEntity: any; hasId: boolean; }> = []; - function isNestedEntity(value: any): boolean { - // Check if it's an object (not null, not array) - if (!value || typeof value !== 'object' || Array.isArray(value)) { - return false; - } - - // Skip if it's just an @id reference (only has @id property) - if (Object.keys(value).length === 1 && value['@id']) { - return false; - } - - // It's a nested entity if it has properties beyond just @id - return true; - } - - function scanEntity(entity: any, parentId: string, basePath: string = '') { - for (const [key, value] of Object.entries(entity)) { - // Skip special JSON-LD properties - if (key.startsWith('@')) continue; - - const propertyPath = basePath ? `${basePath}.${key}` : key; - - if (isNestedEntity(value)) { - results.push({ - parentId: parentId, - property: propertyPath, - nestedEntity: value, - hasId: !!(value as any)['@id'], - }); - - // Recursively scan the nested entity - scanEntity(value, parentId, propertyPath); - } else if (Array.isArray(value)) { - // Check arrays for nested entities - value.forEach((item, index) => { - if (isNestedEntity(item)) { - const arrayPath = `${propertyPath}[${index}]`; - results.push({ - parentId: parentId, - property: arrayPath, - nestedEntity: item, - hasId: !!item['@id'], - }); - - // Recursively scan the nested entity in array - scanEntity(item, parentId, arrayPath); - } - }); - } - } - } - - for (const entity of graph) { - if (!entity['@id']) continue; - scanEntity(entity, entity['@id']); - } - - return results; + function isNestedEntity(value: any): boolean { + // Check if it's an object (not null, not array) + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return false; + } + + // Skip if it's just an @id reference (only has @id property) + if (Object.keys(value).length === 1 && value['@id']) { + return false; + } + + // It's a nested entity if it has properties beyond just @id + return true; + } + + function scanEntity(entity: any, parentId: string, basePath: string = '') { + for (const [key, value] of Object.entries(entity)) { + // Skip special JSON-LD properties + if (key.startsWith('@')) continue; + + const propertyPath = basePath ? `${basePath}.${key}` : key; + + if (isNestedEntity(value)) { + results.push({ + parentId: parentId, + property: propertyPath, + nestedEntity: value, + hasId: !!(value as any)['@id'], + }); + + // Recursively scan the nested entity + scanEntity(value, parentId, propertyPath); + } else if (Array.isArray(value)) { + // Check arrays for nested entities + value.forEach((item, index) => { + if (isNestedEntity(item)) { + const arrayPath = `${propertyPath}[${index}]`; + results.push({ + parentId: parentId, + property: arrayPath, + nestedEntity: item, + hasId: !!item['@id'], + }); + + // Recursively scan the nested entity in array + scanEntity(item, parentId, arrayPath); + } + }); + } + } + } + + for (const entity of graph) { + if (!entity['@id']) continue; + scanEntity(entity, entity['@id']); + } + + return results; } /** @@ -446,32 +446,32 @@ export function findNestedEntities(graph: JsonLdGraph): Array<{ * @returns Array of orphaned @id values */ export function findOrphans(graph: JsonLdGraph): string[] { - // First, collect all entity @ids that exist in the graph - const allIds = new Set(); - for (const entity of graph) { - if (entity['@id']) { - allIds.add(entity['@id']); - } - } - - // Then, collect all referenced @ids - const referencedIds = new Set(); - for (const entity of graph) { - const references = extractReferences(entity); - for (const ref of references) { - referencedIds.add(ref); - } - } - - // Find entities that exist but are never referenced - const orphans: string[] = []; - for (const id of allIds) { - if (!referencedIds.has(id)) { - orphans.push(id); - } - } - - return orphans.sort(); // Sort for consistent output + // First, collect all entity @ids that exist in the graph + const allIds = new Set(); + for (const entity of graph) { + if (entity['@id']) { + allIds.add(entity['@id']); + } + } + + // Then, collect all referenced @ids + const referencedIds = new Set(); + for (const entity of graph) { + const references = extractReferences(entity); + for (const ref of references) { + referencedIds.add(ref); + } + } + + // Find entities that exist but are never referenced + const orphans: string[] = []; + for (const id of allIds) { + if (!referencedIds.has(id)) { + orphans.push(id); + } + } + + return orphans.sort(); // Sort for consistent output } /** @@ -487,123 +487,123 @@ export function findOrphans(graph: JsonLdGraph): string[] { * @returns Either a single entity with inlined references or array of all entities with inlined references */ export function inlineReferences(entities: JsonLdGraph, rootId?: string): JsonLdEntity | JsonLdGraph { - // Create a lookup map for all entities - const entityMap = new Map(); - entities.forEach((entity) => { - if (entity['@id']) { - entityMap.set(entity['@id'], entity); - } - }); - - // Function to recursively inline references with circular reference protection - function inlineValue(value: any, visited: Set = new Set()): any { - if (value === null || value === undefined) { - return value; - } - - if (Array.isArray(value)) { - return value.map((v) => inlineValue(v, visited)); - } - - if (typeof value === 'object') { - // If it's an @id reference (object with only @id property), replace with the full entity - if (value['@id'] && Object.keys(value).length === 1) { - const id = value['@id']; - - // Check for circular reference - if (visited.has(id)) { - // Return just the @id reference to break the cycle - return { '@id': id }; - } - - const referencedEntity = entityMap.get(id); - if (referencedEntity) { - // Add to visited set before processing - const newVisited = new Set(visited); - newVisited.add(id); - - // Create a copy and inline its references - const copy = { ...referencedEntity }; - return inlineValue(copy, newVisited); - } - } - - // Otherwise, recursively process all properties - const result: any = {}; - for (const [key, val] of Object.entries(value)) { - result[key] = inlineValue(val, visited); - } - return result; - } - - return value; - } - - // If a root ID is specified, return only that entity with inlined references - if (rootId) { - const mainEntity = entities.find((e) => e['@id'] === rootId); - if (!mainEntity) { - throw new Error(`Entity with @id "${rootId}" not found`); - } - return inlineValue(mainEntity); - } - - // Otherwise, inline references in all entities - return entities.map((entity) => inlineValue(entity)); + // Create a lookup map for all entities + const entityMap = new Map(); + entities.forEach((entity) => { + if (entity['@id']) { + entityMap.set(entity['@id'], entity); + } + }); + + // Function to recursively inline references with circular reference protection + function inlineValue(value: any, visited: Set = new Set()): any { + if (value === null || value === undefined) { + return value; + } + + if (Array.isArray(value)) { + return value.map((v) => inlineValue(v, visited)); + } + + if (typeof value === 'object') { + // If it's an @id reference (object with only @id property), replace with the full entity + if (value['@id'] && Object.keys(value).length === 1) { + const id = value['@id']; + + // Check for circular reference + if (visited.has(id)) { + // Return just the @id reference to break the cycle + return { '@id': id }; + } + + const referencedEntity = entityMap.get(id); + if (referencedEntity) { + // Add to visited set before processing + const newVisited = new Set(visited); + newVisited.add(id); + + // Create a copy and inline its references + const copy = { ...referencedEntity }; + return inlineValue(copy, newVisited); + } + } + + // Otherwise, recursively process all properties + const result: any = {}; + for (const [key, val] of Object.entries(value)) { + result[key] = inlineValue(val, visited); + } + return result; + } + + return value; + } + + // If a root ID is specified, return only that entity with inlined references + if (rootId) { + const mainEntity = entities.find((e) => e['@id'] === rootId); + if (!mainEntity) { + throw new Error(`Entity with @id "${rootId}" not found`); + } + return inlineValue(mainEntity); + } + + // Otherwise, inline references in all entities + return entities.map((entity) => inlineValue(entity)); } /** * Apply property filtering to a single entity based on matching rules */ export function filterEntityProperties(entity: JsonLdEntity, config: PropertyFilterConfig): JsonLdEntity { - // Collect all exclusions and inclusions from matching rules - let allExclusions = new Set(); - let lastInclude: string[] | undefined; - - // Apply rules in order - later rules override earlier ones - for (const rule of config) { - if (matchesSelector(entity, rule.selector)) { - // If this rule has include, it overrides previous includes - if (rule.include) { - lastInclude = rule.include; - } - - // Accumulate exclusions - if (rule.exclude) { - rule.exclude.forEach((prop) => allExclusions.add(prop)); - } - } - } - - // Determine which properties to include - let propertiesToInclude: string[]; - - if (lastInclude) { - // Start with explicitly included properties from the last matching include rule - propertiesToInclude = lastInclude.filter((prop) => prop in entity); - } else { - // Include all existing properties - propertiesToInclude = Object.keys(entity); - } - - // Remove all accumulated excluded properties (exclude takes precedence) - propertiesToInclude = propertiesToInclude.filter((prop) => !allExclusions.has(prop)); - - // Build filtered entity - always include @id - const filteredEntity: JsonLdEntity = { '@id': entity['@id'] }; - for (const prop of propertiesToInclude) { - if (prop !== '@id') { - // Don't overwrite @id - filteredEntity[prop] = entity[prop]; - } - } - - return filteredEntity; + // Collect all exclusions and inclusions from matching rules + let allExclusions = new Set(); + let lastInclude: string[] | undefined; + + // Apply rules in order - later rules override earlier ones + for (const rule of config) { + if (matchesSelector(entity, rule.selector)) { + // If this rule has include, it overrides previous includes + if (rule.include) { + lastInclude = rule.include; + } + + // Accumulate exclusions + if (rule.exclude) { + rule.exclude.forEach((prop) => allExclusions.add(prop)); + } + } + } + + // Determine which properties to include + let propertiesToInclude: string[]; + + if (lastInclude) { + // Start with explicitly included properties from the last matching include rule + propertiesToInclude = lastInclude.filter((prop) => prop in entity); + } else { + // Include all existing properties + propertiesToInclude = Object.keys(entity); + } + + // Remove all accumulated excluded properties (exclude takes precedence) + propertiesToInclude = propertiesToInclude.filter((prop) => !allExclusions.has(prop)); + + // Build filtered entity - always include @id + const filteredEntity: JsonLdEntity = { '@id': entity['@id'] }; + for (const prop of propertiesToInclude) { + if (prop !== '@id') { + // Don't overwrite @id + filteredEntity[prop] = entity[prop]; + } + } + + return filteredEntity; } /** * Apply property filtering to all entities in a graph */ export function filterGraphProperties(graph: JsonLdGraph, config: PropertyFilterConfig): JsonLdGraph { - return graph.map((entity) => filterEntityProperties(entity, config)); + return graph.map((entity) => filterEntityProperties(entity, config)); } diff --git a/packages/komoji/__tests__/casing.test.ts b/packages/komoji/__tests__/casing.test.ts index 3bd40705..422b55c8 100644 --- a/packages/komoji/__tests__/casing.test.ts +++ b/packages/komoji/__tests__/casing.test.ts @@ -1,13 +1,13 @@ import { - lcFirst, - ucFirst, isValidIdentifier, isValidIdentifierCamelized, + lcFirst, toCamelCase, + toConstantCase, + toKebabCase, toPascalCase, toSnakeCase, - toKebabCase, - toConstantCase, + ucFirst, } from '../src'; it('should convert strings to PascalCase', () => { diff --git a/packages/komoji/src/index.ts b/packages/komoji/src/index.ts index 0be3fc69..d43af572 100644 --- a/packages/komoji/src/index.ts +++ b/packages/komoji/src/index.ts @@ -31,10 +31,10 @@ export function toCamelCase( key = key.replace(/^[^a-zA-Z0-9]+/, ''); } return key - // Convert what follows a separator into upper case - .replace(/[-_\s]+(.)?/g, (_, c) => c ? c.toUpperCase() : '') - // Ensure the first character of the result is always lowercase - .replace(/^./, (c) => c.toLowerCase()); + // Convert what follows a separator into upper case + .replace(/[-_\s]+(.)?/g, (_, c) => c ? c.toUpperCase() : '') + // Ensure the first character of the result is always lowercase + .replace(/^./, (c) => c.toLowerCase()); } // // Determine if the key is a valid JavaScript identifier diff --git a/packages/kubernetes-test/__tests__/wait-for-pods.test.ts b/packages/kubernetes-test/__tests__/wait-for-pods.test.ts index 66dba92f..d9cf98cd 100644 --- a/packages/kubernetes-test/__tests__/wait-for-pods.test.ts +++ b/packages/kubernetes-test/__tests__/wait-for-pods.test.ts @@ -1,9 +1,9 @@ import { - WaitForPodsTimeoutError, + PodStatusInfo, WaitForPodsError, WaitForPodsOptions, WaitForPodsProgress, - PodStatusInfo, + WaitForPodsTimeoutError, } from '../src/types'; describe('kubernetes-test types', () => { diff --git a/packages/kubernetes-test/src/types.ts b/packages/kubernetes-test/src/types.ts index 3bae3c3c..57738b87 100644 --- a/packages/kubernetes-test/src/types.ts +++ b/packages/kubernetes-test/src/types.ts @@ -1,6 +1,6 @@ -import type { Pod, PodList, PodCondition } from 'kubernetesjs'; +import type { Pod, PodCondition,PodList } from 'kubernetesjs'; -export type { Pod, PodList, PodCondition }; +export type { Pod, PodCondition,PodList }; export interface WaitForPodsOptions { namespace?: string; diff --git a/packages/kubernetes-test/src/wait-for-pods.ts b/packages/kubernetes-test/src/wait-for-pods.ts index 1d404b57..f39d2504 100644 --- a/packages/kubernetes-test/src/wait-for-pods.ts +++ b/packages/kubernetes-test/src/wait-for-pods.ts @@ -1,14 +1,14 @@ -import { KubernetesClient, Pod, PodList, ContainerStatus } from 'kubernetesjs'; +import { ContainerStatus,KubernetesClient, Pod, PodList } from 'kubernetesjs'; import { + ContainerStatusInfo, + PodConditionInfo, + PodStatusInfo, + WaitForPodsError, WaitForPodsOptions, WaitForPodsProgress, WaitForPodsResult, - PodStatusInfo, - ContainerStatusInfo, - PodConditionInfo, WaitForPodsTimeoutError, - WaitForPodsError, } from './types'; const DEFAULT_TIMEOUT_MS = 300000; // 5 minutes diff --git a/packages/nested-obj/jest.config.js b/packages/nested-obj/jest.config.js index 03e161ae..f4b0eba0 100644 --- a/packages/nested-obj/jest.config.js +++ b/packages/nested-obj/jest.config.js @@ -1,19 +1,19 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] - }; + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] +}; \ No newline at end of file diff --git a/packages/noble-hashes/src/argon2.ts b/packages/noble-hashes/src/argon2.ts index 008c5b05..88b8d7fa 100644 --- a/packages/noble-hashes/src/argon2.ts +++ b/packages/noble-hashes/src/argon2.ts @@ -13,15 +13,15 @@ import { blake2b } from './blake2'; import { anumber, clean, + type KDFInput, kdfInputToBytes, nextTick, - swap32IfBE, swap8IfBE, - u32, - u8, - type KDFInput, + swap32IfBE, type TArg, type TRet, + u8, + u32, } from './utils'; // RFC 9106 §3.1 type `y`: 0 = Argon2d, 1 = Argon2i, 2 = Argon2id. The numeric values are the diff --git a/packages/noble-hashes/src/blake1.ts b/packages/noble-hashes/src/blake1.ts index 03b27979..7e5c4c57 100644 --- a/packages/noble-hashes/src/blake1.ts +++ b/packages/noble-hashes/src/blake1.ts @@ -28,9 +28,9 @@ import * as u64 from './_u64'; // prettier-ignore import { abytes, aexists, aoutput, + type CHash, clean, createHasher, createView, - type CHash, type Hash, type TArg, type TRet @@ -443,7 +443,7 @@ class BLAKE1_64B extends BLAKE1 { protected get(): [ number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number - ] { + ] { let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h]; } diff --git a/packages/noble-hashes/src/blake2.ts b/packages/noble-hashes/src/blake2.ts index 437fdb81..05da5e16 100644 --- a/packages/noble-hashes/src/blake2.ts +++ b/packages/noble-hashes/src/blake2.ts @@ -9,14 +9,13 @@ import * as u64 from './_u64'; // prettier-ignore import { abytes, aexists, anumber, aoutput, - clean, createHasher, - swap32IfBE, swap8IfBE, - u32, type CHash, + clean, createHasher, type Hash, - type TArg, - type TRet -} from './utils'; + swap8IfBE, + swap32IfBE, type TArg, + type TRet, + u32} from './utils'; /** * Blake hash options. @@ -288,7 +287,7 @@ export class _BLAKE2b extends _BLAKE2<_BLAKE2b> { protected get(): [ number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number - ] { + ] { let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h]; } diff --git a/packages/noble-hashes/src/blake3.ts b/packages/noble-hashes/src/blake3.ts index 6867f8ea..15e983d6 100644 --- a/packages/noble-hashes/src/blake3.ts +++ b/packages/noble-hashes/src/blake3.ts @@ -17,15 +17,15 @@ import { _BLAKE2, compress } from './blake2'; // prettier-ignore import { abytes, aexists, anumber, aoutput, + type CHashXOF, clean, copyBytes, - createHasher, swap32IfBE, - u32, u8, - type CHashXOF, - type HashXOF, + createHasher, type HashXOF, + swap32IfBE, type TArg, - type TRet -} from './utils'; + type TRet, + u8, + u32} from './utils'; // Constructor-time mode flags (`KEYED_HASH`, `DERIVE_*`) plus per-node tree // flags (`CHUNK_*`, `PARENT`, `ROOT`). diff --git a/packages/noble-hashes/src/hmac.ts b/packages/noble-hashes/src/hmac.ts index ecdc2e06..7c23186c 100644 --- a/packages/noble-hashes/src/hmac.ts +++ b/packages/noble-hashes/src/hmac.ts @@ -7,8 +7,8 @@ import { aexists, ahash, aoutput, - clean, type CHash, + clean, type Hash, type TArg, type TRet, diff --git a/packages/noble-hashes/src/legacy.ts b/packages/noble-hashes/src/legacy.ts index 0505e946..60c0372c 100644 --- a/packages/noble-hashes/src/legacy.ts +++ b/packages/noble-hashes/src/legacy.ts @@ -280,10 +280,10 @@ export class _RIPEMD160 extends HashMD<_RIPEMD160> { for (let i = 0; i < 16; i++, offset += 4) BUF_160[i] = view.getUint32(offset, true); // prettier-ignore let al = this.h0 | 0, ar = al, - bl = this.h1 | 0, br = bl, - cl = this.h2 | 0, cr = cl, - dl = this.h3 | 0, dr = dl, - el = this.h4 | 0, er = el; + bl = this.h1 | 0, br = bl, + cl = this.h2 | 0, cr = cl, + dl = this.h3 | 0, dr = dl, + el = this.h4 | 0, er = el; // Instead of iterating 0 to 80, we split it into 5 groups // And use the groups in constants, functions, etc. Much simpler diff --git a/packages/noble-hashes/src/pbkdf2.ts b/packages/noble-hashes/src/pbkdf2.ts index 0b0bf3da..cc8bafd8 100644 --- a/packages/noble-hashes/src/pbkdf2.ts +++ b/packages/noble-hashes/src/pbkdf2.ts @@ -6,10 +6,10 @@ import { hmac } from './hmac'; // prettier-ignore import { ahash, anumber, - asyncLoop, checkOpts, clean, createView, kdfInputToBytes, - type CHash, - type Hash, + asyncLoop, type CHash, + checkOpts, clean, createView, type Hash, type KDFInput, + kdfInputToBytes, type TArg, type TRet } from './utils'; diff --git a/packages/noble-hashes/src/scrypt.ts b/packages/noble-hashes/src/scrypt.ts index dd7f1965..211ce672 100644 --- a/packages/noble-hashes/src/scrypt.ts +++ b/packages/noble-hashes/src/scrypt.ts @@ -8,13 +8,12 @@ import { sha256 } from './sha2'; import { anumber, asyncLoop, checkOpts, clean, + type KDFInput, rotl, swap32IfBE, - u32, - type KDFInput, type TArg, - type TRet -} from './utils'; + type TRet, + u32} from './utils'; // The main Scrypt loop: uses Salsa extensively. // Six versions of the function were tried, this is the fastest one. @@ -42,9 +41,9 @@ function XorAndSalsa( let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++]; // Save state to temporary variables (salsa) let x00 = y00, x01 = y01, x02 = y02, x03 = y03, - x04 = y04, x05 = y05, x06 = y06, x07 = y07, - x08 = y08, x09 = y09, x10 = y10, x11 = y11, - x12 = y12, x13 = y13, x14 = y14, x15 = y15; + x04 = y04, x05 = y05, x06 = y06, x07 = y07, + x08 = y08, x09 = y09, x10 = y10, x11 = y11, + x12 = y12, x13 = y13, x14 = y14, x15 = y15; // Main loop (salsa) for (let i = 0; i < 8; i += 2) { x04 ^= rotl(x00 + x12 | 0, 7); x08 ^= rotl(x04 + x00 | 0, 9); diff --git a/packages/noble-hashes/src/sha2.ts b/packages/noble-hashes/src/sha2.ts index f5f9bcc7..73139608 100644 --- a/packages/noble-hashes/src/sha2.ts +++ b/packages/noble-hashes/src/sha2.ts @@ -206,7 +206,7 @@ abstract class SHA2_64B> extends HashMD { protected get(): [ number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number - ] { + ] { const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; } diff --git a/packages/noble-hashes/src/sha3-addons.ts b/packages/noble-hashes/src/sha3-addons.ts index c7c6b0c1..e7d348ac 100644 --- a/packages/noble-hashes/src/sha3-addons.ts +++ b/packages/noble-hashes/src/sha3-addons.ts @@ -850,15 +850,15 @@ export type HopMAC = ( ) => TRet; const genHopMAC = (hash: TArg>): TRet => - ( - key: TArg, - message: TArg, - personalization: TArg, - dkLen?: number - ) => { - const h = hash as unknown as CHash<_KangarooTwelve, KangarooOpts>; - return h(key, { personalization: h(message, { personalization }), dkLen }) as TRet; - }; + ( + key: TArg, + message: TArg, + personalization: TArg, + dkLen?: number + ) => { + const h = hash as unknown as CHash<_KangarooTwelve, KangarooOpts>; + return h(key, { personalization: h(message, { personalization }), dkLen }) as TRet; + }; /** * 128-bit KangarooTwelve-based MAC. diff --git a/packages/noble-hashes/src/sha3.ts b/packages/noble-hashes/src/sha3.ts index fa30fb33..59290dd5 100644 --- a/packages/noble-hashes/src/sha3.ts +++ b/packages/noble-hashes/src/sha3.ts @@ -15,17 +15,16 @@ import { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64'; // prettier-ignore import { abytes, aexists, anumber, aoutput, - clean, createHasher, - oidNist, - swap32IfBE, - u32, type CHash, type CHashXOF, + clean, createHasher, type Hash, type HashInfo, type HashXOF, + oidNist, + swap32IfBE, type TArg, - type TRet -} from './utils'; + type TRet, + u32} from './utils'; // No __PURE__ annotations in sha3 header: // EVERYTHING is in fact used on every export. diff --git a/packages/noble-hashes/src/webcrypto.ts b/packages/noble-hashes/src/webcrypto.ts index eac4e498..95eca040 100644 --- a/packages/noble-hashes/src/webcrypto.ts +++ b/packages/noble-hashes/src/webcrypto.ts @@ -3,10 +3,10 @@ import { abytes, ahash, anumber, - checkOpts, - kdfInputToBytes, type CHash, + checkOpts, type KDFInput, + kdfInputToBytes, type TArg, type TRet, } from './utils'; diff --git a/packages/promql-ast/__tests__/builders.test.ts b/packages/promql-ast/__tests__/builders.test.ts index bf098685..a73df7b3 100644 --- a/packages/promql-ast/__tests__/builders.test.ts +++ b/packages/promql-ast/__tests__/builders.test.ts @@ -1,7 +1,7 @@ import * as b from '../src/builders'; +import { cleanTree } from '../src/clean'; import { deparse } from '../src/deparser'; import { parse } from '../src/parser'; -import { cleanTree } from '../src/clean'; describe('promql builders', () => { it('builds the namespace CPU query used by the collector', () => { diff --git a/packages/promql-ast/src/deparser.ts b/packages/promql-ast/src/deparser.ts index 99cf5d2a..7d9f27f9 100644 --- a/packages/promql-ast/src/deparser.ts +++ b/packages/promql-ast/src/deparser.ts @@ -21,28 +21,28 @@ const ATOM_PREC = 100; function binOpPrec(op: BinaryOp): number { switch (op) { - case 'or': - return 1; - case 'and': - case 'unless': - return 2; - case '==': - case '!=': - case '<=': - case '<': - case '>=': - case '>': - return 3; - case '+': - case '-': - return 4; - case '*': - case '/': - case '%': - case 'atan2': - return 5; - case '^': - return 6; + case 'or': + return 1; + case 'and': + case 'unless': + return 2; + case '==': + case '!=': + case '<=': + case '<': + case '>=': + case '>': + return 3; + case '+': + case '-': + return 4; + case '*': + case '/': + case '%': + case 'atan2': + return 5; + case '^': + return 6; } } @@ -66,26 +66,26 @@ function nodePrec(e: Expr): number { export class Deparser { deparse(node: Expr): string { switch (node.type) { - case 'NumberLiteral': - return this.number(node); - case 'StringLiteral': - return this.string(node); - case 'VectorSelector': - return this.vectorSelector(node); - case 'MatrixSelector': - return this.matrixSelector(node); - case 'SubqueryExpr': - return this.subquery(node); - case 'ParenExpr': - return this.paren(node); - case 'UnaryExpr': - return this.unary(node); - case 'BinaryExpr': - return this.binary(node); - case 'AggregateExpr': - return this.aggregate(node); - case 'Call': - return this.call(node); + case 'NumberLiteral': + return this.number(node); + case 'StringLiteral': + return this.string(node); + case 'VectorSelector': + return this.vectorSelector(node); + case 'MatrixSelector': + return this.matrixSelector(node); + case 'SubqueryExpr': + return this.subquery(node); + case 'ParenExpr': + return this.paren(node); + case 'UnaryExpr': + return this.unary(node); + case 'BinaryExpr': + return this.binary(node); + case 'AggregateExpr': + return this.aggregate(node); + case 'Call': + return this.call(node); } } @@ -116,12 +116,12 @@ export class Deparser { private atModifier(at: AtModifier): string { switch (at.kind) { - case 'start': - return ' @ start()'; - case 'end': - return ' @ end()'; - case 'timestamp': - return ` @ ${at.value}`; + case 'start': + return ' @ start()'; + case 'end': + return ' @ end()'; + case 'timestamp': + return ` @ ${at.value}`; } } diff --git a/packages/promql-ast/src/index.ts b/packages/promql-ast/src/index.ts index c31169c0..f880c27f 100644 --- a/packages/promql-ast/src/index.ts +++ b/packages/promql-ast/src/index.ts @@ -2,8 +2,8 @@ export * from './types'; // Lexer -export { Lexer, tokenize, TokenType } from './lexer'; export type { Token } from './lexer'; +export { Lexer, tokenize, TokenType } from './lexer'; // Parser export { parse, Parser } from './parser'; diff --git a/packages/promql-ast/src/lexer.ts b/packages/promql-ast/src/lexer.ts index 54c43bb7..56e90731 100644 --- a/packages/promql-ast/src/lexer.ts +++ b/packages/promql-ast/src/lexer.ts @@ -127,88 +127,88 @@ export class Lexer { // Multi-char operators switch (two) { - case '==': - this.advance(2); - return this.makeToken(TokenType.EQLC, '==', start); - case '!=': - this.advance(2); - return this.makeToken(TokenType.NEQ, '!=', start); - case '<=': - this.advance(2); - return this.makeToken(TokenType.LTE, '<=', start); - case '>=': - this.advance(2); - return this.makeToken(TokenType.GTE, '>=', start); - case '=~': - this.advance(2); - return this.makeToken(TokenType.EQL_REGEX, '=~', start); - case '!~': - this.advance(2); - return this.makeToken(TokenType.NEQ_REGEX, '!~', start); - default: - break; + case '==': + this.advance(2); + return this.makeToken(TokenType.EQLC, '==', start); + case '!=': + this.advance(2); + return this.makeToken(TokenType.NEQ, '!=', start); + case '<=': + this.advance(2); + return this.makeToken(TokenType.LTE, '<=', start); + case '>=': + this.advance(2); + return this.makeToken(TokenType.GTE, '>=', start); + case '=~': + this.advance(2); + return this.makeToken(TokenType.EQL_REGEX, '=~', start); + case '!~': + this.advance(2); + return this.makeToken(TokenType.NEQ_REGEX, '!~', start); + default: + break; } // Single-char structural / operators switch (ch) { - case '(': - this.advance(); - return this.makeToken(TokenType.LEFT_PAREN, '(', start); - case ')': - this.advance(); - return this.makeToken(TokenType.RIGHT_PAREN, ')', start); - case '{': - this.advance(); - return this.makeToken(TokenType.LEFT_BRACE, '{', start); - case '}': - this.advance(); - return this.makeToken(TokenType.RIGHT_BRACE, '}', start); - case '[': - this.bracketDepth++; - this.advance(); - return this.makeToken(TokenType.LEFT_BRACKET, '[', start); - case ']': - if (this.bracketDepth > 0) this.bracketDepth--; - this.advance(); - return this.makeToken(TokenType.RIGHT_BRACKET, ']', start); - case ',': - this.advance(); - return this.makeToken(TokenType.COMMA, ',', start); - case ':': - this.advance(); - return this.makeToken(TokenType.COLON, ':', start); - case '@': - this.advance(); - return this.makeToken(TokenType.AT, '@', start); - case '+': - this.advance(); - return this.makeToken(TokenType.ADD, '+', start); - case '-': - this.advance(); - return this.makeToken(TokenType.SUB, '-', start); - case '*': - this.advance(); - return this.makeToken(TokenType.MUL, '*', start); - case '/': - this.advance(); - return this.makeToken(TokenType.DIV, '/', start); - case '%': - this.advance(); - return this.makeToken(TokenType.MOD, '%', start); - case '^': - this.advance(); - return this.makeToken(TokenType.POW, '^', start); - case '=': - this.advance(); - return this.makeToken(TokenType.EQL, '=', start); - case '<': - this.advance(); - return this.makeToken(TokenType.LT, '<', start); - case '>': - this.advance(); - return this.makeToken(TokenType.GT, '>', start); - default: - break; + case '(': + this.advance(); + return this.makeToken(TokenType.LEFT_PAREN, '(', start); + case ')': + this.advance(); + return this.makeToken(TokenType.RIGHT_PAREN, ')', start); + case '{': + this.advance(); + return this.makeToken(TokenType.LEFT_BRACE, '{', start); + case '}': + this.advance(); + return this.makeToken(TokenType.RIGHT_BRACE, '}', start); + case '[': + this.bracketDepth++; + this.advance(); + return this.makeToken(TokenType.LEFT_BRACKET, '[', start); + case ']': + if (this.bracketDepth > 0) this.bracketDepth--; + this.advance(); + return this.makeToken(TokenType.RIGHT_BRACKET, ']', start); + case ',': + this.advance(); + return this.makeToken(TokenType.COMMA, ',', start); + case ':': + this.advance(); + return this.makeToken(TokenType.COLON, ':', start); + case '@': + this.advance(); + return this.makeToken(TokenType.AT, '@', start); + case '+': + this.advance(); + return this.makeToken(TokenType.ADD, '+', start); + case '-': + this.advance(); + return this.makeToken(TokenType.SUB, '-', start); + case '*': + this.advance(); + return this.makeToken(TokenType.MUL, '*', start); + case '/': + this.advance(); + return this.makeToken(TokenType.DIV, '/', start); + case '%': + this.advance(); + return this.makeToken(TokenType.MOD, '%', start); + case '^': + this.advance(); + return this.makeToken(TokenType.POW, '^', start); + case '=': + this.advance(); + return this.makeToken(TokenType.EQL, '=', start); + case '<': + this.advance(); + return this.makeToken(TokenType.LT, '<', start); + case '>': + this.advance(); + return this.makeToken(TokenType.GT, '>', start); + default: + break; } if (ch === '"' || ch === "'" || ch === '`') return this.readString(start, ch); @@ -230,26 +230,26 @@ export class Lexer { const esc = this.input[this.pos + 1]; this.advance(2); switch (esc) { - case 'n': - value += '\n'; - break; - case 't': - value += '\t'; - break; - case 'r': - value += '\r'; - break; - case '\\': - value += '\\'; - break; - case '"': - value += '"'; - break; - case "'": - value += "'"; - break; - default: - value += esc ?? ''; + case 'n': + value += '\n'; + break; + case 't': + value += '\t'; + break; + case 'r': + value += '\r'; + break; + case '\\': + value += '\\'; + break; + case '"': + value += '"'; + break; + case "'": + value += "'"; + break; + default: + value += esc ?? ''; } } else { value += c; diff --git a/packages/promql-ast/src/parser.ts b/packages/promql-ast/src/parser.ts index d7e9016b..b59de53b 100644 --- a/packages/promql-ast/src/parser.ts +++ b/packages/promql-ast/src/parser.ts @@ -48,45 +48,45 @@ interface BinaryInfo { function tokenBinaryInfo(tok: Token): BinaryInfo | null { switch (tok.type) { - case TokenType.ADD: - return { op: '+', prec: 4, rightAssoc: false }; - case TokenType.SUB: - return { op: '-', prec: 4, rightAssoc: false }; - case TokenType.MUL: - return { op: '*', prec: 5, rightAssoc: false }; - case TokenType.DIV: - return { op: '/', prec: 5, rightAssoc: false }; - case TokenType.MOD: - return { op: '%', prec: 5, rightAssoc: false }; - case TokenType.POW: - return { op: '^', prec: 6, rightAssoc: true }; - case TokenType.EQLC: - return { op: '==', prec: 3, rightAssoc: false }; - case TokenType.NEQ: - return { op: '!=', prec: 3, rightAssoc: false }; - case TokenType.LTE: - return { op: '<=', prec: 3, rightAssoc: false }; - case TokenType.LT: - return { op: '<', prec: 3, rightAssoc: false }; - case TokenType.GTE: - return { op: '>=', prec: 3, rightAssoc: false }; - case TokenType.GT: - return { op: '>', prec: 3, rightAssoc: false }; - case TokenType.IDENTIFIER: - switch (tok.value) { - case 'or': - return { op: 'or', prec: 1, rightAssoc: false }; - case 'and': - return { op: 'and', prec: 2, rightAssoc: false }; - case 'unless': - return { op: 'unless', prec: 2, rightAssoc: false }; - case 'atan2': - return { op: 'atan2', prec: 5, rightAssoc: false }; - default: - return null; - } + case TokenType.ADD: + return { op: '+', prec: 4, rightAssoc: false }; + case TokenType.SUB: + return { op: '-', prec: 4, rightAssoc: false }; + case TokenType.MUL: + return { op: '*', prec: 5, rightAssoc: false }; + case TokenType.DIV: + return { op: '/', prec: 5, rightAssoc: false }; + case TokenType.MOD: + return { op: '%', prec: 5, rightAssoc: false }; + case TokenType.POW: + return { op: '^', prec: 6, rightAssoc: true }; + case TokenType.EQLC: + return { op: '==', prec: 3, rightAssoc: false }; + case TokenType.NEQ: + return { op: '!=', prec: 3, rightAssoc: false }; + case TokenType.LTE: + return { op: '<=', prec: 3, rightAssoc: false }; + case TokenType.LT: + return { op: '<', prec: 3, rightAssoc: false }; + case TokenType.GTE: + return { op: '>=', prec: 3, rightAssoc: false }; + case TokenType.GT: + return { op: '>', prec: 3, rightAssoc: false }; + case TokenType.IDENTIFIER: + switch (tok.value) { + case 'or': + return { op: 'or', prec: 1, rightAssoc: false }; + case 'and': + return { op: 'and', prec: 2, rightAssoc: false }; + case 'unless': + return { op: 'unless', prec: 2, rightAssoc: false }; + case 'atan2': + return { op: 'atan2', prec: 5, rightAssoc: false }; default: return null; + } + default: + return null; } } @@ -283,28 +283,28 @@ export class Parser { const t = this.peek(); switch (t.type) { - case TokenType.NUMBER: - this.advance(); - return { type: 'NumberLiteral', value: parseNumber(t.value) }; - case TokenType.STRING: - this.advance(); - return { type: 'StringLiteral', value: t.value }; - case TokenType.LEFT_PAREN: { - this.advance(); - const inner = this.parseExpr(0); - this.expect(TokenType.RIGHT_PAREN); - return { type: 'ParenExpr', expr: inner }; - } - case TokenType.LEFT_BRACE: { - const matchers = this.parseMatchers(); - return { type: 'VectorSelector', matchers }; - } - case TokenType.IDENTIFIER: - return this.parseIdentifierExpr(); - default: - throw new Error( - `Unexpected token ${t.type} ('${t.value}') at line ${t.range.start.line}:${t.range.start.column}` - ); + case TokenType.NUMBER: + this.advance(); + return { type: 'NumberLiteral', value: parseNumber(t.value) }; + case TokenType.STRING: + this.advance(); + return { type: 'StringLiteral', value: t.value }; + case TokenType.LEFT_PAREN: { + this.advance(); + const inner = this.parseExpr(0); + this.expect(TokenType.RIGHT_PAREN); + return { type: 'ParenExpr', expr: inner }; + } + case TokenType.LEFT_BRACE: { + const matchers = this.parseMatchers(); + return { type: 'VectorSelector', matchers }; + } + case TokenType.IDENTIFIER: + return this.parseIdentifierExpr(); + default: + throw new Error( + `Unexpected token ${t.type} ('${t.value}') at line ${t.range.start.line}:${t.range.start.column}` + ); } } @@ -475,18 +475,18 @@ export class Parser { private parseMatchOp(): MatchOp { const t = this.advance(); switch (t.type) { - case TokenType.EQL: - return '='; - case TokenType.NEQ: - return '!='; - case TokenType.EQL_REGEX: - return '=~'; - case TokenType.NEQ_REGEX: - return '!~'; - default: - throw new Error( - `Expected label matcher operator but found '${t.value}' at line ${t.range.start.line}:${t.range.start.column}` - ); + case TokenType.EQL: + return '='; + case TokenType.NEQ: + return '!='; + case TokenType.EQL_REGEX: + return '=~'; + case TokenType.NEQ_REGEX: + return '!~'; + default: + throw new Error( + `Expected label matcher operator but found '${t.value}' at line ${t.range.start.line}:${t.range.start.column}` + ); } } } diff --git a/packages/rego-deparser/__tests__/deparser.test.ts b/packages/rego-deparser/__tests__/deparser.test.ts index 8dd96f83..8af15691 100644 --- a/packages/rego-deparser/__tests__/deparser.test.ts +++ b/packages/rego-deparser/__tests__/deparser.test.ts @@ -1,16 +1,15 @@ import { deparse, - deparseModule, - deparsePackage, + deparseExpr, deparseImport, + deparsePackage, deparseRule, - deparseExpr, deparseTerm, + Expr, + Import, Module, Package, - Import, Rule, - Expr, Term, TermType } from '../src'; diff --git a/packages/rego-deparser/src/deparser.ts b/packages/rego-deparser/src/deparser.ts index 6ad37149..702ca0de 100644 --- a/packages/rego-deparser/src/deparser.ts +++ b/packages/rego-deparser/src/deparser.ts @@ -10,24 +10,23 @@ */ import { - Module, - Package, - Import, - Rule, - Head, + ArrayComprehension, Body, - Expr, - Term, - With, Else, + Every, + Expr, + Head, + Import, + InfixOperators, + Module, + ObjectComprehension, ObjectItem, - ArrayComprehension, + Package, + Rule, SetComprehension, - ObjectComprehension, - Every, + Term, TermType, - InfixOperators -} from './types'; + With} from './types'; export interface DeparserOptions { indent?: string; @@ -277,47 +276,47 @@ export function deparseTerm( const value = term.value; switch (type) { - case TermType.NULL: - return 'null'; + case TermType.NULL: + return 'null'; - case TermType.BOOLEAN: - return value ? 'true' : 'false'; + case TermType.BOOLEAN: + return value ? 'true' : 'false'; - case TermType.NUMBER: - return String(value); + case TermType.NUMBER: + return String(value); - case TermType.STRING: - return deparseString(value as string); + case TermType.STRING: + return deparseString(value as string); - case TermType.VAR: - return value as string; + case TermType.VAR: + return value as string; - case TermType.REF: - return deparseRef(value as Term[], opts); + case TermType.REF: + return deparseRef(value as Term[], opts); - case TermType.CALL: - return deparseCall(value as Term[], opts); + case TermType.CALL: + return deparseCall(value as Term[], opts); - case TermType.ARRAY: - return deparseArray(value as Term[], opts); + case TermType.ARRAY: + return deparseArray(value as Term[], opts); - case TermType.SET: - return deparseSet(value as Term[], opts); + case TermType.SET: + return deparseSet(value as Term[], opts); - case TermType.OBJECT: - return deparseObject(value as ObjectItem[], opts); + case TermType.OBJECT: + return deparseObject(value as ObjectItem[], opts); - case TermType.ARRAY_COMPREHENSION: - return deparseArrayComprehension(value as ArrayComprehension, opts); + case TermType.ARRAY_COMPREHENSION: + return deparseArrayComprehension(value as ArrayComprehension, opts); - case TermType.SET_COMPREHENSION: - return deparseSetComprehension(value as SetComprehension, opts); + case TermType.SET_COMPREHENSION: + return deparseSetComprehension(value as SetComprehension, opts); - case TermType.OBJECT_COMPREHENSION: - return deparseObjectComprehension(value as ObjectComprehension, opts); + case TermType.OBJECT_COMPREHENSION: + return deparseObjectComprehension(value as ObjectComprehension, opts); - default: - return deparseTermValue(term, opts); + default: + return deparseTermValue(term, opts); } } diff --git a/packages/rego-deparser/src/index.ts b/packages/rego-deparser/src/index.ts index 4c350855..d2864945 100644 --- a/packages/rego-deparser/src/index.ts +++ b/packages/rego-deparser/src/index.ts @@ -23,53 +23,50 @@ export { deparse, - deparseModule, - deparsePackage, - deparseImport, - deparseRule, - deparseHead, deparseBody, deparseElse, + deparseEvery, deparseExpr, - deparseWith, - deparseTerms, + deparseHead, + deparseImport, + deparseModule, + deparsePackage, + DeparserOptions, + deparseRule, deparseTerm, - deparseEvery, - DeparserOptions -} from './deparser'; - + deparseTerms, + deparseWith} from './deparser'; export { - Module, - Package, - Import, - Rule, - Head, + Annotations, + ArrayComprehension, + ArrayValue, + Author, Body, - Expr, - Term, - With, - Else, - TermValue, - Ref, - Var, Call, - ArrayValue, - SetValue, - ObjectValue, - ObjectItem, - ArrayComprehension, - SetComprehension, - ObjectComprehension, + Comment, + Else, Every, + Expr, + Head, + Import, + InfixOperators, Location, - Annotations, - Author, + Module, + ObjectComprehension, + ObjectItem, + ObjectValue, + Operators, + Package, + Precedence, + Ref, RelatedResource, + Rule, SchemaAnnotation, - Comment, + SetComprehension, + SetValue, + Term, TermType, TermTypeValue, - Operators, - InfixOperators, - Precedence -} from './types'; + TermValue, + Var, + With} from './types'; diff --git a/packages/schema-sdk/__tests__/hooks.test.ts b/packages/schema-sdk/__tests__/hooks.test.ts index 43eec991..2cf461cf 100644 --- a/packages/schema-sdk/__tests__/hooks.test.ts +++ b/packages/schema-sdk/__tests__/hooks.test.ts @@ -1,9 +1,10 @@ -import schema from '../../../__fixtures__/openapi/swagger.json'; -import { defaultSchemaSDKOptions } from '../src/types'; -import { generateReactQueryHooks } from '../src/openapi'; import { writeFileSync } from 'fs'; + +import schema from '../../../__fixtures__/openapi/swagger.json'; import { OpenAPIOptions } from '../dist'; import { generateContext } from '../src'; +import { generateReactQueryHooks } from '../src/openapi'; +import { defaultSchemaSDKOptions } from '../src/types'; /** * Return a new schema object filtered to only include the given paths. diff --git a/packages/schema-sdk/__tests__/jsonpatch.intorstring.test.ts b/packages/schema-sdk/__tests__/jsonpatch.intorstring.test.ts index d00618d0..c2ae2573 100644 --- a/packages/schema-sdk/__tests__/jsonpatch.intorstring.test.ts +++ b/packages/schema-sdk/__tests__/jsonpatch.intorstring.test.ts @@ -1,4 +1,3 @@ -import { readFileSync } from 'fs'; import type { Operation } from 'fast-json-patch'; import * as jsonpatch from 'fast-json-patch'; diff --git a/packages/schema-sdk/__tests__/jsonpatch.test.ts b/packages/schema-sdk/__tests__/jsonpatch.test.ts index a53ca983..fefaeae0 100644 --- a/packages/schema-sdk/__tests__/jsonpatch.test.ts +++ b/packages/schema-sdk/__tests__/jsonpatch.test.ts @@ -1,5 +1,5 @@ -import { writeFileSync } from 'fs'; import type { Operation } from 'fast-json-patch'; +import { writeFileSync } from 'fs'; import { diff } from 'jest-diff'; import schema from '../../../__fixtures__/openapi/swagger.json'; diff --git a/packages/schema-sdk/src/openapi.ts b/packages/schema-sdk/src/openapi.ts index 4294724e..bd8ecfae 100644 --- a/packages/schema-sdk/src/openapi.ts +++ b/packages/schema-sdk/src/openapi.ts @@ -12,7 +12,7 @@ import { Response, } from './openapi.types'; import { OpenAPIOptions } from './types'; -import { createPathTemplateLiteral, applyJsonPatch } from './utils'; +import { applyJsonPatch,createPathTemplateLiteral } from './utils'; /** includes: { @@ -796,7 +796,7 @@ export const createOperation = ( const hasBody = resolvedParams.some( (param) => param.in === 'body' || param.in === 'formData' - ) && ['post', 'put', 'patch'].includes(method) + ) && ['post', 'put', 'patch'].includes(method); const hasQuery = resolvedParams.some( (param) => param.in === 'query' @@ -1236,16 +1236,16 @@ export function collectReactQueryHookComponents( // Build enabled expression: require all path params to be defined const enabledExpr = pathParams.length > 0 ? pathParams.reduce((acc, param) => { - const cmp = t.binaryExpression( - '!==', - t.memberExpression( - t.memberExpression(t.identifier(paramName), t.identifier('path')), - t.identifier(param) - ), - t.identifier('undefined') - ); - return acc ? t.logicalExpression('&&', acc, cmp) : cmp; - }, null as t.Expression | null) || t.booleanLiteral(true) + const cmp = t.binaryExpression( + '!==', + t.memberExpression( + t.memberExpression(t.identifier(paramName), t.identifier('path')), + t.identifier(param) + ), + t.identifier('undefined') + ); + return acc ? t.logicalExpression('&&', acc, cmp) : cmp; + }, null as t.Expression | null) || t.booleanLiteral(true) : t.booleanLiteral(true); const queryCall = t.callExpression(t.identifier('useQuery'), [ t.objectExpression([ @@ -1386,7 +1386,7 @@ export function generateReactQueryHooks( const patchedSchema = applyJsonPatch(schema, options); const components = collectReactQueryHookComponents(options, patchedSchema); - if (!components.length) return '' + if (!components.length) return ''; // Group imports const importMap = new Map>(); // Collect unique imports and consts diff --git a/packages/schema-sdk/src/types.ts b/packages/schema-sdk/src/types.ts index b6eba81f..b1d3bdc6 100644 --- a/packages/schema-sdk/src/types.ts +++ b/packages/schema-sdk/src/types.ts @@ -1,7 +1,7 @@ import deepmerge from 'deepmerge'; +import type { Operation } from 'fast-json-patch'; import type { DeepPartial } from 'schema-typescript'; import { defaultSchemaTSOptions, SchemaTSOptions } from 'schema-typescript'; -import type { Operation } from 'fast-json-patch'; export interface OpenAPIOptions extends SchemaTSOptions { clientName: string; diff --git a/packages/strfy-js/__tests__/assetlist-mods.test.ts b/packages/strfy-js/__tests__/assetlist-mods.test.ts index 7be45da2..82721f87 100644 --- a/packages/strfy-js/__tests__/assetlist-mods.test.ts +++ b/packages/strfy-js/__tests__/assetlist-mods.test.ts @@ -1,5 +1,5 @@ -import { jsStringify, JSStringifyOptions, JSStringifyPropertyReplacerOptions, JSStringifySetterOptions } from '../src'; import assetList from '../__fixtures__/assetlist.schema.json'; +import { jsStringify, JSStringifyOptions, JSStringifyPropertyReplacerOptions } from '../src'; it('AssetList Modification', () => { const options: JSStringifyOptions = { @@ -10,7 +10,7 @@ it('AssetList Modification', () => { }, valueReplacer: { '/$defs/asset/if/required': (opts: JSStringifyPropertyReplacerOptions) => { - return ['asset_type'] + return ['asset_type']; }, } }; diff --git a/packages/strfy-js/__tests__/camel.assets.json.test.ts b/packages/strfy-js/__tests__/camel.assets.json.test.ts index 0ecdf5e4..99c12b0d 100644 --- a/packages/strfy-js/__tests__/camel.assets.json.test.ts +++ b/packages/strfy-js/__tests__/camel.assets.json.test.ts @@ -1,6 +1,5 @@ -import { jsonStringify } from '../src'; - import assetList from '../__fixtures__/assets.json'; +import { jsonStringify } from '../src'; it('assetlist', () => { expect(jsonStringify(assetList, { camelCase: true, space: 2 })).toMatchSnapshot(); diff --git a/packages/strfy-js/__tests__/camel.assets.test.ts b/packages/strfy-js/__tests__/camel.assets.test.ts index c8e8a156..e7bec77e 100644 --- a/packages/strfy-js/__tests__/camel.assets.test.ts +++ b/packages/strfy-js/__tests__/camel.assets.test.ts @@ -1,6 +1,5 @@ -import { jsStringify } from '../src'; - import assetList from '../__fixtures__/assets.json'; +import { jsStringify } from '../src'; it('assetlist', () => { expect(jsStringify(assetList, { camelCase: true, space: 2 })).toMatchSnapshot(); diff --git a/packages/strfy-js/__tests__/camel.chain.json.test.ts b/packages/strfy-js/__tests__/camel.chain.json.test.ts index 3475e554..21f73be3 100644 --- a/packages/strfy-js/__tests__/camel.chain.json.test.ts +++ b/packages/strfy-js/__tests__/camel.chain.json.test.ts @@ -1,6 +1,5 @@ -import { jsonStringify } from '../src'; - import chain from '../__fixtures__/chain.json'; +import { jsonStringify } from '../src'; it('chain', () => { expect(jsonStringify(chain, { camelCase: true, space: 2 })).toMatchSnapshot(); diff --git a/packages/strfy-js/__tests__/camel.chain.test.ts b/packages/strfy-js/__tests__/camel.chain.test.ts index e45bcba0..1d544a04 100644 --- a/packages/strfy-js/__tests__/camel.chain.test.ts +++ b/packages/strfy-js/__tests__/camel.chain.test.ts @@ -1,6 +1,5 @@ -import { jsStringify } from '../src'; - import chain from '../__fixtures__/chain.json'; +import { jsStringify } from '../src'; it('chain', () => { expect(jsStringify(chain, { camelCase: true, space: 2 })).toMatchSnapshot(); diff --git a/packages/strfy-js/__tests__/camel.ibc.json.test.ts b/packages/strfy-js/__tests__/camel.ibc.json.test.ts index 19fce9d2..e5bd2751 100644 --- a/packages/strfy-js/__tests__/camel.ibc.json.test.ts +++ b/packages/strfy-js/__tests__/camel.ibc.json.test.ts @@ -1,32 +1,32 @@ import { jsonStringify } from '../src'; const ibc = { - '$schema': '../ibc_data.schema.json', - 'chain_1': { - 'chain_name': 'terra', - 'client_id': '07-tendermint-235', - 'connection_id': 'connection-142' + $schema: '../ibc_data.schema.json', + chain_1: { + chain_name: 'terra', + client_id: '07-tendermint-235', + connection_id: 'connection-142' }, - 'chain_2': { - 'chain_name': 'terra2', - 'client_id': '07-tendermint-394', - 'connection_id': 'connection-384' + chain_2: { + chain_name: 'terra2', + client_id: '07-tendermint-394', + connection_id: 'connection-384' }, - 'channels': [ + channels: [ { - 'chain_1': { - 'channel_id': 'channel-85', - 'port_id': 'transfer' + chain_1: { + channel_id: 'channel-85', + port_id: 'transfer' }, - 'chain_2': { - 'channel_id': 'channel-314', - 'port_id': 'transfer' + chain_2: { + channel_id: 'channel-314', + port_id: 'transfer' }, - 'ordering': 'unordered', - 'version': 'ics20-1', - 'tags': { - 'status': 'live', - 'preferred': true + ordering: 'unordered', + version: 'ics20-1', + tags: { + status: 'live', + preferred: true } } ] diff --git a/packages/strfy-js/__tests__/camel.ibc.test.ts b/packages/strfy-js/__tests__/camel.ibc.test.ts index ab487c7b..d898e3b9 100644 --- a/packages/strfy-js/__tests__/camel.ibc.test.ts +++ b/packages/strfy-js/__tests__/camel.ibc.test.ts @@ -1,32 +1,32 @@ import { jsStringify } from '../src'; const ibc = { - '$schema': '../ibc_data.schema.json', - 'chain_1': { - 'chain_name': 'terra', - 'client_id': '07-tendermint-235', - 'connection_id': 'connection-142' + $schema: '../ibc_data.schema.json', + chain_1: { + chain_name: 'terra', + client_id: '07-tendermint-235', + connection_id: 'connection-142' }, - 'chain_2': { - 'chain_name': 'terra2', - 'client_id': '07-tendermint-394', - 'connection_id': 'connection-384' + chain_2: { + chain_name: 'terra2', + client_id: '07-tendermint-394', + connection_id: 'connection-384' }, - 'channels': [ + channels: [ { - 'chain_1': { - 'channel_id': 'channel-85', - 'port_id': 'transfer' + chain_1: { + channel_id: 'channel-85', + port_id: 'transfer' }, - 'chain_2': { - 'channel_id': 'channel-314', - 'port_id': 'transfer' + chain_2: { + channel_id: 'channel-314', + port_id: 'transfer' }, - 'ordering': 'unordered', - 'version': 'ics20-1', - 'tags': { - 'status': 'live', - 'preferred': true + ordering: 'unordered', + version: 'ics20-1', + tags: { + status: 'live', + preferred: true } } ] diff --git a/packages/strfy-js/__tests__/default-values.test.ts b/packages/strfy-js/__tests__/default-values.test.ts index d8676d0c..88a81f52 100644 --- a/packages/strfy-js/__tests__/default-values.test.ts +++ b/packages/strfy-js/__tests__/default-values.test.ts @@ -1,7 +1,7 @@ -import { jsStringify, JSStringifyOptions, JSStringifySetterOptions } from '../src'; -import { Asset, AssetList } from '../test-utils'; import assetList from '../__fixtures__/assets.json'; import assetList2 from '../__fixtures__/assets2.json'; +import { jsStringify, JSStringifyOptions, JSStringifySetterOptions } from '../src'; +import { Asset, AssetList } from '../test-utils'; it('defaultValue', () => { const options: JSStringifyOptions = { @@ -11,23 +11,23 @@ it('defaultValue', () => { '/assets/*/type_asset': function (options: JSStringifySetterOptions): any { const asset = options.obj; switch (true) { - case asset.base.startsWith('factory/'): - return 'sdk.Factory'; + case asset.base.startsWith('factory/'): + return 'sdk.Factory'; - case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': - return 'bitsong'; + case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': + return 'bitsong'; - case asset.base.startsWith('erc20/'): - return 'erc.Token'; + case asset.base.startsWith('erc20/'): + return 'erc.Token'; - case asset.base.startsWith('ibc/'): - return 'ibc' + case asset.base.startsWith('ibc/'): + return 'ibc'; - case asset.base.startsWith('cw20:'): - return 'cw20' + case asset.base.startsWith('cw20:'): + return 'cw20'; - default: - return 'unknown' + default: + return 'unknown'; } } }, @@ -47,23 +47,23 @@ it('defaultValue undefined', () => { '/assets/*/type_asset': function (options: JSStringifySetterOptions): any { const asset = options.obj; switch (true) { - case asset.base.startsWith('factory/'): - return 'sdk.Factory'; + case asset.base.startsWith('factory/'): + return 'sdk.Factory'; - case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': - return 'bitsong'; + case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': + return 'bitsong'; - case asset.base.startsWith('erc20/'): - return 'erc.Token'; + case asset.base.startsWith('erc20/'): + return 'erc.Token'; - case asset.base.startsWith('ibc/'): - return 'ibc' + case asset.base.startsWith('ibc/'): + return 'ibc'; - case asset.base.startsWith('cw20:'): - return 'cw20' + case asset.base.startsWith('cw20:'): + return 'cw20'; - default: - return; + default: + return; } } }, diff --git a/packages/strfy-js/__tests__/includes.test.ts b/packages/strfy-js/__tests__/includes.test.ts index 2b9bc4b1..3ef04ea4 100644 --- a/packages/strfy-js/__tests__/includes.test.ts +++ b/packages/strfy-js/__tests__/includes.test.ts @@ -1,7 +1,7 @@ -import { jsStringify, JSStringifyOptions, JSStringifySetterOptions } from '../src'; import assetList from '../__fixtures__/assets.json'; -import { Asset, AssetList } from '../test-utils'; import chain from '../__fixtures__/chain.json'; +import { jsStringify, JSStringifyOptions, JSStringifySetterOptions } from '../src'; +import { Asset, AssetList } from '../test-utils'; it('AssetList Modification', () => { const options: JSStringifyOptions = { @@ -14,23 +14,23 @@ it('AssetList Modification', () => { '/assets/*/type_asset': function (options: JSStringifySetterOptions): any { const asset = options.obj; switch (true) { - case asset.base.startsWith('factory/'): - return 'sdk.Factory'; + case asset.base.startsWith('factory/'): + return 'sdk.Factory'; - case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': - return 'bitsong'; + case asset.base.startsWith('ft') && options.root.chain_name === 'bitsong': + return 'bitsong'; - case asset.base.startsWith('erc20/'): - return 'erc.Token'; + case asset.base.startsWith('erc20/'): + return 'erc.Token'; - case asset.base.startsWith('ibc/'): - return 'ibc' + case asset.base.startsWith('ibc/'): + return 'ibc'; - case asset.base.startsWith('cw20:'): - return 'cw20' + case asset.base.startsWith('cw20:'): + return 'cw20'; - default: - return 'unknown' + default: + return 'unknown'; } } }, diff --git a/packages/strfy-js/__tests__/odd-props.test.ts b/packages/strfy-js/__tests__/odd-props.test.ts index bb8e6efd..a0b1410d 100644 --- a/packages/strfy-js/__tests__/odd-props.test.ts +++ b/packages/strfy-js/__tests__/odd-props.test.ts @@ -1,12 +1,12 @@ import { jsStringify } from '../src'; const chain = { - '$schema': 'schema.json', - 'chain_id': 'cosmos-1', - 'logo_URIs': { - 'png': 'cosmos.png' + $schema: 'schema.json', + chain_id: 'cosmos-1', + logo_URIs: { + png: 'cosmos.png' }, - 'binaries': { + binaries: { 'linux/amd64': 'cosmos-bin.tar.gz' } }; diff --git a/packages/strfy-js/__tests__/property-rename.test.ts b/packages/strfy-js/__tests__/property-rename.test.ts index f2ee9d5a..e3e2addb 100644 --- a/packages/strfy-js/__tests__/property-rename.test.ts +++ b/packages/strfy-js/__tests__/property-rename.test.ts @@ -1,7 +1,7 @@ import { minimatch } from 'minimatch'; -import { jsStringify, JSStringifyOptions, JSStringifyReplacer, JSStringifyPropertyReplacerOptions, JSStringifySetterOptions } from '../src'; import assetList from '../__fixtures__/assets.json'; +import { jsStringify, JSStringifyOptions, JSStringifyPropertyReplacerOptions } from '../src'; it('assetlist', () => { diff --git a/packages/strfy-js/__tests__/stringify.json.test.ts b/packages/strfy-js/__tests__/stringify.json.test.ts index d08c90f0..5b514df8 100644 --- a/packages/strfy-js/__tests__/stringify.json.test.ts +++ b/packages/strfy-js/__tests__/stringify.json.test.ts @@ -74,7 +74,7 @@ it('applies replacer function if provided', () => { lastName: 'Johnson', age: 30 } - ] + ]; const output = jsonStringify(obj, { valueReplacer: { '*': (opts: JSStringifyPropertyReplacerOptions) => { diff --git a/packages/strfy-js/__tests__/stringify.test.ts b/packages/strfy-js/__tests__/stringify.test.ts index 1fec078d..4e9f471d 100644 --- a/packages/strfy-js/__tests__/stringify.test.ts +++ b/packages/strfy-js/__tests__/stringify.test.ts @@ -1,4 +1,4 @@ -import { jsStringify, JSStringifyPropertyReplacerOptions, JSStringifyReplacer } from '../src'; +import { jsStringify, JSStringifyPropertyReplacerOptions } from '../src'; it('serializes simple objects without quotes on keys where possible', () => { const obj = { diff --git a/packages/strfy-js/__tests__/strings.test.ts b/packages/strfy-js/__tests__/strings.test.ts index a2c41b25..028b41da 100644 --- a/packages/strfy-js/__tests__/strings.test.ts +++ b/packages/strfy-js/__tests__/strings.test.ts @@ -1,9 +1,9 @@ -import { jsStringify, chooseQuotes } from '../src'; +import { chooseQuotes,jsStringify } from '../src'; it('handles strings with newlines and other special chars', () => { const obj = { - 'title': 'AIOZ Network is a DePIN for Web3 AI, Storage and Streaming.\n\nAIOZ empowers a faster, secure and decentralized future.\n\nPowered by a global network of DePINs, AIOZ rewards you for sharing your computational resources for storing, transcoding, and streaming digital media content and powering decentralized AI computation.', - 'description': 'AIOZ Network is a DePIN for Web3 AI, Storage and Streaming.\n\t\rAIOZ empowers a faster, secure and decentralized future.\n\nPowered by a global network of DePINs, AIOZ rewards you for sharing your computational resources for storing, transcoding, and streaming digital media content and powering decentralized AI computation.' + title: 'AIOZ Network is a DePIN for Web3 AI, Storage and Streaming.\n\nAIOZ empowers a faster, secure and decentralized future.\n\nPowered by a global network of DePINs, AIOZ rewards you for sharing your computational resources for storing, transcoding, and streaming digital media content and powering decentralized AI computation.', + description: 'AIOZ Network is a DePIN for Web3 AI, Storage and Streaming.\n\t\rAIOZ empowers a faster, secure and decentralized future.\n\nPowered by a global network of DePINs, AIOZ rewards you for sharing your computational resources for storing, transcoding, and streaming digital media content and powering decentralized AI computation.' }; const options = {}; const output = jsStringify(obj, options); diff --git a/packages/strfy-js/jest.config.js b/packages/strfy-js/jest.config.js index 03e161ae..f4b0eba0 100644 --- a/packages/strfy-js/jest.config.js +++ b/packages/strfy-js/jest.config.js @@ -1,19 +1,19 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] - }; + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] +}; \ No newline at end of file diff --git a/packages/strfy-js/src/js.ts b/packages/strfy-js/src/js.ts index 0c81085e..64e0800a 100644 --- a/packages/strfy-js/src/js.ts +++ b/packages/strfy-js/src/js.ts @@ -39,14 +39,14 @@ export interface JSStringifyOptions { export function chooseQuotes(str: string, preferred: 'single' | 'double' | 'backtick'): string { switch (preferred) { - case 'single': - return `'${escapeStringForSingleQuotes(str)}'`; - case 'double': - return `"${escapeStringForDoubleQuotes(str)}"`; - case 'backtick': - return `\`${escapeStringForBacktickQuotes(str)}\``; - default: - throw new Error('Invalid quote type specified.'); + case 'single': + return `'${escapeStringForSingleQuotes(str)}'`; + case 'double': + return `"${escapeStringForDoubleQuotes(str)}"`; + case 'backtick': + return `\`${escapeStringForBacktickQuotes(str)}\``; + default: + throw new Error('Invalid quote type specified.'); } } @@ -161,54 +161,54 @@ export function jsStringify(obj: any, options?: JSStringifyOptions): string { if (matchesPattern(currentPath, dirname(pattern))) { const setter: JSStringifySetter = (defaultValuesSetter as { [path: string]: JSStringifySetter })[pattern]; const property = pattern.split('/').pop(); // get the last segment as property name - if (property === '*') { + if (property === '*') { // Apply setter to all properties if needed - Object.keys(obj).forEach(prop => { - if (obj[prop] === undefined) { - const val = setter({ - currentKey: prop, - currentPath: `${currentPath}/${prop}`, - obj, - value: obj[prop], - root, - defaultValuesMap - }); - if (val !== undefined) { - obj[prop] = val; + Object.keys(obj).forEach(prop => { + if (obj[prop] === undefined) { + const val = setter({ + currentKey: prop, + currentPath: `${currentPath}/${prop}`, + obj, + value: obj[prop], + root, + defaultValuesMap + }); + if (val !== undefined) { + obj[prop] = val; + } } + }); + } else if (property && obj[property] === undefined) { + const val = setter({ + currentKey: property, + currentPath, + obj, + value: obj[property], + root, + defaultValuesMap + }); + if (val !== undefined) { + obj[property] = val; } - }); - } else if (property && obj[property] === undefined) { - const val = setter({ - currentKey: property, - currentPath, - obj, - value: obj[property], - root, - defaultValuesMap - }); - if (val !== undefined) { - obj[property] = val; } } - } - }); + }); - // Apply default values based on currentPath - Object.keys(defaultValuesMap).forEach(pattern => { - if (matchesPattern(currentPath, pattern)) { - const property = pattern.split('/').pop(); // get the last segment as property name - if (property === '*') { + // Apply default values based on currentPath + Object.keys(defaultValuesMap).forEach(pattern => { + if (matchesPattern(currentPath, pattern)) { + const property = pattern.split('/').pop(); // get the last segment as property name + if (property === '*') { // Apply to all properties if needed - Object.keys(obj).forEach(prop => { - if (obj[prop] === undefined) { - obj[prop] = defaultValuesMap[pattern]; - } - }); - } else if (property && obj[property] === undefined) { - obj[property] = defaultValuesMap[pattern]; + Object.keys(obj).forEach(prop => { + if (obj[prop] === undefined) { + obj[prop] = defaultValuesMap[pattern]; + } + }); + } else if (property && obj[property] === undefined) { + obj[property] = defaultValuesMap[pattern]; + } } - } }); } @@ -241,11 +241,11 @@ export function jsStringify(obj: any, options?: JSStringifyOptions): string { let replacedKey: string; switch (true) { - case propertyReplacer instanceof Function: - replacedKey = propertyReplacer({ root, obj, currentKey: key, currentPath: fullPath, propertyRenameMap }); - break; - default: - replacedKey = defaultPropertyReplacer(key, fullPath, propertyRenameMap); + case propertyReplacer instanceof Function: + replacedKey = propertyReplacer({ root, obj, currentKey: key, currentPath: fullPath, propertyRenameMap }); + break; + default: + replacedKey = defaultPropertyReplacer(key, fullPath, propertyRenameMap); } const finalKey = camelCase ? camelCaseFn(replacedKey) : replacedKey; diff --git a/packages/strfy-js/src/utils.ts b/packages/strfy-js/src/utils.ts index 6fb00e01..b8f95b69 100644 --- a/packages/strfy-js/src/utils.ts +++ b/packages/strfy-js/src/utils.ts @@ -9,7 +9,7 @@ export function isSimpleKey(key: string): boolean { } export function dirname(path: string): string { - return path.replace(/\/[^\/]*$/, ''); // Removes last segment after the last '/' + return path.replace(/\/[^/]*$/, ''); // Removes last segment after the last '/' } export function escapeStringForSingleQuotes(str: string): string { @@ -50,7 +50,7 @@ export function escapeStringForBacktickQuotes(str: string): string { } -const globPattern = /\*+([^+@!?\*\[\(]*)/; +const globPattern = /\*+([^+@!?*[(]*)/; interface ShouldIncludeOptions { include: string[]; @@ -137,4 +137,4 @@ export const shouldInclude = (type: string, options: ShouldIncludeOptions): bool // Default behavior if neither is effectively set return true; -} \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/toml-ast/__tests__/parser.test.ts b/packages/toml-ast/__tests__/parser.test.ts index 72c09096..ae26a2c4 100644 --- a/packages/toml-ast/__tests__/parser.test.ts +++ b/packages/toml-ast/__tests__/parser.test.ts @@ -1,5 +1,5 @@ -import { parse } from '../src/parser'; import { cleanTree } from '../src/clean'; +import { parse } from '../src/parser'; describe('toml parser', () => { describe('key-value pairs', () => { diff --git a/packages/toml-ast/src/index.ts b/packages/toml-ast/src/index.ts index 6c434d97..d41b3ae2 100644 --- a/packages/toml-ast/src/index.ts +++ b/packages/toml-ast/src/index.ts @@ -1,7 +1,13 @@ +export { astEqual, cleanTree, printAst } from './clean'; +export type { DeparseOptions } from './deparser'; +export { deparse, Deparser } from './deparser'; +export type { Token } from './lexer'; +export { Lexer, TokenType } from './lexer'; +export { parse, Parser } from './parser'; export type { - AstNode, ArrayOfTables, ArrayValue, + AstNode, BaseNode, BooleanValue, Comment, @@ -21,13 +27,3 @@ export type { TomlDocument, Value, } from './types'; - -export type { Token } from './lexer'; -export { Lexer, TokenType } from './lexer'; - -export { parse, Parser } from './parser'; - -export type { DeparseOptions } from './deparser'; -export { deparse, Deparser } from './deparser'; - -export { astEqual, cleanTree, printAst } from './clean'; diff --git a/packages/visual-diff/__tests__/diff.test.ts b/packages/visual-diff/__tests__/diff.test.ts index 3ce8c322..c878c46d 100644 --- a/packages/visual-diff/__tests__/diff.test.ts +++ b/packages/visual-diff/__tests__/diff.test.ts @@ -1,4 +1,4 @@ -import { diff, diffFiles, createUnifiedDiff, parseUnifiedDiff, hasDifferences, countChanges } from '../src/diff'; +import { countChanges,createUnifiedDiff, diff, diffFiles, hasDifferences, parseUnifiedDiff } from '../src/diff'; describe('diff', () => { describe('basic diffing', () => { diff --git a/packages/visual-diff/__tests__/highlight.test.ts b/packages/visual-diff/__tests__/highlight.test.ts index b2745ed3..6b7c9bdb 100644 --- a/packages/visual-diff/__tests__/highlight.test.ts +++ b/packages/visual-diff/__tests__/highlight.test.ts @@ -1,4 +1,4 @@ -import { detectLanguage, tokenize, highlightLine } from '../src/highlight'; +import { detectLanguage, highlightLine,tokenize } from '../src/highlight'; describe('detectLanguage', () => { it('should detect JavaScript files', () => { diff --git a/packages/visual-diff/__tests__/render.test.ts b/packages/visual-diff/__tests__/render.test.ts index 8310d37e..118e238d 100644 --- a/packages/visual-diff/__tests__/render.test.ts +++ b/packages/visual-diff/__tests__/render.test.ts @@ -1,6 +1,6 @@ import { diff, diffFiles } from '../src/diff'; +import { renderHtml, renderHtmlDocument,renderHtmlSideBySide } from '../src/render/html'; import { renderTerminal, renderTerminalCompact, renderTerminalSummary } from '../src/render/terminal'; -import { renderHtml, renderHtmlSideBySide, renderHtmlDocument } from '../src/render/html'; describe('renderTerminal', () => { const oldContent = 'line 1\nold line\nline 3'; diff --git a/packages/visual-diff/__tests__/themes.test.ts b/packages/visual-diff/__tests__/themes.test.ts index 652b9918..910827df 100644 --- a/packages/visual-diff/__tests__/themes.test.ts +++ b/packages/visual-diff/__tests__/themes.test.ts @@ -1,14 +1,13 @@ import { + createTheme, defaultTheme, + draculaTheme, + getTheme, githubTheme, + minimalTheme, monokaiTheme, - draculaTheme, nordTheme, - minimalTheme, - themes, - getTheme, - createTheme -} from '../src/themes'; + themes} from '../src/themes'; describe('themes', () => { describe('built-in themes', () => { diff --git a/packages/visual-diff/dev/fixtures/typescript-new.ts b/packages/visual-diff/dev/fixtures/typescript-new.ts index 45f9c36f..8d7670cf 100644 --- a/packages/visual-diff/dev/fixtures/typescript-new.ts +++ b/packages/visual-diff/dev/fixtures/typescript-new.ts @@ -37,4 +37,4 @@ class UserService { } } -export { UserService, User, UserCreateInput }; +export { User, UserCreateInput,UserService }; diff --git a/packages/visual-diff/dev/index.ts b/packages/visual-diff/dev/index.ts index 528357bc..5f2bb459 100644 --- a/packages/visual-diff/dev/index.ts +++ b/packages/visual-diff/dev/index.ts @@ -4,8 +4,8 @@ import * as path from 'path'; import { diffFiles, - renderTerminal, renderHtmlDocument, + renderTerminal, themes } from '../src'; diff --git a/packages/visual-diff/src/diff.ts b/packages/visual-diff/src/diff.ts index 795a1e0d..0254aabc 100644 --- a/packages/visual-diff/src/diff.ts +++ b/packages/visual-diff/src/diff.ts @@ -1,5 +1,5 @@ -import type { DiffLine, DiffHunk, DiffResult, DiffOptions, Language } from './types'; import { detectLanguage } from './highlight'; +import type { DiffHunk, DiffLine, DiffOptions, DiffResult } from './types'; interface LCSResult { oldIndices: number[]; @@ -231,15 +231,15 @@ export function createUnifiedDiff(result: DiffResult): string { for (const line of hunk.lines) { switch (line.type) { - case 'added': - lines.push(`+${line.content}`); - break; - case 'removed': - lines.push(`-${line.content}`); - break; - case 'unchanged': - lines.push(` ${line.content}`); - break; + case 'added': + lines.push(`+${line.content}`); + break; + case 'removed': + lines.push(`-${line.content}`); + break; + case 'unchanged': + lines.push(` ${line.content}`); + break; } } } diff --git a/packages/visual-diff/src/index.ts b/packages/visual-diff/src/index.ts index 93c98839..627070e5 100644 --- a/packages/visual-diff/src/index.ts +++ b/packages/visual-diff/src/index.ts @@ -1,57 +1,48 @@ -export type { - DiffLineType, - DiffLine, - DiffHunk, - DiffResult, - DiffOptions, - Language, - SyntaxToken, - TokenType, - Theme, - ThemeColors, - ColorConfig, - SyntaxColors, - RenderOptions, - TerminalRenderOptions, - HtmlRenderOptions, - PartialThemeColors -} from './types'; - export { + countChanges, + createUnifiedDiff, diff, diffFiles, - createUnifiedDiff, - parseUnifiedDiff, hasDifferences, - countChanges -} from './diff'; - + parseUnifiedDiff} from './diff'; export { detectLanguage, - tokenize, - highlightLine -} from './highlight'; - + highlightLine, + tokenize} from './highlight'; export { + renderHtml, + renderHtmlDocument, + renderHtmlSideBySide, + renderTerminal, + renderTerminalCompact, + renderTerminalSummary} from './render'; +export { + createTheme, defaultTheme, + draculaTheme, + getTheme, githubTheme, + minimalTheme, monokaiTheme, - draculaTheme, nordTheme, - minimalTheme, - themes, - getTheme, - createTheme -} from './themes'; - -export { - renderTerminal, - renderTerminalCompact, - renderTerminalSummary, - renderHtml, - renderHtmlSideBySide, - renderHtmlDocument -} from './render'; + themes} from './themes'; +export type { + ColorConfig, + DiffHunk, + DiffLine, + DiffLineType, + DiffOptions, + DiffResult, + HtmlRenderOptions, + Language, + PartialThemeColors, + RenderOptions, + SyntaxColors, + SyntaxToken, + TerminalRenderOptions, + Theme, + ThemeColors, + TokenType} from './types'; export function visualDiff( oldContent: string, @@ -79,12 +70,12 @@ export function visualDiff( } switch (options.format) { - case 'html': - return renderHtml(result, { theme: options.theme }); - case 'unified': - return createUnifiedDiff(result); - case 'terminal': - default: - return renderTerminal(result, { theme: options.theme }); + case 'html': + return renderHtml(result, { theme: options.theme }); + case 'unified': + return createUnifiedDiff(result); + case 'terminal': + default: + return renderTerminal(result, { theme: options.theme }); } } diff --git a/packages/visual-diff/src/render/html.ts b/packages/visual-diff/src/render/html.ts index edbd1573..2d82bdde 100644 --- a/packages/visual-diff/src/render/html.ts +++ b/packages/visual-diff/src/render/html.ts @@ -1,15 +1,14 @@ +import { highlightLine } from '../highlight'; +import { getTheme } from '../themes'; import type { - DiffResult, - DiffLine, - DiffHunk, - Theme, ColorConfig, - SyntaxToken, + DiffHunk, + DiffLine, + DiffResult, HtmlRenderOptions, - Language -} from '../types'; -import { getTheme } from '../themes'; -import { highlightLine } from '../highlight'; + Language, + SyntaxToken, + Theme} from '../types'; const colorToHex: Record = { black: '#000000', @@ -264,20 +263,20 @@ function renderLineHtml( let prefix = ' '; switch (line.type) { - case 'added': - lineClass += ` ${className}-line-added`; - prefixClass += ` ${className}-prefix-added`; - prefix = '+'; - break; - case 'removed': - lineClass += ` ${className}-line-removed`; - prefixClass += ` ${className}-prefix-removed`; - prefix = '-'; - break; - case 'unchanged': - default: - lineClass += ` ${className}-line-unchanged`; - break; + case 'added': + lineClass += ` ${className}-line-added`; + prefixClass += ` ${className}-prefix-added`; + prefix = '+'; + break; + case 'removed': + lineClass += ` ${className}-line-removed`; + prefixClass += ` ${className}-prefix-removed`; + prefix = '-'; + break; + case 'unchanged': + default: + lineClass += ` ${className}-line-unchanged`; + break; } const parts: string[] = []; diff --git a/packages/visual-diff/src/render/index.ts b/packages/visual-diff/src/render/index.ts index e1e348ed..6beca212 100644 --- a/packages/visual-diff/src/render/index.ts +++ b/packages/visual-diff/src/render/index.ts @@ -1,11 +1,9 @@ +export { + renderHtml, + renderHtmlDocument, + renderHtmlSideBySide} from './html'; export { renderTerminal, renderTerminalCompact, renderTerminalSummary } from './terminal'; - -export { - renderHtml, - renderHtmlSideBySide, - renderHtmlDocument -} from './html'; diff --git a/packages/visual-diff/src/render/terminal.ts b/packages/visual-diff/src/render/terminal.ts index 307616cd..212b82cc 100644 --- a/packages/visual-diff/src/render/terminal.ts +++ b/packages/visual-diff/src/render/terminal.ts @@ -1,16 +1,16 @@ import yanse from 'yanse'; + +import { highlightLine } from '../highlight'; +import {getTheme } from '../themes'; import type { - DiffResult, - DiffLine, - DiffHunk, - Theme, ColorConfig, + DiffHunk, + DiffLine, + DiffResult, + Language, SyntaxToken, TerminalRenderOptions, - Language -} from '../types'; -import { getTheme, defaultTheme } from '../themes'; -import { highlightLine } from '../highlight'; + Theme} from '../types'; type YanseColor = (str: string) => string; @@ -61,19 +61,19 @@ function renderLineUnified( let lineColor: ColorConfig; switch (line.type) { - case 'added': - prefix = '+'; - lineColor = theme.colors.added; - break; - case 'removed': - prefix = '-'; - lineColor = theme.colors.removed; - break; - case 'unchanged': - default: - prefix = ' '; - lineColor = theme.colors.unchanged; - break; + case 'added': + prefix = '+'; + lineColor = theme.colors.added; + break; + case 'removed': + prefix = '-'; + lineColor = theme.colors.removed; + break; + case 'unchanged': + default: + prefix = ' '; + lineColor = theme.colors.unchanged; + break; } const parts: string[] = []; diff --git a/packages/visual-diff/src/themes.ts b/packages/visual-diff/src/themes.ts index 7fcffd9d..f0546548 100644 --- a/packages/visual-diff/src/themes.ts +++ b/packages/visual-diff/src/themes.ts @@ -1,4 +1,4 @@ -import type { Theme, PartialThemeColors, SyntaxColors } from './types'; +import type { PartialThemeColors, SyntaxColors,Theme } from './types'; const defaultSyntaxColors: SyntaxColors = { keyword: { fg: 'magenta', bold: true }, diff --git a/packages/yamlize-cli/jest.config.js b/packages/yamlize-cli/jest.config.js index 7fa2ca25..057a9420 100644 --- a/packages/yamlize-cli/jest.config.js +++ b/packages/yamlize-cli/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] - }; + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] +}; diff --git a/packages/yamlize-cli/src/commands.ts b/packages/yamlize-cli/src/commands.ts index 3d535049..50ee842a 100644 --- a/packages/yamlize-cli/src/commands.ts +++ b/packages/yamlize-cli/src/commands.ts @@ -2,8 +2,8 @@ import { readFileSync } from 'fs'; import type { CLIOptions, Inquirerer } from 'inquirerer'; import yaml from 'js-yaml'; import type { ParsedArgs } from 'minimist'; -import { yamlize } from 'yamlize'; import type { YamlizeContext } from 'yamlize'; +import { yamlize } from 'yamlize'; import { help } from './usage'; diff --git a/packages/yamlize-cli/src/index.ts b/packages/yamlize-cli/src/index.ts index 79756bd9..92538e6c 100644 --- a/packages/yamlize-cli/src/index.ts +++ b/packages/yamlize-cli/src/index.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node -import { CLI } from 'inquirerer'; import type { CLIOptions } from 'inquirerer'; +import { CLI } from 'inquirerer'; import { commands } from './commands'; diff --git a/packages/yamlize/__tests__/merge.test.ts b/packages/yamlize/__tests__/merge.test.ts index 2abf00d1..1c0ac9f6 100644 --- a/packages/yamlize/__tests__/merge.test.ts +++ b/packages/yamlize/__tests__/merge.test.ts @@ -1,5 +1,5 @@ -import { merge, mergeNullable } from '../src'; import type { YamlNode } from '../src'; +import { merge, mergeNullable } from '../src'; describe('merge', () => { it('merges flat objects', () => { diff --git a/packages/yamlize/__tests__/yamlize.test.ts b/packages/yamlize/__tests__/yamlize.test.ts index 308573d7..b84e908a 100644 --- a/packages/yamlize/__tests__/yamlize.test.ts +++ b/packages/yamlize/__tests__/yamlize.test.ts @@ -1,8 +1,8 @@ +import { existsSync, readFileSync, unlinkSync } from 'fs'; import { join } from 'path'; -import { readFileSync, existsSync, unlinkSync } from 'fs'; -import { yamlize, yamlizeString, yamlizeObject, toYaml, fromYaml } from '../src'; import type { YamlNode } from '../src'; +import { fromYaml,toYaml, yamlize, yamlizeObject, yamlizeString } from '../src'; const fixturesDir = join(__dirname, '../__fixtures__'); const metaYaml = join(fixturesDir, 'meta/meta.yaml'); diff --git a/packages/yamlize/jest.config.js b/packages/yamlize/jest.config.js index 7fa2ca25..057a9420 100644 --- a/packages/yamlize/jest.config.js +++ b/packages/yamlize/jest.config.js @@ -1,18 +1,18 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - babelConfig: false, - tsconfig: 'tsconfig.json', - }, - ], - }, - transformIgnorePatterns: [`/node_modules/*`], - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - modulePathIgnorePatterns: ['dist/*'] - }; + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: 'tsconfig.json', + }, + ], + }, + transformIgnorePatterns: [`/node_modules/*`], + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + modulePathIgnorePatterns: ['dist/*'] +}; diff --git a/packages/yamlize/src/index.ts b/packages/yamlize/src/index.ts index 8d93916e..8302ae1d 100644 --- a/packages/yamlize/src/index.ts +++ b/packages/yamlize/src/index.ts @@ -1,10 +1,9 @@ +export { merge, mergeNullable } from './merge'; +export { parse } from './parse'; export type { + MergeOptions, YamlizeContext, YamlizeOptions, - MergeOptions, YamlNode, } from './types'; - -export { yamlize, yamlizeString, yamlizeObject, toYaml, fromYaml } from './yamlize'; -export { parse } from './parse'; -export { merge, mergeNullable } from './merge'; +export { fromYaml,toYaml, yamlize, yamlizeObject, yamlizeString } from './yamlize'; diff --git a/packages/yamlize/src/parse.ts b/packages/yamlize/src/parse.ts index bfbd2226..e7eb5d58 100644 --- a/packages/yamlize/src/parse.ts +++ b/packages/yamlize/src/parse.ts @@ -8,7 +8,7 @@ import yaml from 'js-yaml'; import { dirname, join } from 'path'; // nested-obj uses `export default` which requires runtime resolution -// eslint-disable-next-line @typescript-eslint/no-require-imports + const objectPath = require('nested-obj').default ?? require('nested-obj'); import type { YamlizeContext, YamlNode } from './types'; diff --git a/packages/yamlize/src/yamlize.ts b/packages/yamlize/src/yamlize.ts index abc142f7..54d20590 100644 --- a/packages/yamlize/src/yamlize.ts +++ b/packages/yamlize/src/yamlize.ts @@ -7,8 +7,8 @@ import yaml from 'js-yaml'; import { sync as mkdirp } from 'mkdirp'; import { dirname } from 'path'; -import type { YamlizeContext, YamlizeOptions, YamlNode } from './types'; import { parse } from './parse'; +import type { YamlizeContext, YamlizeOptions, YamlNode } from './types'; /** * Read a YAML template file, resolve imports and variables, diff --git a/packages/yanse/__tests__/yanse.test.ts b/packages/yanse/__tests__/yanse.test.ts index d11fab27..007c9276 100644 --- a/packages/yanse/__tests__/yanse.test.ts +++ b/packages/yanse/__tests__/yanse.test.ts @@ -1,4 +1,4 @@ -import yanse, { red, green, blue, bold, cyan, yellow, create } from '../src'; +import yanse, { blue, bold, create,cyan, green, red, yellow } from '../src'; describe('yanse', () => { describe('Basic colors', () => { diff --git a/packages/yanse/src/index.ts b/packages/yanse/src/index.ts index 66ab0dc4..1ff73dee 100644 --- a/packages/yanse/src/index.ts +++ b/packages/yanse/src/index.ts @@ -1,6 +1,6 @@ const isObject = (val: any): boolean => val !== null && typeof val === 'object' && !Array.isArray(val); -/* eslint-disable no-control-regex */ + // Modified version of https://github.com/chalk/ansi-regex (MIT License) const ANSI_REGEX = /[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;