From 167311ec44deb846f83291753bd095ea1171d8d7 Mon Sep 17 00:00:00 2001 From: "Marcus R. Brown" Date: Fri, 27 Dec 2024 19:24:31 -0700 Subject: [PATCH] feat(eslint-config)!: add a config preset for validating dependencies in package.json files (#813) --- .changeset/eight-bulldogs-camp.md | 6 + eslint.config.ts | 1 + packages/eslint-config/eslint.config.ts | 14 +- packages/eslint-config/package.json | 1 + .../eslint-config/scripts/generate-types.ts | 1 + packages/eslint-config/src/config.d.ts | 5 + packages/eslint-config/src/configs/index.ts | 1 + .../eslint-config/src/configs/package-json.ts | 43 ++ packages/eslint-config/src/define-config.ts | 6 + packages/eslint-config/src/options.ts | 7 + packages/eslint-config/src/rules.d.ts | 82 ++++ pnpm-lock.yaml | 388 ++++++++++++++++++ 12 files changed, 547 insertions(+), 8 deletions(-) create mode 100644 .changeset/eight-bulldogs-camp.md create mode 100644 packages/eslint-config/src/configs/package-json.ts diff --git a/.changeset/eight-bulldogs-camp.md b/.changeset/eight-bulldogs-camp.md new file mode 100644 index 00000000..e1ac7d72 --- /dev/null +++ b/.changeset/eight-bulldogs-camp.md @@ -0,0 +1,6 @@ +--- +"@bfra.me/eslint-config": minor +--- + +Add a config preset for validating dependencies in package.json files. + \ No newline at end of file diff --git a/eslint.config.ts b/eslint.config.ts index 8648b397..a969dc17 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -3,6 +3,7 @@ import {defineConfig} from './packages/eslint-config/src' export const config = defineConfig({ name: '@bfra.me/works', ignores: ['**/test/fixtures', '**/test/_fixtures'], + packageJson: true, typescript: { parserOptions: { project: [ diff --git a/packages/eslint-config/eslint.config.ts b/packages/eslint-config/eslint.config.ts index de461687..4417fa73 100644 --- a/packages/eslint-config/eslint.config.ts +++ b/packages/eslint-config/eslint.config.ts @@ -1,13 +1,12 @@ import config from '../../eslint.config' import {composeConfig} from './src/compose-config' -export default composeConfig( - config, - { +export default composeConfig(config) + .insertAfter('@bfra.me/ignores', { name: '@bfra.me/eslint-config/ignores', - ignores: ['.eslint-config-inspector/', 'lib', 'src/rules.d.ts'], - }, - { + ignores: ['.eslint-config-inspector', 'lib', 'src/rules.d.ts'], + }) + .append({ name: '@bfra.me/eslint-config', files: ['src/**/*.ts'], rules: { @@ -19,5 +18,4 @@ export default composeConfig( }, ], }, - }, -) + }) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index ad3be2d5..4ef046ad 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -81,6 +81,7 @@ "eslint": "9.17.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-no-only-tests": "3.3.0", + "eslint-plugin-node-dependencies": "0.12.0", "eslint-plugin-prettier": "5.2.1", "eslint-typegen": "0.3.2", "tsup": "8.3.5", diff --git a/packages/eslint-config/scripts/generate-types.ts b/packages/eslint-config/scripts/generate-types.ts index 6144f2f5..8bd02758 100644 --- a/packages/eslint-config/scripts/generate-types.ts +++ b/packages/eslint-config/scripts/generate-types.ts @@ -6,6 +6,7 @@ import {defineConfig} from '../src/define-config' const configs = await defineConfig( { + packageJson: true, plugins: { '': { rules: Object.fromEntries(builtinRules), diff --git a/packages/eslint-config/src/config.d.ts b/packages/eslint-config/src/config.d.ts index 3573e7c4..04796b70 100644 --- a/packages/eslint-config/src/config.d.ts +++ b/packages/eslint-config/src/config.d.ts @@ -35,6 +35,11 @@ export type ConfigNames = | '@bfra.me/jsdoc' | '@bfra.me/imports' | '@bfra.me/command' + | '@bfra.me/package-json/plugins' + | '@bfra.me/package-json/unnamed1' + | '@bfra.me/package-json/json-schema/plugins' + | '@bfra.me/package-json/json-schema/unnamed1' + | '@bfra.me/package-json/json-schema' | '@bfra.me/prettier' | '@bfra.me/prettier/overrides' | '@bfra.me/perfectionist' diff --git a/packages/eslint-config/src/configs/index.ts b/packages/eslint-config/src/configs/index.ts index 90861c2b..3c128e2a 100644 --- a/packages/eslint-config/src/configs/index.ts +++ b/packages/eslint-config/src/configs/index.ts @@ -9,6 +9,7 @@ export * from './jsdoc' export * from './jsonc' export * from './markdown' export * from './node' +export * from './package-json' export * from './perfectionist' export * from './prettier' export * from './regexp' diff --git a/packages/eslint-config/src/configs/package-json.ts b/packages/eslint-config/src/configs/package-json.ts new file mode 100644 index 00000000..75518e2e --- /dev/null +++ b/packages/eslint-config/src/configs/package-json.ts @@ -0,0 +1,43 @@ +import type {Config} from '../config' +import type {Flatten, OptionsFiles} from '../options' +import {anyParser} from '../parsers/any-parser' +import {interopDefault} from '../plugins' +import {requireOf} from '../require-of' +import {fallback} from './fallback' +import {jsonSchema} from './json-schema' + +export type PackageJsonOptions = Flatten + +export const packageJsonFiles = ['package.json', 'package.json5', 'package.jsonc'].flatMap(file => [ + file, + `**/${file}`, +]) + +export async function packageJson(options: PackageJsonOptions = {}): Promise { + const {files = packageJsonFiles} = options + return requireOf( + ['eslint-plugin-node-dependencies'], + async () => { + // @ts-expect-error: Missing type definitions + const pluginNodeDependencies = await interopDefault(import('eslint-plugin-node-dependencies')) + return [ + ...pluginNodeDependencies.configs['flat/recommended'].map( + (config: Config, index: number) => ({ + ...config, + name: config.plugins + ? `@bfra.me/package-json/plugins` + : `@bfra.me/${config.name || `package-json/unnamed${index}`}`, + files, + }), + ), + ...(await jsonSchema('package-json', files as string[])), + ] + }, + async missingList => + fallback(missingList, { + name: '@bfra.me/package-json/fallback', + files, + languageOptions: {parser: anyParser}, + }), + ) +} diff --git a/packages/eslint-config/src/define-config.ts b/packages/eslint-config/src/define-config.ts index edd7a070..c492df81 100644 --- a/packages/eslint-config/src/define-config.ts +++ b/packages/eslint-config/src/define-config.ts @@ -14,6 +14,7 @@ import { jsonc, markdown, node, + packageJson, perfectionist, prettier, regexp, @@ -57,6 +58,7 @@ export async function defineConfig( const { gitignore: enableGitignore = true, jsx: enableJsx = true, + packageJson: enablePackageJson = false, perfectionist: enablePerfectionist = true, prettier: enablePrettier = isPackageExists('prettier'), regexp: enableRegexp = true, @@ -96,6 +98,10 @@ export async function defineConfig( command(), ) + if (enablePackageJson) { + configs.push(packageJson(resolveSubOptions(options, 'packageJson'))) + } + if (enablePrettier) { configs.push( prettier({ diff --git a/packages/eslint-config/src/options.ts b/packages/eslint-config/src/options.ts index e178c625..49069c91 100644 --- a/packages/eslint-config/src/options.ts +++ b/packages/eslint-config/src/options.ts @@ -193,6 +193,13 @@ export type Options = Flatten< */ markdown?: boolean | (OptionsOverrides & OptionsPrettier) + /** + * Enable support for package.json files. + * + * @default false + */ + packageJson?: boolean | OptionsFiles + /** * Options to override the behavior of Perfectionist sorting rules. */ diff --git a/packages/eslint-config/src/rules.d.ts b/packages/eslint-config/src/rules.d.ts index 0028e3b1..6a71593b 100644 --- a/packages/eslint-config/src/rules.d.ts +++ b/packages/eslint-config/src/rules.d.ts @@ -2705,6 +2705,52 @@ export interface Rules { * @see https://eslint.org/docs/latest/rules/no-with */ 'no-with'?: Linter.RuleEntry<[]> + /** + * require or disallow absolute version of dependency. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/absolute-version.html + */ + 'node-dependencies/absolute-version'?: Linter.RuleEntry + /** + * enforce the versions of the engines of the dependencies to be compatible. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/compat-engines.html + */ + 'node-dependencies/compat-engines'?: Linter.RuleEntry + /** + * disallow having dependencies on deprecate packages. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/no-deprecated.html + */ + 'node-dependencies/no-deprecated'?: Linter.RuleEntry + /** + * disallow duplicate dependencies. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/no-dupe-deps.html + */ + 'node-dependencies/no-dupe-deps'?: Linter.RuleEntry<[]> + /** + * Disallows dependence on the specified package. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/no-restricted-deps.html + */ + 'node-dependencies/no-restricted-deps'?: Linter.RuleEntry + /** + * require caret(`^`) version instead of range version. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/prefer-caret-range-version.html + */ + 'node-dependencies/prefer-caret-range-version'?: Linter.RuleEntry<[]> + /** + * require tilde(`~`) version instead of range version. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/prefer-tilde-range-version.html + */ + 'node-dependencies/prefer-tilde-range-version'?: Linter.RuleEntry<[]> + /** + * enforce the versions of the engines of the dependencies to be compatible. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/valid-engines.html + * @deprecated + */ + 'node-dependencies/valid-engines'?: Linter.RuleEntry + /** + * enforce versions that is valid as a semantic version. + * @see https://ota-meshi.github.io/eslint-plugin-node-dependencies/rules/valid-semver.html + */ + 'node-dependencies/valid-semver'?: Linter.RuleEntry<[]> /** * require `return` statements after callbacks * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/callback-return.md @@ -8305,6 +8351,42 @@ type NoWarningComments = []|[{ decoration?: [string, ...(string)[]] }] +// ----- node-dependencies/absolute-version ----- +type NodeDependenciesAbsoluteVersion = []|[(("always" | "never") | { + dependencies?: ("always" | "never" | "ignore") + peerDependencies?: ("always" | "never" | "ignore") + optionalDependencies?: ("always" | "never" | "ignore") + devDependencies?: ("always" | "never" | "ignore") + overridePackages?: { + [k: string]: (("always" | "never" | "ignore") | { + dependencies?: ("always" | "never" | "ignore") + peerDependencies?: ("always" | "never" | "ignore") + optionalDependencies?: ("always" | "never" | "ignore") + devDependencies?: ("always" | "never" | "ignore") + }) + } +})] +// ----- node-dependencies/compat-engines ----- +type NodeDependenciesCompatEngines = []|[{ + deep?: boolean + comparisonType?: ("normal" | "major") +}] +// ----- node-dependencies/no-deprecated ----- +type NodeDependenciesNoDeprecated = []|[{ + devDependencies?: boolean +}] +// ----- node-dependencies/no-restricted-deps ----- +type NodeDependenciesNoRestrictedDeps = (string | { + package: string + version?: string + message?: string + deep?: ("local" | "server") +})[] +// ----- node-dependencies/valid-engines ----- +type NodeDependenciesValidEngines = []|[{ + deep?: boolean + comparisonType?: ("normal" | "major") +}] // ----- node/callback-return ----- type NodeCallbackReturn = []|[string[]] // ----- node/exports-style ----- diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a080f569..37d8c31b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -266,6 +266,9 @@ importers: eslint-plugin-no-only-tests: specifier: 3.3.0 version: 3.3.0 + eslint-plugin-node-dependencies: + specifier: 0.12.0 + version: 0.12.0(eslint@9.17.0(jiti@2.4.2)) eslint-plugin-prettier: specifier: 5.2.1 version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2))(prettier@3.4.2) @@ -1151,6 +1154,10 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgr/utils@2.4.2': + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -1339,6 +1346,10 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -1435,6 +1446,10 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1462,6 +1477,9 @@ packages: '@types/har-format@1.2.16': resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1705,9 +1723,17 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1727,6 +1753,10 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -1741,6 +1771,14 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -1963,6 +2001,10 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1974,14 +2016,26 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + default-browser-id@5.0.0: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + default-browser@5.2.1: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -2217,6 +2271,12 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} + eslint-plugin-node-dependencies@0.12.0: + resolution: {integrity: sha512-fZ63ZlBOJ0EdloXTY4uVjKe5wsA5EFGFatOSgKmFXpx80srjykNsUsibgTO9NL9Nt+Stl9/Hm5AyH6rQuuSUDw==} + engines: {node: '>=14.17.0'} + peerDependencies: + eslint: '>=6.0.0' + eslint-plugin-perfectionist@4.4.0: resolution: {integrity: sha512-B78pWxCsA2sClourpWEmWziCcjEsAEyxsNV5G6cxxteu/NI0/2en9XZUONf5e/+O+dgoLZsEPHQEhnIxJcnUvA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2336,6 +2396,14 @@ packages: event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -2452,6 +2520,10 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + formdata-to-string@2.0.2: resolution: {integrity: sha512-OxurQikLgzU3+AhBCb2Or7pV2+dQWMSi1r4ZmhGMZ/WxVLOfUCqB2hqK5EwTGSzN9O/dx9uw5Mln/vtG1t0XbQ==} engines: {node: '>=18'} @@ -2580,6 +2652,10 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -2623,6 +2699,10 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hosted-git-info@6.1.3: + resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2634,10 +2714,17 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -2645,6 +2732,14 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2736,6 +2831,11 @@ packages: resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} engines: {node: '>= 0.4'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2778,6 +2878,10 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2801,6 +2905,10 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -3025,6 +3133,10 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3036,6 +3148,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} @@ -3222,10 +3338,22 @@ packages: engines: {node: '>= 12'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3356,11 +3484,19 @@ packages: resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + npm-packlist@5.1.3: resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3466,6 +3602,10 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -3474,6 +3614,10 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} @@ -3488,6 +3632,10 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + p-each-series@3.0.0: resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} engines: {node: '>=12'} @@ -3563,6 +3711,10 @@ packages: resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} engines: {node: '>=18'} + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + package-manager-detector@0.2.8: resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} @@ -3736,6 +3888,10 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + 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==} @@ -3761,6 +3917,10 @@ packages: queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -3843,6 +4003,9 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3859,6 +4022,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3873,6 +4040,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -3951,6 +4122,9 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -4062,6 +4236,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -4115,6 +4293,10 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} + synckit@0.7.3: + resolution: {integrity: sha512-jNroMv7Juy+mJ/CHW5H6TzsLWpa1qck6sCHbkv8YTur+irSq2PjbvmGnm2gy14BUQ6jF33vyR4DPssHqmqsDQw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4189,6 +4371,10 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4374,6 +4560,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -5333,6 +5523,15 @@ snapshots: '@pkgr/core@0.1.1': {} + '@pkgr/utils@2.4.2': + dependencies: + cross-spawn: 7.0.6 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.1.1 + tslib: 2.8.1 + '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -5529,6 +5728,8 @@ snapshots: '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@5.6.0': {} + '@sindresorhus/merge-streams@2.3.0': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -5609,6 +5810,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + '@types/argparse@1.0.38': {} '@types/caseless@0.12.5': {} @@ -5632,6 +5837,8 @@ snapshots: '@types/har-format@1.2.16': {} + '@types/http-cache-semantics@4.0.4': {} + '@types/json-schema@7.0.15': {} '@types/jsonfile@6.1.4': @@ -5909,8 +6116,14 @@ snapshots: dependencies: is-windows: 1.0.2 + big-integer@1.6.52: {} + bottleneck@2.19.5: {} + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5933,6 +6146,10 @@ snapshots: builtin-modules@3.3.0: {} + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -5949,6 +6166,18 @@ snapshots: cac@6.7.14: {} + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -6167,19 +6396,37 @@ snapshots: dependencies: character-entities: 2.0.2 + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-eql@5.0.2: {} deep-extend@0.6.0: {} deep-is@0.1.4: {} + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + default-browser-id@5.0.0: {} + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + default-browser@5.2.1: dependencies: bundle-name: 4.1.0 default-browser-id: 5.0.0 + defer-to-connect@2.0.1: {} + define-lazy-prop@3.0.0: {} defu@6.1.4: {} @@ -6512,6 +6759,16 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} + eslint-plugin-node-dependencies@0.12.0(eslint@9.17.0(jiti@2.4.2)): + dependencies: + eslint: 9.17.0(jiti@2.4.2) + jsonc-eslint-parser: 2.4.0 + npm-package-arg: 10.1.0 + package-json: 8.1.1 + semver: 7.6.3 + synckit: 0.7.3 + tunnel-agent: 0.6.0 + eslint-plugin-perfectionist@4.4.0(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.2): dependencies: '@typescript-eslint/types': 8.18.2 @@ -6687,6 +6944,30 @@ snapshots: d: 1.0.2 es5-ext: 0.10.64 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -6822,6 +7103,8 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data-encoder@2.1.4: {} + formdata-to-string@2.0.2: {} from2@2.3.0: @@ -6976,6 +7259,20 @@ snapshots: gopd@1.2.0: {} + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} @@ -7020,6 +7317,10 @@ snapshots: hosted-git-info@2.8.9: {} + hosted-git-info@6.1.3: + dependencies: + lru-cache: 7.18.3 + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -7030,6 +7331,8 @@ snapshots: html-escaper@2.0.2: {} + http-cache-semantics@4.1.1: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -7037,6 +7340,11 @@ snapshots: transitivePeerDependencies: - supports-color + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 @@ -7046,6 +7354,10 @@ snapshots: human-id@1.0.2: {} + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + human-signals@5.0.0: {} human-signals@8.0.0: {} @@ -7128,6 +7440,8 @@ snapshots: dependencies: hasown: 2.0.2 + is-docker@2.2.1: {} + is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -7152,6 +7466,8 @@ snapshots: is-promise@2.2.2: {} + is-stream@2.0.1: {} + is-stream@3.0.0: {} is-stream@4.0.1: {} @@ -7166,6 +7482,10 @@ snapshots: is-windows@1.0.2: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -7375,6 +7695,8 @@ snapshots: loupe@3.1.2: {} + lowercase-keys@3.0.0: {} + lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -7383,6 +7705,8 @@ snapshots: dependencies: yallist: 4.0.0 + lru-cache@7.18.3: {} + lru-queue@0.1.0: dependencies: es5-ext: 0.10.64 @@ -7746,8 +8070,14 @@ snapshots: mimer@2.0.2: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + min-indent@1.0.1: {} minimatch@10.0.1: @@ -7860,6 +8190,13 @@ snapshots: npm-normalize-package-bin@2.0.0: {} + npm-package-arg@10.1.0: + dependencies: + hosted-git-info: 6.1.3 + proc-log: 3.0.0 + semver: 7.6.3 + validate-npm-package-name: 5.0.1 + npm-packlist@5.1.3: dependencies: glob: 8.1.0 @@ -7867,6 +8204,10 @@ snapshots: npm-bundled: 2.0.1 npm-normalize-package-bin: 2.0.0 + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -7909,6 +8250,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -7920,6 +8265,13 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + openapi-types@12.1.3: {} optionator@0.9.4: @@ -7935,6 +8287,8 @@ snapshots: outdent@0.5.0: {} + p-cancelable@3.0.0: {} + p-each-series@3.0.0: {} p-filter@2.1.0: @@ -7998,6 +8352,13 @@ snapshots: registry-url: 6.0.1 semver: 7.6.3 + package-json@8.1.1: + dependencies: + got: 12.6.1 + registry-auth-token: 5.0.3 + registry-url: 6.0.1 + semver: 7.6.3 + package-manager-detector@0.2.8: {} parent-module@1.0.1: @@ -8129,6 +8490,8 @@ snapshots: dependencies: parse-ms: 4.0.0 + proc-log@3.0.0: {} + process-nextick-args@2.0.1: {} proto-list@1.2.4: {} @@ -8151,6 +8514,8 @@ snapshots: dependencies: inherits: 2.0.4 + quick-lru@5.1.1: {} + radix3@1.1.2: {} rc@1.2.8: @@ -8245,6 +8610,8 @@ snapshots: require-from-string@2.0.2: {} + resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -8257,6 +8624,10 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + reusify@1.0.4: {} rimraf@6.0.1: @@ -8289,6 +8660,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.28.1 fsevents: 2.3.3 + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + run-applescript@7.0.0: {} run-parallel@1.2.0: @@ -8398,6 +8773,8 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} signale@1.4.0: @@ -8510,6 +8887,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-final-newline@4.0.0: {} @@ -8560,6 +8939,11 @@ snapshots: dependencies: tslib: 2.8.1 + synckit@0.7.3: + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.8.1 + synckit@0.9.2: dependencies: '@pkgr/core': 0.1.1 @@ -8634,6 +9018,8 @@ snapshots: tinyspy@3.0.2: {} + titleize@3.0.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -8804,6 +9190,8 @@ snapshots: universalify@2.0.1: {} + untildify@4.0.0: {} + update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: browserslist: 4.24.3