From 213b4d62ab9c6bc00d7d241421a5e6187e47e3c0 Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 17 Apr 2025 00:40:37 +0800 Subject: [PATCH 1/6] feat: migrate to TypeScript --- .all-contributorsrc | 5 +- .eslintignore | 5 - .eslintrc.js | 30 - .github/workflows/ci.yml | 28 +- .gitignore | 1 + .prettierrc.json | 5 - .prettierrc.mjs | 14 + .yarnrc.yml | 2 +- .../CODE_OF_CONDUCT.md => CODE_OF_CONDUCT.md | 0 other/EXAMPLES.md => EXAMPLES.md | 14 +- README.md | 26 +- {src/__mocks__ => __mocks__}/eslint.js | 44 +- {src/__mocks__ => __mocks__}/fs.js | 6 +- .../loglevel-colored-level-prefix.js | 14 +- {src/__mocks__ => __mocks__}/prettier.js | 7 +- babel.config.js | 14 - eslint.config.mjs | 48 + global.d.ts | 8 + jest.config.js | 14 - jest.config.ts | 19 + other/ROADMAP.md | 7 - other/manual-release.md | 8 - package-scripts.js => package-scripts.cjs | 13 +- package.json | 41 +- patches/@1stg+eslint-config+9.0.4.patch | 13 + shim.d.ts | 38 + src/{index.js => index.ts} | 281 +- src/tsconfig.json | 8 + src/types.ts | 98 + src/utils.js | 412 -- src/utils.ts | 576 +++ test/fixtures/paths/foo.js | 0 .../paths/node_modules/eslint/index.js | 2 +- .../paths/node_modules/prettier/index.js | 2 +- {tests => test}/fixtures/paths/package.json | 0 src/__tests__/index.js => test/index.spec.ts | 272 +- src/__tests__/utils.js => test/utils.spec.ts | 199 +- tests/fixtures/paths/foo.js | 1 - tsconfig.json | 15 +- types/index.d.ts | 95 - yarn.lock | 4563 ++++++++++++++++- 41 files changed, 5731 insertions(+), 1217 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js delete mode 100644 .prettierrc.json create mode 100644 .prettierrc.mjs rename other/CODE_OF_CONDUCT.md => CODE_OF_CONDUCT.md (100%) rename other/EXAMPLES.md => EXAMPLES.md (90%) rename {src/__mocks__ => __mocks__}/eslint.js (67%) rename {src/__mocks__ => __mocks__}/fs.js (84%) rename {src/__mocks__ => __mocks__}/loglevel-colored-level-prefix.js (75%) rename {src/__mocks__ => __mocks__}/prettier.js (76%) delete mode 100644 babel.config.js create mode 100644 eslint.config.mjs create mode 100644 global.d.ts delete mode 100644 jest.config.js create mode 100644 jest.config.ts delete mode 100644 other/ROADMAP.md delete mode 100644 other/manual-release.md rename package-scripts.js => package-scripts.cjs (88%) create mode 100644 patches/@1stg+eslint-config+9.0.4.patch create mode 100644 shim.d.ts rename src/{index.js => index.ts} (53%) create mode 100644 src/tsconfig.json create mode 100644 src/types.ts delete mode 100644 src/utils.js create mode 100644 src/utils.ts create mode 100644 test/fixtures/paths/foo.js rename {tests => test}/fixtures/paths/node_modules/eslint/index.js (79%) rename {tests => test}/fixtures/paths/node_modules/prettier/index.js (77%) rename {tests => test}/fixtures/paths/package.json (100%) rename src/__tests__/index.js => test/index.spec.ts (64%) rename src/__tests__/utils.js => test/utils.spec.ts (62%) delete mode 100644 tests/fixtures/paths/foo.js delete mode 100644 types/index.d.ts diff --git a/.all-contributorsrc b/.all-contributorsrc index bc459f1e..919a8ab2 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -346,7 +346,10 @@ "name": "Jonathan Rehm", "avatar_url": "https://avatars.githubusercontent.com/u/999845?v=4", "profile": "https://jonathan.rehm.me/", - "contributions": ["bug", "code"] + "contributions": [ + "bug", + "code" + ] }, { "login": "gwhitney", diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 574cfd3d..00000000 --- a/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -.nyc_output -coverage -dist -tests/fixtures/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index adfc8d43..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,30 +0,0 @@ -const config = { - extends: [ - 'kentcdodds', - 'kentcdodds/jest', - 'plugin:node-dependencies/recommended' - ], - parserOptions: { - ecmaVersion: 'latest' - }, - rules: { - 'valid-jsdoc': 'off', - 'max-len': 'off', - 'space-before-function-paren': [ - 'error', - { - anonymous: 'never', - named: 'never', - asyncArrow: 'always' - } - ], - 'import/no-import-module-exports': 'off', - 'arrow-parens': ['error', 'as-needed'], - quotes: ['error', 'single', { avoidEscape: true }] - }, - settings: { - 'import/ignore': ['node_modules', 'src'] // Using CommonJS in src - } -}; - -module.exports = config; diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8d04088..deb880cd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,21 +21,21 @@ jobs: fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node }} - cache: yarn + - name: Use Node.js ${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: yarn - - name: Install dependencies - run: yarn --immutable + - name: Install dependencies + run: yarn --immutable - - name: Lint, test, and build - run: yarn start validate + - name: Lint, test, and build + run: yarn start validate - - name: Check test coverage - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos + - name: Check test coverage + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos diff --git a/.gitignore b/.gitignore index a3d5b4b2..c4ac90d1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ dist .yarn/* !.yarn/releases !.yarn/plugins +!test/fixtures/paths/node_modules diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index bde0555c..00000000 --- a/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "arrowParens": "avoid", - "singleQuote": true, - "plugins": ["prettier-plugin-pkg", "prettier-plugin-svelte"] -} diff --git a/.prettierrc.mjs b/.prettierrc.mjs new file mode 100644 index 00000000..03d032c5 --- /dev/null +++ b/.prettierrc.mjs @@ -0,0 +1,14 @@ +// @ts-check + +/** @import { Config, Plugin } from 'prettier' */ + +import base from '@1stg/prettier-config/semi'; +import svelte from 'prettier-plugin-svelte'; + +/** @type {Config} */ +const config = { + ...base, + plugins: [.../** @type {Plugin[]} */ (base.plugins), svelte], +}; + +export default config; diff --git a/.yarnrc.yml b/.yarnrc.yml index 1f34eeb4..489e8883 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -5,6 +5,6 @@ nodeLinker: node-modules plugins: - checksum: 37b2361b1502b2054e6779788c0e9bdd6a90ce49852a8cad2feda79b0614ec94f06fb6e78951f5f95429c610d7934dd077caa47413a0227378a102c55161616d path: .yarn/plugins/plugin-prepare-lifecycle.cjs - spec: "https://github.com/un-es/yarn-plugin-prepare-lifecycle/releases/download/v0.0.1/index.js" + spec: 'https://github.com/un-es/yarn-plugin-prepare-lifecycle/releases/download/v0.0.1/index.js' yarnPath: .yarn/releases/yarn-4.9.1.cjs diff --git a/other/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md similarity index 100% rename from other/CODE_OF_CONDUCT.md rename to CODE_OF_CONDUCT.md diff --git a/other/EXAMPLES.md b/EXAMPLES.md similarity index 90% rename from other/EXAMPLES.md rename to EXAMPLES.md index 1de8be96..4a380bd3 100644 --- a/other/EXAMPLES.md +++ b/EXAMPLES.md @@ -28,15 +28,15 @@ var prettierEslint = require('prettier-eslint'); const options = { eslintConfig: { parserOptions: { - ecmaVersion: 7 + ecmaVersion: 7, }, rules: { - semi: ['error', 'never'] - } + semi: ['error', 'never'], + }, }, prettierOptions: { - bracketSpacing: true - } + bracketSpacing: true, + }, }; module.exports = function () { @@ -49,14 +49,14 @@ module.exports = function () { if (file.isStream()) { return callback( - new utils.PluginError('prettier-eslint', "doesn't support Streams") + new utils.PluginError('prettier-eslint', "doesn't support Streams"), ); } const sourceCode = file.contents.toString(); const formatted = prettierEslint({ ...config, - text: sourceCode + text: sourceCode, }); file.contents = new Buffer(formatted, encoding); diff --git a/README.md b/README.md index 140143af..8fb55605 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ npm install --save-dev prettier-eslint ### Example -```javascript +```js const format = require('prettier-eslint'); // notice, no semicolon in the original text @@ -58,18 +58,18 @@ const options = { text: sourceCode, eslintConfig: { parserOptions: { - ecmaVersion: 7 + ecmaVersion: 7, }, rules: { - semi: ['error', 'never'] - } + semi: ['error', 'never'], + }, }, prettierOptions: { - bracketSpacing: true + bracketSpacing: true, }, fallbackPrettierOptions: { - singleQuote: false - } + singleQuote: false, + }, }; const formatted = await format(options); @@ -150,15 +150,15 @@ This allows you to use `eslint` to look for bugs and/or bad practices, and use ## Capturing ESLint messages -```javascript +```js const { analyze } = require('prettier-eslint'); const text = 'var x = 0;'; const result = await analyze({ text, eslintConfig: { - rules: { 'no-var': 'error' } - } + rules: { 'no-var': 'error' }, + }, }); console.log(result.messages); ``` @@ -210,7 +210,7 @@ the inference is done for each option (what rule(s) are referenced, etc.) and ESLint disabled entirely via `/* eslint-disable */` then prettier options will fall back to the `prettier` defaults: -```javascript +```js { printWidth: 80, tabWidth: 2, @@ -291,8 +291,8 @@ solutions. - [`prettier-atom`][atom-plugin] - Atom plugin (check the "ESlint integration" checkbox in settings) - [`vs-code-prettier-eslint`][vscode-plugin] - Visual Studio Code plugin -- [`eslint-plugin-prettier`](https://github.com/not-an-aardvark/eslint-plugin-prettier) - - ESLint plugin. While prettier-eslint uses `eslint --fix` to change the output of `prettier`, eslint-plugin-prettier keeps the `prettier` output as-is and integrates it with the regular ESLint workflow. +- [`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier) - + ESLint plugin. While `prettier-eslint` uses `eslint --fix` to change the output of `prettier`, `eslint-plugin-prettier` keeps the `prettier` output as-is and integrates it with the regular ESLint workflow. - [`prettier-eslint-webpack-plugin`](https://github.com/danielterwiel/prettier-eslint-webpack-plugin) - Prettier ESlint Webpack Plugin diff --git a/src/__mocks__/eslint.js b/__mocks__/eslint.js similarity index 67% rename from src/__mocks__/eslint.js rename to __mocks__/eslint.js index dced55a5..99591609 100644 --- a/src/__mocks__/eslint.js +++ b/__mocks__/eslint.js @@ -1,7 +1,11 @@ // this mock file is so eslint doesn't attempt to actually // search around the file system for stuff -const eslint = jest.requireActual('eslint'); +/** @import { ESLintConfig } from 'prettier-eslint' */ + +const eslint = /** @type {typeof import('eslint')} */ ( + jest.requireActual('eslint') +); const { ESLint } = eslint; const mockCalculateConfigForFileSpy = jest.fn(mockCalculateConfigForFile); @@ -12,12 +16,12 @@ module.exports = Object.assign(eslint, { ESLint: jest.fn(MockESLint), mock: { calculateConfigForFile: mockCalculateConfigForFileSpy, - lintText: mockLintTextSpy - } + lintText: mockLintTextSpy, + }, }); function MockESLint(...args) { - global.__PRETTIER_ESLINT_TEST_STATE__.eslintPath = __filename; + globalThis.__PRETTIER_ESLINT_TEST_STATE__.eslintPath = __filename; const eslintInstance = new ESLint(...args); eslintInstance.calculateConfigForFile = mockCalculateConfigForFileSpy; eslintInstance._originalLintText = eslintInstance.lintText; @@ -27,14 +31,19 @@ function MockESLint(...args) { MockESLint.prototype = Object.create(ESLint.prototype); -// eslint-disable-next-line complexity +/** + * @param {string} filePath + * @returns {ESLintConfig} -- eslint config + * @throws {Error} -- if `throwError` is specifically set on the spy, or if the + * filePath is not handled + */ function mockCalculateConfigForFile(filePath) { if (mockCalculateConfigForFileSpy.throwError) { throw mockCalculateConfigForFileSpy.throwError; } if (!filePath) { return { - rules: {} + rules: {}, }; } if (filePath.includes('default-config')) { @@ -46,7 +55,7 @@ function mockCalculateConfigForFile(filePath) { quotes: [ 2, 'single', - { avoidEscape: true, allowTemplateLiterals: true } + { avoidEscape: true, allowTemplateLiterals: true }, ], 'comma-dangle': [ 2, @@ -55,24 +64,23 @@ function mockCalculateConfigForFile(filePath) { objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', - functions: 'always-multiline' - } + functions: 'always-multiline', + }, ], - 'arrow-parens': [2, 'as-needed'] - } + 'arrow-parens': [2, 'as-needed'], + }, }; - } else if (filePath.includes('fixtures/paths')) { + } + if (filePath.includes('fixtures/paths')) { return { rules: {} }; - } else { - throw new Error( - `Your mock filePath (${filePath})` + - ' does not have a handler for finding the config' - ); } + throw new Error( + `Your mock filePath (${filePath})` + + ' does not have a handler for finding the config', + ); } function mockLintText(...args) { - /* eslint no-invalid-this:0 */ if (mockLintTextSpy.throwError) { throw mockLintTextSpy.throwError; } diff --git a/src/__mocks__/fs.js b/__mocks__/fs.js similarity index 84% rename from src/__mocks__/fs.js rename to __mocks__/fs.js index 02f17367..729b2fef 100644 --- a/src/__mocks__/fs.js +++ b/__mocks__/fs.js @@ -1,13 +1,15 @@ const fs = jest.requireActual('fs'); + module.exports = { ...fs, readFileSync: jest.fn(filename => { if (/package\.json$/.test(filename)) { return '{"name": "fake", "version": "0.0.0", "prettier": {}}'; - } else if (/\.(j|t)s$/.test(filename)) { + } + if (/\.[jt]s$/.test(filename)) { return 'var fake = true'; } return ''; - }) + }), }; diff --git a/src/__mocks__/loglevel-colored-level-prefix.js b/__mocks__/loglevel-colored-level-prefix.js similarity index 75% rename from src/__mocks__/loglevel-colored-level-prefix.js rename to __mocks__/loglevel-colored-level-prefix.js index f79f744a..7252f10e 100644 --- a/src/__mocks__/loglevel-colored-level-prefix.js +++ b/__mocks__/loglevel-colored-level-prefix.js @@ -1,35 +1,35 @@ module.exports = getLogger; + const logger = { setLevel: jest.fn(), trace: jest.fn(getTestImplementation('trace')), debug: jest.fn(getTestImplementation('debug')), info: jest.fn(getTestImplementation('info')), warn: jest.fn(getTestImplementation('warn')), - error: jest.fn(getTestImplementation('error')) + error: jest.fn(getTestImplementation('error')), }; + const mock = { clearAll, logger, logThings: [] }; -Object.assign(module.exports, { - mock -}); +Object.assign(module.exports, { mock }); function getLogger() { return logger; } function clearAll() { - Object.keys(logger).forEach(name => { + for (const name of Object.keys(logger)) { if (logger[name].mock) { logger[name].mockClear(); } - }); + } } function getTestImplementation(level) { return testLogImplementation; function testLogImplementation(...args) { - if (mock.logThings === 'all' || mock.logThings.indexOf(level) !== -1) { + if (mock.logThings === 'all' || mock.logThings.includes(level)) { console.log(level, ...args); // eslint-disable-line no-console } } diff --git a/src/__mocks__/prettier.js b/__mocks__/prettier.js similarity index 76% rename from src/__mocks__/prettier.js rename to __mocks__/prettier.js index 52362e84..d6b10e15 100644 --- a/src/__mocks__/prettier.js +++ b/__mocks__/prettier.js @@ -1,4 +1,5 @@ const prettier = jest.requireActual('prettier'); + const { format } = prettier; module.exports = prettier; @@ -7,13 +8,15 @@ const mockFormatSpy = jest.fn(mockFormat); Object.assign(prettier, { format: mockFormatSpy, - resolveConfig: jest.fn() + resolveConfig: jest.fn(), }); function mockFormat(...args) { - global.__PRETTIER_ESLINT_TEST_STATE__.prettierPath = __filename; + globalThis.__PRETTIER_ESLINT_TEST_STATE__.prettierPath = __filename; + if (mockFormatSpy.throwError) { throw mockFormatSpy.throwError; } + return format(...args); } diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index c2857c1f..00000000 --- a/babel.config.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = { - presets: [ - [ - '@babel/env', - { - targets: { - node: '10' - } - } - ] - ] -}; - -module.exports = config; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..8f6afd1b --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,48 @@ +// @ts-check + +import base from '@1stg/eslint-config'; +import nodeDependencies from 'eslint-plugin-node-dependencies'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + ...base, + ...nodeDependencies.configs['flat/recommended'], + { + ignores: ['test/fixtures'], + }, + { + rules: { + 'prettier/prettier': 'off', + 'valid-jsdoc': 'off', + 'max-len': 'off', + 'space-before-function-paren': [ + 'error', + { + anonymous: 'never', + named: 'never', + asyncArrow: 'always', + }, + ], + 'import/no-import-module-exports': 'off', + 'arrow-parens': ['error', 'as-needed'], + quotes: ['error', 'single', { avoidEscape: true }], + }, + }, + { + files: ['**/__mocks__/**/*.js', '**/*.spec.ts'], + languageOptions: { + globals: globals.jest, + }, + rules: { + '@typescript-eslint/no-magic-numbers': 'off', + 'no-magic-numbers': 'off', + }, + }, + { + files: ['**/*.d.ts'], + rules: { + 'no-var': 'off', + }, + }, +); diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 00000000..2f9bf7d6 --- /dev/null +++ b/global.d.ts @@ -0,0 +1,8 @@ +declare global { + declare var __PRETTIER_ESLINT_TEST_STATE__: { + eslintPath?: string; + prettierPath?: string; + }; +} + +export {}; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 7a638dae..00000000 --- a/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - testEnvironment: 'node', - collectCoverageFrom: ['src/**/*.js'], - testPathIgnorePatterns: ['/node_modules/', '/fixtures/', '/__mocks__/'], - coveragePathIgnorePatterns: ['/node_modules/', '/fixtures/', '/__mocks__/'], - coverageThreshold: { - global: { - branches: 96, - functions: 100, - lines: 100, - statements: 100 - } - } -}; diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..412ef604 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,19 @@ +import type { Options } from '@swc-node/core'; +import type { Config } from 'jest'; + +export default { + collectCoverage: true, + collectCoverageFrom: ['src/*.ts'], + coverageThreshold: { + global: { + branches: 96, + functions: 100, + lines: 100, + statements: 100, + }, + }, + testEnvironment: 'node', + transform: { + '^.+\\.ts$': ['@swc-node/jest', {} satisfies Options], + }, +} satisfies Config; diff --git a/other/ROADMAP.md b/other/ROADMAP.md deleted file mode 100644 index ab216af9..00000000 --- a/other/ROADMAP.md +++ /dev/null @@ -1,7 +0,0 @@ -# Project Roadmap - -## Want to do - -## Might do - -## Wont do diff --git a/other/manual-release.md b/other/manual-release.md deleted file mode 100644 index 2a45a9d5..00000000 --- a/other/manual-release.md +++ /dev/null @@ -1,8 +0,0 @@ -# manual release - -This file is just here to be used when there's a mistake in the auto-release. -Just increment the number below and commit your change with the commit type -that should have been released which will trigger a release. Then you can -update the changelog if necessary. - -**Manual Release Count: 1** diff --git a/package-scripts.js b/package-scripts.cjs similarity index 88% rename from package-scripts.js rename to package-scripts.cjs index 655b84cc..a0b49ab4 100644 --- a/package-scripts.js +++ b/package-scripts.cjs @@ -34,11 +34,8 @@ module.exports = { openCoverage: 'open coverage/lcov-report/index.html', }, build: { - description: 'delete the dist directory and run babel to build the files', - script: series( - rimraf('dist'), - 'babel --out-dir dist --ignore "src/__tests__/**/*","src/__mocks__/**/*" src' - ), + description: 'delete the lib directory and run tsc to build the files', + script: series(rimraf('lib'), 'tsc -b src'), }, lint: { description: 'lint the entire project', @@ -57,7 +54,11 @@ module.exports = { validate: { description: 'This runs several scripts to make sure things look good before committing or on clean install', - script: concurrent.nps('lint', 'build', 'test'), + script: concurrent([ + 'nps -c ./package-scripts.cjs lint', + 'nps -c ./package-scripts.cjs build', + 'nps -c ./package-scripts.cjs test', + ]), }, format: { description: 'Formats everything with prettier-eslint', diff --git a/package.json b/package.json index 96e004ff..af85f501 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,18 @@ "author": "Kent C. Dodds (http://kentcdodds.com/)", "maintainers": [ "Simon Fridlund ", - "JounQin (https://www.1stG.me) " + "JounQin (https://www.1stG.me)" ], "license": "MIT", "packageManager": "yarn@4.9.1", "engines": { "node": ">=16.10.0" }, - "main": "dist/index.js", - "types": "types/index.d.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", "files": [ - "dist", - "types" + "lib", + "!lib/*.tsbuildinfo" ], "keywords": [ "eslint", @@ -28,9 +28,10 @@ "prettier-eslint" ], "scripts": { - "prepare": "simple-git-hooks", - "start": "nps", - "test": "nps test" + "fix": "nps -c ./package-scripts.cjs 'lint --fix'", + "prepare": "patch-package && simple-git-hooks", + "start": "nps -c ./package-scripts.cjs", + "test": "nps -c ./package-scripts.cjs test" }, "peerDependencies": { "prettier-plugin-svelte": "^3.0.0", @@ -58,12 +59,25 @@ "vue-eslint-parser": "^9.4.3" }, "devDependencies": { + "@1stg/eslint-config": "^9.0.4", + "@1stg/prettier-config": "^5.1.3", + "@1stg/tsconfig": "^3.0.3", "@babel/cli": "^7.27.0", "@babel/core": "^7.26.10", "@babel/preset-env": "^7.26.9", "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.0", + "@changesets/cli": "^2.29.1", + "@swc-node/jest": "^1.8.13", + "@swc/core": "^1.11.21", + "@swc/helpers": "^0.5.17", + "@types/common-tags": "^1.8.4", + "@types/dlv": "^1.1.5", "@types/eslint": "^8.56.12", + "@types/jest": "^29.5.14", + "@types/lodash.merge": "^4.6.9", + "@types/node": "^22.14.1", + "@types/require-relative": "^0.8.2", + "@unts/patch-package": "^8.1.1", "all-contributors-cli": "^6.26.1", "clean-pkg-json": "^1.2.1", "eslint-config-kentcdodds": "^21.0.0", @@ -72,17 +86,18 @@ "jest": "^29.7.0", "nps": "^5.10.0", "nps-utils": "^1.7.0", + "prettier-eslint": "link:.", "prettier-eslint-cli": "^8.0.1", - "prettier-plugin-pkg": "^0.19.0", "prettier-plugin-svelte": "^3.3.3", "rimraf": "^6.0.1", "simple-git-hooks": "^2.12.1", "strip-indent": "^3.0.0", "svelte": "^4.2.19", "svelte-eslint-parser": "^0.33.1", - "typescript": "~5.3.3" + "ts-node": "^10.9.2", + "typescript": "^5.8.3" }, - "overrides": { - "eslint-plugin-jest": "^28.11.0" + "resolutions": { + "eslint-plugin-unicorn": "^56.0.1" } } diff --git a/patches/@1stg+eslint-config+9.0.4.patch b/patches/@1stg+eslint-config+9.0.4.patch new file mode 100644 index 00000000..15059902 --- /dev/null +++ b/patches/@1stg+eslint-config+9.0.4.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@1stg/eslint-config/base.js b/node_modules/@1stg/eslint-config/base.js +index 4aed1e4..fac5ee3 100644 +--- a/node_modules/@1stg/eslint-config/base.js ++++ b/node_modules/@1stg/eslint-config/base.js +@@ -32,7 +32,7 @@ export const base = tseslint.config([ + promise.configs['flat/recommended'], + regexp.configs['flat/recommended'], + sonarjs.configs.recommended, +- unicorn.configs.recommended, ++ unicorn.configs['flat/recommended'], + prettierExtends, + { + name: '@1stg/node', diff --git a/shim.d.ts b/shim.d.ts new file mode 100644 index 00000000..2c369d24 --- /dev/null +++ b/shim.d.ts @@ -0,0 +1,38 @@ +declare module 'eslint-plugin-node-dependencies' { + import { ESLint } from 'eslint'; + + const nodeDependencies: ESLint.Plugin & { + configs: { + 'flat/recommended': ESLint.Linter.Config[]; + }; + }; + + export = nodeDependencies; +} + +declare module 'loglevel-colored-level-prefix' { + type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'trace' | 'warn'; + + interface Logger + extends Record< + LogLevel, + (message: string, ...messages: unknown[]) => void + > { + setLevel(level: LogLevel): void; + } + + interface GetLogger { + (options: { prefix: string }): Logger; + + // testing mock + mock: { + logThings: LogLevel[] | 'all'; + logger: Logger; + clearAll(): void; + }; + } + + const getLogger: GetLogger; + + export = getLogger; +} diff --git a/src/index.js b/src/index.ts similarity index 53% rename from src/index.js rename to src/index.ts index eebac326..bbc5ad10 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,96 +1,86 @@ -/* eslint no-console:0, global-require:0, import/no-dynamic-require:0 */ -/* eslint complexity: [1, 13] */ +import fs from 'node:fs'; +import path from 'node:path'; -import fs from 'fs'; -import path from 'path'; -import requireRelative from 'require-relative'; -import prettyFormat from 'pretty-format'; import { oneLine, stripIndent } from 'common-tags'; +import type { Linter } from 'eslint'; import indentString from 'indent-string'; -import getLogger from 'loglevel-colored-level-prefix'; import merge from 'lodash.merge'; -import { getESLint, getOptionsForFormatting, requireModule } from './utils'; +import getLogger from 'loglevel-colored-level-prefix'; +import { format as prettyFormat } from 'pretty-format'; +import requireRelative from 'require-relative'; -const logger = getLogger({ prefix: 'prettier-eslint' }); +import type { + ESLintConfig, + PrettifyInput, + FormatOptions, + LogLevel, + PrettierOptions, + ESLintConfigGlobalValue, +} from './types.ts'; +import { getESLint, getOptionsForFormatting, requireModule } from './utils.ts'; -// CommonJS + ES6 modules... is it worth it? Probably not... -module.exports = format; +const logger = getLogger({ prefix: 'prettier-eslint' }); /** - * Formats the text with prettier and then eslint based on the given options - * @param {String} options.filePath - the path of the file being formatted - * can be used in lieu of `eslintConfig` (eslint will be used to find the - * relevant config for the file). Will also be used to load the `text` if - * `text` is not provided. - * @param {String} options.text - the text (JavaScript code) to format - * @param {String} options.eslintPath - the path to the eslint module to use. - * Will default to require.resolve('eslint') - * @param {String} options.prettierPath - the path to the prettier module. - * Will default to require.resolve('prettier') - * @param {Object} options.eslintConfig - the config to use for formatting - * with ESLint. - * @param {Object} options.prettierOptions - the options to pass for - * formatting with `prettier`. If not provided, prettier-eslint will attempt - * to create the options based on the eslintConfig - * @param {Object} options.fallbackPrettierOptions - the options to pass for - * formatting with `prettier` if the given option is not inferrable from the - * eslintConfig. - * @param {String} options.logLevel - the level for the logs - * (error, warn, info, debug, trace) - * @param {Boolean} options.prettierLast - Run Prettier Last - * @return {Promise} - the formatted string + * Formats the text with Prettier and then ESLint while obeying the user's + * configuration. + * + * @returns The formatted string */ -async function format(options) { +export async function format(options: FormatOptions): Promise { const { output } = await analyze(options); return output; } /** - * Analyzes and formats text with prettier and eslint, based on the - * identical options as for the `format` function. It differs from - * `format` only in that the return value is a simple object with - * properties `output` giving the formatted code and `messages` giving - * any error messages generated in the analysis. - * @param {Object} identical to options parameter of `format` - * @returns {Promise} the return value is an object `r` such that - * `r.output` is the formatted string and `r.messages` is an array of - * message specifications from eslint. + * Analyzes and formats text with prettier and eslint, based on the identical + * options as for the `format` function. It differs from `format` only in that + * the return value is a simple object with properties `output` giving the + * formatted code and `messages` giving any error messages generated in the + * analysis. + * + * @param options To options parameter of `format` + * @returns The return value is an object `r` such that `r.output` is the + * formatted string and `r.messages` is an array of message specifications + * from eslint. */ // eslint-disable-next-line complexity -async function analyze(options) { +export async function analyze(options: FormatOptions): Promise<{ + output: string; + messages: Linter.LintMessage[]; +}> { const { logLevel = getDefaultLogLevel() } = options; logger.setLevel(logLevel); logger.trace('called analyze with options:', prettyFormat(options)); const { filePath, - text = getTextFromFilePath(filePath), + text = getTextFromFilePath(filePath!), // `filePath` must be provided if `text` is not eslintPath = getModulePath(filePath, 'eslint'), prettierPath = getModulePath(filePath, 'prettier'), prettierLast, - fallbackPrettierOptions + fallbackPrettierOptions, } = options; const eslintConfig = merge( {}, options.eslintConfig, - await getESLintConfig(filePath, eslintPath, options.eslintConfig || {}) + await getESLintConfig(filePath, eslintPath, options.eslintConfig || {}), ); - const prettierOptions = merge( + const prettierOptions: PrettierOptions = merge( {}, // Let prettier infer the parser using the filepath, if present. Otherwise // assume the file is JS and default to the babel parser. filePath ? { filepath: filePath } : { parser: 'babel' }, await getPrettierConfig(filePath, prettierPath), - options.prettierOptions + options.prettierOptions, ); const formattingOptions = getOptionsForFormatting( eslintConfig, prettierOptions, fallbackPrettierOptions, - eslintPath ); logger.debug( @@ -103,8 +93,8 @@ async function analyze(options) { eslintConfig: formattingOptions.eslint, prettierOptions: formattingOptions.prettier, logLevel, - prettierLast - }) + prettierLast, + }), ); const eslintExtensions = eslintConfig.extensions || [ @@ -117,7 +107,7 @@ async function analyze(options) { '.mjs', '.mts', '.vue', - '.svelte' + '.svelte', ]; const fileExtension = path.extname(filePath || ''); @@ -136,7 +126,7 @@ async function analyze(options) { if (['.ts', '.tsx'].includes(fileExtension)) { formattingOptions.eslint.parser ||= require.resolve( - '@typescript-eslint/parser' + '@typescript-eslint/parser', ); } @@ -148,22 +138,45 @@ async function analyze(options) { formattingOptions.eslint.parser ||= require.resolve('svelte-eslint-parser'); } - const eslintFix = await createEslintFix(formattingOptions.eslint, eslintPath); + const eslintFix = createEslintFix(formattingOptions.eslint, eslintPath); if (prettierLast) { const eslintFixed = await eslintFix(text, filePath); return prettify(eslintFixed); } - return eslintFix((await prettify(text)).output, filePath); + + const { output } = await prettify(text); + + return eslintFix(output, filePath); } -function createPrettify(formatOptions, prettierPath) { - return async function prettify(param) { +/** + * Creates a function that formats text using Prettier. + * + * This function initializes Prettier and formats the given text according to + * the specified formatting options. + * + * @example + * const prettify = createPrettify( + * { semi: false, singleQuote: true }, + * '/path/to/prettier', + * ); + * const result = await prettify('const x=1;'); + * console.log(result.output); // Formatted code + * + * @param formatOptions - The options to pass to Prettier. + * @param prettierPath - The path to the Prettier module. + * @returns A function that formats text using Prettier. + */ +function createPrettify(formatOptions: PrettierOptions, prettierPath: string) { + return async function prettify( + param: PrettifyInput | string, + ): Promise<{ output: string; messages: Linter.LintMessage[] }> { let text = param; - let messages = []; - if (typeof param !== 'string') { - text = param.output; - messages = param.text; + let messages: Linter.LintMessage[] = []; + if (typeof text !== 'string') { + messages = text.messages; + text = text.output; } logger.debug('calling prettier on text'); logger.trace( @@ -171,9 +184,12 @@ function createPrettify(formatOptions, prettierPath) { prettier input: ${indentString(text, 2)} - ` + `, + ); + const prettier = requireModule( + prettierPath, + 'prettier', ); - const prettier = requireModule(prettierPath, 'prettier'); try { logger.trace('calling prettier.format with the text and prettierOptions'); const output = await prettier.format(text, formatOptions); @@ -183,7 +199,7 @@ function createPrettify(formatOptions, prettierPath) { prettier output: ${indentString(output, 2)} - ` + `, ); return { output, messages }; } catch (error) { @@ -193,14 +209,14 @@ function createPrettify(formatOptions, prettierPath) { }; } -function createEslintFix(eslintConfig, eslintPath) { - return async function eslintFix(text, filePath) { +function createEslintFix(eslintConfig: ESLintConfig, eslintPath: string) { + return async function eslintFix(text: string, filePath?: string) { if (Array.isArray(eslintConfig.globals)) { - const tempGlobals = {}; - eslintConfig.globals.forEach(g => { + const tempGlobals: Linter.BaseConfig['globals'] = {}; + for (const g of eslintConfig.globals as string[]) { const [key, value] = g.split(':'); - tempGlobals[key] = value; - }); + tempGlobals[key] = value as ESLintConfigGlobalValue; + } eslintConfig.globals = tempGlobals; } @@ -214,8 +230,9 @@ function createEslintFix(eslintConfig, eslintPath) { env: eslintConfig.env, settings: eslintConfig.settings, noInlineConfig: eslintConfig.noInlineConfig, - ...eslintConfig.overrideConfig + ...eslintConfig.overrideConfig, }; + delete eslintConfig.rules; delete eslintConfig.parser; delete eslintConfig.parserOptions; @@ -232,15 +249,15 @@ function createEslintFix(eslintConfig, eslintPath) { logger.trace('calling cliEngine.executeOnText with the text'); const report = await eslint.lintText(text, { filePath, - warnIgnored: true + warnIgnored: true, }); logger.trace( 'executeOnText returned the following report:', - prettyFormat(report) + prettyFormat(report), ); // default the output to text because if there's nothing // to fix, eslint doesn't provide `output` - const [{ output = text, messages }] = await report; + const [{ output = text, messages }] = report; logger.trace('eslint --fix: output === input', output === text); // NOTE: We're ignoring linting errors/warnings here and // defaulting to the given text if there are any @@ -251,7 +268,7 @@ function createEslintFix(eslintConfig, eslintPath) { eslint --fix output: ${indentString(output, 2)} - ` + `, ); return { output, messages }; } catch (error) { @@ -261,13 +278,13 @@ function createEslintFix(eslintConfig, eslintPath) { }; } -function getTextFromFilePath(filePath) { +function getTextFromFilePath(filePath: string) { try { logger.trace( oneLine` attempting fs.readFileSync to get the text for file at "${filePath}" - ` + `, ); return fs.readFileSync(filePath, 'utf8'); } catch (error) { @@ -275,85 +292,135 @@ function getTextFromFilePath(filePath) { oneLine` failed to get the text to format from the given filePath: "${filePath}" - ` + `, ); throw error; } } -function getESLintApiOptions(eslintConfig) { +/** + * Generates ESLint API options based on the provided ESLint options. + * + * This function constructs an object with properties that affect how ESLint's + * `calculateConfigForFile` function behaves. It ensures default values are + * assigned if properties are not explicitly provided. + * + * @example + * const eslintOptions = getESLintApiOptions({ + * ignore: false, + * plugins: ['react'], + * }); + * console.log(eslintOptions); + * // Output: { + * // ignore: false, + * // allowInlineConfig: true, + * // baseConfig: null, + * // overrideConfig: null, + * // overrideConfigFile: null, + * // plugins: ['react'] + * // } + * + * @param eslintConfig - The ESLint options. + * @returns An object containing options for the ESLint API. + */ +function getESLintApiOptions(eslintConfig: ESLintConfig): ESLintConfig { // https://eslint.org/docs/developer-guide/nodejs-api // these options affect what calculateConfigForFile produces return { ignore: eslintConfig.ignore || true, - ignorePath: eslintConfig.ignorePath || null, + ignorePath: eslintConfig.ignorePath, allowInlineConfig: eslintConfig.allowInlineConfig || true, - baseConfig: eslintConfig.baseConfig || null, - overrideConfig: eslintConfig.overrideConfig || null, - overrideConfigFile: eslintConfig.overrideConfigFile || null, - plugins: eslintConfig.plugins || null, - resolvePluginsRelativeTo: eslintConfig.resolvePluginsRelativeTo || null, + baseConfig: eslintConfig.baseConfig, + overrideConfig: eslintConfig.overrideConfig, + overrideConfigFile: eslintConfig.overrideConfigFile, + plugins: eslintConfig.plugins, + resolvePluginsRelativeTo: eslintConfig.resolvePluginsRelativeTo, rulePaths: eslintConfig.rulePaths || [], - useEslintrc: eslintConfig.useEslintrc || true + useEslintrc: eslintConfig.useEslintrc || true, }; } -async function getESLintConfig(filePath, eslintPath, eslintOptions) { +async function getESLintConfig( + filePath: string | undefined, + eslintPath: string, + eslintConfig: ESLintConfig, +): Promise { if (filePath) { - eslintOptions.cwd = path.dirname(filePath); + eslintConfig.cwd = path.dirname(filePath); } logger.trace( oneLine` creating ESLint CLI Engine to get the config for "${filePath || process.cwd()}" - ` + `, ); - const eslint = getESLint(eslintPath, getESLintApiOptions(eslintOptions)); + const eslint = getESLint(eslintPath, getESLintApiOptions(eslintConfig)); try { logger.debug(`getting eslint config for file at "${filePath}"`); - const config = await eslint.calculateConfigForFile(filePath); + const config = (await eslint.calculateConfigForFile( + filePath!, // `undefined` is actually fine + )) as ESLintConfig; logger.trace( `eslint config for "${filePath}" received`, - prettyFormat(config) + prettyFormat(config), ); return { - ...eslintOptions, - ...config + ...eslintConfig, + ...config, }; - } catch (error) { + } catch { // is this noisy? Try setting options.disableLog to false logger.debug('Unable to find config'); return { rules: {} }; } } -function getPrettierConfig(filePath, prettierPath) { - const prettier = requireModule(prettierPath, 'prettier'); - return prettier.resolveConfig && prettier.resolveConfig(filePath); +function getPrettierConfig(filePath: string | undefined, prettierPath: string) { + const prettier = requireModule( + prettierPath, + 'prettier', + ); + return prettier.resolveConfig(filePath!); // `undefined` is actually fine } -function getModulePath(filePath = __filename, moduleName) { +/** + * Resolves the absolute path to a module relative to a given file path. + * + * This function attempts to resolve a module's path relative to the provided + * `filePath`. If the module cannot be found in the specified location, it falls + * back to resolving the module globally using `require.resolve`. + * + * @example + * const eslintPath = getModulePath('./example.js', 'eslint'); + * console.log(eslintPath); // Output: Absolute path to the ESLint module + * + * @param filePath - The file path from which to resolve the module. + * @param moduleName - The name of the module to resolve. + * @returns The resolved module path. + */ +function getModulePath(filePath = __filename, moduleName: string) { try { return requireRelative.resolve(moduleName, filePath); - } catch (error) { + } catch (err) { + const error = err as Error; logger.debug( oneLine` There was a problem finding the ${moduleName} module. Using prettier-eslint's version. `, error.message, - error.stack + error.stack, ); return require.resolve(moduleName); } } function getDefaultLogLevel() { - return process.env.LOG_LEVEL || 'warn'; + return (process.env.LOG_LEVEL as LogLevel | undefined) || 'warn'; } -// Allow named imports of either `analyze` or `format` from this module, -// while leaving `format` in place as the default import: -module.exports.format = format; -module.exports.analyze = analyze; +export type * from './types.js'; +export * from './utils.ts'; + +export default { format, analyze }; diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 00000000..768190b7 --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@1stg/tsconfig/node", + "compilerOptions": { + "rootDir": ".", + "outDir": "../lib" + }, + "include": [".", "../shim.d.ts"] +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 00000000..cd5a780f --- /dev/null +++ b/src/types.ts @@ -0,0 +1,98 @@ +import { ESLint, type Linter } from 'eslint'; +import type { Options as PrettierOptions } from 'prettier'; + +import { StringLiteral } from './utils'; + +/** Logging level for the traceback of the synchronous formatting process. */ +export type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'trace' | 'warn'; + +export { PrettierOptions }; + +/** Options to format text with Prettier and ESLint. */ +export interface FormatOptions { + /** The config to use for formatting with ESLint. */ + eslintConfig?: ESLintConfig; + /** + * The path to the eslint module to use. Will default to + * require.resolve('eslint') + */ + eslintPath?: string; + /** + * The options to pass for formatting with `prettier` if the given option is + * not inferrable from the `eslintConfig`. + */ + fallbackPrettierOptions?: PrettierOptions; + /** + * The path of the file being formatted can be used in lieu of `eslintConfig` + * (eslint will be used to find the relevant config for the file). Will also + * be used to load the `text` if `text` is not provided. + */ + filePath?: string; + /** The level for the logs (`error`, `warn`, `info`, `debug`, `trace`). */ + logLevel?: LogLevel; + /** + * The options to pass for formatting with `prettier`. If not provided, + * prettier-eslint will attempt to create the options based on the + * `eslintConfig` value. + */ + prettierOptions?: PrettierOptions; + /** + * The path to the `prettier` module. Will default to + * require.resolve('prettier') + */ + prettierPath?: string; + /** Run Prettier last. */ + prettierLast?: boolean; + /** The text (JavaScript code) to format. */ + text?: string; +} + +/** Represents the input for the `prettify` function. */ +export interface PrettifyInput { + output: string; + messages: Linter.LintMessage[]; +} + +/** + * Represents the structure of an option getter for mapping ESLint rules to + * Prettier options. + */ +export interface OptionGetter { + /** + * Function that retrieves the ESLint rule value. + * + * @param rules - The ESLint rules configuration. + * @returns The value of the specified ESLint rule. + */ + ruleValue: ( + rules: Partial, + ) => StringLiteral | undefined; + + /** + * Function that converts the ESLint rule value to a corresponding Prettier + * option. + * + * @param ruleValue - The ESLint rule value. + * @returns The converted Prettier option value. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- `unknown` and `never` neither helps + ruleValueToPrettierOption: (...args: any[]) => unknown; +} + +export type ESLintOptions = Omit< + ESLint.Options, + 'plugins' | 'reportUnusedDisableDirectives' +>; + +export type ValueOf = T[keyof T]; + +export type ESLintConfigGlobals = Linter.Config['globals']; + +export type ESLintConfigGlobalValue = ValueOf>; + +export interface ESLintConfig + extends Omit, + ESLintOptions { + globals?: ESLintConfigGlobals | [`${string}:${ESLintConfigGlobalValue}`]; + ignorePattern?: string[] | string; +} diff --git a/src/utils.js b/src/utils.js deleted file mode 100644 index 02e19ea1..00000000 --- a/src/utils.js +++ /dev/null @@ -1,412 +0,0 @@ -/* eslint import/no-dynamic-require:0 */ -import { oneLine } from 'common-tags'; -import delve from 'dlv'; -import getLogger from 'loglevel-colored-level-prefix'; -import { Linter } from 'eslint'; - -const logger = getLogger({ prefix: 'prettier-eslint' }); -const RULE_DISABLED = {}; -const RULE_NOT_CONFIGURED = 'RULE_NOT_CONFIGURED'; -const ruleValueExists = prettierRuleValue => - prettierRuleValue !== RULE_NOT_CONFIGURED && - prettierRuleValue !== RULE_DISABLED && - typeof prettierRuleValue !== 'undefined'; -const OPTION_GETTERS = { - printWidth: { - ruleValue: rules => getRuleValue(rules, 'max-len', 'code'), - ruleValueToPrettierOption: getPrintWidth - }, - tabWidth: { - ruleValue: rules => { - let value = getRuleValue(rules, 'indent'); - if (value === 'tab') { - value = getRuleValue(rules, 'max-len', 'tabWidth'); - } - return value; - }, - ruleValueToPrettierOption: getTabWidth - }, - singleQuote: { - ruleValue: rules => getRuleValue(rules, 'quotes'), - ruleValueToPrettierOption: getSingleQuote - }, - trailingComma: { - ruleValue: rules => getRuleValue(rules, 'comma-dangle', []), - ruleValueToPrettierOption: getTrailingComma - }, - bracketSpacing: { - ruleValue: rules => getRuleValue(rules, 'object-curly-spacing'), - ruleValueToPrettierOption: getBracketSpacing - }, - semi: { - ruleValue: rules => getRuleValue(rules, 'semi'), - ruleValueToPrettierOption: getSemi - }, - useTabs: { - ruleValue: rules => getRuleValue(rules, 'indent'), - ruleValueToPrettierOption: getUseTabs - }, - bracketSameLine: { - ruleValue: rules => - getRuleValue(rules, 'react/jsx-closing-bracket-location', 'nonEmpty'), - ruleValueToPrettierOption: getBracketSameLine - }, - arrowParens: { - ruleValue: rules => getRuleValue(rules, 'arrow-parens'), - ruleValueToPrettierOption: getArrowParens - } -}; - -/* eslint import/prefer-default-export:0 */ -export { getESLint, getOptionsForFormatting, requireModule }; - -function getOptionsForFormatting( - eslintConfig, - prettierOptions = {}, - fallbackPrettierOptions = {} -) { - const eslint = getRelevantESLintConfig(eslintConfig); - const prettier = getPrettierOptionsFromESLintRules( - eslintConfig, - prettierOptions, - fallbackPrettierOptions - ); - return { eslint, prettier }; -} - -function getRelevantESLintConfig(eslintConfig) { - const linter = new Linter(); - const rules = linter.getRules(); - logger.debug('turning off unfixable rules'); - - const relevantRules = {}; - - rules.forEach((rule, name) => { - const { - meta: { fixable } - } = rule; - - if (!fixable) { - logger.trace('turning off rule:', JSON.stringify({ [name]: rule })); - rule = ['off']; - relevantRules[name] = rule; - } - }, {}); - - return { - // defaults - useEslintrc: false, - ...eslintConfig, - // overrides - rules: { ...eslintConfig.rules, ...relevantRules }, - fix: true, - globals: eslintConfig.globals || {} - }; -} - -/** - * This accepts an eslintConfig object and converts - * it to the `prettier` options object - */ -function getPrettierOptionsFromESLintRules( - eslintConfig, - prettierOptions, - fallbackPrettierOptions -) { - const { rules } = eslintConfig; - - const prettierPluginOptions = getRuleValue(rules, 'prettier/prettier', []); - - if (ruleValueExists(prettierPluginOptions)) { - prettierOptions = { ...prettierPluginOptions, ...prettierOptions }; - } - - return Object.keys(OPTION_GETTERS).reduce( - (options, key) => - configureOptions( - prettierOptions, - fallbackPrettierOptions, - key, - options, - rules - ), - prettierOptions - ); -} - -// If an ESLint rule that prettier can be configured with is enabled create a -// prettier configuration object that reflects the ESLint rule configuration. -function configureOptions( - prettierOptions, - fallbackPrettierOptions, - key, - options, - rules -) { - const givenOption = prettierOptions[key]; - const optionIsGiven = givenOption !== undefined; - - if (optionIsGiven) { - options[key] = givenOption; - } else { - const { ruleValue, ruleValueToPrettierOption } = OPTION_GETTERS[key]; - const eslintRuleValue = ruleValue(rules); - - const option = ruleValueToPrettierOption( - eslintRuleValue, - fallbackPrettierOptions, - rules - ); - - if (option !== undefined) { - options[key] = option; - } - } - - return options; -} - -function getPrintWidth(eslintValue, fallbacks) { - return makePrettierOption('printWidth', eslintValue, fallbacks); -} - -function getTabWidth(eslintValue, fallbacks) { - return makePrettierOption('tabWidth', eslintValue, fallbacks); -} - -function getSingleQuote(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'single') { - prettierValue = true; - } else if (eslintValue === 'double') { - prettierValue = false; - } else if (eslintValue === 'backtick') { - prettierValue = false; - } else { - prettierValue = eslintValue; - } - - return makePrettierOption('singleQuote', prettierValue, fallbacks); -} - -function getTrailingComma(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'never') { - prettierValue = 'none'; - } else if ( - typeof eslintValue === 'string' && - eslintValue.indexOf('always') === 0 - ) { - prettierValue = 'es5'; - } else if (typeof eslintValue === 'object') { - prettierValue = getValFromTrailingCommaConfig(eslintValue); - } else { - prettierValue = RULE_NOT_CONFIGURED; - } - - return makePrettierOption('trailingComma', prettierValue, fallbacks); -} - -function getValFromTrailingCommaConfig(objectConfig) { - const { arrays = '', objects = '', functions = '' } = objectConfig; - const fns = isAlways(functions); - const es5 = [arrays, objects].some(isAlways); - - if (fns) { - return 'all'; - } else if (es5) { - return 'es5'; - } else { - return 'none'; - } -} - -function getBracketSpacing(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'never') { - prettierValue = false; - } else if (eslintValue === 'always') { - prettierValue = true; - } else { - prettierValue = eslintValue; - } - - return makePrettierOption('bracketSpacing', prettierValue, fallbacks); -} - -function getSemi(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'never') { - prettierValue = false; - } else if (eslintValue === 'always') { - prettierValue = true; - } else { - prettierValue = eslintValue; - } - - return makePrettierOption('semi', prettierValue, fallbacks); -} - -function getUseTabs(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'tab') { - prettierValue = true; - } else { - prettierValue = RULE_NOT_CONFIGURED; - } - - return makePrettierOption('useTabs', prettierValue, fallbacks); -} - -function getBracketSameLine(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'after-props') { - prettierValue = true; - } else if ( - eslintValue === 'tag-aligned' || - eslintValue === 'line-aligned' || - eslintValue === 'props-aligned' - ) { - prettierValue = false; - } else { - prettierValue = eslintValue; - } - - return makePrettierOption('bracketSameLine', prettierValue, fallbacks); -} - -function getArrowParens(eslintValue, fallbacks) { - let prettierValue; - - if (eslintValue === 'as-needed') { - prettierValue = 'avoid'; - } else { - prettierValue = eslintValue; - } - - return makePrettierOption('arrowParens', prettierValue, fallbacks); -} - -function extractRuleValue(objPath, name, value) { - // XXX: Ignore code coverage for the following else case - // There are currently no eslint rules which we can infer prettier - // options from, that have an object option which we don't know how - // to infer from. - - // istanbul ignore else - if (objPath) { - logger.trace( - oneLine` - Getting the value from object configuration of ${name}. - delving into ${JSON.stringify(value)} with path "${objPath}" - ` - ); - - return delve(value, objPath, RULE_NOT_CONFIGURED); - } - - // istanbul ignore next - logger.debug( - oneLine` - The ${name} rule is using an object configuration - of ${JSON.stringify(value)} but prettier-eslint is - not currently capable of getting the prettier value - based on an object configuration for ${name}. - Please file an issue (and make a pull request?) - ` - ); - - // istanbul ignore next - return undefined; -} - -function getRuleValue(rules, name, objPath) { - const ruleConfig = rules[name]; - - if (Array.isArray(ruleConfig)) { - const [ruleSetting, value] = ruleConfig; - - // If `ruleSetting` is set to disable the ESLint rule don't use `value` as - // it might be a value provided by an overriden config package e.g. airbnb - // overriden by config-prettier. The airbnb values are provided even though - // config-prettier disables the rule. Instead use fallback or prettier - // default. - if (ruleSetting === 0 || ruleSetting === 'off') { - return RULE_DISABLED; - } - - if (typeof value === 'object') { - return extractRuleValue(objPath, name, value); - } else { - logger.trace( - oneLine` - The ${name} rule is configured with a - non-object value of ${value}. Using that value. - ` - ); - return value; - } - } - - return RULE_NOT_CONFIGURED; -} - -function isAlways(val) { - return val.indexOf('always') === 0; -} - -function makePrettierOption(prettierRuleName, prettierRuleValue, fallbacks) { - if (ruleValueExists(prettierRuleValue)) { - return prettierRuleValue; - } - - const fallback = fallbacks[prettierRuleName]; - if (typeof fallback !== 'undefined') { - logger.debug( - oneLine` - The ${prettierRuleName} rule is not configured, - using provided fallback of ${fallback} - ` - ); - return fallback; - } - - logger.debug( - oneLine` - The ${prettierRuleName} rule is not configured, - let prettier decide - ` - ); - return undefined; -} - -function requireModule(modulePath, name) { - try { - logger.trace(`requiring "${name}" module at "${modulePath}"`); - return require(modulePath); - } catch (error) { - logger.error( - oneLine` - There was trouble getting "${name}". - Is "${modulePath}" a correct path to the "${name}" module? - ` - ); - throw error; - } -} - -function getESLint(eslintPath, eslintOptions) { - const { ESLint } = requireModule(eslintPath, 'eslint'); - try { - return new ESLint(eslintOptions); - } catch (error) { - logger.error('There was trouble creating the ESLint CLIEngine.'); - throw error; - } -} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 00000000..e5315f32 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,576 @@ +import { oneLine } from 'common-tags'; +import delve from 'dlv'; +import { Linter } from 'eslint'; +import getLogger from 'loglevel-colored-level-prefix'; +import { type Options as PrettierOptions } from 'prettier'; + +import type { ESLintOptions, ESLintConfig, OptionGetter } from './types.ts'; + +const logger = getLogger({ prefix: 'prettier-eslint' }); + +const RULE_DISABLED = {} as Linter.RuleEntry; +const RULE_NOT_CONFIGURED = 'RULE_NOT_CONFIGURED'; + +/** + * Checks if a given Prettier rule value is valid and configured. + * + * This function determines whether the provided Prettier rule value is set and + * valid. It considers values as non-existent if they are `RULE_NOT_CONFIGURED`, + * `RULE_DISABLED`, or `undefined`. + * + * @example + * console.log(ruleValueExists('always')); // Output: true + * console.log(ruleValueExists(RULE_DISABLED)); // Output: false + * console.log(ruleValueExists(undefined)); // Output: false + * + * @param prettierRuleValue - The value of the Prettier rule to check. + * @returns `true` if the rule value exists and is valid, otherwise `false`. + */ +const ruleValueExists = (prettierRuleValue: unknown) => + prettierRuleValue !== RULE_NOT_CONFIGURED && + prettierRuleValue !== RULE_DISABLED && + prettierRuleValue !== undefined; + +const OPTION_GETTERS: Record = { + printWidth: { + ruleValue: rules => getRuleValue(rules, 'max-len', 'code'), + ruleValueToPrettierOption: getPrintWidth, + }, + tabWidth: { + // eslint-disable-next-line sonarjs/function-return-type -- doesn't it? + ruleValue(rules) { + let value = getRuleValue(rules, 'indent'); + if (value === 'tab') { + value = getRuleValue(rules, 'max-len', 'tabWidth'); + } + return value; + }, + ruleValueToPrettierOption: getTabWidth, + }, + singleQuote: { + ruleValue: rules => getRuleValue(rules, 'quotes'), + ruleValueToPrettierOption: getSingleQuote, + }, + trailingComma: { + ruleValue: rules => getRuleValue(rules, 'comma-dangle', []), + ruleValueToPrettierOption: getTrailingComma, + }, + bracketSpacing: { + ruleValue: rules => getRuleValue(rules, 'object-curly-spacing'), + ruleValueToPrettierOption: getBracketSpacing, + }, + semi: { + ruleValue: rules => getRuleValue(rules, 'semi'), + ruleValueToPrettierOption: getSemi, + }, + useTabs: { + ruleValue: rules => getRuleValue(rules, 'indent'), + ruleValueToPrettierOption: getUseTabs, + }, + bracketSameLine: { + ruleValue: rules => + getRuleValue(rules, 'react/jsx-closing-bracket-location', 'nonEmpty'), + ruleValueToPrettierOption: getBracketSameLine, + }, + arrowParens: { + ruleValue: rules => getRuleValue(rules, 'arrow-parens'), + ruleValueToPrettierOption: getArrowParens, + }, +}; + +/** + * Extracts and prepares formatting options for ESLint and Prettier. + * + * This function retrieves relevant ESLint options and converts applicable + * ESLint rules into Prettier options. It ensures Prettier settings are derived + * correctly, using the provided options or fallback values if necessary. + * + * @example + * const eslintOptions: Linter.Config = { + * rules: { semi: ['error', 'always'] }, + * }; + * const formattingOptions = getOptionsForFormatting(eslintOptions); + * console.log(formattingOptions); + * + * @param eslintConfig - The ESLint options. + * @param prettierOptions - The Prettier options. Default is `{}` + * @param fallbackPrettierOptions - The fallback Prettier options if values are + * missing. Default is `{}` + * @returns An object containing both the ESLint and Prettier options. + */ +export function getOptionsForFormatting( + eslintConfig: ESLintConfig, + prettierOptions: PrettierOptions = {}, + fallbackPrettierOptions: PrettierOptions = {}, +) { + const eslint = getRelevantESLintConfig(eslintConfig); + const prettier = getPrettierOptionsFromESLintRules( + eslintConfig, + prettierOptions, + fallbackPrettierOptions, + ); + return { eslint, prettier }; +} + +/** + * Retrieves a sanitized ESLint options by disabling unfixable rules. + * + * This function processes the provided ESLint options, identifying rules that + * cannot be automatically fixed and disabling them. It then returns an updated + * options with `fix: true` to enable automatic fixing. + * + * @example + * const eslintOptions: ESLint.Options = { + * baseConfig: { + * rules: { semi: ['error', 'always'], 'no-debugger': ['error'] }, + * }, + * }; + * const sanitizedOptions = getRelevantESLintOptions(eslintOptions); + * console.log(sanitizedOptions); + * + * @param eslintConfig - The original ESLint options + * @returns An object containing the modified ESLint options with unfixable + * rules disabled. + */ +function getRelevantESLintConfig(eslintConfig: ESLintConfig): ESLintConfig { + const linter = new Linter(); + const rules = linter.getRules(); + logger.debug('turning off unfixable rules'); + + const relevantRules: Linter.RulesRecord = {}; + + for (const [name, rule] of rules.entries()) { + if (!rule.meta?.fixable) { + logger.trace('turning off rule:', JSON.stringify({ [name]: rule })); + relevantRules[name] = ['off']; + } + } + + return { + // defaults + useEslintrc: false, + ...eslintConfig, + // overrides + rules: { ...eslintConfig.rules, ...relevantRules }, + fix: true, + globals: eslintConfig.globals || {}, + }; +} + +/** + * Converts an ESLint options into Prettier options. + * + * This function extracts relevant ESLint rules and maps them to equivalent + * Prettier options. It also merges any explicitly configured Prettier rules + * from `prettier/prettier` in the ESLint options. + * + * @example + * const eslintOptions: Linter.Config = { + * rules: { 'prettier/prettier': ['error', { semi: false }] }, + * }; + * const prettierOptions = getPrettierOptionsFromESLintRules( + * eslintOptions, + * {}, + * {}, + * ); + * console.log(prettierOptions); // Output: { semi: false } + * + * @param eslintConfig - The ESLint config + * @param prettierOptions - The Prettier options to be applied. + * @param fallbackPrettierOptions - Fallback options for Prettier. + * @returns A Prettier options object derived from the ESLint options. + */ +function getPrettierOptionsFromESLintRules( + eslintConfig: ESLintConfig, + prettierOptions: PrettierOptions, + fallbackPrettierOptions: PrettierOptions, +) { + const { rules } = eslintConfig; + + const prettierPluginOptions = getRuleValue(rules!, 'prettier/prettier', []); + + if ( + ruleValueExists(prettierPluginOptions) && + typeof prettierPluginOptions === 'object' + ) { + prettierOptions = { ...prettierPluginOptions, ...prettierOptions }; + } + + return Object.keys(OPTION_GETTERS).reduce( + (options, key) => + configureOptions( + prettierOptions, + fallbackPrettierOptions, + key, + options, + rules, + ), + prettierOptions, + ); +} + +// If an ESLint rule that prettier can be configured with is enabled create a +// prettier configuration object that reflects the ESLint rule configuration. +function configureOptions( + prettierOptions: PrettierOptions, + fallbackPrettierOptions: PrettierOptions, + key: keyof PrettierOptions, + options: PrettierOptions, + rules?: Partial, +) { + const givenOption = prettierOptions[key]; + const optionIsGiven = givenOption !== undefined; + + if (optionIsGiven) { + options[key] = givenOption; + } else if (rules) { + const { ruleValue, ruleValueToPrettierOption } = OPTION_GETTERS[key]; + const eslintRuleValue = ruleValue(rules); + + const option = ruleValueToPrettierOption( + eslintRuleValue, + fallbackPrettierOptions, + rules, + ); + + if (option !== undefined) { + options[key] = option; + } + } + + return options; +} + +/** Converts ESLint rule values into Prettier options */ +function getPrintWidth(eslintValue: unknown, fallbacks: PrettierOptions) { + return makePrettierOption('printWidth', eslintValue, fallbacks); +} + +function getTabWidth(eslintValue: unknown, fallbacks: PrettierOptions) { + return makePrettierOption('tabWidth', eslintValue, fallbacks); +} + +function getSingleQuote(eslintValue: unknown, fallbacks: PrettierOptions) { + let prettierValue: unknown; + + switch (eslintValue) { + case 'single': { + prettierValue = true; + break; + } + case 'double': + case 'backtick': { + prettierValue = false; + break; + } + default: { + prettierValue = eslintValue; + } + } + + return makePrettierOption('singleQuote', prettierValue, fallbacks); +} + +function getTrailingComma(eslintValue: unknown, fallbacks: PrettierOptions) { + let prettierValue: StringLiteral; + + if (eslintValue === 'never') { + prettierValue = 'none'; + } else if ( + typeof eslintValue === 'string' && + eslintValue.startsWith('always') + ) { + prettierValue = 'es5'; + } else if (typeof eslintValue === 'object') { + prettierValue = getValFromTrailingCommaConfig( + eslintValue as Record<'arrays' | 'functions' | 'objects', string>, + ); + } else { + prettierValue = RULE_NOT_CONFIGURED; + } + + return makePrettierOption('trailingComma', prettierValue, fallbacks); +} + +/** + * Determines the correct Prettier option for `trailingComma` based on ESLint + * config. + * + * @param objectConfig - ESLint rule configuration for trailing commas. + * @returns - The corresponding Prettier trailingComma value. + */ +function getValFromTrailingCommaConfig( + objectConfig: Record<'arrays' | 'functions' | 'objects', string>, +) { + const { arrays = '', objects = '', functions = '' } = objectConfig; + const fns = isAlways(functions); + const es5 = [arrays, objects].some(isAlways); + + if (fns) { + return 'all'; + } + if (es5) { + return 'es5'; + } + return 'none'; +} + +function getBracketSpacing(eslintValue: unknown, fallbacks: PrettierOptions) { + let prettierValue: unknown; + + if (eslintValue === 'never') { + prettierValue = false; + } else if (eslintValue === 'always') { + prettierValue = true; + } else { + prettierValue = eslintValue; + } + + return makePrettierOption('bracketSpacing', prettierValue, fallbacks); +} + +function getSemi(eslintValue: unknown, fallbacks: PrettierOptions) { + let prettierValue: unknown; + + if (eslintValue === 'never') { + prettierValue = false; + } else if (eslintValue === 'always') { + prettierValue = true; + } else { + prettierValue = eslintValue; + } + + return makePrettierOption('semi', prettierValue, fallbacks); +} + +function getUseTabs(eslintValue: unknown, fallbacks: PrettierOptions) { + const prettierValue = eslintValue === 'tab' ? true : RULE_NOT_CONFIGURED; + + return makePrettierOption('useTabs', prettierValue, fallbacks); +} + +function getBracketSameLine(eslintValue: unknown, fallbacks: PrettierOptions) { + let prettierValue; + + if (eslintValue === 'after-props') { + prettierValue = true; + } else if ( + eslintValue === 'tag-aligned' || + eslintValue === 'line-aligned' || + eslintValue === 'props-aligned' + ) { + prettierValue = false; + } else { + prettierValue = eslintValue; + } + + return makePrettierOption('bracketSameLine', prettierValue, fallbacks); +} + +function getArrowParens(eslintValue: unknown, fallbacks: PrettierOptions) { + const prettierValue = eslintValue === 'as-needed' ? 'avoid' : eslintValue; + + return makePrettierOption('arrowParens', prettierValue, fallbacks); +} + +/** + * Extracts a nested rule value from an ESLint rule object. + * + * This function attempts to retrieve a specific value from an object-based + * ESLint rule configuration. If the requested value cannot be inferred, it logs + * a debug message and returns `undefined`. + * + * @example + * const eslintRuleConfig = { maxLen: { code: 80 } }; + * console.log( + * extractRuleValue('code', 'max-len', eslintRuleConfig.maxLen), + * ); // Output: 80 + * + * @param objPath - The path to the nested value in the rule configuration. + * @param name - The name of the ESLint rule. + * @param value - The ESLint rule configuration object. + * @returns The extracted value from the ESLint rule configuration or + * `RULE_NOT_CONFIGURED` if not found. + */ +function extractRuleValue( + objPath: Array | string | undefined, + name: string, + value: object, +): StringLiteral | undefined { + // XXX: Ignore code coverage for the following else case + // There are currently no eslint rules which we can infer prettier + // options from, that have an object option which we don't know how + // to infer from. + + // istanbul ignore else + if (objPath) { + logger.trace( + oneLine` + Getting the value from object configuration of ${name}. + delving into ${JSON.stringify(value)} with path "${objPath}" + `, + ); + + return delve(value, objPath, RULE_NOT_CONFIGURED) as + | StringLiteral + | undefined; + } + + // istanbul ignore next + logger.debug( + oneLine` + The ${name} rule is using an object configuration + of ${JSON.stringify(value)} but prettier-eslint is + not currently capable of getting the prettier value + based on an object configuration for ${name}. + Please file an issue (and make a pull request?) + `, + ); +} + +/** + * Extracts a rule value from an ESLint configuration. + * + * This function retrieves the value of a specified ESLint rule. If the rule is + * disabled (`0` or `'off'`), it returns `RULE_DISABLED`. If the rule is + * configured with an object, it extracts the value from the given path. + * Otherwise, it logs and returns the rule's direct value. + * + * @example + * const rules = { semi: ['error', 'always'], quotes: ['off'] }; + * console.log(getRuleValue(rules, 'semi', 'style')); // Output: 'always' + * console.log(getRuleValue(rules, 'quotes', 'style')); // Output: RULE_DISABLED + * + * @param rules - The ESLint rules configuration. + * @param name - The name of the ESLint rule to retrieve. + * @param objPath - The object path used to extract values when the rule is an + * object. + * @returns The extracted rule value, `RULE_DISABLED` if the rule is off, or + * `RULE_NOT_CONFIGURED` if unset. + */ +function getRuleValue( + rules: Partial, + name: string, + objPath?: Array | string, +): StringLiteral | undefined { + const ruleConfig = rules[name] as Linter.RuleEntry; + + if (Array.isArray(ruleConfig)) { + const [ruleSetting, value] = ruleConfig; + + // If `ruleSetting` is set to disable the ESLint rule don't use `value` as + // it might be a value provided by an overridden config package e.g. airbnb + // overridden by config-prettier. The airbnb values are provided even though + // config-prettier disables the rule. Instead use fallback or prettier + // default. + if (ruleSetting === 0 || ruleSetting === 'off') { + return RULE_DISABLED; + } + + if (value != null && typeof value === 'object') { + return extractRuleValue(objPath, name, value); + } + logger.trace( + oneLine` + The ${name} rule is configured with a + non-object value of ${value}. Using that value. + `, + ); + return value as StringLiteral; + } + + return RULE_NOT_CONFIGURED; +} + +/** + * Checks if a given string starts with the word "always". + * + * This function determines whether the provided value begins with the substring + * `"always"`. + * + * @example + * console.log(isAlways('alwaysStrict')); // Output: true + * console.log(isAlways('neverStrict')); // Output: false + * + * @param val - The string to check. + * @returns `true` if the string starts with `"always"`, otherwise `false`. + */ +function isAlways(val: string) { + return val.startsWith('always'); +} + +/** + * Determines the appropriate Prettier option value based on rule configuration + * and fallbacks. + * + * This function first checks if a specific Prettier rule is explicitly + * configured. If not, it attempts to use a provided fallback value. If no + * fallback exists, Prettier is allowed to use its default behavior. + * + * @example + * const fallbacks = { semi: false, singleQuote: true }; + * const semiOption = makePrettierOption('semi', undefined, fallbacks); + * console.log(semiOption); // Output: false (fallback value) + * + * @param prettierRuleName - The name of the Prettier rule. + * @param prettierRuleValue - The configured value for the Prettier rule. + * @param fallbacks - An object containing fallback values for Prettier rules. + * @returns The determined Prettier rule value or `undefined` if not configured. + */ +function makePrettierOption( + prettierRuleName: keyof PrettierOptions, + prettierRuleValue: unknown, + fallbacks: PrettierOptions, +) { + if (ruleValueExists(prettierRuleValue)) { + return prettierRuleValue; + } + + const fallback = fallbacks[prettierRuleName]; + if (fallback !== undefined) { + logger.debug( + oneLine` + The ${prettierRuleName} rule is not configured, + using provided fallback of ${fallback} + `, + ); + return fallback; + } + + logger.debug( + oneLine` + The ${prettierRuleName} rule is not configured, + let prettier decide + `, + ); +} + +export function requireModule(modulePath: string, name: string) { + try { + logger.trace(`requiring "${name}" module at "${modulePath}"`); + return require(modulePath) as T; // eslint-disable-line @typescript-eslint/no-require-imports, sonarjs/todo-tag -- TODO: Use `import()` instead + } catch (error) { + logger.error( + oneLine` + There was trouble getting "${name}". + Is "${modulePath}" a correct path to the "${name}" module? + `, + ); + throw error; + } +} + +export function getESLint(eslintPath: string, eslintOptions: ESLintOptions) { + const { ESLint } = requireModule( + eslintPath, + 'eslint', + ); + try { + return new ESLint(eslintOptions); + } catch (error) { + logger.error('There was trouble creating the ESLint CLIEngine.'); + throw error; + } +} + +export type StringLiteral = T | (string & { _?: never }); diff --git a/test/fixtures/paths/foo.js b/test/fixtures/paths/foo.js new file mode 100644 index 00000000..e69de29b diff --git a/tests/fixtures/paths/node_modules/eslint/index.js b/test/fixtures/paths/node_modules/eslint/index.js similarity index 79% rename from tests/fixtures/paths/node_modules/eslint/index.js rename to test/fixtures/paths/node_modules/eslint/index.js index 592f4f48..1b5d2510 100644 --- a/tests/fixtures/paths/node_modules/eslint/index.js +++ b/test/fixtures/paths/node_modules/eslint/index.js @@ -1,4 +1,4 @@ -const eslintMock = require('../../../../../src/__mocks__/eslint') +const eslintMock = require('../../../../../__mocks__/eslint') module.exports = Object.assign({}, eslintMock, { ESLint: MockMockESLint }) diff --git a/tests/fixtures/paths/node_modules/prettier/index.js b/test/fixtures/paths/node_modules/prettier/index.js similarity index 77% rename from tests/fixtures/paths/node_modules/prettier/index.js rename to test/fixtures/paths/node_modules/prettier/index.js index 080f81a8..4a814655 100644 --- a/tests/fixtures/paths/node_modules/prettier/index.js +++ b/test/fixtures/paths/node_modules/prettier/index.js @@ -1,4 +1,4 @@ -const mockPrettier = require('../../../../../src/__mocks__/prettier') +const mockPrettier = require('../../../../../__mocks__/prettier') module.exports = Object.assign({}, mockPrettier, {format: mockMockFormat}) diff --git a/tests/fixtures/paths/package.json b/test/fixtures/paths/package.json similarity index 100% rename from tests/fixtures/paths/package.json rename to test/fixtures/paths/package.json diff --git a/src/__tests__/index.js b/test/index.spec.ts similarity index 64% rename from src/__tests__/index.js rename to test/index.spec.ts index 36b16124..ee23a0bd 100644 --- a/src/__tests__/index.js +++ b/test/index.spec.ts @@ -1,27 +1,52 @@ -/* eslint no-console:0, import/default:0 */ -import path from 'path'; +/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/unbound-method, sonarjs/fixme-tag */ + +// eslint-disable-next-line unicorn/prefer-node-protocol -- mocked import fsMock from 'fs'; -import stripIndent from 'strip-indent'; -import eslintMock from 'eslint'; -import prettierMock from 'prettier'; +import path from 'node:path'; + +import eslintMock, { type ESLint, type Linter } from 'eslint'; import loglevelMock from 'loglevel-colored-level-prefix'; -import { format, analyze } from '../'; +import prettierMock from 'prettier'; +import stripIndent from 'strip-indent'; + +import { + type ESLintConfig, + format, + analyze, + PrettierOptions, +} from 'prettier-eslint'; jest.mock('fs'); +// NOTE(cedric): this is a workaround to also mock `node:fs` +jest.mock('node:fs', () => fsMock); + const { - mock: { logger } + mock: { logger }, } = loglevelMock; // loglevelMock.mock.logThings = ['debug'] -const tests = [ +const filePath = path.resolve('./mock/default-config.js'); + +const tests: Array<{ + title: string; + input: { + text: string; + eslintConfig?: ESLintConfig; + filePath?: string; + prettierLast?: boolean; + prettierOptions?: PrettierOptions; + fallbackPrettierOptions?: PrettierOptions; + }; + output: string; +}> = [ { title: 'sanity test', input: { text: defaultInputText(), - eslintConfig: getESLintConfigWithDefaultRules() + eslintConfig: getESLintConfigWithDefaultRules(), }, - output: defaultOutput() + output: defaultOutput(), }, { title: 'README example', @@ -29,11 +54,11 @@ const tests = [ text: 'const {foo} = bar', eslintConfig: { parserOptions: { ecmaVersion: 7 }, - rules: { semi: ['error', 'never'] } + rules: { semi: ['error', 'never'] }, }, - prettierOptions: { bracketSpacing: true } + prettierOptions: { bracketSpacing: true }, }, - output: 'const { foo } = bar' + output: 'const { foo } = bar', }, { // this one's actually hard to test now. This test doesn't @@ -45,18 +70,21 @@ const tests = [ title: 'with prettierLast: true', input: { text: defaultInputText(), - filePath: path.resolve('./mock/default-config.js'), - prettierLast: true + filePath, + prettierLast: true, + prettierOptions: { + semi: true, + }, }, - output: prettierLastOutput() + output: prettierLastOutput(), }, { title: 'with a filePath and no config', input: { text: defaultInputText(), - filePath: path.resolve('./mock/default-config.js') + filePath, }, - output: defaultOutput() + output: defaultOutput(), }, { title: 'with a default config and overrides', @@ -65,41 +93,41 @@ const tests = [ eslintConfig: { // Won't be overridden parserOptions: { - ecmaVersion: 7 + ecmaVersion: 7, }, rules: { // Will be overridden semi: ['error', 'always'], // Won't be overridden - 'object-curly-spacing': ['error', 'never'] - } + 'object-curly-spacing': ['error', 'never'], + }, }, - filePath: path.resolve('./mock/default-config.js') + filePath, }, - output: 'const {foo} = bar' + output: 'const {foo} = bar', }, { title: 'with an empty config and fallbacks', input: { text: 'const { foo } = bar;', eslintConfig: {}, - filePath: path.resolve('./mock/default-config.js'), - fallbackPrettierOptions: { bracketSpacing: false } + filePath, + fallbackPrettierOptions: { bracketSpacing: false }, }, - output: 'const {foo} = bar' + output: 'const {foo} = bar', }, { title: 'without a filePath and no config', input: { text: defaultInputText() }, - output: noopOutput() + output: noopOutput(), }, { title: 'inferring bracketSpacing', input: { text: 'var foo = {bar: baz};', - eslintConfig: { rules: { 'object-curly-spacing': ['error', 'always'] } } + eslintConfig: { rules: { 'object-curly-spacing': ['error', 'always'] } }, }, - output: 'var foo = { bar: baz };' + output: 'var foo = { bar: baz };', }, { title: 'inferring bracketSpacing with eslint object-curly-spacing options', @@ -110,12 +138,12 @@ const tests = [ 'object-curly-spacing': [ 'error', 'always', - { objectsInObjects: false, arraysInObjects: false } - ] - } - } + { objectsInObjects: false, arraysInObjects: false }, + ], + }, + }, }, - output: 'var foo = { bar: { baz: qux }};\nvar fop = { bar: [1, 2, 3]};' + output: 'var foo = { bar: { baz: qux }};\nvar fop = { bar: [1, 2, 3]};', }, { title: 'with a filePath-aware config', @@ -123,11 +151,11 @@ const tests = [ text: 'var x = 0;', eslintConfig: { rules: { 'no-var': 'error' }, - ignorePattern: 'should-be-ignored' + ignorePattern: 'should-be-ignored', }, - filePath: path.resolve('should-be-ignored.js') + filePath: path.resolve('should-be-ignored.js'), }, - output: 'var x = 0;' + output: 'var x = 0;', }, // if you have a bug report or something, // go ahead and add a test case here @@ -135,100 +163,100 @@ const tests = [ title: 'with code that needs no fixing', input: { text: 'var [foo, { bar }] = window.APP;', - eslintConfig: { rules: {} } + eslintConfig: { rules: {} }, }, - output: 'var [foo, { bar }] = window.APP;' + output: 'var [foo, { bar }] = window.APP;', }, { title: 'accepts config globals as array', input: { text: defaultInputText(), - eslintConfig: { globals: ['window:writable'] } + eslintConfig: { globals: ['window:writable'] }, }, - output: noopOutput() + output: noopOutput(), }, { title: 'CSS example', input: { text: '.stop{color:red};', - filePath: path.resolve('./test.css') + filePath: path.resolve('./test.css'), }, - output: '.stop {\n color: red;\n}' + output: '.stop {\n color: red;\n}', }, { title: 'LESS example', input: { text: '.stop{color:red};', - filePath: path.resolve('./test.less') + filePath: path.resolve('./test.less'), }, - output: '.stop {\n color: red;\n}' + output: '.stop {\n color: red;\n}', }, { title: 'SCSS example', input: { text: '.stop{color:red};', - filePath: path.resolve('./test.scss') + filePath: path.resolve('./test.scss'), }, - output: '.stop {\n color: red;\n}' + output: '.stop {\n color: red;\n}', }, { title: 'TypeScript example', input: { text: 'function Foo (this: void) { return this; }', - filePath: path.resolve('./test.ts') + filePath: path.resolve('./test.ts'), }, - output: 'function Foo(this: void) {\n return this;\n}' + output: 'function Foo(this: void) {\n return this;\n}', }, { title: 'Vue.js example', input: { eslintConfig: { rules: { - 'space-before-function-paren': [2, 'always'] - } + 'space-before-function-paren': [2, 'always'], + }, }, text: '\n\n', - filePath: path.resolve('./test.vue') + filePath: path.resolve('./test.vue'), }, output: - '\n\n' + '\n\n', }, { title: 'Svelte example', input: { prettierOptions: { plugins: ['prettier-plugin-svelte'], - overrides: [{ files: '*.svelte', options: { parser: 'svelte' } }] + overrides: [{ files: '*.svelte', options: { parser: 'svelte' } }], }, text: '\n
test
\n', - filePath: path.resolve('./test.svelte') + filePath: path.resolve('./test.svelte'), }, output: - '\n\n
test
\n\n' + '\n\n
test
\n\n', }, { title: 'GraphQL example', input: { text: 'type Query{test: Test}', - filePath: path.resolve('./test.gql') + filePath: path.resolve('./test.gql'), }, - output: 'type Query {\n test: Test\n}' + output: 'type Query {\n test: Test\n}', }, { title: 'JSON example', input: { text: '{ "foo": "bar"}', - filePath: path.resolve('./test.json') + filePath: path.resolve('./test.json'), }, - output: '{ "foo": "bar" }' + output: '{ "foo": "bar" }', }, { title: 'Markdown example', input: { text: '# Foo\n _bar_', - filePath: path.resolve('./test.md') + filePath: path.resolve('./test.md'), }, - output: '# Foo\n\n_bar_' + output: '# Foo\n\n_bar_', }, { title: 'Test eslintConfig.globals as an object', @@ -236,30 +264,32 @@ const tests = [ text: 'var foo = { "bar": "baz"}', eslintConfig: { globals: { - someGlobal: true - } - } + someGlobal: true, + }, + }, }, - output: 'var foo = { bar: "baz" };' - } + output: 'var foo = { bar: "baz" };', + }, ]; beforeEach(() => { + // @ts-expect-error -- FIXME: Fix this type error eslintMock.mock.lintText.mockClear(); + // @ts-expect-error -- FIXME: Fix this type error eslintMock.mock.calculateConfigForFile.mockClear(); + // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.mockClear(); + // @ts-expect-error -- FIXME: Fix this type error prettierMock.resolveConfig.mockClear(); + // @ts-expect-error -- FIXME: Fix this type error fsMock.readFileSync.mockClear(); loglevelMock.mock.clearAll(); - global.__PRETTIER_ESLINT_TEST_STATE__ = {}; + globalThis.__PRETTIER_ESLINT_TEST_STATE__ = {}; }); -tests.forEach(({ title, modifier, input, output }) => { - let fn = test; - if (modifier) { - fn = test[modifier]; - } - fn(title, async () => { +for (const { title, input, output } of tests) { + // eslint-disable-next-line jest/valid-title -- isn't this a valid title? + test(title, async () => { input.text = stripIndent(input.text).trim(); const expected = stripIndent(output).trim(); const actual = await format(input); @@ -267,15 +297,15 @@ tests.forEach(({ title, modifier, input, output }) => { // prettier adds a newline to the end of the input expect(actual).toBe(`${expected}\n`); }); -}); +} test('analyze returns the messages', async () => { const text = 'var x = 0;'; const result = await analyze({ text, eslintConfig: { - rules: { 'no-var': 'error' } - } + rules: { 'no-var': 'error' }, + }, }); expect(result.output).toBe(`${text}\n`); expect(result.messages).toHaveLength(1); @@ -286,12 +316,16 @@ test('analyze returns the messages', async () => { }); test('failure to fix with eslint throws and logs an error', async () => { - const { lintText } = eslintMock.mock; + const { lintText } = + // @ts-expect-error -- FIXME: Fix this type error + eslintMock.mock as ESLint; const error = new Error('Something happened'); + // @ts-expect-error -- FIXME: Fix this type error lintText.throwError = error; - await expect(() => format({ text: '' })).rejects.toThrowError(error); + await expect(() => format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); + // @ts-expect-error -- FIXME: Fix this type error lintText.throwError = null; }); @@ -304,33 +338,38 @@ test('logLevel is used to configure the logger', async () => { test('when prettier throws, log to logger.error and throw the error', async () => { const error = new Error('something bad happened'); + // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.throwError = error; - await expect(() => format({ text: '' })).rejects.toThrowError(error); + await expect(() => format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); + // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.throwError = null; }); test('can accept a path to an eslint module and uses that instead.', async () => { const eslintPath = path.join(__dirname, '../__mocks__/eslint'); await format({ text: '', eslintPath }); - expect(eslintMock.mock.lintText).toHaveBeenCalledTimes(1); + expect( + // @ts-expect-error -- FIXME: Fix this type error + eslintMock.mock.lintText, + ).toHaveBeenCalledTimes(1); }); test('fails with an error if the eslint module cannot be resolved.', async () => { const eslintPath = path.join( __dirname, - '../__mocks__/non-existent-eslint-module' + '../__mocks__/non-existent-eslint-module', ); - await expect(() => format({ text: '', eslintPath })).rejects.toThrowError( - /non-existent-eslint-module/ + await expect(() => format({ text: '', eslintPath })).rejects.toThrow( + /non-existent-eslint-module/, ); expect(logger.error).toHaveBeenCalledTimes(1); const errorString = expect.stringMatching( - /trouble getting.*?eslint.*non-existent-eslint-module/ - ); + /trouble getting.*?eslint.*non-existent-eslint-module/, + ) as string; expect(logger.error).toHaveBeenCalledWith(errorString); }); @@ -345,42 +384,42 @@ test('can accept a path to a prettier module and uses that instead.', async () = test('fails with an error if the prettier module cannot be resolved.', async () => { const prettierPath = path.join( __dirname, - '../__mocks__/non-existent-prettier-module' + '../__mocks__/non-existent-prettier-module', ); - await expect(() => format({ text: '', prettierPath })).rejects.toThrowError( - /non-existent-prettier-module/ + await expect(() => format({ text: '', prettierPath })).rejects.toThrow( + /non-existent-prettier-module/, ); expect(logger.error).toHaveBeenCalledTimes(1); const errorString = expect.stringMatching( - /trouble getting.*?eslint.*non-existent-prettier-module/ - ); + /trouble getting.*?eslint.*non-existent-prettier-module/, + ) as string; expect(logger.error).toHaveBeenCalledWith(errorString); }); test('resolves to the eslint module relative to the given filePath', async () => { - const filePath = require.resolve('../../tests/fixtures/paths/foo.js'); + const filePath = require.resolve('./fixtures/paths/foo.js'); await format({ text: '', filePath }); const stateObj = { eslintPath: require.resolve( - '../../tests/fixtures/paths/node_modules/eslint/index.js' + './fixtures/paths/node_modules/eslint/index.js', ), prettierPath: require.resolve( - '../../tests/fixtures/paths/node_modules/prettier/index.js' - ) + './fixtures/paths/node_modules/prettier/index.js', + ), }; - expect(global.__PRETTIER_ESLINT_TEST_STATE__).toMatchObject(stateObj); + expect(globalThis.__PRETTIER_ESLINT_TEST_STATE__).toMatchObject(stateObj); }); test('resolves to the local eslint module', async () => { const filePath = '/blah-blah/default-config.js'; await format({ text: '', filePath }); - expect(global.__PRETTIER_ESLINT_TEST_STATE__).toMatchObject({ + expect(globalThis.__PRETTIER_ESLINT_TEST_STATE__).toMatchObject({ // without Jest's mocking, these would actually resolve to the // project modules :) The fact that jest's mocking is being // applied is good enough for this test. eslintPath: require.resolve('../__mocks__/eslint'), - prettierPath: require.resolve('../__mocks__/prettier') + prettierPath: require.resolve('../__mocks__/prettier'), }); }); @@ -398,53 +437,58 @@ test('logs error if it cannot read the file from the filePath', async () => { fsMock.readFileSync = jest.fn(() => { throw new Error('some error'); }); - await expect(() => - format({ filePath: '/some-path.js' }) - ).rejects.toThrowError(/some error/); + await expect(() => format({ filePath: '/some-path.js' })).rejects.toThrow( + /some error/, + ); expect(logger.error).toHaveBeenCalledTimes(1); fsMock.readFileSync = originalMock; }); test('calls prettier.resolveConfig with the file path', async () => { - const filePath = require.resolve('../../tests/fixtures/paths/foo.js'); + const filePath = require.resolve('./fixtures/paths/foo.js'); await format({ filePath, text: defaultInputText(), - eslintConfig: getESLintConfigWithDefaultRules() + eslintConfig: getESLintConfigWithDefaultRules(), }); expect(prettierMock.resolveConfig).toHaveBeenCalledTimes(1); expect(prettierMock.resolveConfig).toHaveBeenCalledWith(filePath); }); test('does not raise an error if prettier.resolveConfig is not defined', async () => { - const filePath = require.resolve('../../tests/fixtures/paths/foo.js'); + const filePath = require.resolve('./fixtures/paths/foo.js'); const originalPrettierMockResolveConfig = prettierMock.resolveConfig; - prettierMock.resolveConfig = undefined; + // @ts-expect-error -- mocking + delete prettierMock.resolveConfig; async function callingFormat() { return format({ filePath, text: defaultInputText(), - eslintConfig: getESLintConfigWithDefaultRules() + eslintConfig: getESLintConfigWithDefaultRules(), }); } - await expect(callingFormat).not.toThrowError(); + await expect(callingFormat()).resolves.not.toThrow(); prettierMock.resolveConfig = originalPrettierMockResolveConfig; }); test('logs if there is a problem making the CLIEngine', async () => { const error = new Error('fake error'); + // @ts-expect-error -- FIXME: Fix this type error eslintMock.ESLint.mockImplementation(() => { throw error; }); - await expect(() => format({ text: '' })).rejects.toThrowError(error); + await expect(() => format({ text: '' })).rejects.toThrow(error); + // @ts-expect-error -- FIXME: Fix this type error eslintMock.ESLint.mockReset(); expect(logger.error).toHaveBeenCalledTimes(1); }); -function getESLintConfigWithDefaultRules(overrides) { +function getESLintConfigWithDefaultRules( + overrides?: Linter.RulesRecord, +): ESLintConfig { return { parserOptions: { ecmaVersion: 7 }, rules: { @@ -459,12 +503,12 @@ function getESLintConfigWithDefaultRules(overrides) { objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', - functions: 'always-multiline' - } + functions: 'always-multiline', + }, ], 'arrow-parens': [2, 'as-needed'], - ...overrides - } + ...overrides, + }, }; } @@ -498,7 +542,7 @@ function prettierLastOutput() { return ` function foo() { // stuff - console.log('Hello world!', and, stuff) + console.log('Hello world!', and, stuff); } `; } diff --git a/src/__tests__/utils.js b/test/utils.spec.ts similarity index 62% rename from src/__tests__/utils.js rename to test/utils.spec.ts index 2189157d..616b640c 100644 --- a/src/__tests__/utils.js +++ b/test/utils.spec.ts @@ -1,7 +1,12 @@ -import path from 'path'; -import { getOptionsForFormatting } from '../utils'; +import { Linter } from 'eslint'; -const getPrettierOptionsFromESLintRulesTests = [ +import { getOptionsForFormatting, PrettierOptions } from 'prettier-eslint'; + +const getPrettierOptionsFromESLintRulesTests: Array<{ + rules: Linter.RulesRecord; + options: PrettierOptions; + fallbackPrettierOptions?: PrettierOptions; +}> = [ { rules: { 'max-len': [2, 120, 2], @@ -14,35 +19,35 @@ const getPrettierOptionsFromESLintRulesTests = [ objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', - functions: 'always-multiline' - } + functions: 'always-multiline', + }, ], - 'object-curly-spacing': [2, 'never'] + 'object-curly-spacing': [2, 'never'], }, options: { printWidth: 120, tabWidth: 2, singleQuote: true, trailingComma: 'all', - bracketSpacing: false - } + bracketSpacing: false, + }, }, { rules: { 'object-curly-spacing': [2, 'always'] }, - options: { bracketSpacing: true } + options: { bracketSpacing: true }, }, { rules: { 'object-curly-spacing': [2, 'never'] }, - options: { bracketSpacing: false } + options: { bracketSpacing: false }, }, { rules: { 'max-len': 2 }, options: {} }, { rules: { 'comma-dangle': [2, 'never'] }, - options: { trailingComma: 'none' } + options: { trailingComma: 'none' }, }, { rules: { 'comma-dangle': [2, 'always'] }, - options: { trailingComma: 'es5' } + options: { trailingComma: 'es5' }, }, { rules: { @@ -53,11 +58,11 @@ const getPrettierOptionsFromESLintRulesTests = [ objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', - functions: 'always-multiline' - } - ] + functions: 'always-multiline', + }, + ], }, - options: { trailingComma: 'all' } + options: { trailingComma: 'all' }, }, { rules: { @@ -68,11 +73,11 @@ const getPrettierOptionsFromESLintRulesTests = [ objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', - functions: 'never' - } - ] + functions: 'never', + }, + ], }, - options: { trailingComma: 'es5' } + options: { trailingComma: 'es5' }, }, { rules: { @@ -83,15 +88,15 @@ const getPrettierOptionsFromESLintRulesTests = [ objects: 'never', imports: 'never', exports: 'never', - functions: 'never' - } - ] + functions: 'never', + }, + ], }, - options: { trailingComma: 'none' } + options: { trailingComma: 'none' }, }, { rules: { 'max-len': ['error', { code: 120 }] }, - options: { printWidth: 120 } + options: { printWidth: 120 }, }, { rules: { quotes: [2, 'double'] }, options: { singleQuote: false } }, { rules: { quotes: [2, 'backtick'] }, options: { singleQuote: false } }, @@ -101,60 +106,60 @@ const getPrettierOptionsFromESLintRulesTests = [ 2, { imports: 'never', - exports: 'never' - } - ] + exports: 'never', + }, + ], }, - options: { trailingComma: 'none' } + options: { trailingComma: 'none' }, }, { rules: { 'comma-dangle': [2, 'always-multiline'] }, - options: { trailingComma: 'es5' } + options: { trailingComma: 'es5' }, }, { rules: {}, options: { bracketSameLine: true }, - fallbackPrettierOptions: { bracketSameLine: true } + fallbackPrettierOptions: { bracketSameLine: true }, }, { rules: { 'react/jsx-closing-bracket-location': [2, 'after-props'] }, - options: { bracketSameLine: true } + options: { bracketSameLine: true }, }, { rules: { 'react/jsx-closing-bracket-location': [2, 'tag-aligned'] }, - options: { bracketSameLine: false } + options: { bracketSameLine: false }, }, { rules: { 'react/jsx-closing-bracket-location': [ 2, { - nonEmpty: 'after-props' - } - ] + nonEmpty: 'after-props', + }, + ], }, - options: { bracketSameLine: true } + options: { bracketSameLine: true }, }, { rules: { - 'arrow-parens': [2, 'always'] + 'arrow-parens': [2, 'always'], }, - options: { arrowParens: 'always' } + options: { arrowParens: 'always' }, }, { rules: { - 'arrow-parens': [2, 'as-needed'] + 'arrow-parens': [2, 'as-needed'], }, - options: { arrowParens: 'avoid' } + options: { arrowParens: 'avoid' }, }, { rules: { 'prettier/prettier': [2, { singleQuote: false }], - quotes: [2, 'single'] + quotes: [2, 'single'], }, options: { - singleQuote: false - } + singleQuote: false, + }, }, // If an ESLint rule is disabled fall back to prettier defaults. @@ -175,36 +180,33 @@ const getPrettierOptionsFromESLintRulesTests = [ { rules: { indent: ['error', 'tab'] }, options: { useTabs: true } }, { rules: { indent: [2, 'tab'] }, options: { useTabs: true } }, { rules: { 'react/jsx-closing-bracket-location': [0] }, options: {} }, - { rules: { 'arrow-parens': [0] }, options: {} } + { rules: { 'arrow-parens': [0] }, options: {} }, ]; -const eslintPath = path.join(__dirname, '../__mocks__/eslint'); - beforeEach(() => { - global.__PRETTIER_ESLINT_TEST_STATE__ = {}; + globalThis.__PRETTIER_ESLINT_TEST_STATE__ = {}; }); -getPrettierOptionsFromESLintRulesTests.forEach( - ({ rules, options, prettierOptions, fallbackPrettierOptions }, index) => { - test(`getPrettierOptionsFromESLintRulesTests ${index}`, () => { - const { prettier } = getOptionsForFormatting( - { rules }, - prettierOptions, - fallbackPrettierOptions - ); - expect(prettier).toMatchObject(options); - }); - } -); +for (const [ + index, + { rules, options, fallbackPrettierOptions }, +] of getPrettierOptionsFromESLintRulesTests.entries()) { + test(`getPrettierOptionsFromESLintRulesTests ${index}`, () => { + const { prettier } = getOptionsForFormatting( + { rules }, + options, + fallbackPrettierOptions, + ); + expect(prettier).toMatchObject(options); + }); +} test('if prettierOptions are provided, those are preferred', () => { const { prettier } = getOptionsForFormatting( { rules: { quotes: [2, 'single'] } }, { - singleQuote: false + singleQuote: false, }, - undefined, - eslintPath ); expect(prettier).toMatchObject({ singleQuote: false }); }); @@ -212,93 +214,66 @@ test('if prettierOptions are provided, those are preferred', () => { // eslint-disable-next-line max-len test('if fallbacks are provided, those are preferred over disabled eslint rules', () => { const { prettier } = getOptionsForFormatting( - { - rules: { - quotes: [0] - } - }, + { rules: { quotes: [0] } }, {}, - { - singleQuote: true - } + { singleQuote: true }, ); expect(prettier).toMatchObject({ singleQuote: true }); }); test('if fallbacks are provided, those are used if not found in eslint', () => { const { prettier } = getOptionsForFormatting({ rules: {} }, undefined, { - singleQuote: false + singleQuote: false, }); expect(prettier).toMatchObject({ singleQuote: false }); }); test('eslint max-len.tabWidth value should be used for tabWidth when tabs are used', () => { - const { prettier } = getOptionsForFormatting( - { - rules: { - indent: ['error', 'tab'], - 'max-len': [ - 2, - { - tabWidth: 4 - } - ] - } + const { prettier } = getOptionsForFormatting({ + rules: { + indent: ['error', 'tab'], + 'max-len': [2, { tabWidth: 4 }], }, - undefined, - undefined - ); + }); expect(prettier).toMatchObject({ tabWidth: 4, - useTabs: true + useTabs: true, }); }); test('eslint config has only necessary properties', () => { - const { eslint } = getOptionsForFormatting( - { - globals: ['window:false'], - rules: { 'no-with': 'error', quotes: [2, 'single'] } - }, - undefined, - undefined - ); + const { eslint } = getOptionsForFormatting({ + globals: ['window:false'], + rules: { 'no-with': 'error', quotes: [2, 'single'] }, + }); expect(eslint).toMatchObject({ fix: true, useEslintrc: false, - rules: { quotes: [2, 'single'] } + rules: { quotes: [2, 'single'] }, }); }); test('useEslintrc is set to the given config value', () => { - const { eslint } = getOptionsForFormatting( - { useEslintrc: true, rules: {} }, - undefined, - undefined - ); + const { eslint } = getOptionsForFormatting({ useEslintrc: true, rules: {} }); expect(eslint).toMatchObject({ fix: true, useEslintrc: true }); }); test('Turn off unfixable rules', () => { - const { eslint } = getOptionsForFormatting( - { - rules: { - 'global-require': 'error', - quotes: ['error', 'double'] - } + const { eslint } = getOptionsForFormatting({ + rules: { + 'global-require': 'error', + quotes: ['error', 'double'], }, - undefined, - undefined - ); + }); expect(eslint).toMatchObject({ rules: { 'global-require': ['off'], - quotes: ['error', 'double'] + quotes: ['error', 'double'], }, fix: true, globals: {}, - useEslintrc: false + useEslintrc: false, }); }); diff --git a/tests/fixtures/paths/foo.js b/tests/fixtures/paths/foo.js deleted file mode 100644 index 8b137891..00000000 --- a/tests/fixtures/paths/foo.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tsconfig.json b/tsconfig.json index 2cd4ddfc..fa750dce 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,9 @@ { + "extends": "@1stg/tsconfig/node", "compilerOptions": { - "target": "ES2020", - "module": "CommonJS", - "lib": ["ES2020", "DOM"], - "moduleResolution": "Node", - "rootDir": ".", - "strict": true, "noEmit": true, - "esModuleInterop": true, - "baseUrl": "./" - }, - "exclude": ["node_modules"] + "paths": { + "prettier-eslint": ["./src/index.ts"] + } + } } diff --git a/types/index.d.ts b/types/index.d.ts deleted file mode 100644 index 20da9bd8..00000000 --- a/types/index.d.ts +++ /dev/null @@ -1,95 +0,0 @@ -// Type definitions for prettier-eslint 12.0 -// Project: https://github.com/prettier/prettier-eslint - -import * as eslint from 'eslint'; -import * as prettier from 'prettier'; - -declare namespace format { - /** - * Logging level for the traceback of the synchronous formatting process. - */ - type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent'; - - /** - * Options to format text with Prettier and ESLint. - */ - interface Options { - /** - * The config to use for formatting with ESLint. - */ - eslintConfig?: eslint.Linter.Config; - /** - * The path to the eslint module to use. - * Will default to require.resolve('eslint') - */ - eslintPath?: string; - /** - * The options to pass for formatting with `prettier` if the given - * option is not inferrable from the `eslintConfig`. - */ - fallbackPrettierOptions?: prettier.Options; - /** - * The path of the file being formatted can be used in lieu of - * `eslintConfig` (eslint will be used to find the relevant - * config for the file). Will also be used to load the `text` if - * `text` is not provided. - */ - filePath?: string; - /** - * The level for the logs (`error`, `warn`, `info`, `debug`, `trace`). - */ - logLevel?: LogLevel; - /** - * The options to pass for formatting with `prettier`. If not provided, - * prettier-eslint will attempt to create the options based on the - * `eslintConfig` value. - */ - prettierOptions?: prettier.Options; - /** - * The path to the `prettier` module. - * Will default to require.resovlve('prettier') - */ - prettierPath?: string; - /** - * Run Prettier last. - */ - prettierLast?: boolean; - /** - * The text (JavaScript code) to format. - */ - text: string; - } -} - -/** - * Formats the text with Prettier and then ESLint while obeying the user's - * configuration. - * - * @param options Options to format text with Prettier and Eslint. - * @param options.eslintConfig The config to use for formatting - * with ESLint. - * @param options.eslintPath The path to the eslint module to use. - * Will default to require.resolve('eslint') - * @param options.fallbackPrettierOptions The options to pass for - * formatting with `prettier` if the given option is not inferrable from the - * eslintConfig. - * @param options.filePath The path of the file being formatted - * can be used in lieu of `eslintConfig` (eslint will be used to find the - * relevant config for the file). Will also be used to load the `text` if - * `text` is not provided. - * @param options.prettierOptions The options to pass for - * formatting with `prettier`. If not provided, prettier-eslint will attempt - * to create the options based on the `eslintConfig` value. - * @param options.prettierLast Run Prettier last. - * @param options.prettierPath The path to the prettier module. - * Will default to require.resovlve('prettier') - * @param options.logLevel The level for the logs (`error`, `warn`, - * `info`, `debug`, `trace`). - * @param options.text The text (JavaScript code) to format. - * @return Auto-formatted text that is mostly compliant with the - * supplied configuration. The auto-formatting is limited to the issues that - * Prettier and ESLint can automatically fix. - */ -declare function format(options: format.Options): Promise; - -export = format; diff --git a/yarn.lock b/yarn.lock index 7a539cc4..d1160e33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,108 @@ __metadata: version: 8 cacheKey: 10c0 +"@1stg/config@npm:^1.0.5": + version: 1.0.5 + resolution: "@1stg/config@npm:1.0.5" + checksum: 10c0/f7e4d638f45ea458fc80763ad26402f4606fd2cf37edb282777ab804b1c8abea866185e8287328754675261dc0bcd741d55a88338844bbf79ddc476dbe9b9503 + languageName: node + linkType: hard + +"@1stg/eslint-config@npm:^9.0.4": + version: 9.0.4 + resolution: "@1stg/eslint-config@npm:9.0.4" + dependencies: + "@1stg/config": "npm:^1.0.5" + "@eslint-community/eslint-plugin-eslint-comments": "npm:^4.5.0" + "@eslint/js": "npm:^9.24.0" + "@pkgr/utils": "npm:^3.1.1" + "@typescript-eslint/eslint-plugin": "npm:^8.29.1" + "@typescript-eslint/parser": "npm:^8.29.1" + eslint-config-prettier: "npm:^10.1.2" + eslint-import-resolver-typescript: "npm:^4.3.2" + eslint-plugin-css: "npm:^0.11.0" + eslint-plugin-import-x: "npm:^4.10.3" + eslint-plugin-jsdoc: "npm:^50.6.9" + eslint-plugin-jsonc: "npm:^2.20.0" + eslint-plugin-markup: "npm:^1.0.0" + eslint-plugin-mdx: "npm:^3.4.0" + eslint-plugin-n: "npm:^17.17.0" + eslint-plugin-prettier: "npm:^5.2.6" + eslint-plugin-promise: "npm:^7.2.1" + eslint-plugin-regexp: "npm:^2.7.0" + eslint-plugin-simple-import-sort: "npm:^12.1.1" + eslint-plugin-sonarjs: "npm:^3.0.2" + eslint-plugin-toml: "npm:^0.12.0" + eslint-plugin-unicorn: "npm:^58.0.0" + eslint-plugin-yml: "npm:^1.17.0" + globals: "npm:^16.0.0" + typescript-eslint: "npm:^8.29.1" + peerDependencies: + "@babel/eslint-parser": ^7.0.0 + "@babel/eslint-plugin": ^7.0.0 + "@eslint-react/eslint-plugin": ^1.0.0 + "@vitest/eslint-plugin": ^1.0.0 + angular-eslint: ^19.0.0 + angular-eslint-template-parser: ^0.1.0 + eslint: ">=8.0.0" + eslint-plugin-jest: ^28.0.0 + eslint-plugin-react-hooks: ^5.0.0 + eslint-plugin-vue: ^10.0.0 + peerDependenciesMeta: + "@babel/eslint-parser": + optional: true + "@babel/eslint-plugin": + optional: true + "@eslint-react/eslint-plugin": + optional: true + "@vitest/eslint-plugin": + optional: true + angular-eslint: + optional: true + angular-eslint-template-parser: + optional: true + eslint-plugin-jest: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-vue: + optional: true + checksum: 10c0/5646cc170a3ad5b43cd65177bb59936ac69fffb36d6e163387e9a3a634ee317ca7afac9f636f2b326553916fb08dbc35b4934ac19e677cd596aaf63b61509d0a + languageName: node + linkType: hard + +"@1stg/prettier-config@npm:^5.1.3": + version: 5.1.3 + resolution: "@1stg/prettier-config@npm:5.1.3" + dependencies: + "@1stg/config": "npm:^1.0.5" + "@prettier/plugin-pug": "npm:^3.3.0" + "@prettier/plugin-ruby": "npm:^4.0.4" + "@prettier/plugin-xml": "npm:^3.4.1" + prettier-plugin-go-template: "npm:^0.0.15" + prettier-plugin-ini: "npm:^1.3.0" + prettier-plugin-jsdoc: "npm:^1.3.2" + prettier-plugin-jsdoc-type: "npm:^0.1.6" + prettier-plugin-pkg: "npm:^0.19.0" + prettier-plugin-properties: "npm:^0.3.0" + prettier-plugin-sh: "npm:^0.17.2" + prettier-plugin-stylus: "npm:^0.1.0" + prettier-plugin-toml: "npm:^2.0.4" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/df2a8ffa117458de163c1fecb1184ec57a24f24779865aa149abddab133af08aa3b41cfd5a073fb81b1600e006e99da2b2dab6af3cfa9575c35b9658cc16a414 + languageName: node + linkType: hard + +"@1stg/tsconfig@npm:^3.0.3": + version: 3.0.3 + resolution: "@1stg/tsconfig@npm:3.0.3" + peerDependencies: + typescript: ">=5.7.0" + checksum: 10c0/9121a6ef87343da5d4bb93011e00b49e156f3e451a11ab0c0cbcadf9fa3e5391073559cec962c8484e098de04bdcecf2987df40e62e2e239c69a3eab49bd1677 + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.2.1": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" @@ -42,7 +144,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.26.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -255,7 +357,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": +"@babel/helper-validator-identifier@npm:^7.24.7, @babel/helper-validator-identifier@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-identifier@npm:7.25.9" checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d @@ -1310,13 +1412,13 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.10": - version: 7.0.10 - resolution: "@changesets/apply-release-plan@npm:7.0.10" +"@changesets/apply-release-plan@npm:^7.0.11": + version: 7.0.11 + resolution: "@changesets/apply-release-plan@npm:7.0.11" dependencies: "@changesets/config": "npm:^3.1.1" "@changesets/get-version-range-type": "npm:^0.4.0" - "@changesets/git": "npm:^3.0.2" + "@changesets/git": "npm:^3.0.3" "@changesets/should-skip-package": "npm:^0.1.2" "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" @@ -1327,7 +1429,7 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10c0/4ee5951448c26bbf73fac5c9a0785d5bb0cc3f2e6c1ffc9337766b446fe79a7b018834be2a4723938faec0d331aa30f1d6c7ea47db48d7a7babe37862645dd57 + checksum: 10c0/30ef40d89dacdaf14017fe82a05fe4b70f426e6baf7c6b3473d52b836035bd3fe59553564ca4ffc867face5120f43ff5875473754dc129465edbf6f95aab1cad languageName: node linkType: hard @@ -1365,21 +1467,21 @@ __metadata: languageName: node linkType: hard -"@changesets/cli@npm:^2.29.0": - version: 2.29.0 - resolution: "@changesets/cli@npm:2.29.0" +"@changesets/cli@npm:^2.29.1": + version: 2.29.1 + resolution: "@changesets/cli@npm:2.29.1" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.10" + "@changesets/apply-release-plan": "npm:^7.0.11" "@changesets/assemble-release-plan": "npm:^6.0.6" "@changesets/changelog-git": "npm:^0.2.1" "@changesets/config": "npm:^3.1.1" "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.3" - "@changesets/get-release-plan": "npm:^4.0.8" - "@changesets/git": "npm:^3.0.2" + "@changesets/get-release-plan": "npm:^4.0.9" + "@changesets/git": "npm:^3.0.3" "@changesets/logger": "npm:^0.1.1" "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.3" + "@changesets/read": "npm:^0.6.4" "@changesets/should-skip-package": "npm:^0.1.2" "@changesets/types": "npm:^6.1.0" "@changesets/write": "npm:^0.4.0" @@ -1399,7 +1501,7 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: 10c0/2e70b6300788d5a413def95cfcc3c3914da1f094211c5c302a5150f84eb05e316631f43335602aedb435230f1a4480c17f57d0350dc5e92053811d42136c05e9 + checksum: 10c0/1afe0432b91dd7f1cdeba60bd325b293dbde45b7ff0381ba55d92a05694d1d1aa83d4bc1bc705066255a5450f84b6495d788bd556dc0beee947faa74b21038df languageName: node linkType: hard @@ -1449,17 +1551,17 @@ __metadata: languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.8": - version: 4.0.8 - resolution: "@changesets/get-release-plan@npm:4.0.8" +"@changesets/get-release-plan@npm:^4.0.9": + version: 4.0.9 + resolution: "@changesets/get-release-plan@npm:4.0.9" dependencies: "@changesets/assemble-release-plan": "npm:^6.0.6" "@changesets/config": "npm:^3.1.1" "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.3" + "@changesets/read": "npm:^0.6.4" "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10c0/b638f83683264818ea6cb729a3fd10f9edf29c61c7acee15ce321287cacbe03700706a20c0b531fdb3bbb23bda8967f4c6cbef08db207189fb7289313f473a1a + checksum: 10c0/7697475ece71c839b5b9217e8f5399019fc7c6c397b816e43e282c70537464798c5ac75614788a176fb9a5d6a8572495746cff0eba5d6c6729b2bfcd740edf81 languageName: node linkType: hard @@ -1470,16 +1572,16 @@ __metadata: languageName: node linkType: hard -"@changesets/git@npm:^3.0.2": - version: 3.0.2 - resolution: "@changesets/git@npm:3.0.2" +"@changesets/git@npm:^3.0.3": + version: 3.0.3 + resolution: "@changesets/git@npm:3.0.3" dependencies: "@changesets/errors": "npm:^0.2.0" "@manypkg/get-packages": "npm:^1.1.3" is-subdir: "npm:^1.1.1" micromatch: "npm:^4.0.8" spawndamnit: "npm:^3.0.1" - checksum: 10c0/a3a9c9ab71e3cd8ecd804e2965790efa40bdcd29804bdf873c5d38f7cfd8cd6ae1c23a6eb5a16796a3e05c4dbfeb0eb04f4be988049f31173adbbeac9e7cf566 + checksum: 10c0/9484d7dee9511d60b226779e854d12953a5bbf6e45e2601e72420147ad622a0a273eb70a3cd51c7ef67f5b1be16007620195fdd589363d4560ba69f2ceb4d3d7 languageName: node linkType: hard @@ -1514,18 +1616,18 @@ __metadata: languageName: node linkType: hard -"@changesets/read@npm:^0.6.3": - version: 0.6.3 - resolution: "@changesets/read@npm:0.6.3" +"@changesets/read@npm:^0.6.4": + version: 0.6.4 + resolution: "@changesets/read@npm:0.6.4" dependencies: - "@changesets/git": "npm:^3.0.2" + "@changesets/git": "npm:^3.0.3" "@changesets/logger": "npm:^0.1.1" "@changesets/parse": "npm:^0.4.1" "@changesets/types": "npm:^6.1.0" fs-extra: "npm:^7.0.1" p-filter: "npm:^2.1.0" picocolors: "npm:^1.1.0" - checksum: 10c0/4c2eac60aab0a6b14ad5a2ed2f57427019fe567dd6d2c6e122bd3cbf7f69903dcec6c864a67c39544ed011369223c838e498212303404a7f884428f4366f10da + checksum: 10c0/9f2f838e2052b3fab9867aebb0505acf26b8817953b6ae322c2dcde70b32fdf70917f9a7d03d0b2d5d14de255228421eb0a24b6ceebfd4f1cf1dadcec2c8053e languageName: node linkType: hard @@ -1565,7 +1667,67 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.4.0": + version: 1.4.3 + resolution: "@emnapi/core@npm:1.4.3" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.2" + tslib: "npm:^2.4.0" + checksum: 10c0/e30101d16d37ef3283538a35cad60e22095aff2403fb9226a35330b932eb6740b81364d525537a94eb4fb51355e48ae9b10d779c0dd1cdcd55d71461fe4b45c7 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.0": + version: 1.4.3 + resolution: "@emnapi/runtime@npm:1.4.3" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/3b7ab72d21cb4e034f07df80165265f85f445ef3f581d1bc87b67e5239428baa00200b68a7d5e37a0425c3a78320b541b07f76c5530f6f6f95336a6294ebf30b + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.2": + version: 1.0.2 + resolution: "@emnapi/wasi-threads@npm:1.0.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f0621b1fc715221bd2d8332c0ca922617bcd77cdb3050eae50a124eb8923c54fa425d23982dc8f29d505c8798a62d1049bace8b0686098ff9dd82270e06d772e + languageName: node + linkType: hard + +"@es-joy/jsdoccomment@npm:~0.49.0": + version: 0.49.0 + resolution: "@es-joy/jsdoccomment@npm:0.49.0" + dependencies: + comment-parser: "npm:1.4.1" + esquery: "npm:^1.6.0" + jsdoc-type-pratt-parser: "npm:~4.1.0" + checksum: 10c0/16717507d557d37e7b59456fedeefbe0a3bc93aa2d9c043d5db91e24e076509b6fcb10ee6fd1dafcb0c5bbe50ae329b45de5b83541cb5994a98c9e862a45641e + languageName: node + linkType: hard + +"@eslint-community/eslint-plugin-eslint-comments@npm:^4.5.0": + version: 4.5.0 + resolution: "@eslint-community/eslint-plugin-eslint-comments@npm:4.5.0" + dependencies: + escape-string-regexp: "npm:^4.0.0" + ignore: "npm:^5.2.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/19013d30b0c29517f19028718af4bd6b6fd357e5f9b927ee1cf3499ffe3b2852440e9651401947f4f82e962ecd1d228afa1c08f6146751f5158fe0748d924702 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.5.0, @eslint-community/eslint-utils@npm:^4.5.1": version: 4.6.0 resolution: "@eslint-community/eslint-utils@npm:4.6.0" dependencies: @@ -1576,7 +1738,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:4.12.1, @eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1, @eslint-community/regexpp@npm:^4.8.0": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 @@ -1607,6 +1769,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:^9.24.0": + version: 9.24.0 + resolution: "@eslint/js@npm:9.24.0" + checksum: 10c0/efe22e29469e4140ac3e2916be8143b1bcfd1084a6edf692b7a58a3e54949d53c67f7f979bc0a811db134d9cc1e7bff8aa71ef1376b47eecd7e226b71206bb36 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -1916,7 +2085,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e @@ -1937,6 +2106,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -1973,6 +2152,212 @@ __metadata: languageName: node linkType: hard +"@markuplint/cli-utils@npm:4.4.11": + version: 4.4.11 + resolution: "@markuplint/cli-utils@npm:4.4.11" + dependencies: + detect-installed: "npm:2.0.4" + eastasianwidth: "npm:0.3.0" + enquirer: "npm:2.4.1" + has-yarn: "npm:3.0.0" + picocolors: "npm:1.1.1" + strip-ansi: "npm:7.1.0" + checksum: 10c0/222a4da726b63390e718fb270edfa504c3d7fe9081d2154a0a36f32ed4e9ff9a15c37bcb2cbbda49786f75bc09b0746b10e40dc0a7e3f76c1be598ff2f204081 + languageName: node + linkType: hard + +"@markuplint/config-presets@npm:4.5.12": + version: 4.5.12 + resolution: "@markuplint/config-presets@npm:4.5.12" + checksum: 10c0/768f5f1387057ce1056dd6e91af271bdd7b28802f833cd5e6d639c1c1d2b6be640749b61998192cbf8a73b6cdfbbe2b16c741bec6298600fb6685d2274544a59 + languageName: node + linkType: hard + +"@markuplint/file-resolver@npm:4.9.14": + version: 4.9.14 + resolution: "@markuplint/file-resolver@npm:4.9.14" + dependencies: + "@markuplint/html-parser": "npm:4.6.19" + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/ml-config": "npm:4.8.11" + "@markuplint/ml-core": "npm:4.12.4" + "@markuplint/ml-spec": "npm:4.9.6" + "@markuplint/parser-utils": "npm:4.8.7" + "@markuplint/selector": "npm:4.7.4" + "@markuplint/shared": "npm:4.4.11" + cosmiconfig: "npm:9.0.0" + debug: "npm:4.4.0" + glob: "npm:11.0.1" + ignore: "npm:7.0.3" + import-meta-resolve: "npm:4.1.0" + jsonc: "npm:2.0.0" + minimatch: "npm:10.0.1" + checksum: 10c0/ac917387887edf37fc32f0656fedc3899542e39da7641f14eb6af26887010a03d34a6ca3a962101df895fff0a60832a8b45f59a6c9570dcb13a9437445cf9a51 + languageName: node + linkType: hard + +"@markuplint/html-parser@npm:4.6.19": + version: 4.6.19 + resolution: "@markuplint/html-parser@npm:4.6.19" + dependencies: + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/parser-utils": "npm:4.8.7" + parse5: "npm:7.2.1" + type-fest: "npm:4.39.1" + checksum: 10c0/82fe23d62d149a0cad38e5cf591dafb28f008ca81a0cf3bc44f8f77dabc4348b0188643c721ba235d7f4f5f1b67e487a8422ecb92e8cf4225ade505308660b05 + languageName: node + linkType: hard + +"@markuplint/html-spec@npm:4.14.2": + version: 4.14.2 + resolution: "@markuplint/html-spec@npm:4.14.2" + dependencies: + "@markuplint/ml-spec": "npm:4.9.6" + checksum: 10c0/2948329541858342a9723cd0f1920213398ad1c87e8e55545406e5c244f935032032fc09a3a9b79cb942e7691e4e8ce609996d6d030cc25a819d1fcca6c8b9da + languageName: node + linkType: hard + +"@markuplint/i18n@npm:4.6.0": + version: 4.6.0 + resolution: "@markuplint/i18n@npm:4.6.0" + checksum: 10c0/c7da347ea26da73aad82d24546706e3902adc8fce4db3c59cf08ef071546e706c00a7a0a755a7ea15fbbca1d43e3be71d9c28b5b1c1dff2f8ba3515d892fc507 + languageName: node + linkType: hard + +"@markuplint/ml-ast@npm:4.4.9": + version: 4.4.9 + resolution: "@markuplint/ml-ast@npm:4.4.9" + checksum: 10c0/83635f3df4fd156d05f3eebe2b55589d395140e91c1788c5f35470bdb02fc97ba461e63c30a1bf89ed83e952286ee0aba5043330e208aa46cb1cf6de95fff059 + languageName: node + linkType: hard + +"@markuplint/ml-config@npm:4.8.11": + version: 4.8.11 + resolution: "@markuplint/ml-config@npm:4.8.11" + dependencies: + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/selector": "npm:4.7.4" + "@markuplint/shared": "npm:4.4.11" + "@types/mustache": "npm:4.2.5" + deepmerge: "npm:4.3.1" + is-plain-object: "npm:5.0.0" + mustache: "npm:4.2.0" + type-fest: "npm:4.39.1" + checksum: 10c0/23dc9cd6967db4019144056b134878a981205d177d1b9642f7d12c47aded0f5f54013944c631c212ce3bfb75fc15ed13999e45dc36eb55885b4fba2e8415f2a9 + languageName: node + linkType: hard + +"@markuplint/ml-core@npm:4.12.4": + version: 4.12.4 + resolution: "@markuplint/ml-core@npm:4.12.4" + dependencies: + "@markuplint/config-presets": "npm:4.5.12" + "@markuplint/html-parser": "npm:4.6.19" + "@markuplint/html-spec": "npm:4.14.2" + "@markuplint/i18n": "npm:4.6.0" + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/ml-config": "npm:4.8.11" + "@markuplint/ml-spec": "npm:4.9.6" + "@markuplint/parser-utils": "npm:4.8.7" + "@markuplint/selector": "npm:4.7.4" + "@markuplint/shared": "npm:4.4.11" + "@types/debug": "npm:4.1.12" + debug: "npm:4.4.0" + is-plain-object: "npm:5.0.0" + type-fest: "npm:4.39.1" + checksum: 10c0/525a2929d4b2a3c447a885a24a65f0cb24ee96fefad03ea10ae339c5aa38839688eb40371df7e242833b1570d36005e9ddf8919bb95d134d83d36cae7a9522ba + languageName: node + linkType: hard + +"@markuplint/ml-spec@npm:4.9.6": + version: 4.9.6 + resolution: "@markuplint/ml-spec@npm:4.9.6" + dependencies: + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/types": "npm:4.7.6" + dom-accessibility-api: "npm:0.7.0" + is-plain-object: "npm:5.0.0" + type-fest: "npm:4.39.1" + checksum: 10c0/f0ec5cdd93c8332dad57d291f6c84bc7111775eb2efd6ce28b181dd59face873a4d3624893b54e56cebe94427373d50694fd2bd301a877ebb6de0d76407ad449 + languageName: node + linkType: hard + +"@markuplint/parser-utils@npm:4.8.7": + version: 4.8.7 + resolution: "@markuplint/parser-utils@npm:4.8.7" + dependencies: + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/ml-spec": "npm:4.9.6" + "@markuplint/types": "npm:4.7.6" + "@types/uuid": "npm:10.0.0" + debug: "npm:4.4.0" + espree: "npm:10.3.0" + type-fest: "npm:4.39.1" + uuid: "npm:11.1.0" + checksum: 10c0/7a420b2122131aa9521e2a17f87a5ba9d5fa500b7ead9cada9c28f310e3421b826ad9ad4792ffd515c9ab49b51230a947671b41f94a3ab746a0d38a60b6aca19 + languageName: node + linkType: hard + +"@markuplint/rules@npm:4.10.12": + version: 4.10.12 + resolution: "@markuplint/rules@npm:4.10.12" + dependencies: + "@markuplint/html-spec": "npm:4.14.2" + "@markuplint/ml-core": "npm:4.12.4" + "@markuplint/ml-spec": "npm:4.9.6" + "@markuplint/selector": "npm:4.7.4" + "@markuplint/shared": "npm:4.4.11" + "@markuplint/types": "npm:4.7.6" + "@types/debug": "npm:4.1.12" + "@ungap/structured-clone": "npm:1.3.0" + ansi-colors: "npm:4.1.3" + chrono-node: "npm:2.8.0" + debug: "npm:4.4.0" + type-fest: "npm:4.39.1" + checksum: 10c0/819406944d71234e0f0bddd232a00b366204553ccdd2610e818bf84adc2254d3d3a3c3464b538e3fd7191a4f3d9a8f6a9a946fefc9fa398d0f8f7549fdc19cdb + languageName: node + linkType: hard + +"@markuplint/selector@npm:4.7.4": + version: 4.7.4 + resolution: "@markuplint/selector@npm:4.7.4" + dependencies: + "@markuplint/ml-spec": "npm:4.9.6" + "@types/debug": "npm:4.1.12" + debug: "npm:4.4.0" + postcss-selector-parser: "npm:7.1.0" + type-fest: "npm:4.39.1" + checksum: 10c0/1fc3685f4462e2833b38b22d0e3db2a4be0a504e1bc93486e95d3770d549ad80564d510aa44b9a0f942e6ab1c765b5e5e231c6a340d6e9b1c6cd85b82cef5486 + languageName: node + linkType: hard + +"@markuplint/shared@npm:4.4.11": + version: 4.4.11 + resolution: "@markuplint/shared@npm:4.4.11" + dependencies: + html-entities: "npm:2.6.0" + checksum: 10c0/2b6a724b20320432abbe769f55281a3833078abfc1103e626afd05e326cf2a21f9313dd062bd54bea7a44ad6835e9a89e51a4f14660b723a731180ce1b42621d + languageName: node + linkType: hard + +"@markuplint/types@npm:4.7.6": + version: 4.7.6 + resolution: "@markuplint/types@npm:4.7.6" + dependencies: + "@markuplint/shared": "npm:4.4.11" + "@types/css-tree": "npm:2.3.10" + "@types/debug": "npm:4.1.12" + "@types/whatwg-mimetype": "npm:3.0.2" + bcp-47: "npm:2.1.0" + css-tree: "npm:3.1.0" + debug: "npm:4.4.0" + leven: "npm:4.0.0" + type-fest: "npm:4.39.1" + whatwg-mimetype: "npm:4.0.0" + checksum: 10c0/3a772a2ccdae847c7a61e906472a7909a3e8e5cd4c91367b6efb88c087f5252148a22e112128ca6872cd7e8f32f99d9fbfa31e99bbe799a22f62bce941858caf + languageName: node + linkType: hard + "@messageformat/core@npm:^3.2.0": version: 3.4.0 resolution: "@messageformat/core@npm:3.4.0" @@ -2019,6 +2404,17 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.2.5, @napi-rs/wasm-runtime@npm:^0.2.8": + version: 0.2.9 + resolution: "@napi-rs/wasm-runtime@npm:0.2.9" + dependencies: + "@emnapi/core": "npm:^1.4.0" + "@emnapi/runtime": "npm:^1.4.0" + "@tybys/wasm-util": "npm:^0.9.0" + checksum: 10c0/1cc40b854b255f84e12ade634456ba489f6bf90659ef8164a16823c515c294024c96ee2bb81ab51f35493ba9496f62842b960f915dbdcdc1791f221f989e9e59 + languageName: node + linkType: hard + "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": version: 2.1.8-no-fsevents.3 resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" @@ -2026,6 +2422,157 @@ __metadata: languageName: node linkType: hard +"@node-rs/xxhash-android-arm-eabi@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-android-arm-eabi@npm:1.7.6" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@node-rs/xxhash-android-arm64@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-android-arm64@npm:1.7.6" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@node-rs/xxhash-darwin-arm64@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-darwin-arm64@npm:1.7.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@node-rs/xxhash-darwin-x64@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-darwin-x64@npm:1.7.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@node-rs/xxhash-freebsd-x64@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-freebsd-x64@npm:1.7.6" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@node-rs/xxhash-linux-arm-gnueabihf@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-linux-arm-gnueabihf@npm:1.7.6" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@node-rs/xxhash-linux-arm64-gnu@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-linux-arm64-gnu@npm:1.7.6" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@node-rs/xxhash-linux-arm64-musl@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-linux-arm64-musl@npm:1.7.6" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@node-rs/xxhash-linux-x64-gnu@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-linux-x64-gnu@npm:1.7.6" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@node-rs/xxhash-linux-x64-musl@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-linux-x64-musl@npm:1.7.6" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@node-rs/xxhash-wasm32-wasi@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-wasm32-wasi@npm:1.7.6" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.5" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@node-rs/xxhash-win32-arm64-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-win32-arm64-msvc@npm:1.7.6" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@node-rs/xxhash-win32-ia32-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-win32-ia32-msvc@npm:1.7.6" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@node-rs/xxhash-win32-x64-msvc@npm:1.7.6": + version: 1.7.6 + resolution: "@node-rs/xxhash-win32-x64-msvc@npm:1.7.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@node-rs/xxhash@npm:^1.7.3": + version: 1.7.6 + resolution: "@node-rs/xxhash@npm:1.7.6" + dependencies: + "@node-rs/xxhash-android-arm-eabi": "npm:1.7.6" + "@node-rs/xxhash-android-arm64": "npm:1.7.6" + "@node-rs/xxhash-darwin-arm64": "npm:1.7.6" + "@node-rs/xxhash-darwin-x64": "npm:1.7.6" + "@node-rs/xxhash-freebsd-x64": "npm:1.7.6" + "@node-rs/xxhash-linux-arm-gnueabihf": "npm:1.7.6" + "@node-rs/xxhash-linux-arm64-gnu": "npm:1.7.6" + "@node-rs/xxhash-linux-arm64-musl": "npm:1.7.6" + "@node-rs/xxhash-linux-x64-gnu": "npm:1.7.6" + "@node-rs/xxhash-linux-x64-musl": "npm:1.7.6" + "@node-rs/xxhash-wasm32-wasi": "npm:1.7.6" + "@node-rs/xxhash-win32-arm64-msvc": "npm:1.7.6" + "@node-rs/xxhash-win32-ia32-msvc": "npm:1.7.6" + "@node-rs/xxhash-win32-x64-msvc": "npm:1.7.6" + dependenciesMeta: + "@node-rs/xxhash-android-arm-eabi": + optional: true + "@node-rs/xxhash-android-arm64": + optional: true + "@node-rs/xxhash-darwin-arm64": + optional: true + "@node-rs/xxhash-darwin-x64": + optional: true + "@node-rs/xxhash-freebsd-x64": + optional: true + "@node-rs/xxhash-linux-arm-gnueabihf": + optional: true + "@node-rs/xxhash-linux-arm64-gnu": + optional: true + "@node-rs/xxhash-linux-arm64-musl": + optional: true + "@node-rs/xxhash-linux-x64-gnu": + optional: true + "@node-rs/xxhash-linux-x64-musl": + optional: true + "@node-rs/xxhash-wasm32-wasi": + optional: true + "@node-rs/xxhash-win32-arm64-msvc": + optional: true + "@node-rs/xxhash-win32-ia32-msvc": + optional: true + "@node-rs/xxhash-win32-x64-msvc": + optional: true + checksum: 10c0/9ac7dce105664c48fe4c40dc96e453b5665623011346db9651d27ddd7a5fbf26573b61858dc75ac89784ede62256fbf4c44085aff40133bbbdb190824412330f + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -2053,6 +2600,13 @@ __metadata: languageName: node linkType: hard +"@nolyfill/json-stable-stringify@npm:^1.0.30": + version: 1.0.44 + resolution: "@nolyfill/json-stable-stringify@npm:1.0.44" + checksum: 10c0/496856cf2bbc3f91810fc7974456b1eecfb1aace77e28f91bc17631dca0ca20af452960e87b3adb90300a348baf2b5067cee3e14cfcc5072184f92b2d695c136 + languageName: node + linkType: hard + "@npmcli/agent@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/agent@npm:3.0.0" @@ -2066,6 +2620,22 @@ __metadata: languageName: node linkType: hard +"@npmcli/config@npm:^8.0.0": + version: 8.3.4 + resolution: "@npmcli/config@npm:8.3.4" + dependencies: + "@npmcli/map-workspaces": "npm:^3.0.2" + "@npmcli/package-json": "npm:^5.1.1" + ci-info: "npm:^4.0.0" + ini: "npm:^4.1.2" + nopt: "npm:^7.2.1" + proc-log: "npm:^4.2.0" + semver: "npm:^7.3.5" + walk-up-path: "npm:^3.0.1" + checksum: 10c0/f44af54bd2cdb32b132a861863bfe7936599a4706490136082585ab71e37ef47f201f8d2013b9902b3ff30cc8264f5da70f834c80f0a29953b52a28da20f5ea7 + languageName: node + linkType: hard + "@npmcli/fs@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/fs@npm:4.0.0" @@ -2075,65 +2645,255 @@ __metadata: languageName: node linkType: hard -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd +"@npmcli/git@npm:^5.0.0": + version: 5.0.8 + resolution: "@npmcli/git@npm:5.0.8" + dependencies: + "@npmcli/promise-spawn": "npm:^7.0.0" + ini: "npm:^4.1.3" + lru-cache: "npm:^10.0.1" + npm-pick-manifest: "npm:^9.0.0" + proc-log: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + promise-retry: "npm:^2.0.1" + semver: "npm:^7.3.5" + which: "npm:^4.0.0" + checksum: 10c0/892441c968404950809c7b515a93b78167ea1db2252f259f390feae22a2c5477f3e1629e105e19a084c05afc56e585bf3f13c2f13b54a06bfd6786f0c8429532 languageName: node linkType: hard -"@pkgr/utils@npm:^2.3.0": - version: 2.4.2 - resolution: "@pkgr/utils@npm:2.4.2" +"@npmcli/map-workspaces@npm:^3.0.2": + version: 3.0.6 + resolution: "@npmcli/map-workspaces@npm:3.0.6" dependencies: - cross-spawn: "npm:^7.0.3" - fast-glob: "npm:^3.3.0" - is-glob: "npm:^4.0.3" - open: "npm:^9.1.0" - picocolors: "npm:^1.0.0" - tslib: "npm:^2.6.0" - checksum: 10c0/7c3e68f6405a1d4c51f418d8d580e71d7bade2683d5db07e8413d8e57f7e389047eda44a2341f77a1b3085895fca7676a9d45e8812a58312524f8c4c65d501be + "@npmcli/name-from-folder": "npm:^2.0.0" + glob: "npm:^10.2.2" + minimatch: "npm:^9.0.0" + read-package-json-fast: "npm:^3.0.0" + checksum: 10c0/6bfcf8ca05ab9ddc2bd19c0fd91e9982f03cc6e67b0c03f04ba4d2f29b7d83f96e759c0f8f1f4b6dbe3182272483643a0d1269788352edd0c883d6fbfa2f3f14 languageName: node linkType: hard -"@pnpm/config.env-replace@npm:^1.1.0": - version: 1.1.0 - resolution: "@pnpm/config.env-replace@npm:1.1.0" - checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f +"@npmcli/name-from-folder@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/name-from-folder@npm:2.0.0" + checksum: 10c0/1aa551771d98ab366d4cb06b33efd3bb62b609942f6d9c3bb667c10e5bb39a223d3e330022bc980a44402133e702ae67603862099ac8254dad11f90e77409827 languageName: node linkType: hard -"@pnpm/network.ca-file@npm:^1.0.1": - version: 1.0.2 - resolution: "@pnpm/network.ca-file@npm:1.0.2" +"@npmcli/package-json@npm:^5.1.1": + version: 5.2.1 + resolution: "@npmcli/package-json@npm:5.2.1" dependencies: - graceful-fs: "npm:4.2.10" - checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 + "@npmcli/git": "npm:^5.0.0" + glob: "npm:^10.2.2" + hosted-git-info: "npm:^7.0.0" + json-parse-even-better-errors: "npm:^3.0.0" + normalize-package-data: "npm:^6.0.0" + proc-log: "npm:^4.0.0" + semver: "npm:^7.5.3" + checksum: 10c0/b852e31e3121a0afe5fa20bbf4faa701a59dbc9d9dd7141f7fd57b8e919ce22c1285dcdfea490851fe410fa0f7bc9c397cafba0d268aaa53420a12d7c561dde1 languageName: node linkType: hard -"@pnpm/npm-conf@npm:^2.1.0": - version: 2.3.1 - resolution: "@pnpm/npm-conf@npm:2.3.1" +"@npmcli/promise-spawn@npm:^7.0.0": + version: 7.0.2 + resolution: "@npmcli/promise-spawn@npm:7.0.2" dependencies: - "@pnpm/config.env-replace": "npm:^1.1.0" - "@pnpm/network.ca-file": "npm:^1.0.1" - config-chain: "npm:^1.1.11" - checksum: 10c0/778a3a34ff7d6000a2594d2a9821f873f737bc56367865718b2cf0ba5d366e49689efe7975148316d7afd8e6f1dcef7d736fbb6ea7ef55caadd1dc93a36bb302 + which: "npm:^4.0.0" + checksum: 10c0/8f2af5bc2c1b1ccfb9bcd91da8873ab4723616d8bd5af877c0daa40b1e2cbfa4afb79e052611284179cae918c945a1b99ae1c565d78a355bec1a461011e89f71 languageName: node linkType: hard -"@prettier/eslint@npm:prettier-eslint@^16.1.0, prettier-eslint@workspace:.": - version: 0.0.0-use.local - resolution: "prettier-eslint@workspace:." - dependencies: - "@babel/cli": "npm:^7.27.0" - "@babel/core": "npm:^7.26.10" - "@babel/preset-env": "npm:^7.26.9" - "@changesets/changelog-github": "npm:^0.5.1" - "@changesets/cli": "npm:^2.29.0" +"@oxc-resolver/binding-darwin-arm64@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-darwin-arm64@npm:5.2.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-resolver/binding-darwin-x64@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-darwin-x64@npm:5.2.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@oxc-resolver/binding-freebsd-x64@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-freebsd-x64@npm:5.2.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-arm-gnueabihf@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:5.2.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-arm64-gnu@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:5.2.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-arm64-musl@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:5.2.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-riscv64-gnu@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:5.2.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-s390x-gnu@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:5.2.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-x64-gnu@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:5.2.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@oxc-resolver/binding-linux-x64-musl@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-linux-x64-musl@npm:5.2.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@oxc-resolver/binding-wasm32-wasi@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-wasm32-wasi@npm:5.2.0" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.8" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@oxc-resolver/binding-win32-arm64-msvc@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:5.2.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@oxc-resolver/binding-win32-x64-msvc@npm:5.2.0": + version: 5.2.0 + resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:5.2.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.1.0": + version: 0.1.2 + resolution: "@pkgr/core@npm:0.1.2" + checksum: 10c0/fd4acc154c8f1b5c544b6dd152b7ce68f6cbb8b92e9abf2e5d756d6e95052d08d0d693a668dea67af1386d62635b50adfe463cce03c5620402b468498cc7592f + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.2.0, @pkgr/core@npm:^0.2.3, @pkgr/core@npm:^0.2.4": + version: 0.2.4 + resolution: "@pkgr/core@npm:0.2.4" + checksum: 10c0/2528a443bbbef5d4686614e1d73f834f19ccbc975f62b2a64974a6b97bcdf677b9c5e8948e04808ac4f0d853e2f422adfaae2a06e9e9f4f5cf8af76f1adf8dc1 + languageName: node + linkType: hard + +"@pkgr/utils@npm:^2.3.0": + version: 2.4.2 + resolution: "@pkgr/utils@npm:2.4.2" + dependencies: + cross-spawn: "npm:^7.0.3" + fast-glob: "npm:^3.3.0" + is-glob: "npm:^4.0.3" + open: "npm:^9.1.0" + picocolors: "npm:^1.0.0" + tslib: "npm:^2.6.0" + checksum: 10c0/7c3e68f6405a1d4c51f418d8d580e71d7bade2683d5db07e8413d8e57f7e389047eda44a2341f77a1b3085895fca7676a9d45e8812a58312524f8c4c65d501be + languageName: node + linkType: hard + +"@pkgr/utils@npm:^3.1.1": + version: 3.1.2 + resolution: "@pkgr/utils@npm:3.1.2" + dependencies: + "@pkgr/core": "npm:^0.2.3" + tinyglobby: "npm:^0.2.12" + checksum: 10c0/0e2df2bba1261acea17f0521f91b4fb932ec52eb34f24c5a322d69beac1ac06b79f05c7830a46c78f6a367bd7b1e47c6abf01682975ddb58a4c50f66ea4fb874 + languageName: node + linkType: hard + +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f + languageName: node + linkType: hard + +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: "npm:4.2.10" + checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" + dependencies: + "@pnpm/config.env-replace": "npm:^1.1.0" + "@pnpm/network.ca-file": "npm:^1.0.1" + config-chain: "npm:^1.1.11" + checksum: 10c0/778a3a34ff7d6000a2594d2a9821f873f737bc56367865718b2cf0ba5d366e49689efe7975148316d7afd8e6f1dcef7d736fbb6ea7ef55caadd1dc93a36bb302 + languageName: node + linkType: hard + +"@prettier/eslint@npm:prettier-eslint@^16.1.0, prettier-eslint@workspace:.": + version: 0.0.0-use.local + resolution: "prettier-eslint@workspace:." + dependencies: + "@1stg/eslint-config": "npm:^9.0.4" + "@1stg/prettier-config": "npm:^5.1.3" + "@1stg/tsconfig": "npm:^3.0.3" + "@babel/cli": "npm:^7.27.0" + "@babel/core": "npm:^7.26.10" + "@babel/preset-env": "npm:^7.26.9" + "@changesets/changelog-github": "npm:^0.5.1" + "@changesets/cli": "npm:^2.29.1" + "@swc-node/jest": "npm:^1.8.13" + "@swc/core": "npm:^1.11.21" + "@swc/helpers": "npm:^0.5.17" + "@types/common-tags": "npm:^1.8.4" + "@types/dlv": "npm:^1.1.5" "@types/eslint": "npm:^8.56.12" + "@types/jest": "npm:^29.5.14" + "@types/lodash.merge": "npm:^4.6.9" + "@types/node": "npm:^22.14.1" + "@types/require-relative": "npm:^0.8.2" "@typescript-eslint/parser": "npm:^6.21.0" + "@unts/patch-package": "npm:^8.1.1" all-contributors-cli: "npm:^6.26.1" clean-pkg-json: "npm:^1.2.1" common-tags: "npm:^1.8.2" @@ -2149,8 +2909,8 @@ __metadata: nps: "npm:^5.10.0" nps-utils: "npm:^1.7.0" prettier: "npm:^3.5.3" + prettier-eslint: "link:." prettier-eslint-cli: "npm:^8.0.1" - prettier-plugin-pkg: "npm:^0.19.0" prettier-plugin-svelte: "npm:^3.3.3" pretty-format: "npm:^29.7.0" require-relative: "npm:^0.8.7" @@ -2159,7 +2919,8 @@ __metadata: strip-indent: "npm:^3.0.0" svelte: "npm:^4.2.19" svelte-eslint-parser: "npm:^0.33.1" - typescript: "npm:~5.3.3" + ts-node: "npm:^10.9.2" + typescript: "npm:^5.8.3" vue-eslint-parser: "npm:^9.4.3" peerDependencies: prettier-plugin-svelte: ^3.0.0 @@ -2172,6 +2933,44 @@ __metadata: languageName: unknown linkType: soft +"@prettier/plugin-pug@npm:^3.3.0": + version: 3.3.0 + resolution: "@prettier/plugin-pug@npm:3.3.0" + dependencies: + pug-lexer: "npm:^5.0.1" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/9ff70324bbbdb635bbcb0810cb874f05e5c3739a2519eccab02488820926a3d744d481e76608a77a8d119518a944a84ba9c07dcfc944bf4817e9508fd309c0de + languageName: node + linkType: hard + +"@prettier/plugin-ruby@npm:^4.0.4": + version: 4.0.4 + resolution: "@prettier/plugin-ruby@npm:4.0.4" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/7567d7f87fe807f7a90fb4eba7a91d25a1843e19de09289412ba0420e25fadea9840085b495c54212249bb418fcd146d53b105c0e4e57990c5235326bd7c6b01 + languageName: node + linkType: hard + +"@prettier/plugin-xml@npm:^3.4.1": + version: 3.4.1 + resolution: "@prettier/plugin-xml@npm:3.4.1" + dependencies: + "@xml-tools/parser": "npm:^1.0.11" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/39bdc3d6e475ed4f804ea4dad8ad66c1e36743935eefde87bf9a68c44434695e74e52c8c6d70239de12dae141153f8979cce0b1c5c8f820693ff1f62bbe66044 + languageName: node + linkType: hard + +"@reteps/dockerfmt@npm:^0.3.2": + version: 0.3.5 + resolution: "@reteps/dockerfmt@npm:0.3.5" + checksum: 10c0/c558f0d9a79f6f3eb3314cf4592a6358390715aa88a606e6003e6c59065dfedd24bde5e3a1594795ce6937105bf591e402708648bdfdc151e2a726111ce0ead5 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -2218,6 +3017,200 @@ __metadata: languageName: node linkType: hard +"@swc-node/core@npm:^1.13.3": + version: 1.13.3 + resolution: "@swc-node/core@npm:1.13.3" + peerDependencies: + "@swc/core": ">= 1.4.13" + "@swc/types": ">= 0.1" + checksum: 10c0/01f69d6124691569cedd2e6d0c6d3e33ab96d8fca6607780d64359c884750cfd77541e112e545cf37d9f0ee5fdccd57fbf9eb07cfd0ae26f8cca88c974e82e08 + languageName: node + linkType: hard + +"@swc-node/jest@npm:^1.8.13": + version: 1.8.13 + resolution: "@swc-node/jest@npm:1.8.13" + dependencies: + "@node-rs/xxhash": "npm:^1.7.3" + "@swc-node/core": "npm:^1.13.3" + "@swc-node/register": "npm:^1.10.10" + peerDependencies: + "@swc/core": ">= 1.4.13" + "@swc/types": ">= 0.1" + typescript: ">= 5.0" + checksum: 10c0/4e5c5feec2035efb1ea9b7c01243c631cf97057c19c43320ee53c4883f9dc3c8d5d34b5328e82bd73d6f899c762d124a23b6ab75d5b8ac6c93844d48c3c33474 + languageName: node + linkType: hard + +"@swc-node/register@npm:^1.10.10": + version: 1.10.10 + resolution: "@swc-node/register@npm:1.10.10" + dependencies: + "@swc-node/core": "npm:^1.13.3" + "@swc-node/sourcemap-support": "npm:^0.5.1" + colorette: "npm:^2.0.20" + debug: "npm:^4.3.5" + oxc-resolver: "npm:^5.0.0" + pirates: "npm:^4.0.6" + tslib: "npm:^2.6.3" + peerDependencies: + "@swc/core": ">= 1.4.13" + typescript: ">= 4.3" + checksum: 10c0/001c75f44cc22dfe0298b1b6158efb8d2f0d477386c5b984a4df88611291773b52f87b4bde4028b9d647c76b2923cf1fc9f2c5ec6cce06a3cbcb9c340c589341 + languageName: node + linkType: hard + +"@swc-node/sourcemap-support@npm:^0.5.1": + version: 0.5.1 + resolution: "@swc-node/sourcemap-support@npm:0.5.1" + dependencies: + source-map-support: "npm:^0.5.21" + tslib: "npm:^2.6.3" + checksum: 10c0/5ac7e701a0683e0e6760c8078d4bb2829daa78c4946dcc729c75588b87112afc7352f7c8cd90cea9417b5f7494418d374a354795344c4cf81152bce3d5a17853 + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-darwin-arm64@npm:1.11.21" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-darwin-x64@npm:1.11.21" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.11.21" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm64-gnu@npm:1.11.21" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm64-musl@npm:1.11.21" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-x64-gnu@npm:1.11.21" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-x64-musl@npm:1.11.21" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-arm64-msvc@npm:1.11.21" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-ia32-msvc@npm:1.11.21" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-x64-msvc@npm:1.11.21" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.11.21": + version: 1.11.21 + resolution: "@swc/core@npm:1.11.21" + dependencies: + "@swc/core-darwin-arm64": "npm:1.11.21" + "@swc/core-darwin-x64": "npm:1.11.21" + "@swc/core-linux-arm-gnueabihf": "npm:1.11.21" + "@swc/core-linux-arm64-gnu": "npm:1.11.21" + "@swc/core-linux-arm64-musl": "npm:1.11.21" + "@swc/core-linux-x64-gnu": "npm:1.11.21" + "@swc/core-linux-x64-musl": "npm:1.11.21" + "@swc/core-win32-arm64-msvc": "npm:1.11.21" + "@swc/core-win32-ia32-msvc": "npm:1.11.21" + "@swc/core-win32-x64-msvc": "npm:1.11.21" + "@swc/counter": "npm:^0.1.3" + "@swc/types": "npm:^0.1.21" + peerDependencies: + "@swc/helpers": ">=0.5.17" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10c0/d37d21bcc8656e1719c262403eb54f3ec7925493642ca17bf4061ddf67cb327ea2718ad1da749b9db0c6e6e3aeb2d9f0e544939688408c4f89d38982c24612d4 + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: 10c0/8424f60f6bf8694cfd2a9bca45845bce29f26105cda8cf19cdb9fd3e78dc6338699e4db77a89ae449260bafa1cc6bec307e81e7fb96dbf7dcfce0eea55151356 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.17": + version: 0.5.17 + resolution: "@swc/helpers@npm:0.5.17" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/fe1f33ebb968558c5a0c595e54f2e479e4609bff844f9ca9a2d1ffd8dd8504c26f862a11b031f48f75c95b0381c2966c3dd156e25942f90089badd24341e7dbb + languageName: node + linkType: hard + +"@swc/types@npm:^0.1.21": + version: 0.1.21 + resolution: "@swc/types@npm:0.1.21" + dependencies: + "@swc/counter": "npm:^0.1.3" + checksum: 10c0/2baa89c824426e0de0c84e212278010e2df8dc2d6ffaa6f1e306e1b2930c6404b3d3f8989307e8c42ceb95ac143ab7a80be138af6a014d5c782dce5be94dcd5e + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^5.0.1": version: 5.0.1 resolution: "@szmarczak/http-timer@npm:5.0.1" @@ -2227,6 +3220,59 @@ __metadata: languageName: node linkType: hard +"@taplo/core@npm:^0.2.0": + version: 0.2.0 + resolution: "@taplo/core@npm:0.2.0" + checksum: 10c0/4bbc3b696c49e267da2dfcd13e7812e5c09febda583856b35569773542e93f9c28a50dab69c635e1d5e11a4de6962ab08e006985fa38d2df1b3ef19d471efa05 + languageName: node + linkType: hard + +"@taplo/lib@npm:^0.5.0": + version: 0.5.0 + resolution: "@taplo/lib@npm:0.5.0" + dependencies: + "@taplo/core": "npm:^0.2.0" + checksum: 10c0/0d1ea190586cac09a1c28fc43f807ba843a3313329744aacf49200da909beacbc43e5ebb89677d608b821458ad9378bc3d398c2aa7eff7e567ad59f85cc5ed82 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + languageName: node + linkType: hard + "@types/babel__core@npm:^7.1.14": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" @@ -2268,6 +3314,52 @@ __metadata: languageName: node linkType: hard +"@types/common-tags@npm:^1.8.4": + version: 1.8.4 + resolution: "@types/common-tags@npm:1.8.4" + checksum: 10c0/899c887785812e1805e9bdd6f1110811b01384888f9a8e539174b49484e40f29f99cd66659c0c4865339338eee59b16821b9b728b98efc7c1118767192f199d2 + languageName: node + linkType: hard + +"@types/concat-stream@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/concat-stream@npm:2.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/dd8bdf8061d275f30dc602e04c63ebc001d3a260e722c867916667a45f90fd22da62a2de0919a35f35969b84a14cb94c69d15bdb2c8a518ce8abf3a0e1a16e5d + languageName: node + linkType: hard + +"@types/css-tree@npm:2.3.10": + version: 2.3.10 + resolution: "@types/css-tree@npm:2.3.10" + checksum: 10c0/5ecc484813ad99eb406a50fa640eed5e67d0dc49b40265111e8a76938a2baff0686a4046eee47e26036ea519e5d90f98ff697083c8da7bd02a8406578bddd60d + languageName: node + linkType: hard + +"@types/debug@npm:4.1.12, @types/debug@npm:^4.0.0": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/dlv@npm:^1.1.5": + version: 1.1.5 + resolution: "@types/dlv@npm:1.1.5" + checksum: 10c0/db63a4a61d2cab12ef5df5b638158a5d973aedb7c46506a910f69ea280f563a4954e7a4b9f112e2adb251d139e7b353ec4897b1e9649768302ed97156517b828 + languageName: node + linkType: hard + +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c + languageName: node + linkType: hard + "@types/eslint@npm:^8.56.12": version: 8.56.12 resolution: "@types/eslint@npm:8.56.12" @@ -2278,6 +3370,15 @@ __metadata: languageName: node linkType: hard +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d + languageName: node + linkType: hard + "@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.1, @types/estree@npm:^1.0.6": version: 1.0.7 resolution: "@types/estree@npm:1.0.7" @@ -2294,6 +3395,15 @@ __metadata: languageName: node linkType: hard +"@types/hast@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 + languageName: node + linkType: hard + "@types/http-cache-semantics@npm:^4.0.2": version: 4.0.4 resolution: "@types/http-cache-semantics@npm:4.0.4" @@ -2301,6 +3411,13 @@ __metadata: languageName: node linkType: hard +"@types/is-empty@npm:^1.0.0": + version: 1.2.3 + resolution: "@types/is-empty@npm:1.2.3" + checksum: 10c0/2ca9af27ce93cc0abe277178a69803e641d755152bf4fc415e1789451ff62f6e39cf15dbdc111d490171d757669937ad4789c7395af55f5e7d261f6bfe416974 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" @@ -2326,6 +3443,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed + languageName: node + linkType: hard + "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -2340,7 +3467,46 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": +"@types/lodash.merge@npm:^4.6.9": + version: 4.6.9 + resolution: "@types/lodash.merge@npm:4.6.9" + dependencies: + "@types/lodash": "npm:*" + checksum: 10c0/2e2ccacdceb2e23343a514e8c24540fc4e1f1ffd616b645eb72ec685da9389d99a2544f04d61921e46a6768f8cc0fe5f58d4f7edaba9bc50552f0ca7df905e83 + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.17.16 + resolution: "@types/lodash@npm:4.17.16" + checksum: 10c0/cf017901b8ab1d7aabc86d5189d9288f4f99f19a75caf020c0e2c77b8d4cead4db0d0b842d009b029339f92399f49f34377dd7c2721053388f251778b4c23534 + languageName: node + linkType: hard + +"@types/mdast@npm:^4.0.0": + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 2.1.0 + resolution: "@types/ms@npm:2.1.0" + checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225 + languageName: node + linkType: hard + +"@types/mustache@npm:4.2.5": + version: 4.2.5 + resolution: "@types/mustache@npm:4.2.5" + checksum: 10c0/624975c39068d47407eadb89628aaff5ef60f3b7a71eef92a254310896a4e90518a01dcf71d95779ab2c986034a6ca5403d22fea237c67ff87f2e2b3fb794ea6 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:^22.0.0, @types/node@npm:^22.14.1": version: 22.14.1 resolution: "@types/node@npm:22.14.1" dependencies: @@ -2363,6 +3529,13 @@ __metadata: languageName: node linkType: hard +"@types/require-relative@npm:^0.8.2": + version: 0.8.2 + resolution: "@types/require-relative@npm:0.8.2" + checksum: 10c0/86338a7ce668fc45d3b32d879a1d61e02f336a0680a007d0c4972bf53520a894b083ff476d5eb990d722d43d3a54d90687b73cc7833ab7a6149954f50ec49b64 + languageName: node + linkType: hard + "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": version: 7.7.0 resolution: "@types/semver@npm:7.7.0" @@ -2377,6 +3550,41 @@ __metadata: languageName: node linkType: hard +"@types/supports-color@npm:^8.0.0": + version: 8.1.3 + resolution: "@types/supports-color@npm:8.1.3" + checksum: 10c0/03aa3616b403f3deaeb774df6d3a3969845b0c9f449814a83c2c53eb6818f5f9b571ba205330b0ebe8e46f41fd550f581a34b4310b13f0e0448694cfff37ddbf + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 + languageName: node + linkType: hard + +"@types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d + languageName: node + linkType: hard + +"@types/uuid@npm:10.0.0": + version: 10.0.0 + resolution: "@types/uuid@npm:10.0.0" + checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60 + languageName: node + linkType: hard + +"@types/whatwg-mimetype@npm:3.0.2": + version: 3.0.2 + resolution: "@types/whatwg-mimetype@npm:3.0.2" + checksum: 10c0/dad39d1e4abe760a0a963c84bbdbd26b1df0eb68aff83bdf6ecbb50ad781ead777f6906d19a87007790b750f7500a12e5624d31fc6a1529d14bd19b5c3a316d1 + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" @@ -2393,6 +3601,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.30.1, @typescript-eslint/eslint-plugin@npm:^8.29.1": + version: 8.30.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.30.1" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.30.1" + "@typescript-eslint/type-utils": "npm:8.30.1" + "@typescript-eslint/utils": "npm:8.30.1" + "@typescript-eslint/visitor-keys": "npm:8.30.1" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/e34e067c977a20fe927a30e5ffd5402b03eb12d1c9dc932e7c4a772e78fda9e34708fa2d12ace34bad2c51ecaf5b8cfaa4b372c0c5550fe06587b721f6eae57b + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^6.16.0": version: 6.21.0 resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" @@ -2418,6 +3647,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.30.1, @typescript-eslint/parser@npm:^8.29.1": + version: 8.30.1 + resolution: "@typescript-eslint/parser@npm:8.30.1" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.30.1" + "@typescript-eslint/types": "npm:8.30.1" + "@typescript-eslint/typescript-estree": "npm:8.30.1" + "@typescript-eslint/visitor-keys": "npm:8.30.1" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/add025d5cfca5cd4d1f74c9297e71de95c945f4efbe6cbfbc72e2cd794cd2684397c7d832bdb5177a1f54398111243d20bd0d2ffdb32a4d5230f1db7cd6fbfb6 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^6.16.0, @typescript-eslint/parser@npm:^6.21.0": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -2483,6 +3728,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/type-utils@npm:8.30.1" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.30.1" + "@typescript-eslint/utils": "npm:8.30.1" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.0.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/c233d2b0b06bd8eca4ee38aebb7544d4084143590328f38c00302f98a62b06868394d4ab1cd798af68d5a47efd84976cc14d415e9e519396dc89aa8d4d47c9ee + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -2576,6 +3836,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.30.1, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/utils@npm:8.30.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.30.1" + "@typescript-eslint/types": "npm:8.30.1" + "@typescript-eslint/typescript-estree": "npm:8.30.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/ad54aa386edc2e19957c73ef25eea3e263e7e15e941c72e91ca6c8ea2536979d343a6069de0e40b15f0e732ddaacbfcc3d5f25a1583e11a32120c42c471802ea + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^5.10.0, @typescript-eslint/utils@npm:^5.62.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -2594,21 +3869,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.30.1 - resolution: "@typescript-eslint/utils@npm:8.30.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.30.1" - "@typescript-eslint/types": "npm:8.30.1" - "@typescript-eslint/typescript-estree": "npm:8.30.1" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/ad54aa386edc2e19957c73ef25eea3e263e7e15e941c72e91ca6c8ea2536979d343a6069de0e40b15f0e732ddaacbfcc3d5f25a1583e11a32120c42c471802ea - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -2639,13 +3899,174 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:1.3.0, @ungap/structured-clone@npm:^1.2.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a languageName: node linkType: hard +"@unrs/resolver-binding-darwin-arm64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.5.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.5.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.5.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.5.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.5.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.5.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.5.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.5.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.5.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.5.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.5.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.5.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.5.0" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.8" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.5.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.5.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.5.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@unts/patch-package@npm:^8.1.1": + version: 8.1.1 + resolution: "@unts/patch-package@npm:8.1.1" + dependencies: + "@nolyfill/json-stable-stringify": "npm:^1.0.30" + "@yarnpkg/lockfile": "npm:^1.1.0" + ci-info: "npm:^3.7.0" + cross-spawn: "npm:^7.0.3" + find-yarn-workspace-root: "npm:^2.0.0" + fs-extra: "npm:^10.0.0" + klaw-sync: "npm:^6.0.0" + minimist: "npm:^1.2.6" + open: "npm:^7.4.2" + picocolors: "npm:^1.1.1" + semver: "npm:^7.5.3" + slash: "npm:^3.0.0" + tmp: "npm:^0.0.33" + yaml: "npm:^2.2.2" + bin: + patch-package: index.js + checksum: 10c0/6926104529cbf56b4cc5ed1a1c8c77e9414b516e760e7b7fd5e152620736eef5c50827d1700bcad21b2cf88d354fb9352c56156d56984de4324a2fbf3576f5d3 + languageName: node + linkType: hard + +"@xml-tools/parser@npm:^1.0.11": + version: 1.0.11 + resolution: "@xml-tools/parser@npm:1.0.11" + dependencies: + chevrotain: "npm:7.1.1" + checksum: 10c0/5abc75163d6b2ac8e9006a54576523513535953237463297137c5a3665ce1b9d220b77b6dbb68ab93df3fab40bbc98bbb10e90dd690fd7646fdb021323827971 + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + "abbrev@npm:^3.0.0": version: 3.0.1 resolution: "abbrev@npm:3.0.1" @@ -2653,7 +4074,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -2662,7 +4083,25 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.10.0, acorn@npm:^8.5.0, acorn@npm:^8.9.0": +"acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^7.1.1": + version: 7.4.1 + resolution: "acorn@npm:7.4.1" + bin: + acorn: bin/acorn + checksum: 10c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 + languageName: node + linkType: hard + +"acorn@npm:^8.0.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.14.1, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.9.0": version: 8.14.1 resolution: "acorn@npm:8.14.1" bin: @@ -2714,7 +4153,7 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": +"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 @@ -2814,6 +4253,20 @@ __metadata: languageName: node linkType: hard +"are-docs-informative@npm:^0.0.2": + version: 0.0.2 + resolution: "are-docs-informative@npm:0.0.2" + checksum: 10c0/f0326981bd699c372d268b526b170a28f2e1aec2cf99d7de0686083528427ecdf6ae41fef5d9988e224a5616298af747ad8a76e7306b0a7c97cc085a99636d60 + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -3007,6 +4460,15 @@ __metadata: languageName: node linkType: hard +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.7": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" @@ -3145,6 +4607,13 @@ __metadata: languageName: node linkType: hard +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -3152,6 +4621,17 @@ __metadata: languageName: node linkType: hard +"bcp-47@npm:2.1.0": + version: 2.1.0 + resolution: "bcp-47@npm:2.1.0" + dependencies: + is-alphabetical: "npm:^2.0.0" + is-alphanumerical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + checksum: 10c0/0b461b6d5bad215665e59bc57c4e1489312da541612558629e4f3d3538b16ce6c2709a4b62ec9ed6fca7a339740c27df6a454d5821a849b3df5ff7e697372885 + languageName: node + linkType: hard + "better-path-resolve@npm:1.0.0": version: 1.0.0 resolution: "better-path-resolve@npm:1.0.0" @@ -3175,6 +4655,13 @@ __metadata: languageName: node linkType: hard +"binary-searching@npm:^2.0.5": + version: 2.0.5 + resolution: "binary-searching@npm:2.0.5" + checksum: 10c0/914ccf15d4c989a8900e5617e2b6ec77a016f894b3833eaa5720a310214420dbd5d8eb577c158f99d25769968225c522cc37580c8d2ed46cc469f9d0365b7f15 + languageName: node + linkType: hard + "boolify@npm:^1.0.1": version: 1.0.1 resolution: "boolify@npm:1.0.1" @@ -3249,6 +4736,13 @@ __metadata: languageName: node linkType: hard +"builtin-modules@npm:3.3.0, builtin-modules@npm:^3.3.0": + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a + languageName: node + linkType: hard + "bundle-name@npm:^3.0.0": version: 3.0.0 resolution: "bundle-name@npm:3.0.0" @@ -3258,6 +4752,13 @@ __metadata: languageName: node linkType: hard +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + "cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" @@ -3390,9 +4891,16 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001713 - resolution: "caniuse-lite@npm:1.0.30001713" - checksum: 10c0/f5468abfe73ce30e29cc8bde2ea67df2aab69032bdd93345e0640efefb76b7901c84fe1d28d591a797e65fe52fc24cae97060bb5552f9f9740322aff95ce2f9d + version: 1.0.30001714 + resolution: "caniuse-lite@npm:1.0.30001714" + checksum: 10c0/b0e3372f018c5c177912f0282af98049057d83c80846293a4e3df728644a622db42a9e8971d6b7708d76e0fd4e9f6d5ce93802cf4e6818de80fdf371dc0f6a06 + languageName: node + linkType: hard + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350 languageName: node linkType: hard @@ -3437,6 +4945,43 @@ __metadata: languageName: node linkType: hard +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 + languageName: node + linkType: hard + +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 + languageName: node + linkType: hard + +"character-parser@npm:^2.2.0": + version: 2.2.0 + resolution: "character-parser@npm:2.2.0" + dependencies: + is-regex: "npm:^1.0.3" + checksum: 10c0/5a8d3eff2c912a6878c84e2ebf9d42524e858aa7e1a1c7e8bb79ab54da109ad008fe9057a9d2b3230541d7ff858eda98983a2ae15db57ba01af2e989d29e932e + languageName: node + linkType: hard + +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 + languageName: node + linkType: hard + "chardet@npm:^0.7.0": version: 0.7.0 resolution: "chardet@npm:0.7.0" @@ -3444,6 +4989,24 @@ __metadata: languageName: node linkType: hard +"chevrotain@npm:7.1.1": + version: 7.1.1 + resolution: "chevrotain@npm:7.1.1" + dependencies: + regexp-to-ast: "npm:0.5.0" + checksum: 10c0/3fbbb7a30fb87a4cd141a28bdfa2851f54fde4099aa92071442b47605dfc5974eee0388ec25a517087fcea4dcc1f0ce6b371bc975591346327829aa83b3c843d + languageName: node + linkType: hard + +"chokidar@npm:4.0.3": + version: 4.0.3 + resolution: "chokidar@npm:4.0.3" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad + languageName: node + linkType: hard + "chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -3470,6 +5033,15 @@ __metadata: languageName: node linkType: hard +"chrono-node@npm:2.8.0": + version: 2.8.0 + resolution: "chrono-node@npm:2.8.0" + dependencies: + dayjs: "npm:^1.10.0" + checksum: 10c0/77ff6eb95c4e42c874c1acfadfff6066801513c39324baecac9bebcae8e422990f81d89bdae9b09015d4b84cf0ff84a90b4989f95c0cb031f529d4b8cdc0e9d1 + languageName: node + linkType: hard + "ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": version: 3.9.0 resolution: "ci-info@npm:3.9.0" @@ -3477,6 +5049,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^4.0.0": + version: 4.2.0 + resolution: "ci-info@npm:4.2.0" + checksum: 10c0/37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058 + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": version: 1.4.3 resolution: "cjs-module-lexer@npm:1.4.3" @@ -3493,6 +5072,15 @@ __metadata: languageName: node linkType: hard +"clean-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "clean-regexp@npm:1.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 + languageName: node + linkType: hard + "cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" @@ -3601,6 +5189,20 @@ __metadata: languageName: node linkType: hard +"colord@npm:^2.9.1": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 + languageName: node + linkType: hard + +"colorette@npm:^2.0.20": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + "commander@npm:2.6.0": version: 2.6.0 resolution: "commander@npm:2.6.0" @@ -3615,6 +5217,13 @@ __metadata: languageName: node linkType: hard +"comment-parser@npm:1.4.1, comment-parser@npm:^1.4.0, comment-parser@npm:^1.4.1": + version: 1.4.1 + resolution: "comment-parser@npm:1.4.1" + checksum: 10c0/d6c4be3f5be058f98b24f2d557f745d8fe1cc9eb75bebbdccabd404a0e1ed41563171b16285f593011f8b6a5ec81f564fb1f2121418ac5cbf0f49255bf0840dd + languageName: node + linkType: hard + "common-tags@npm:^1.4.0, common-tags@npm:^1.8.2": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -3629,6 +5238,18 @@ __metadata: languageName: node linkType: hard +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.0.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a + languageName: node + linkType: hard + "concurrently@npm:^3.4.0": version: 3.6.1 resolution: "concurrently@npm:3.6.1" @@ -3666,7 +5287,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.40.0": +"core-js-compat@npm:^3.38.1, core-js-compat@npm:^3.40.0": version: 3.41.0 resolution: "core-js-compat@npm:3.41.0" dependencies: @@ -3689,6 +5310,23 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:9.0.0": + version: 9.0.0 + resolution: "cosmiconfig@npm:9.0.0" + dependencies: + env-paths: "npm:^2.2.1" + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1c1703be4f02a250b1d6ca3267e408ce16abfe8364193891afc94c2d5c060b69611fdc8d97af74b7e6d5d1aac0ab2fb94d6b079573146bc2d756c2484ce5f0ee + languageName: node + linkType: hard + "cp-file@npm:^3.1.0": version: 3.2.0 resolution: "cp-file@npm:3.2.0" @@ -3747,6 +5385,13 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + "cross-env@npm:^3.1.4": version: 3.2.4 resolution: "cross-env@npm:3.2.4" @@ -3781,6 +5426,16 @@ __metadata: languageName: node linkType: hard +"css-tree@npm:3.1.0": + version: 3.1.0 + resolution: "css-tree@npm:3.1.0" + dependencies: + mdn-data: "npm:2.12.2" + source-map-js: "npm:^1.0.1" + checksum: 10c0/b5715852c2f397c715ca00d56ec53fc83ea596295ae112eb1ba6a1bda3b31086380e596b1d8c4b980fe6da09e7d0fc99c64d5bb7313030dd0fba9c1415f30979 + languageName: node + linkType: hard + "css-tree@npm:^2.3.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" @@ -3791,6 +5446,26 @@ __metadata: languageName: node linkType: hard +"css@npm:^3.0.0": + version: 3.0.0 + resolution: "css@npm:3.0.0" + dependencies: + inherits: "npm:^2.0.4" + source-map: "npm:^0.6.1" + source-map-resolve: "npm:^0.6.0" + checksum: 10c0/c17cb4a46a39c11b00225f1314158a892828af34cdf3badc7e88084882e9f414e4902a1d59231c0854f310af30bde343fd8a9e79c6001426fe88af45d3312fe2 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + "currently-unhandled@npm:^0.4.1": version: 0.4.1 resolution: "currently-unhandled@npm:0.4.1" @@ -3854,7 +5529,14 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"dayjs@npm:^1.10.0": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: 10c0/a3caf6ac8363c7dade9d1ee797848ddcf25c1ace68d9fe8678ecf8ba0675825430de5d793672ec87b24a69bf04a1544b176547b2539982275d5542a7955f35b7 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:4.4.0, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -3882,6 +5564,22 @@ __metadata: languageName: node linkType: hard +"decode-named-character-reference@npm:^1.0.0": + version: 1.1.0 + resolution: "decode-named-character-reference@npm:1.1.0" + dependencies: + character-entities: "npm:^2.0.0" + checksum: 10c0/359c76305b47e67660ec096c5cd3f65972ed75b8a53a40435a7a967cfab3e9516e64b443cbe0c7edcf5ab77f65a6924f12fb1872b1e09e2f044f28f4fd10996a + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -3917,7 +5615,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.2.2": +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 @@ -3982,6 +5680,13 @@ __metadata: languageName: node linkType: hard +"dequal@npm:^2.0.0": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -3989,6 +5694,15 @@ __metadata: languageName: node linkType: hard +"detect-installed@npm:2.0.4": + version: 2.0.4 + resolution: "detect-installed@npm:2.0.4" + dependencies: + get-installed-path: "npm:^2.0.3" + checksum: 10c0/4d886414201bd68b16bb09a3b092c8aa458b3bcd510d1c896f698954023653394d1ee0576211f03016ebd6e791fe23f917c90b23d1bed6d95972c8577724b90f + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -3996,6 +5710,15 @@ __metadata: languageName: node linkType: hard +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": + version: 1.1.0 + resolution: "devlop@npm:1.1.0" + dependencies: + dequal: "npm:^2.0.0" + checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e + languageName: node + linkType: hard + "didyoumean@npm:^1.2.1": version: 1.2.2 resolution: "didyoumean@npm:1.2.2" @@ -4010,6 +5733,20 @@ __metadata: languageName: node linkType: hard +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diff@npm:^5.0.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -4044,6 +5781,20 @@ __metadata: languageName: node linkType: hard +"dom-accessibility-api@npm:0.7.0": + version: 0.7.0 + resolution: "dom-accessibility-api@npm:0.7.0" + checksum: 10c0/51d3fe283b0b4882442ba7cd7c76d27aa96b57e1854f0373be62c0abfaa95e89f4c1a1b883712814dc52b0a0853147f6de681fae20467a29d3a485df9b7329d8 + languageName: node + linkType: hard + +"dot-properties@npm:^1.0.0": + version: 1.1.0 + resolution: "dot-properties@npm:1.1.0" + checksum: 10c0/0285b2cd32381140794680b2ce3bf8cfea741cb7f8a1e0af3d65e700f868c6c7564dcc00d72691a253d02d8033e9f26d475cbe77444185be5655c459e472e970 + languageName: node + linkType: hard + "dotenv@npm:^8.1.0": version: 8.6.0 resolution: "dotenv@npm:8.6.0" @@ -4069,6 +5820,13 @@ __metadata: languageName: node linkType: hard +"eastasianwidth@npm:0.3.0": + version: 0.3.0 + resolution: "eastasianwidth@npm:0.3.0" + checksum: 10c0/ad232dbc684b66127af4c2393d0157cb4f00c8b66dc6175476e835fa78fb575d147096db46f58ab97c92704ec05e6eff8093c73be0e3f6c8ccdbbcd99a669695 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -4090,6 +5848,13 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^10.2.1": + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d + languageName: node + linkType: hard + "emoji-regex@npm:^7.0.1": version: 7.0.3 resolution: "emoji-regex@npm:7.0.3" @@ -4120,7 +5885,17 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.4.1": +"enhanced-resolve@npm:^5.17.1": + version: 5.18.1 + resolution: "enhanced-resolve@npm:5.18.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/4cffd9b125225184e2abed9fdf0ed3dbd2224c873b165d0838fd066cde32e0918626cba2f1f4bf6860762f13a7e2364fd89a82b99566be2873d813573ac71846 + languageName: node + linkType: hard + +"enquirer@npm:2.4.1, enquirer@npm:^2.4.1": version: 2.4.1 resolution: "enquirer@npm:2.4.1" dependencies: @@ -4130,7 +5905,14 @@ __metadata: languageName: node linkType: hard -"env-paths@npm:^2.2.0": +"entities@npm:^4.5.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": version: 2.2.1 resolution: "env-paths@npm:2.2.1" checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 @@ -4144,7 +5926,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1": +"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1, error-ex@npm:^1.3.2": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -4250,6 +6032,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.5.3": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": version: 1.1.1 resolution: "es-object-atoms@npm:1.1.1" @@ -4298,6 +6087,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -4312,10 +6108,25 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 +"eslint-compat-utils@npm:^0.5.0, eslint-compat-utils@npm:^0.5.1": + version: 0.5.1 + resolution: "eslint-compat-utils@npm:0.5.1" + dependencies: + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/325e815205fab70ebcd379f6d4b5d44c7d791bb8dfe0c9888233f30ebabd9418422595b53a781b946c768d9244d858540e5e6129a6b3dd6d606f467d599edc6c + languageName: node + linkType: hard + +"eslint-compat-utils@npm:^0.6.0, eslint-compat-utils@npm:^0.6.4": + version: 0.6.5 + resolution: "eslint-compat-utils@npm:0.6.5" + dependencies: + semver: "npm:^7.5.4" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/f3519e1460ec82c6967c4b0132801924bf5c17328999014f444ec12f075b151e992d1ebf378cb8eb0b2e00b3d04e0eaac80897209121fd115f857598b4588393 languageName: node linkType: hard @@ -4346,6 +6157,17 @@ __metadata: languageName: node linkType: hard +"eslint-config-prettier@npm:^10.1.2": + version: 10.1.2 + resolution: "eslint-config-prettier@npm:10.1.2" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/c22c8e29193cc8fd70becf1c2dd072513f2b3004a175c2a49404c79d1745ba4dc0edc2afd00d16b0e26d24f95813a0469e7445a25104aec218f6d84cdb1697e9 + languageName: node + linkType: hard + "eslint-config-prettier@npm:^9.1.0": version: 9.1.0 resolution: "eslint-config-prettier@npm:9.1.0" @@ -4368,6 +6190,72 @@ __metadata: languageName: node linkType: hard +"eslint-import-resolver-typescript@npm:^4.3.2": + version: 4.3.2 + resolution: "eslint-import-resolver-typescript@npm:4.3.2" + dependencies: + debug: "npm:^4.4.0" + get-tsconfig: "npm:^4.10.0" + is-bun-module: "npm:^2.0.0" + stable-hash: "npm:^0.0.5" + tinyglobby: "npm:^0.2.12" + unrs-resolver: "npm:^1.4.1" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 10c0/76af6e18e0363a62a4b3e92c043dc2060c5e1f84973f596efe0d2f5d838d572d3714136310d2c68257f50b829ab88e79c534a22a57752195b780642fc7d5e943 + languageName: node + linkType: hard + +"eslint-json-compat-utils@npm:^0.2.1": + version: 0.2.1 + resolution: "eslint-json-compat-utils@npm:0.2.1" + dependencies: + esquery: "npm:^1.6.0" + peerDependencies: + eslint: "*" + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + "@eslint/json": + optional: true + checksum: 10c0/2eb584916150454da891547042d417b31ed4df9b7a8c47561c3cda08d0d9e66c698259cf3dbb4ecc139a6620c793aeba40109f572e47f4fe7b3185b9c1d388d7 + languageName: node + linkType: hard + +"eslint-mdx@npm:^3.4.0": + version: 3.4.0 + resolution: "eslint-mdx@npm:3.4.0" + dependencies: + acorn: "npm:^8.14.1" + acorn-jsx: "npm:^5.3.2" + espree: "npm:^9.6.1 || ^10.3.0" + estree-util-visit: "npm:^2.0.0" + remark-mdx: "npm:^3.1.0" + remark-parse: "npm:^11.0.0" + remark-stringify: "npm:^11.0.0" + synckit: "npm:^0.11.2" + tslib: "npm:^2.8.1" + unified: "npm:^11.0.5" + unified-engine: "npm:^11.2.2" + unist-util-visit: "npm:^5.0.0" + uvu: "npm:^0.5.6" + vfile: "npm:^6.0.3" + peerDependencies: + eslint: ">=8.0.0" + remark-lint-file-extension: "*" + peerDependenciesMeta: + remark-lint-file-extension: + optional: true + checksum: 10c0/997dc8dfd6da2bcfe21124ea60b07e73c9e62345463dc531bfdd76d5895c2aa5a089bcae9c8142910511f8d0f4bbe2131a3a4dfd85ff8415aefe7a5bb49d9e28 + languageName: node + linkType: hard + "eslint-module-utils@npm:^2.12.0": version: 2.12.0 resolution: "eslint-module-utils@npm:2.12.0" @@ -4380,6 +6268,57 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-css@npm:^0.11.0": + version: 0.11.0 + resolution: "eslint-plugin-css@npm:0.11.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.3.0" + colord: "npm:^2.9.1" + eslint-compat-utils: "npm:^0.5.0" + known-css-properties: "npm:^0.34.0" + postcss-value-parser: "npm:^4.1.0" + peerDependencies: + eslint: ">=7.0.0" + checksum: 10c0/27e958289e59cb0e31fbc3f84666720739f12150ca71c25d50155462b1573da684bcd302f57a1de38f1981e297505a4486266e87475ebd8966dedab87a3d3c53 + languageName: node + linkType: hard + +"eslint-plugin-es-x@npm:^7.8.0": + version: 7.8.0 + resolution: "eslint-plugin-es-x@npm:7.8.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.1.2" + "@eslint-community/regexpp": "npm:^4.11.0" + eslint-compat-utils: "npm:^0.5.1" + peerDependencies: + eslint: ">=8" + checksum: 10c0/002fda8c029bc5da41e24e7ac11654062831d675fc4f5f20d0de460e24bf1e05cd559000678ef3e46c48641190f4fc07ae3d57aa5e8b085ef5f67e5f63742614 + languageName: node + linkType: hard + +"eslint-plugin-import-x@npm:^4.10.3": + version: 4.10.5 + resolution: "eslint-plugin-import-x@npm:4.10.5" + dependencies: + "@pkgr/core": "npm:^0.2.4" + "@types/doctrine": "npm:^0.0.9" + "@typescript-eslint/utils": "npm:^8.30.1" + debug: "npm:^4.4.0" + doctrine: "npm:^3.0.0" + eslint-import-resolver-node: "npm:^0.3.9" + get-tsconfig: "npm:^4.10.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.3 || ^10.0.1" + semver: "npm:^7.7.1" + stable-hash: "npm:^0.0.5" + tslib: "npm:^2.8.1" + unrs-resolver: "npm:^1.5.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + checksum: 10c0/956df89003c97b9fcc2632754495944905195da27ef050efc9a7e0e9670ef220dbc9dc6f689322fb6cb2e29bc7395b5452b83df0beb95f7432aaf052e43db129 + languageName: node + linkType: hard + "eslint-plugin-import@npm:^2.27.5": version: 2.31.0 resolution: "eslint-plugin-import@npm:2.31.0" @@ -4461,6 +6400,45 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jsdoc@npm:^50.6.9": + version: 50.6.9 + resolution: "eslint-plugin-jsdoc@npm:50.6.9" + dependencies: + "@es-joy/jsdoccomment": "npm:~0.49.0" + are-docs-informative: "npm:^0.0.2" + comment-parser: "npm:1.4.1" + debug: "npm:^4.3.6" + escape-string-regexp: "npm:^4.0.0" + espree: "npm:^10.1.0" + esquery: "npm:^1.6.0" + parse-imports: "npm:^2.1.1" + semver: "npm:^7.6.3" + spdx-expression-parse: "npm:^4.0.0" + synckit: "npm:^0.9.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/cad199d262c2e889a3af4e402f6adc624e4273b3d5ca1940e7227b37d87af8090ca3444f7fff57f58dab9a827faed8722fc2f5d4daf31ec085eb00e9f5a338a7 + languageName: node + linkType: hard + +"eslint-plugin-jsonc@npm:^2.20.0": + version: 2.20.0 + resolution: "eslint-plugin-jsonc@npm:2.20.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.5.1" + eslint-compat-utils: "npm:^0.6.4" + eslint-json-compat-utils: "npm:^0.2.1" + espree: "npm:^9.6.1 || ^10.3.0" + graphemer: "npm:^1.4.0" + jsonc-eslint-parser: "npm:^2.4.0" + natural-compare: "npm:^1.4.0" + synckit: "npm:^0.6.2 || ^0.7.3 || ^0.10.3" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/9fedfd7b84ec6e777a3777745526e2ad457321714046c4f0491c156e5ae2c44dc6dbc6725c3fa52c8c32ea28be70831c6e9efc012c8f56cd18b540c0b6569986 + languageName: node + linkType: hard + "eslint-plugin-jsx-a11y@npm:^6.7.1": version: 6.10.2 resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" @@ -4486,6 +6464,63 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-markup@npm:^1.0.0": + version: 1.0.1 + resolution: "eslint-plugin-markup@npm:1.0.1" + dependencies: + "@pkgr/core": "npm:^0.2.4" + eslint-plugin-utils: "npm:^0.4.0" + markuplint: "npm:^4.12.0" + synckit: "npm:^0.11.4" + peerDependencies: + "@typescript-eslint/utils": ">=7.0.0" + eslint: ">=5.0.0" + peerDependenciesMeta: + "@typescript-eslint/utils": + optional: true + checksum: 10c0/534cc40e7e8a3b54e027bc7233212b61cf1f30864bdb95a26643a8579f264d660324d880dc1b312c2be151bd1d641d476860405ec22af9ea3b62222bc30d2b66 + languageName: node + linkType: hard + +"eslint-plugin-mdx@npm:^3.4.0": + version: 3.4.0 + resolution: "eslint-plugin-mdx@npm:3.4.0" + dependencies: + eslint-mdx: "npm:^3.4.0" + mdast-util-from-markdown: "npm:^2.0.2" + mdast-util-mdx: "npm:^3.0.0" + micromark-extension-mdxjs: "npm:^3.0.0" + remark-mdx: "npm:^3.1.0" + remark-parse: "npm:^11.0.0" + remark-stringify: "npm:^11.0.0" + synckit: "npm:^0.11.2" + tslib: "npm:^2.8.1" + unified: "npm:^11.0.5" + vfile: "npm:^6.0.3" + peerDependencies: + eslint: ">=8.0.0" + checksum: 10c0/1fd4feea1e0baa2be2aac34059bb9d4f18d7479a78a0218c15cd816e89bd6fb5a205b2f8a1eed613c9bb88cf82dcccf53f56bfb70faf990873d3ceb385bc0aa9 + languageName: node + linkType: hard + +"eslint-plugin-n@npm:^17.17.0": + version: 17.17.0 + resolution: "eslint-plugin-n@npm:17.17.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.5.0" + enhanced-resolve: "npm:^5.17.1" + eslint-plugin-es-x: "npm:^7.8.0" + get-tsconfig: "npm:^4.8.1" + globals: "npm:^15.11.0" + ignore: "npm:^5.3.2" + minimatch: "npm:^9.0.5" + semver: "npm:^7.6.3" + peerDependencies: + eslint: ">=8.23.0" + checksum: 10c0/ac6b2e2bbdc8f49a84be1bf1add8a412093a56fe95e8820610ecd5185fa00a348197a06fe3fe36080c09dc5d5a8f0f4f543cb3cf193265ace3fd071a79a07e88 + languageName: node + linkType: hard + "eslint-plugin-node-dependencies@npm:^0.12.0": version: 0.12.0 resolution: "eslint-plugin-node-dependencies@npm:0.12.0" @@ -4502,6 +6537,37 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-prettier@npm:^5.2.6": + version: 5.2.6 + resolution: "eslint-plugin-prettier@npm:5.2.6" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + synckit: "npm:^0.11.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" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 10c0/9911740a5edac7933d92671381908671c61ffa32a3cee7aed667ebab89831ee2c0b69eb9530f68dbe172ca9d4b3fa3d47350762dc1eb096a3ce125fa31c0e616 + languageName: node + linkType: hard + +"eslint-plugin-promise@npm:^7.2.1": + version: 7.2.1 + resolution: "eslint-plugin-promise@npm:7.2.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/d494982faeeafbd2aa5fae9cbceca546169a8399000f72d5d940fa5c4ba554612903bcafbb8033647179e5d21ccf1d621b433d089695f7f47ce3d9fcf4cd0abf + languageName: node + linkType: hard + "eslint-plugin-react-hooks@npm:^4.6.0": version: 4.6.2 resolution: "eslint-plugin-react-hooks@npm:4.6.2" @@ -4534,19 +6600,134 @@ __metadata: string.prototype.matchall: "npm:^4.0.12" string.prototype.repeat: "npm:^1.0.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/c850bfd556291d4d9234f5ca38db1436924a1013627c8ab1853f77cac73ec19b020e861e6c7b783436a48b6ffcdfba4547598235a37ad4611b6739f65fd8ad57 + languageName: node + linkType: hard + +"eslint-plugin-regexp@npm:^2.7.0": + version: 2.7.0 + resolution: "eslint-plugin-regexp@npm:2.7.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.11.0" + comment-parser: "npm:^1.4.0" + jsdoc-type-pratt-parser: "npm:^4.0.0" + refa: "npm:^0.12.1" + regexp-ast-analysis: "npm:^0.7.1" + scslre: "npm:^0.3.0" + peerDependencies: + eslint: ">=8.44.0" + checksum: 10c0/c4882b441bab92e89c82cb27d6650540ad318750df5e99b42989f0fdf9ea381a9156de8470f1221483f98b5dc9cd6c493da73ccc18d94dee8d4a0f0ce78bd122 + languageName: node + linkType: hard + +"eslint-plugin-simple-import-sort@npm:^12.1.1": + version: 12.1.1 + resolution: "eslint-plugin-simple-import-sort@npm:12.1.1" + peerDependencies: + eslint: ">=5.0.0" + checksum: 10c0/0ad1907ad9ddbadd1db655db0a9d0b77076e274b793a77b982c8525d808d868e6ecfce24f3a411e8a1fa551077387f9ebb38c00956073970ebd7ee6a029ce2b3 + languageName: node + linkType: hard + +"eslint-plugin-sonarjs@npm:^3.0.2": + version: 3.0.2 + resolution: "eslint-plugin-sonarjs@npm:3.0.2" + dependencies: + "@eslint-community/regexpp": "npm:4.12.1" + builtin-modules: "npm:3.3.0" + bytes: "npm:3.1.2" + functional-red-black-tree: "npm:1.0.1" + jsx-ast-utils: "npm:3.3.5" + minimatch: "npm:9.0.5" + scslre: "npm:0.3.0" + semver: "npm:7.7.1" + typescript: "npm:^5" + peerDependencies: + eslint: ^8.0.0 || ^9.0.0 + checksum: 10c0/a06fbf0a5994782901d5078bf9cb5735b3ec5d146f303b53e22f7b499e49b7f193966a23a3b830e00c827cb79a79f9dd8b12e5ebcfd42ee9536303a734696be6 + languageName: node + linkType: hard + +"eslint-plugin-testing-library@npm:^6.2.0": + version: 6.5.0 + resolution: "eslint-plugin-testing-library@npm:6.5.0" + dependencies: + "@typescript-eslint/utils": "npm:^5.62.0" + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + checksum: 10c0/d5d6f3e11c7a7fe90f19879fb8ff456889aed66668722b8fcb5e13f4a2f1ff2ce8cda3d4c2f5ff5072280378cf262096bdde226d7934ea47500c8fc042a0308a + languageName: node + linkType: hard + +"eslint-plugin-toml@npm:^0.12.0": + version: 0.12.0 + resolution: "eslint-plugin-toml@npm:0.12.0" + dependencies: + debug: "npm:^4.1.1" + eslint-compat-utils: "npm:^0.6.0" + lodash: "npm:^4.17.19" + toml-eslint-parser: "npm:^0.10.0" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/5f75232906bb50e856994a753414c8459a45c006d09f9c006a2d3c96cf0c06a068c03afae12de6531402832e9edb8023cc244783daf98e201b98a8465a0e6aad + languageName: node + linkType: hard + +"eslint-plugin-unicorn@npm:^56.0.1": + version: 56.0.1 + resolution: "eslint-plugin-unicorn@npm:56.0.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.24.7" + "@eslint-community/eslint-utils": "npm:^4.4.0" + ci-info: "npm:^4.0.0" + clean-regexp: "npm:^1.0.0" + core-js-compat: "npm:^3.38.1" + esquery: "npm:^1.6.0" + globals: "npm:^15.9.0" + indent-string: "npm:^4.0.0" + is-builtin-module: "npm:^3.2.1" + jsesc: "npm:^3.0.2" + pluralize: "npm:^8.0.0" + read-pkg-up: "npm:^7.0.1" + regexp-tree: "npm:^0.1.27" + regjsparser: "npm:^0.10.0" + semver: "npm:^7.6.3" + strip-indent: "npm:^3.0.0" + peerDependencies: + eslint: ">=8.56.0" + checksum: 10c0/3b853ecde6ab597b12e28b962ba6ad7d3594f7f066d90135db2d3366ac13361c72500119163e13e1c38ca6fbdd331b1cc31dce9e8673880bff050fe51d6c64db languageName: node linkType: hard -"eslint-plugin-testing-library@npm:^6.2.0": - version: 6.5.0 - resolution: "eslint-plugin-testing-library@npm:6.5.0" +"eslint-plugin-utils@npm:^0.4.0": + version: 0.4.1 + resolution: "eslint-plugin-utils@npm:0.4.1" dependencies: - "@typescript-eslint/utils": "npm:^5.62.0" + "@pkgr/core": "npm:^0.2.4" peerDependencies: - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/d5d6f3e11c7a7fe90f19879fb8ff456889aed66668722b8fcb5e13f4a2f1ff2ce8cda3d4c2f5ff5072280378cf262096bdde226d7934ea47500c8fc042a0308a + "@typescript-eslint/utils": ">=7.0.0" + eslint: ">=5.0.0" + peerDependenciesMeta: + "@typescript-eslint/utils": + optional: true + checksum: 10c0/0fe41d98c5b2dff697b4f846b79107e0da105c2cb984830221e43ab350a542c7b07c97bc9c4f943fe6ae071859505269cc252cde21ab9d2986a85e759bc655e3 + languageName: node + linkType: hard + +"eslint-plugin-yml@npm:^1.17.0": + version: 1.17.0 + resolution: "eslint-plugin-yml@npm:1.17.0" + dependencies: + debug: "npm:^4.3.2" + escape-string-regexp: "npm:4.0.0" + eslint-compat-utils: "npm:^0.6.0" + natural-compare: "npm:^1.4.0" + yaml-eslint-parser: "npm:^1.2.1" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/3923811eb214b44df80f8b203aa2773dc15d6a766706a5ca48e6511f1345372fada0d958c89fad656a1b699bfdf28f59d4c203a8614ad0366b3018258c3c0ace languageName: node linkType: hard @@ -4632,6 +6813,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:10.3.0, espree@npm:^10.1.0, espree@npm:^9.6.1 || ^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: "npm:^8.14.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + languageName: node + linkType: hard + "espree@npm:^9.0.0, espree@npm:^9.3.1, espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -4653,7 +6845,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0, esquery@npm:^1.4.2": +"esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -4685,6 +6877,23 @@ __metadata: languageName: node linkType: hard +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b + languageName: node + linkType: hard + +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/unist": "npm:^3.0.0" + checksum: 10c0/acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39 + languageName: node + linkType: hard + "estree-walker@npm:^3.0.0, estree-walker@npm:^3.0.3": version: 3.0.3 resolution: "estree-walker@npm:3.0.3" @@ -4757,7 +6966,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.7.0": +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: "npm:^1.0.1" + checksum: 10c0/205a60497422746d1c3acbc1d65bd609b945066f239a2b785e69a7a651ac4cbeb4e08555b1ea0023abbe855e6fcb5bbf27d0b371367fdccd303d4fb2b4d66845 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -4777,6 +6995,13 @@ __metadata: languageName: node linkType: hard +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + languageName: node + linkType: hard + "extendable-error@npm:^0.1.5": version: 0.1.7 resolution: "extendable-error@npm:0.1.7" @@ -4802,6 +7027,13 @@ __metadata: languageName: node linkType: hard +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + "fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" @@ -4829,6 +7061,13 @@ __metadata: languageName: node linkType: hard +"fast-safe-stringify@npm:^2.0.6": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.19.1 resolution: "fastq@npm:1.19.1" @@ -4941,6 +7180,15 @@ __metadata: languageName: node linkType: hard +"find-yarn-workspace-root@npm:^2.0.0": + version: 2.0.0 + resolution: "find-yarn-workspace-root@npm:2.0.0" + dependencies: + micromatch: "npm:^4.0.2" + checksum: 10c0/b0d3843013fbdaf4e57140e0165889d09fa61745c9e85da2af86e54974f4cc9f1967e40f0d8fc36a79d53091f0829c651d06607d552582e53976f3cd8f4e5689 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.2.0 resolution: "flat-cache@npm:3.2.0" @@ -4992,6 +7240,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.0.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + "fs-extra@npm:^7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -5077,6 +7336,13 @@ __metadata: languageName: node linkType: hard +"functional-red-black-tree@npm:1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -5098,6 +7364,15 @@ __metadata: languageName: node linkType: hard +"get-installed-path@npm:^2.0.3": + version: 2.1.1 + resolution: "get-installed-path@npm:2.1.1" + dependencies: + global-modules: "npm:1.0.0" + checksum: 10c0/0b7f4abf7f847fe288be9783c8070c4b04e153d2e18747d7fa11700eb4f54da8cb2dc5372f028a6df197f6ce2552a2eb7fdf904652c6a36fbfc81caa913d5322 + languageName: node + linkType: hard + "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": version: 1.3.0 resolution: "get-intrinsic@npm:1.3.0" @@ -5133,6 +7408,13 @@ __metadata: languageName: node linkType: hard +"get-stdin@npm:9.0.0": + version: 9.0.0 + resolution: "get-stdin@npm:9.0.0" + checksum: 10c0/7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b + languageName: node + linkType: hard + "get-stdin@npm:^4.0.1": version: 4.0.1 resolution: "get-stdin@npm:4.0.1" @@ -5172,6 +7454,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.10.0, get-tsconfig@npm:^4.8.1": + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/c9b5572c5118923c491c04285c73bd55b19e214992af957c502a3be0fc0043bb421386ffd45ca3433c0a7fba81221ca300479e8393960acf15d0ed4563f38a86 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -5190,35 +7481,35 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.4.5 - resolution: "glob@npm:10.4.5" +"glob@npm:11.0.1, glob@npm:^11.0.0": + version: 11.0.1 + resolution: "glob@npm:11.0.1" dependencies: foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" + jackspeak: "npm:^4.0.1" + minimatch: "npm:^10.0.0" minipass: "npm:^7.1.2" package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" + path-scurry: "npm:^2.0.0" bin: glob: dist/esm/bin.mjs - checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + checksum: 10c0/2b32588be52e9e90f914c7d8dec32f3144b81b84054b0f70e9adfebf37cd7014570489f2a79d21f7801b9a4bd4cca94f426966bfd00fb64a5b705cfe10da3a03 languageName: node linkType: hard -"glob@npm:^11.0.0": - version: 11.0.1 - resolution: "glob@npm:11.0.1" +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: "npm:^3.1.0" - jackspeak: "npm:^4.0.1" - minimatch: "npm:^10.0.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" minipass: "npm:^7.1.2" package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^2.0.0" + path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs - checksum: 10c0/2b32588be52e9e90f914c7d8dec32f3144b81b84054b0f70e9adfebf37cd7014570489f2a79d21f7801b9a4bd4cca94f426966bfd00fb64a5b705cfe10da3a03 + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e languageName: node linkType: hard @@ -5235,7 +7526,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -5249,6 +7540,30 @@ __metadata: languageName: node linkType: hard +"global-modules@npm:1.0.0, global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: "npm:^1.0.1" + is-windows: "npm:^1.0.1" + resolve-dir: "npm:^1.0.0" + checksum: 10c0/7d91ecf78d4fcbc966b2d89c1400df273afea795bc8cadf39857ee1684e442065621fd79413ff5fcd9e90c6f1b2dc0123e644fa0b7811f987fd54c6b9afad858 + languageName: node + linkType: hard + +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: "npm:^2.0.2" + homedir-polyfill: "npm:^1.0.1" + ini: "npm:^1.3.4" + is-windows: "npm:^1.0.1" + which: "npm:^1.2.14" + checksum: 10c0/d8037e300f1dc04d5d410d16afa662e71bfad22dcceba6c9727bb55cc273b8988ca940b3402f62e5392fd261dd9924a9a73a865ef2000219461f31f3fc86be06 + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -5265,6 +7580,20 @@ __metadata: languageName: node linkType: hard +"globals@npm:^15.11.0, globals@npm:^15.9.0": + version: 15.15.0 + resolution: "globals@npm:15.15.0" + checksum: 10c0/f9ae80996392ca71316495a39bec88ac43ae3525a438b5626cd9d5ce9d5500d0a98a266409605f8cd7241c7acf57c354a48111ea02a767ba4f374b806d6861fe + languageName: node + linkType: hard + +"globals@npm:^16.0.0": + version: 16.0.0 + resolution: "globals@npm:16.0.0" + checksum: 10c0/8906d5f01838df64a81d6c2a7b7214312e2216cf65c5ed1546dc9a7d0febddf55ffa906cf04efd5b01eec2534d6f14859a89535d1a68241832810e41ef3fd5bb + languageName: node + linkType: hard + "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -5336,7 +7665,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -5421,6 +7750,13 @@ __metadata: languageName: node linkType: hard +"has-yarn@npm:3.0.0": + version: 3.0.0 + resolution: "has-yarn@npm:3.0.0" + checksum: 10c0/38c76618cb764e4a98ea114a3938e0bed6ceafb6bacab2ffb32e7c7d1e18b5e09cd03387d507ee87072388e1f20b1f80947fee62c41fc450edfbbdc02a665787 + languageName: node + linkType: hard + "hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -5430,6 +7766,15 @@ __metadata: languageName: node linkType: hard +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: "npm:^1.0.0" + checksum: 10c0/3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -5446,6 +7791,22 @@ __metadata: languageName: node linkType: hard +"hosted-git-info@npm:^7.0.0": + version: 7.0.2 + resolution: "hosted-git-info@npm:7.0.2" + dependencies: + lru-cache: "npm:^10.0.1" + checksum: 10c0/b19dbd92d3c0b4b0f1513cf79b0fc189f54d6af2129eeb201de2e9baaa711f1936929c848b866d9c8667a0f956f34bf4f07418c12be1ee9ca74fd9246335ca1f + languageName: node + linkType: hard + +"html-entities@npm:2.6.0": + version: 2.6.0 + resolution: "html-entities@npm:2.6.0" + checksum: 10c0/7c8b15d9ea0cd00dc9279f61bab002ba6ca8a7a0f3c36ed2db3530a67a9621c017830d1d2c1c65beb9b8e3436ea663e9cf8b230472e0e413359399413b27c8b7 + languageName: node + linkType: hard + "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -5531,14 +7892,28 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:7.0.3": + version: 7.0.3 + resolution: "ignore@npm:7.0.3" + checksum: 10c0/8e21637513cbcd888a4873d34d5c651a2e24b3c4c9a6b159335a26bed348c3c386c51d6fab23577f59140e1b226323138fbd50e63882d4568fd12aa6c822029e + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1, ignore@npm:^5.3.2": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard -"import-fresh@npm:^3.2.1": +"ignore@npm:^6.0.0": + version: 6.0.2 + resolution: "ignore@npm:6.0.2" + checksum: 10c0/9a38feac1861906a78ba0f03e8ef3cd6b0526dce2a1a84e1009324b557763afeb9c3ebcc04666b21f7bbf71adda45e76781bb9e2eaa0903d45dcaded634454f5 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.1 resolution: "import-fresh@npm:3.3.1" dependencies: @@ -5560,6 +7935,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:4.1.0, import-meta-resolve@npm:^4.0.0": + version: 4.1.0 + resolution: "import-meta-resolve@npm:4.1.0" + checksum: 10c0/42f3284b0460635ddf105c4ad99c6716099c3ce76702602290ad5cbbcd295700cbc04e4bdf47bacf9e3f1a4cec2e1ff887dabc20458bef398f9de22ddff45ef5 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -5593,7 +7975,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -5607,6 +7989,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:^4.1.2, ini@npm:^4.1.3": + version: 4.1.3 + resolution: "ini@npm:4.1.3" + checksum: 10c0/0d27eff094d5f3899dd7c00d0c04ea733ca03a8eb6f9406ce15daac1a81de022cb417d6eaff7e4342451ffa663389c565ffc68d6825eaf686bf003280b945764 + languageName: node + linkType: hard + "inquirer@npm:^7.3.3": version: 7.3.3 resolution: "inquirer@npm:7.3.3" @@ -5639,6 +8028,13 @@ __metadata: languageName: node linkType: hard +"invert-kv@npm:^3.0.0": + version: 3.0.1 + resolution: "invert-kv@npm:3.0.1" + checksum: 10c0/a3d90951a635e35dea9c9a5fd749e981e9c54e8a362ad80b2253dad03b9257314b7c4e4d250d61bcd79698ccd5f4c6b0c750cd991bb5ce16352bf830e77ea64b + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -5649,6 +8045,23 @@ __metadata: languageName: node linkType: hard +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 + languageName: node + linkType: hard + +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 + languageName: node + linkType: hard + "is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": version: 3.0.5 resolution: "is-array-buffer@npm:3.0.5" @@ -5708,6 +8121,24 @@ __metadata: languageName: node linkType: hard +"is-builtin-module@npm:^3.2.1": + version: 3.2.1 + resolution: "is-builtin-module@npm:3.2.1" + dependencies: + builtin-modules: "npm:^3.3.0" + checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 + languageName: node + linkType: hard + +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" + dependencies: + semver: "npm:^7.7.1" + checksum: 10c0/7d27a0679cfa5be1f5052650391f9b11040cd70c48d45112e312c56bc6b6ca9c9aea70dcce6cc40b1e8947bfff8567a5c5715d3b066fb478522dab46ea379240 + languageName: node + linkType: hard + "is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -5745,6 +8176,13 @@ __metadata: languageName: node linkType: hard +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 + languageName: node + linkType: hard + "is-docker@npm:^2.0.0": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -5763,6 +8201,23 @@ __metadata: languageName: node linkType: hard +"is-empty@npm:^1.0.0": + version: 1.2.0 + resolution: "is-empty@npm:1.2.0" + checksum: 10c0/f0dd6534716f2749586c35f1dcf37a0a5ac31e91d629ae2652b36c7f72c0ce71f0b68f082a6eed95b1af6f84ba31cd757c2343b19507878ed1e532a3383ebaaa + languageName: node + linkType: hard + +"is-expression@npm:^4.0.0": + version: 4.0.0 + resolution: "is-expression@npm:4.0.0" + dependencies: + acorn: "npm:^7.1.1" + object-assign: "npm:^4.1.1" + checksum: 10c0/541831d39d3e7bfc8cecd966d6b0f3c0e6d9055342f17b634fb23e74f51ce90f1bfc3cf231c722fe003a61e8d4f0b9e07244fdaba57f4fc70a163c74006fd5a0 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -5828,6 +8283,13 @@ __metadata: languageName: node linkType: hard +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 + languageName: node + linkType: hard + "is-inside-container@npm:^1.0.0": version: 1.0.0 resolution: "is-inside-container@npm:1.0.0" @@ -5877,6 +8339,20 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + +"is-plain-object@npm:5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + "is-reference@npm:^3.0.0, is-reference@npm:^3.0.1": version: 3.0.3 resolution: "is-reference@npm:3.0.3" @@ -5886,7 +8362,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.2.1": +"is-regex@npm:^1.0.3, is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" dependencies: @@ -6000,14 +8476,14 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.0": +"is-windows@npm:^1.0.0, is-windows@npm:^1.0.1": version: 1.0.2 resolution: "is-windows@npm:1.0.2" checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 languageName: node linkType: hard -"is-wsl@npm:^2.2.0": +"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -6621,6 +9097,13 @@ __metadata: languageName: node linkType: hard +"jsdoc-type-pratt-parser@npm:^4.0.0, jsdoc-type-pratt-parser@npm:~4.1.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: 10c0/7700372d2e733a32f7ea0a1df9cec6752321a5345c11a91b2ab478a031a426e934f16d5c1f15c8566c7b2c10af9f27892a29c2c789039f595470e929a4aa60ea + languageName: node + linkType: hard + "jsesc@npm:^3.0.2": version: 3.1.0 resolution: "jsesc@npm:3.1.0" @@ -6630,6 +9113,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + languageName: node + linkType: hard + "jsesc@npm:~3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -6671,6 +9163,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.2 + resolution: "json-parse-even-better-errors@npm:3.0.2" + checksum: 10c0/147f12b005768abe9fab78d2521ce2b7e1381a118413d634a40e6d907d7d10f5e9a05e47141e96d6853af7cc36d2c834d0a014251be48791e037ff2f13d2b94b + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -6705,7 +9204,7 @@ __metadata: languageName: node linkType: hard -"jsonc-eslint-parser@npm:^2.0.2": +"jsonc-eslint-parser@npm:^2.0.2, jsonc-eslint-parser@npm:^2.4.0": version: 2.4.0 resolution: "jsonc-eslint-parser@npm:2.4.0" dependencies: @@ -6717,6 +9216,20 @@ __metadata: languageName: node linkType: hard +"jsonc@npm:2.0.0": + version: 2.0.0 + resolution: "jsonc@npm:2.0.0" + dependencies: + fast-safe-stringify: "npm:^2.0.6" + graceful-fs: "npm:^4.1.15" + mkdirp: "npm:^0.5.1" + parse-json: "npm:^4.0.0" + strip-bom: "npm:^4.0.0" + strip-json-comments: "npm:^3.0.1" + checksum: 10c0/2f1caae378e975dd47acf4935c55b8da45b54e740aee3ccc92ac3e11f6a667f8d4f9f1d1d1dd52768ac4ef7b00b98feb860fb85df1a0aeff1165aecede19f3f9 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -6729,7 +9242,20 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:3.3.5, jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" dependencies: @@ -6750,6 +9276,15 @@ __metadata: languageName: node linkType: hard +"klaw-sync@npm:^6.0.0": + version: 6.0.0 + resolution: "klaw-sync@npm:6.0.0" + dependencies: + graceful-fs: "npm:^4.1.11" + checksum: 10c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a + languageName: node + linkType: hard + "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -6757,6 +9292,20 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^4.0.3": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a + languageName: node + linkType: hard + +"known-css-properties@npm:^0.34.0": + version: 0.34.0 + resolution: "known-css-properties@npm:0.34.0" + checksum: 10c0/8549969f02b1858554e89faf4548ece37625d0d21b42e8d54fa53184e68e1512ef2531bb15941575ad816361ab7447b598c1b18c1b96ce0a868333d1a68f2e2c + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" @@ -6773,6 +9322,22 @@ __metadata: languageName: node linkType: hard +"lcid@npm:^3.1.1": + version: 3.1.1 + resolution: "lcid@npm:3.1.1" + dependencies: + invert-kv: "npm:^3.0.0" + checksum: 10c0/43a39c39d92d756b9671691bb36ac2667c44c4a7e30f55403dc9c98ca4e7bba8c2b35599e8d7967163d65c1697e0d136596e9a9b9bccbd2292caf915c77416a4 + languageName: node + linkType: hard + +"leven@npm:4.0.0": + version: 4.0.0 + resolution: "leven@npm:4.0.0" + checksum: 10c0/393bd949d93103d9ef487be96321bdb02c2e7695e372193f650642e1ad653c61b03da16bf55e45d442db59c7b6407eb947a7748b5777e48ddf0ada25f8b2a815 + languageName: node + linkType: hard + "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -6797,6 +9362,13 @@ __metadata: languageName: node linkType: hard +"lines-and-columns@npm:^2.0.3": + version: 2.0.4 + resolution: "lines-and-columns@npm:2.0.4" + checksum: 10c0/4db28bf065cd7ad897c0700f22d3d0d7c5ed6777e138861c601c496d545340df3fc19e18bd04ff8d95a246a245eb55685b82ca2f8c2ca53a008e9c5316250379 + languageName: node + linkType: hard + "load-json-file@npm:^1.0.0": version: 1.1.0 resolution: "load-json-file@npm:1.1.0" @@ -6822,6 +9394,16 @@ __metadata: languageName: node linkType: hard +"load-plugin@npm:^6.0.0": + version: 6.0.3 + resolution: "load-plugin@npm:6.0.3" + dependencies: + "@npmcli/config": "npm:^8.0.0" + import-meta-resolve: "npm:^4.0.0" + checksum: 10c0/cbbd4e18472a0ed543b6d60e867a1e2aae385205fcaa76d300ab5a72697e057422cd1e6ff2ba19755c55a86b3d53e53b81a814c757be720895ba525d05f75797 + languageName: node + linkType: hard + "locate-character@npm:^3.0.0": version: 3.0.0 resolution: "locate-character@npm:3.0.0" @@ -6919,6 +9501,13 @@ __metadata: languageName: node linkType: hard +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa + languageName: node + linkType: hard + "loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -7015,6 +9604,13 @@ __metadata: languageName: node linkType: hard +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -7078,6 +9674,36 @@ __metadata: languageName: node linkType: hard +"markuplint@npm:^4.12.0": + version: 4.12.0 + resolution: "markuplint@npm:4.12.0" + dependencies: + "@markuplint/cli-utils": "npm:4.4.11" + "@markuplint/file-resolver": "npm:4.9.14" + "@markuplint/html-parser": "npm:4.6.19" + "@markuplint/html-spec": "npm:4.14.2" + "@markuplint/i18n": "npm:4.6.0" + "@markuplint/ml-ast": "npm:4.4.9" + "@markuplint/ml-config": "npm:4.8.11" + "@markuplint/ml-core": "npm:4.12.4" + "@markuplint/ml-spec": "npm:4.9.6" + "@markuplint/rules": "npm:4.10.12" + "@markuplint/shared": "npm:4.4.11" + "@types/debug": "npm:4.1.12" + chokidar: "npm:4.0.3" + debug: "npm:4.4.0" + get-stdin: "npm:9.0.0" + meow: "npm:13.2.0" + os-locale: "npm:6.0.2" + strict-event-emitter: "npm:0.5.1" + strip-ansi: "npm:7.1.0" + type-fest: "npm:4.39.1" + bin: + markuplint: ./bin/markuplint.mjs + checksum: 10c0/093ca404ac9810f586c302f9e65b55537da6af2386a00f48390620d3f0092889c19b876b72c5e8c321ca4450e22db4eb09efb0fc9840b3517f415c263ae290d9 + languageName: node + linkType: hard + "math-intrinsics@npm:^1.1.0": version: 1.1.0 resolution: "math-intrinsics@npm:1.1.0" @@ -7085,6 +9711,123 @@ __metadata: languageName: node linkType: hard +"mdast-util-from-markdown@npm:^2.0.0, mdast-util-from-markdown@npm:^2.0.2": + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark: "npm:^4.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-decode-string: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/76eb2bd2c6f7a0318087c73376b8af6d7561c1e16654e7667e640f391341096c56142618fd0ff62f6d39e5ab4895898b9789c84cd7cec2874359a437a0e1ff15 + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdx-expression@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/9a1e57940f66431f10312fa239096efa7627f375e7933b5d3162c0b5c1712a72ac87447aff2b6838d2bbd5c1311b188718cc90b33b67dc67a88550e0a6ef6183 + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.2.0 + resolution: "mdast-util-mdx-jsx@npm:3.2.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + parse-entities: "npm:^4.0.0" + stringify-entities: "npm:^4.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/3acadaf3b962254f7ad2990fed4729961dc0217ca31fde9917986e880843f3ecf3392b1f22d569235cacd180d50894ad266db7af598aedca69d330d33c7ac613 + languageName: node + linkType: hard + +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" + dependencies: + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1 + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^4.0.0": + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f + languageName: node + linkType: hard + +"mdast-util-to-markdown@npm:^2.0.0": + version: 2.1.2 + resolution: "mdast-util-to-markdown@npm:2.1.2" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + longest-streak: "npm:^3.0.0" + mdast-util-phrasing: "npm:^4.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-decode-string: "npm:^2.0.0" + unist-util-visit: "npm:^5.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/4649722a6099f12e797bd8d6469b2b43b44e526b5182862d9c7766a3431caad2c0112929c538a972f214e63c015395e5d3f54bd81d9ac1b16e6d8baaf582f749 + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "mdast-util-to-string@npm:4.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7 + languageName: node + linkType: hard + "mdn-data@npm:2.0.30": version: 2.0.30 resolution: "mdn-data@npm:2.0.30" @@ -7092,6 +9835,20 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.12.2": + version: 2.12.2 + resolution: "mdn-data@npm:2.12.2" + checksum: 10c0/b22443b71d70f72ccc3c6ba1608035431a8fc18c3c8fc53523f06d20e05c2ac10f9b53092759a2ca85cf02f0d37036f310b581ce03e7b99ac74d388ef8152ade + languageName: node + linkType: hard + +"meow@npm:13.2.0": + version: 13.2.0 + resolution: "meow@npm:13.2.0" + checksum: 10c0/d5b339ae314715bcd0b619dd2f8a266891928e21526b4800d49b4fba1cc3fff7e2c1ff5edd3344149fac841bc2306157f858e8c4d5eaee4d52ce52ad925664ce + languageName: node + linkType: hard + "meow@npm:^3.6.0, meow@npm:^3.7.0": version: 3.7.0 resolution: "meow@npm:3.7.0" @@ -7124,7 +9881,351 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": +"micromark-core-commonmark@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-core-commonmark@npm:2.0.3" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-destination: "npm:^2.0.0" + micromark-factory-label: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-factory-title: "npm:^2.0.0" + micromark-factory-whitespace: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-html-tag-name: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bd4a794fdc9e88dbdf59eaf1c507ddf26e5f7ddf4e52566c72239c0f1b66adbcd219ba2cd42350debbe24471434d5f5e50099d2b3f4e5762ca222ba8e5b549ee + languageName: node + linkType: hard + +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.1 + resolution: "micromark-extension-mdx-expression@npm:3.0.1" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/4d8cc5353b083b06bd51c98389de9c198261a5b2b440b75e85000a18d10511f21ba77538d6dfde0e0589df9de3fba9a1d14c2448d30c92d6b461c26d86e397f4 + languageName: node + linkType: hard + +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.2 + resolution: "micromark-extension-mdx-jsx@npm:3.0.2" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/5693b2e51934ac29a6aab521eaa2151f891d1fe092550bbd4ce24e4dd7567c1421a54f5e585a57dfa1769a79570f6df57ddd7a98bf0889dd11d495847a266dd7 + languageName: node + linkType: hard + +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df + languageName: node + linkType: hard + +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d + languageName: node + linkType: hard + +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" + dependencies: + acorn: "npm:^8.0.0" + acorn-jsx: "npm:^5.0.0" + micromark-extension-mdx-expression: "npm:^3.0.0" + micromark-extension-mdx-jsx: "npm:^3.0.0" + micromark-extension-mdx-md: "npm:^2.0.0" + micromark-extension-mdxjs-esm: "npm:^3.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-destination@npm:2.0.1" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bbafcf869cee5bf511161354cb87d61c142592fbecea051000ff116068dc85216e6d48519d147890b9ea5d7e2864a6341c0c09d9948c203bff624a80a476023c + languageName: node + linkType: hard + +"micromark-factory-label@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-label@npm:2.0.1" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/0137716b4ecb428114165505e94a2f18855c8bbea21b07a8b5ce514b32a595ed789d2b967125718fc44c4197ceaa48f6609d58807a68e778138d2e6b91b824e8 + languageName: node + linkType: hard + +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-factory-mdx-expression@npm:2.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/a6004ef6272dd01a5d718f2affd7bfb5e08f0849340f5fd96ac823fbc5e9d3b3343acedda50805873ccda5e3b8af4d5fbb302abc874544044ac90c217345cf97 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-space@npm:2.0.1" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/f9ed43f1c0652d8d898de0ac2be3f77f776fffe7dd96bdbba1e02d7ce33d3853c6ff5daa52568fc4fa32cdf3a62d86b85ead9b9189f7211e1d69ff2163c450fb + languageName: node + linkType: hard + +"micromark-factory-title@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-title@npm:2.0.1" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/e72fad8d6e88823514916890099a5af20b6a9178ccf78e7e5e05f4de99bb8797acb756257d7a3a57a53854cb0086bf8aab15b1a9e9db8982500dd2c9ff5948b6 + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-whitespace@npm:2.0.1" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/20a1ec58698f24b766510a309b23a10175034fcf1551eaa9da3adcbed3e00cd53d1ebe5f030cf873f76a1cec3c34eb8c50cc227be3344caa9ed25d56cf611224 + languageName: node + linkType: hard + +"micromark-util-character@npm:^2.0.0": + version: 2.1.1 + resolution: "micromark-util-character@npm:2.1.1" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/d3fe7a5e2c4060fc2a076f9ce699c82a2e87190a3946e1e5eea77f563869b504961f5668d9c9c014724db28ac32fa909070ea8b30c3a39bd0483cc6c04cc76a1 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-chunked@npm:2.0.1" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/b68c0c16fe8106949537bdcfe1be9cf36c0ccd3bc54c4007003cb0984c3750b6cdd0fd77d03f269a3382b85b0de58bde4f6eedbe7ecdf7244759112289b1ab56 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-classify-character@npm:2.0.1" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/8a02e59304005c475c332f581697e92e8c585bcd45d5d225a66c1c1b14ab5a8062705188c2ccec33cc998d33502514121478b2091feddbc751887fc9c290ed08 + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-combine-extensions@npm:2.0.1" + dependencies: + micromark-util-chunked: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/f15e282af24c8372cbb10b9b0b3e2c0aa681fea0ca323a44d6bc537dc1d9382c819c3689f14eaa000118f5a163245358ce6276b2cda9a84439cdb221f5d86ae7 + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/9c8a9f2c790e5593ffe513901c3a110e9ec8882a08f466da014112a25e5059b51551ca0aeb7ff494657d86eceb2f02ee556c6558b8d66aadc61eae4a240da0df + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-decode-string@npm:2.0.1" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/f24d75b2e5310be6e7b6dee532e0d17d3bf46996841d6295f2a9c87a2046fff4ab603c52ab9d7a7a6430a8b787b1574ae895849c603d262d1b22eef71736b5cb + languageName: node + linkType: hard + +"micromark-util-encode@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-encode@npm:2.0.1" + checksum: 10c0/b2b29f901093845da8a1bf997ea8b7f5e061ffdba85070dfe14b0197c48fda64ffcf82bfe53c90cf9dc185e69eef8c5d41cae3ba918b96bc279326921b59008a + languageName: node + linkType: hard + +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-util-events-to-acorn@npm:2.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/unist": "npm:^3.0.0" + devlop: "npm:^1.0.0" + estree-util-visit: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/a4e0716e943ffdd16a918edf51d4f8291ec2692f5c4d04693dbef3358716fba891f288197afd102c14f4d98dac09d52351046ab7aad1d50b74677bdd5fa683c0 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-html-tag-name@npm:2.0.1" + checksum: 10c0/ae80444db786fde908e9295f19a27a4aa304171852c77414516418650097b8afb401961c9edb09d677b06e97e8370cfa65638dde8438ebd41d60c0a8678b85b9 + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-normalize-identifier@npm:2.0.1" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/5299265fa360769fc499a89f40142f10a9d4a5c3dd8e6eac8a8ef3c2e4a6570e4c009cf75ea46dce5ee31c01f25587bde2f4a5cc0a935584ae86dd857f2babbd + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-resolve-all@npm:2.0.1" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bb6ca28764696bb479dc44a2d5b5fe003e7177aeae1d6b0d43f24cc223bab90234092d9c3ce4a4d2b8df095ccfd820537b10eb96bb7044d635f385d65a4c984a + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-sanitize-uri@npm:2.0.1" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/60e92166e1870fd4f1961468c2651013ff760617342918e0e0c3c4e872433aa2e60c1e5a672bfe5d89dc98f742d6b33897585cf86ae002cda23e905a3c02527c + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-util-subtokenize@npm:2.1.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bee69eece4393308e657c293ba80d92ebcb637e5f55e21dcf9c3fa732b91a8eda8ac248d76ff375e675175bfadeae4712e5158ef97eef1111789da1ce7ab5067 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-symbol@npm:2.0.1" + checksum: 10c0/f2d1b207771e573232436618e78c5e46cd4b5c560dd4a6d63863d58018abbf49cb96ec69f7007471e51434c60de3c9268ef2bf46852f26ff4aacd10f9da16fe9 + languageName: node + linkType: hard + +"micromark-util-types@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-types@npm:2.0.2" + checksum: 10c0/c8c15b96c858db781c4393f55feec10004bf7df95487636c9a9f7209e51002a5cca6a047c5d2a5dc669ff92da20e57aaa881e81a268d9ccadb647f9dce305298 + languageName: node + linkType: hard + +"micromark@npm:^4.0.0": + version: 4.0.2 + resolution: "micromark@npm:4.0.2" + dependencies: + "@types/debug": "npm:^4.0.0" + debug: "npm:^4.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/07462287254219d6eda6eac8a3cebaff2994e0575499e7088027b825105e096e4f51e466b14b2a81b71933a3b6c48ee069049d87bc2c2127eee50d9cc69e8af6 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -7169,6 +10270,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:10.0.1, minimatch@npm:^10.0.0, minimatch@npm:^9.0.3 || ^10.0.1": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d + languageName: node + linkType: hard + "minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -7187,16 +10297,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.0.0": - version: 10.0.1 - resolution: "minimatch@npm:10.0.1" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4": +"minimatch@npm:9.0.5, minimatch@npm:^9.0.0, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -7315,7 +10416,7 @@ __metadata: languageName: node linkType: hard -"mri@npm:^1.2.0": +"mri@npm:^1.1.0, mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 @@ -7329,6 +10430,15 @@ __metadata: languageName: node linkType: hard +"mustache@npm:4.2.0": + version: 4.2.0 + resolution: "mustache@npm:4.2.0" + bin: + mustache: bin/mustache + checksum: 10c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2 + languageName: node + linkType: hard + "mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -7425,6 +10535,17 @@ __metadata: languageName: node linkType: hard +"nopt@npm:^7.2.1": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + "nopt@npm:^8.0.0": version: 8.1.0 resolution: "nopt@npm:8.1.0" @@ -7448,6 +10569,17 @@ __metadata: languageName: node linkType: hard +"normalize-package-data@npm:^6.0.0": + version: 6.0.2 + resolution: "normalize-package-data@npm:6.0.2" + dependencies: + hosted-git-info: "npm:^7.0.0" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c0/7e32174e7f5575ede6d3d449593247183880122b4967d4ae6edb28cea5769ca025defda54fc91ec0e3c972fdb5ab11f9284606ba278826171b264cb16a9311ef + languageName: node + linkType: hard + "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -7462,6 +10594,22 @@ __metadata: languageName: node linkType: hard +"npm-install-checks@npm:^6.0.0": + version: 6.3.0 + resolution: "npm-install-checks@npm:6.3.0" + dependencies: + semver: "npm:^7.1.1" + checksum: 10c0/b046ef1de9b40f5d3a9831ce198e1770140a1c3f253dae22eb7b06045191ef79f18f1dcc15a945c919b3c161426861a28050abd321bf439190185794783b6452 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: 10c0/f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 + languageName: node + linkType: hard + "npm-package-arg@npm:^10.0.0": version: 10.1.0 resolution: "npm-package-arg@npm:10.1.0" @@ -7469,8 +10617,32 @@ __metadata: hosted-git-info: "npm:^6.0.0" proc-log: "npm:^3.0.0" semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^5.0.0" - checksum: 10c0/ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 + validate-npm-package-name: "npm:^5.0.0" + checksum: 10c0/ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 + languageName: node + linkType: hard + +"npm-package-arg@npm:^11.0.0": + version: 11.0.3 + resolution: "npm-package-arg@npm:11.0.3" + dependencies: + hosted-git-info: "npm:^7.0.0" + proc-log: "npm:^4.0.0" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^5.0.0" + checksum: 10c0/e18333485e05c3a8774f4b5701ef74f4799533e650b70a68ca8dd697666c9a8d46932cb765fc593edce299521033bd4025a40323d5240cea8a393c784c0c285a + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^9.0.0": + version: 9.1.0 + resolution: "npm-pick-manifest@npm:9.1.0" + dependencies: + npm-install-checks: "npm:^6.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + npm-package-arg: "npm:^11.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/8765f4199755b381323da2bff2202b4b15b59f59dba0d1be3f2f793b591321cd19e1b5a686ef48d9753a6bd4868550da632541a45dfb61809d55664222d73e44 languageName: node linkType: hard @@ -7641,6 +10813,16 @@ __metadata: languageName: node linkType: hard +"open@npm:^7.4.2": + version: 7.4.2 + resolution: "open@npm:7.4.2" + dependencies: + is-docker: "npm:^2.0.0" + is-wsl: "npm:^2.1.1" + checksum: 10c0/77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f + languageName: node + linkType: hard + "open@npm:^9.1.0": version: 9.1.0 resolution: "open@npm:9.1.0" @@ -7692,6 +10874,15 @@ __metadata: languageName: node linkType: hard +"os-locale@npm:6.0.2": + version: 6.0.2 + resolution: "os-locale@npm:6.0.2" + dependencies: + lcid: "npm:^3.1.1" + checksum: 10c0/15778a074367ff91ab7a3701f374fca8897cdea39e5c542c4df58a6ada0b811f0e98eb0e3a5401ca7dcf29bd20f37c9786864dbe051b363c56ecd2f481f90254 + languageName: node + linkType: hard + "os-tmpdir@npm:^1.0.0, os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" @@ -7717,6 +10908,54 @@ __metadata: languageName: node linkType: hard +"oxc-resolver@npm:^5.0.0": + version: 5.2.0 + resolution: "oxc-resolver@npm:5.2.0" + dependencies: + "@oxc-resolver/binding-darwin-arm64": "npm:5.2.0" + "@oxc-resolver/binding-darwin-x64": "npm:5.2.0" + "@oxc-resolver/binding-freebsd-x64": "npm:5.2.0" + "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:5.2.0" + "@oxc-resolver/binding-linux-arm64-gnu": "npm:5.2.0" + "@oxc-resolver/binding-linux-arm64-musl": "npm:5.2.0" + "@oxc-resolver/binding-linux-riscv64-gnu": "npm:5.2.0" + "@oxc-resolver/binding-linux-s390x-gnu": "npm:5.2.0" + "@oxc-resolver/binding-linux-x64-gnu": "npm:5.2.0" + "@oxc-resolver/binding-linux-x64-musl": "npm:5.2.0" + "@oxc-resolver/binding-wasm32-wasi": "npm:5.2.0" + "@oxc-resolver/binding-win32-arm64-msvc": "npm:5.2.0" + "@oxc-resolver/binding-win32-x64-msvc": "npm:5.2.0" + dependenciesMeta: + "@oxc-resolver/binding-darwin-arm64": + optional: true + "@oxc-resolver/binding-darwin-x64": + optional: true + "@oxc-resolver/binding-freebsd-x64": + optional: true + "@oxc-resolver/binding-linux-arm-gnueabihf": + optional: true + "@oxc-resolver/binding-linux-arm64-gnu": + optional: true + "@oxc-resolver/binding-linux-arm64-musl": + optional: true + "@oxc-resolver/binding-linux-riscv64-gnu": + optional: true + "@oxc-resolver/binding-linux-s390x-gnu": + optional: true + "@oxc-resolver/binding-linux-x64-gnu": + optional: true + "@oxc-resolver/binding-linux-x64-musl": + optional: true + "@oxc-resolver/binding-wasm32-wasi": + optional: true + "@oxc-resolver/binding-win32-arm64-msvc": + optional: true + "@oxc-resolver/binding-win32-x64-msvc": + optional: true + checksum: 10c0/6da27b524e9aea2a998d6aeb2cc574c402132c9afc1d813e6ca95b262a3349331011019b1498fda9e645f65359bc6ec450a3bf2a9e76c4ec3732dcb3b48a968c + languageName: node + linkType: hard + "p-cancelable@npm:^3.0.0": version: 3.0.0 resolution: "p-cancelable@npm:3.0.0" @@ -7861,6 +11100,31 @@ __metadata: languageName: node linkType: hard +"parse-entities@npm:^4.0.0": + version: 4.0.2 + resolution: "parse-entities@npm:4.0.2" + dependencies: + "@types/unist": "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + character-reference-invalid: "npm:^2.0.0" + decode-named-character-reference: "npm:^1.0.0" + is-alphanumerical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + is-hexadecimal: "npm:^2.0.0" + checksum: 10c0/a13906b1151750b78ed83d386294066daf5fb559e08c5af9591b2d98cc209123103016a01df776f65f8219ad26652d6d6b210d0974d452049cddfc53a8916c34 + languageName: node + linkType: hard + +"parse-imports@npm:^2.1.1": + version: 2.2.1 + resolution: "parse-imports@npm:2.2.1" + dependencies: + es-module-lexer: "npm:^1.5.3" + slashes: "npm:^3.0.12" + checksum: 10c0/bc541ce4ef2ff77d53247de39a956e0ee7a1a4b9b175c3e0f898222fe7994595f011491154db4ed408cbaf5049ede9d0b6624125565be208e973a54420cbe069 + languageName: node + linkType: hard + "parse-json@npm:^2.2.0": version: 2.2.0 resolution: "parse-json@npm:2.2.0" @@ -7892,6 +11156,35 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^7.0.0": + version: 7.1.1 + resolution: "parse-json@npm:7.1.1" + dependencies: + "@babel/code-frame": "npm:^7.21.4" + error-ex: "npm:^1.3.2" + json-parse-even-better-errors: "npm:^3.0.0" + lines-and-columns: "npm:^2.0.3" + type-fest: "npm:^3.8.0" + checksum: 10c0/a85ebc7430af7763fa52eb456d7efd35c35be5b06f04d8d80c37d0d33312ac6cdff12647acb9c95448dcc8b907dfafa81fb126e094aa132b0abc2a71b9df51d5 + languageName: node + linkType: hard + +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 10c0/1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b + languageName: node + linkType: hard + +"parse5@npm:7.2.1": + version: 7.2.1 + resolution: "parse5@npm:7.2.1" + dependencies: + entities: "npm:^4.5.0" + checksum: 10c0/829d37a0c709215a887e410a7118d754f8e1afd7edb529db95bc7bbf8045fb0266a7b67801331d8e8d9d073ea75793624ec27ce9ff3b96862c3b9008f4d68e80 + languageName: node + linkType: hard + "path-exists@npm:^2.0.0": version: 2.1.0 resolution: "path-exists@npm:2.1.0" @@ -8019,7 +11312,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:1.1.1, picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -8084,7 +11377,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": +"pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.7 resolution: "pirates@npm:4.0.7" checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a @@ -8100,6 +11393,13 @@ __metadata: languageName: node linkType: hard +"pluralize@npm:^8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + languageName: node + linkType: hard + "possible-typed-array-names@npm:^1.0.0": version: 1.1.0 resolution: "possible-typed-array-names@npm:1.1.0" @@ -8116,6 +11416,23 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:7.1.0": + version: 7.1.0 + resolution: "postcss-selector-parser@npm:7.1.0" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/0fef257cfd1c0fe93c18a3f8a6e739b4438b527054fd77e9a62730a89b2d0ded1b59314a7e4aaa55bc256204f40830fecd2eb50f20f8cb7ab3a10b52aa06c8aa + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + languageName: node + linkType: hard + "postcss@npm:^8.4.29": version: 8.5.3 resolution: "postcss@npm:8.5.3" @@ -8177,6 +11494,66 @@ __metadata: languageName: node linkType: hard +"prettier-eslint@link:.::locator=prettier-eslint%40workspace%3A.": + version: 0.0.0-use.local + resolution: "prettier-eslint@link:.::locator=prettier-eslint%40workspace%3A." + languageName: node + linkType: soft + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier-plugin-go-template@npm:^0.0.15": + version: 0.0.15 + resolution: "prettier-plugin-go-template@npm:0.0.15" + dependencies: + ulid: "npm:^2.3.0" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/1c8a65535ded9694a3eca929a4b8ae4220be777f09df3bf3a954faa6524e3ecb99973ce8c74fa2690676bc6c0d81ba16a1faa5673f7ba945dab5adee02d8ad74 + languageName: node + linkType: hard + +"prettier-plugin-ini@npm:^1.3.0": + version: 1.3.0 + resolution: "prettier-plugin-ini@npm:1.3.0" + dependencies: + prettier: "npm:>=3.0.0-alpha.3" + checksum: 10c0/db5580a903cf5dadd89f33a7317aa2cc13da6b81c623a5a8786b2610521be834516ca393c1a1535603f55435f95ab372b9199bca1e8091600dad523cd3ebe4b3 + languageName: node + linkType: hard + +"prettier-plugin-jsdoc-type@npm:^0.1.6": + version: 0.1.11 + resolution: "prettier-plugin-jsdoc-type@npm:0.1.11" + dependencies: + comment-parser: "npm:^1.4.1" + peerDependencies: + prettier: ">=3.5.3" + typescript: "*" + checksum: 10c0/287e9656a793cd651185713bb6fd51d133815f1c19c93990d59e6b75948c03a0cfc84910a5abb5c3e83de88c33c325e32a096aed8ab280e01b5fc2ea80c2d457 + languageName: node + linkType: hard + +"prettier-plugin-jsdoc@npm:^1.3.2": + version: 1.3.2 + resolution: "prettier-plugin-jsdoc@npm:1.3.2" + dependencies: + binary-searching: "npm:^2.0.5" + comment-parser: "npm:^1.4.0" + mdast-util-from-markdown: "npm:^2.0.0" + peerDependencies: + prettier: ^3.0.0 + checksum: 10c0/53d15897b75077f172d52e61e17e7f39314c9268e6c65128f825e56fd7b59669b06a286a88bec6742149b456b7c3d8f88ca0c2ab7797a623c0524c821e2d2f60 + languageName: node + linkType: hard + "prettier-plugin-pkg@npm:^0.19.0": version: 0.19.0 resolution: "prettier-plugin-pkg@npm:0.19.0" @@ -8186,6 +11563,40 @@ __metadata: languageName: node linkType: hard +"prettier-plugin-properties@npm:^0.3.0": + version: 0.3.0 + resolution: "prettier-plugin-properties@npm:0.3.0" + dependencies: + dot-properties: "npm:^1.0.0" + peerDependencies: + prettier: ">= 2.3.0" + checksum: 10c0/7595ff3248281e6b9ba483b655102ee65842769231704cf435982dfaccb33590b5a010b7cc5a984c65c97087f09f520c8ea1040f5479f7dc7b3200b390ddfe12 + languageName: node + linkType: hard + +"prettier-plugin-sh@npm:^0.17.2": + version: 0.17.2 + resolution: "prettier-plugin-sh@npm:0.17.2" + dependencies: + "@reteps/dockerfmt": "npm:^0.3.2" + sh-syntax: "npm:^0.5.6" + peerDependencies: + prettier: ^3.0.3 + checksum: 10c0/f9971cb5cfd4a84115c6fd06c43239dc75295ee6ac2a2f9a02f786cdeee889f8a4e9192cabf013d0db7e33f6a8b14a1c3efc0fb17ad72daaa6067b7c7e681c80 + languageName: node + linkType: hard + +"prettier-plugin-stylus@npm:^0.1.0": + version: 0.1.0 + resolution: "prettier-plugin-stylus@npm:0.1.0" + dependencies: + stylus: "npm:^0.57.0" + peerDependencies: + prettier: "*" + checksum: 10c0/3ba734ff202915c60512f1abb7d6b9715c5a07ee090431d0ae849f77c2376e026966439708cbcd8ec9e064b6a12692b5fc5057e17f7aa10147007effe4f9eb74 + languageName: node + linkType: hard + "prettier-plugin-svelte@npm:^3.3.3": version: 3.3.3 resolution: "prettier-plugin-svelte@npm:3.3.3" @@ -8196,16 +11607,18 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2, prettier@npm:^2.7.1": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a +"prettier-plugin-toml@npm:^2.0.4": + version: 2.0.4 + resolution: "prettier-plugin-toml@npm:2.0.4" + dependencies: + "@taplo/lib": "npm:^0.5.0" + peerDependencies: + prettier: ^3.0.3 + checksum: 10c0/a89b81aaa54c16f540b3b7f8273d52ba1e30e9e294708a464bbd04f4f721844986ee417e0e798497fa1d67e7098817f190654ba597e752b8bf8de9e69eb46ac9 languageName: node linkType: hard -"prettier@npm:^3.5.3": +"prettier@npm:>=3.0.0-alpha.3, prettier@npm:^3.5.3": version: 3.5.3 resolution: "prettier@npm:3.5.3" bin: @@ -8214,7 +11627,16 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": +"prettier@npm:^2, prettier@npm:^2.7.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -8232,6 +11654,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^4.0.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + "proc-log@npm:^5.0.0": version: 5.0.0 resolution: "proc-log@npm:5.0.0" @@ -8246,6 +11675,13 @@ __metadata: languageName: node linkType: hard +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -8302,6 +11738,24 @@ __metadata: languageName: node linkType: hard +"pug-error@npm:^2.0.0": + version: 2.1.0 + resolution: "pug-error@npm:2.1.0" + checksum: 10c0/bbce339b17fab9890de84975c0cd8723a847bf65f35653d3ebcf77018e8ad91529d56e978ab80f4c64c9f4f07ef9e56e7a9fda3be44249c344a93ba11fccff79 + languageName: node + linkType: hard + +"pug-lexer@npm:^5.0.1": + version: 5.0.1 + resolution: "pug-lexer@npm:5.0.1" + dependencies: + character-parser: "npm:^2.2.0" + is-expression: "npm:^4.0.0" + pug-error: "npm:^2.0.0" + checksum: 10c0/24195a5681953ab91c6a3ccd80a643f760dddb65e2f266bf8ccba145018ba0271536efe1572de2c2224163eb00873c2f1df0ad7ea7aa8bcbf79a66b586ca8435 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -8372,6 +11826,16 @@ __metadata: languageName: node linkType: hard +"read-package-json-fast@npm:^3.0.0": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: "npm:^3.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + checksum: 10c0/37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 + languageName: node + linkType: hard + "read-pkg-up@npm:^1.0.1": version: 1.0.1 resolution: "read-pkg-up@npm:1.0.1" @@ -8454,6 +11918,24 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.0.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:^4.0.1": + version: 4.1.2 + resolution: "readdirp@npm:4.1.2" + checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -8480,6 +11962,15 @@ __metadata: languageName: node linkType: hard +"refa@npm:^0.12.0, refa@npm:^0.12.1": + version: 0.12.1 + resolution: "refa@npm:0.12.1" + dependencies: + "@eslint-community/regexpp": "npm:^4.8.0" + checksum: 10c0/5c2f3dc5421f73aba44ec3d67bad58f36ff921dc13b0a921e1784c0510cf26be6d4e14010955a71607e67ff23a815f3ac30b337d06b5a2e8914417b67626c900 + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": version: 1.0.10 resolution: "reflect.getprototypeof@npm:1.0.10" @@ -8528,6 +12019,32 @@ __metadata: languageName: node linkType: hard +"regexp-ast-analysis@npm:^0.7.0, regexp-ast-analysis@npm:^0.7.1": + version: 0.7.1 + resolution: "regexp-ast-analysis@npm:0.7.1" + dependencies: + "@eslint-community/regexpp": "npm:^4.8.0" + refa: "npm:^0.12.1" + checksum: 10c0/1b0e6d66e1e619b42a0e7f62b4c9983d0ce69d94fc759802c02272cbab8abd2e0d5b94186472de4e7c4baaf5826ca674d3c7c083615e39c4be55d1ff9d12c823 + languageName: node + linkType: hard + +"regexp-to-ast@npm:0.5.0": + version: 0.5.0 + resolution: "regexp-to-ast@npm:0.5.0" + checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 + languageName: node + linkType: hard + +"regexp-tree@npm:^0.1.27": + version: 0.1.27 + resolution: "regexp-tree@npm:0.1.27" + bin: + regexp-tree: bin/regexp-tree + checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.3": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" @@ -8581,6 +12098,17 @@ __metadata: languageName: node linkType: hard +"regjsparser@npm:^0.10.0": + version: 0.10.0 + resolution: "regjsparser@npm:0.10.0" + dependencies: + jsesc: "npm:~0.5.0" + bin: + regjsparser: bin/parser + checksum: 10c0/0f0508c142eddbceae55dab9715e714305c19e1e130db53168e8fa5f9f7ff9a4901f674cf6f71e04a0973b2f883882ba05808c80778b2d52b053d925050010f4 + languageName: node + linkType: hard + "regjsparser@npm:^0.12.0": version: 0.12.0 resolution: "regjsparser@npm:0.12.0" @@ -8592,6 +12120,39 @@ __metadata: languageName: node linkType: hard +"remark-mdx@npm:^3.1.0": + version: 3.1.0 + resolution: "remark-mdx@npm:3.1.0" + dependencies: + mdast-util-mdx: "npm:^3.0.0" + micromark-extension-mdxjs: "npm:^3.0.0" + checksum: 10c0/247800fa8561624bdca5776457c5965d99e5e60080e80262c600fe12ddd573862e029e39349e1e36e4c3bf79c8e571ecf4d3d2d8c13485b758391fb500e24a1a + languageName: node + linkType: hard + +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 + languageName: node + linkType: hard + +"remark-stringify@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-stringify@npm:11.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f + languageName: node + linkType: hard + "repeating@npm:^2.0.0": version: 2.0.1 resolution: "repeating@npm:2.0.1" @@ -8645,6 +12206,16 @@ __metadata: languageName: node linkType: hard +"resolve-dir@npm:^1.0.0": + version: 1.0.1 + resolution: "resolve-dir@npm:1.0.1" + dependencies: + expand-tilde: "npm:^2.0.0" + global-modules: "npm:^1.0.0" + checksum: 10c0/8197ed13e4a51d9cd786ef6a09fc83450db016abe7ef3311ca39389b3e508d77c26fe0cf0483a9b407b8caa2764bb5ccc52cf6a017ded91492a416475a56066f + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -8659,6 +12230,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0": version: 2.0.3 resolution: "resolve.exports@npm:2.0.3" @@ -8835,6 +12413,15 @@ __metadata: languageName: node linkType: hard +"sade@npm:^1.7.3": + version: 1.8.1 + resolution: "sade@npm:1.8.1" + dependencies: + mri: "npm:^1.1.0" + checksum: 10c0/da8a3a5d667ad5ce3bf6d4f054bbb9f711103e5df21003c5a5c1a8a77ce12b640ed4017dd423b13c2307ea7e645adee7c2ae3afe8051b9db16a6f6d3da3f90b1 + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.3": version: 1.1.3 resolution: "safe-array-concat@npm:1.1.3" @@ -8848,7 +12435,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -8890,13 +12477,31 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.2": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 languageName: node linkType: hard +"sax@npm:~1.2.4": + version: 1.2.4 + resolution: "sax@npm:1.2.4" + checksum: 10c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 + languageName: node + linkType: hard + +"scslre@npm:0.3.0, scslre@npm:^0.3.0": + version: 0.3.0 + resolution: "scslre@npm:0.3.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.8.0" + refa: "npm:^0.12.0" + regexp-ast-analysis: "npm:^0.7.0" + checksum: 10c0/47eb72cf913693b453b7622dfee26871b4c408169874b31b8a1f3de8f41698e6dbacd7565fccc8d24cd2fd30f53c21f16995a7f9072e8b25cd938a6c3a750c3c + languageName: node + linkType: hard + "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -8906,21 +12511,21 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" +"semver@npm:7.7.1, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.6, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1": + version: 7.7.1 + resolution: "semver@npm:7.7.1" bin: semver: bin/semver.js - checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.3.6, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.7.1 - resolution: "semver@npm:7.7.1" +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -8968,6 +12573,15 @@ __metadata: languageName: node linkType: hard +"sh-syntax@npm:^0.5.6": + version: 0.5.6 + resolution: "sh-syntax@npm:0.5.6" + dependencies: + tslib: "npm:^2.8.1" + checksum: 10c0/0a545ca724da66b97ab24e01e39e46fe3d3819350c687a278bf147328c144a62b2c3632daeb87eb84dba705ef3d81ba46d5bb684cf77355411520153301502cd + languageName: node + linkType: hard + "shebang-command@npm:^1.2.0": version: 1.2.0 resolution: "shebang-command@npm:1.2.0" @@ -9092,6 +12706,13 @@ __metadata: languageName: node linkType: hard +"slashes@npm:^3.0.12": + version: 3.0.12 + resolution: "slashes@npm:3.0.12" + checksum: 10c0/71ca2a1fcd1ab6814b0fdb8cf9c33a3d54321deec2aa8d173510f0086880201446021a9b9e6a18561f7c472b69a2145977c6a8fb9c53a8ff7be31778f203d175 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -9127,13 +12748,33 @@ __metadata: languageName: node linkType: hard +"source-map-resolve@npm:^0.6.0": + version: 0.6.0 + resolution: "source-map-resolve@npm:0.6.0" + dependencies: + atob: "npm:^2.1.2" + decode-uri-component: "npm:^0.2.0" + checksum: 10c0/bc2a94af3d2417196195eecf0130925b3558726726504a7c7bd1b9e383c4a789fa3f4616c4c673cf8bd7930ddd2e80481f203422282aeae342dbd56b91995188 + languageName: node + linkType: hard + "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" dependencies: buffer-from: "npm:^1.0.0" source-map: "npm:^0.6.0" - checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.21": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d languageName: node linkType: hard @@ -9144,6 +12785,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.7.3": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + "spawn-command-with-kill@npm:^1.0.0": version: 1.0.2 resolution: "spawn-command-with-kill@npm:1.0.2" @@ -9198,6 +12846,16 @@ __metadata: languageName: node linkType: hard +"spdx-expression-parse@npm:^4.0.0": + version: 4.0.0 + resolution: "spdx-expression-parse@npm:4.0.0" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/965c487e77f4fb173f1c471f3eef4eb44b9f0321adc7f93d95e7620da31faa67d29356eb02523cd7df8a7fc1ec8238773cdbf9e45bd050329d2b26492771b736 + languageName: node + linkType: hard + "spdx-license-ids@npm:^3.0.0": version: 3.0.21 resolution: "spdx-license-ids@npm:3.0.21" @@ -9237,6 +12895,13 @@ __metadata: languageName: node linkType: hard +"stable-hash@npm:^0.0.5": + version: 0.0.5 + resolution: "stable-hash@npm:0.0.5" + checksum: 10c0/ca670cb6d172f1c834950e4ec661e2055885df32fee3ebf3647c5df94993b7c2666a5dbc1c9a62ee11fc5c24928579ec5e81bb5ad31971d355d5a341aab493b3 + languageName: node + linkType: hard + "stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -9262,6 +12927,13 @@ __metadata: languageName: node linkType: hard +"strict-event-emitter@npm:0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7 + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -9305,6 +12977,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^6.0.0": + version: 6.1.0 + resolution: "string-width@npm:6.1.0" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^10.2.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/7b2991ea7c946a43042070787b85af454079116dfd6d853aab4ff8a6d4ac717cdc18656cfee15b7a7a78286669202a4a56385728f0740cb1e15001c71807b361 + languageName: node + linkType: hard + "string.prototype.includes@npm:^2.0.1": version: 2.0.1 resolution: "string.prototype.includes@npm:2.0.1" @@ -9385,6 +13068,15 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" @@ -9394,6 +13086,16 @@ __metadata: languageName: node linkType: hard +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448 + languageName: node + linkType: hard + "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -9403,6 +13105,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:7.1.0, strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + "strip-ansi@npm:^3.0.0": version: 3.0.1 resolution: "strip-ansi@npm:3.0.1" @@ -9421,15 +13132,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 - languageName: node - linkType: hard - "strip-bom@npm:^2.0.0": version: 2.0.0 resolution: "strip-bom@npm:2.0.0" @@ -9487,7 +13189,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -9501,6 +13203,22 @@ __metadata: languageName: node linkType: hard +"stylus@npm:^0.57.0": + version: 0.57.0 + resolution: "stylus@npm:0.57.0" + dependencies: + css: "npm:^3.0.0" + debug: "npm:^4.3.2" + glob: "npm:^7.1.6" + safer-buffer: "npm:^2.1.2" + sax: "npm:~1.2.4" + source-map: "npm:^0.7.3" + bin: + stylus: bin/stylus + checksum: 10c0/9e58892147a29516d4ea2f926414d98f62e3aeda11cf48db25c5f0529ca9502404e239019c2779a151b71e6a9836577dfb49ffcd811e91cea9280c1436451a53 + languageName: node + linkType: hard + "supports-color@npm:^2.0.0": version: 2.0.0 resolution: "supports-color@npm:2.0.0" @@ -9544,6 +13262,13 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^9.0.0": + version: 9.4.0 + resolution: "supports-color@npm:9.4.0" + checksum: 10c0/6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -9591,6 +13316,26 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.11.0, synckit@npm:^0.11.2, synckit@npm:^0.11.4": + version: 0.11.4 + resolution: "synckit@npm:0.11.4" + dependencies: + "@pkgr/core": "npm:^0.2.3" + tslib: "npm:^2.8.1" + checksum: 10c0/dd2965a37c93c0b652bf07b1fd8d1639a803b65cf34c0cb1b827b8403044fc3b09ec87f681d922a324825127ee95b2e0394e7caccb502f407892d63e903c5276 + languageName: node + linkType: hard + +"synckit@npm:^0.6.2 || ^0.7.3 || ^0.10.3": + version: 0.10.3 + resolution: "synckit@npm:0.10.3" + dependencies: + "@pkgr/core": "npm:^0.2.0" + tslib: "npm:^2.8.1" + checksum: 10c0/9855d10231ae9b69c3aa08d46c96bd4befdcac33da44e29fb80e5c1430e453b5a33b8c073cdd25cfe9578f1d625c7d60c394ece1e202237116c1484def614041 + languageName: node + linkType: hard + "synckit@npm:^0.7.1": version: 0.7.3 resolution: "synckit@npm:0.7.3" @@ -9601,6 +13346,23 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.9.1": + version: 0.9.2 + resolution: "synckit@npm:0.9.2" + dependencies: + "@pkgr/core": "npm:^0.1.0" + tslib: "npm:^2.6.2" + checksum: 10c0/e0c262817444e5b872708adb6f5ad37951ba33f6b2d1d4477d45db1f57573a784618ceed5e6614e0225db330632b1f6b95bb74d21e4d013e45ad4bde03d0cb59 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + "tar@npm:^7.4.3": version: 7.4.3 resolution: "tar@npm:7.4.3" @@ -9703,6 +13465,15 @@ __metadata: languageName: node linkType: hard +"toml-eslint-parser@npm:^0.10.0": + version: 0.10.0 + resolution: "toml-eslint-parser@npm:0.10.0" + dependencies: + eslint-visitor-keys: "npm:^3.0.0" + checksum: 10c0/78533aa4ccfa35aa77e760c7eb603754bbb488cfb0524de633ea4aab073a50c1e6ecf86347f13bc7a8d134fb31ddd3369a3bccc7983e9ca9062c52f5a765102b + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -9726,6 +13497,13 @@ __metadata: languageName: node linkType: hard +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 10c0/58b671fc970e7867a48514168894396dd94e6d9d6456aca427cc299c004fe67f35ed7172a36449086b2edde10e78a71a284ec0076809add6834fb8f857ccb9b0 + languageName: node + linkType: hard + "ts-api-utils@npm:^1.0.1": version: 1.4.3 resolution: "ts-api-utils@npm:1.4.3" @@ -9744,6 +13522,44 @@ __metadata: languageName: node linkType: hard +"ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -9763,7 +13579,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0": +"tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -9813,6 +13629,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:4.39.1": + version: 4.39.1 + resolution: "type-fest@npm:4.39.1" + checksum: 10c0/f5bf302eb2e2f70658be1757aa578f4a09da3f65699b0b12b7ae5502ccea76e5124521a6e6b69540f442c3dc924c394202a2ab58718d0582725c7ac23c072594 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -9841,6 +13664,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^3.8.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + "type-fest@npm:^4.3.2": version: 4.40.0 resolution: "type-fest@npm:4.40.0" @@ -9901,23 +13731,53 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.3.3": - version: 5.3.3 - resolution: "typescript@npm:5.3.3" +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + languageName: node + linkType: hard + +"typescript-eslint@npm:^8.29.1": + version: 8.30.1 + resolution: "typescript-eslint@npm:8.30.1" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.30.1" + "@typescript-eslint/parser": "npm:8.30.1" + "@typescript-eslint/utils": "npm:8.30.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/41c53910308fa03d2216ccae9885e82422b8abc96b384a6e47277b5b351f462e6da3a4dfbb8c9bc7defa8c96fb71c4371fa5759eaa86c7c1b3b53a4a9994e6ab + languageName: node + linkType: hard + +"typescript@npm:^5, typescript@npm:^5.8.3": + version: 5.8.3 + resolution: "typescript@npm:5.8.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~5.3.3#optional!builtin": - version: 5.3.3 - resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" +"typescript@patch:typescript@npm%3A^5#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb + languageName: node + linkType: hard + +"ulid@npm:^2.3.0": + version: 2.4.0 + resolution: "ulid@npm:2.4.0" + bin: + ulid: bin/cli.js + checksum: 10c0/96f7597a2f09dadd380707a0755753d85717059deae54a9e28b6cbc34c02ef211dd1d1dcbfa8bd557d12309f174b87f3ba5f45d6b67573d1a2da202b5a0c9319 languageName: node linkType: hard @@ -9971,6 +13831,50 @@ __metadata: languageName: node linkType: hard +"unified-engine@npm:^11.2.2": + version: 11.2.2 + resolution: "unified-engine@npm:11.2.2" + dependencies: + "@types/concat-stream": "npm:^2.0.0" + "@types/debug": "npm:^4.0.0" + "@types/is-empty": "npm:^1.0.0" + "@types/node": "npm:^22.0.0" + "@types/unist": "npm:^3.0.0" + concat-stream: "npm:^2.0.0" + debug: "npm:^4.0.0" + extend: "npm:^3.0.0" + glob: "npm:^10.0.0" + ignore: "npm:^6.0.0" + is-empty: "npm:^1.0.0" + is-plain-obj: "npm:^4.0.0" + load-plugin: "npm:^6.0.0" + parse-json: "npm:^7.0.0" + trough: "npm:^2.0.0" + unist-util-inspect: "npm:^8.0.0" + vfile: "npm:^6.0.0" + vfile-message: "npm:^4.0.0" + vfile-reporter: "npm:^8.0.0" + vfile-statistics: "npm:^3.0.0" + yaml: "npm:^2.0.0" + checksum: 10c0/daac3b2bf18fb79a052129958e104bddfb8241ef5ea51696a214864906a61a375c4d95b42958b7ed300ebaa028172f1e8b6515f1664a0fa765eb11ca06b891ee + languageName: node + linkType: hard + +"unified@npm:^11.0.0, unified@npm:^11.0.5": + version: 11.0.5 + resolution: "unified@npm:11.0.5" + dependencies: + "@types/unist": "npm:^3.0.0" + bail: "npm:^2.0.0" + devlop: "npm:^1.0.0" + extend: "npm:^3.0.0" + is-plain-obj: "npm:^4.0.0" + trough: "npm:^2.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/53c8e685f56d11d9d458a43e0e74328a4d6386af51c8ac37a3dcabec74ce5026da21250590d4aff6733ccd7dc203116aae2b0769abc18cdf9639a54ae528dfc9 + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -9989,6 +13893,63 @@ __metadata: languageName: node linkType: hard +"unist-util-inspect@npm:^8.0.0": + version: 8.1.0 + resolution: "unist-util-inspect@npm:8.1.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/d3dff256ffd77a1e8dd583be89070dc1ab124d424794fcc1105a38c2f0bb0538afc686e592699807c7d9fa612821961033fe38e26c11ba0bb51d19e8ae7c4119 + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e + languageName: node + linkType: hard + +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-stringify-position@npm:4.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + unist-util-visit-parents: "npm:^6.0.0" + checksum: 10c0/51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5 + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -9996,6 +13957,70 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.4.1, unrs-resolver@npm:^1.5.0": + version: 1.5.0 + resolution: "unrs-resolver@npm:1.5.0" + dependencies: + "@unrs/resolver-binding-darwin-arm64": "npm:1.5.0" + "@unrs/resolver-binding-darwin-x64": "npm:1.5.0" + "@unrs/resolver-binding-freebsd-x64": "npm:1.5.0" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.5.0" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.5.0" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.5.0" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.5.0" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.5.0" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.5.0" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.5.0" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.5.0" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.5.0" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.5.0" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.5.0" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.5.0" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.5.0" + dependenciesMeta: + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/4207b819366d23ab33b739fe00238c4a6053e71a890ff361ab5c5e549366934cf844e7cc3b44460345624c4a2214796a5311f0e48ab417a49fa6965c9f1763ec + languageName: node + linkType: hard + "untildify@npm:^4.0.0": version: 4.0.0 resolution: "untildify@npm:4.0.0" @@ -10026,13 +14051,22 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:~1.0.1": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard +"uuid@npm:11.1.0": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" + bin: + uuid: dist/esm/bin/uuid + checksum: 10c0/34aa51b9874ae398c2b799c88a127701408cd581ee89ec3baa53509dd8728cbb25826f2a038f9465f8b7be446f0fbf11558862965b18d21c993684297628d4d3 + languageName: node + linkType: hard + "uuid@npm:^2.0.1": version: 2.0.3 resolution: "uuid@npm:2.0.3" @@ -10040,6 +14074,27 @@ __metadata: languageName: node linkType: hard +"uvu@npm:^0.5.6": + version: 0.5.6 + resolution: "uvu@npm:0.5.6" + dependencies: + dequal: "npm:^2.0.0" + diff: "npm:^5.0.0" + kleur: "npm:^4.0.3" + sade: "npm:^1.7.3" + bin: + uvu: bin.js + checksum: 10c0/ad32eb5f7d94bdeb71f80d073003f0138e24f61ed68cecc8e15d2f30838f44c9670577bb1775c8fac894bf93d1bc1583d470a9195e49bfa6efa14cc6f4942bff + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + "v8-to-istanbul@npm:^9.0.1": version: 9.3.0 resolution: "v8-to-istanbul@npm:9.3.0" @@ -10051,7 +14106,7 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1": +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: @@ -10068,6 +14123,62 @@ __metadata: languageName: node linkType: hard +"vfile-message@npm:^4.0.0": + version: 4.0.2 + resolution: "vfile-message@npm:4.0.2" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514 + languageName: node + linkType: hard + +"vfile-reporter@npm:^8.0.0": + version: 8.1.1 + resolution: "vfile-reporter@npm:8.1.1" + dependencies: + "@types/supports-color": "npm:^8.0.0" + string-width: "npm:^6.0.0" + supports-color: "npm:^9.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile: "npm:^6.0.0" + vfile-message: "npm:^4.0.0" + vfile-sort: "npm:^4.0.0" + vfile-statistics: "npm:^3.0.0" + checksum: 10c0/5da85c67e4a26762d64d65d0aac5ef339a413cc051470d970eea7352f07afd24577d42780c3af93c109177078df1bbbdbcc3e82adcc34e1bb96d2665f3f0c2a1 + languageName: node + linkType: hard + +"vfile-sort@npm:^4.0.0": + version: 4.0.0 + resolution: "vfile-sort@npm:4.0.0" + dependencies: + vfile: "npm:^6.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/fe1a4cbe24d03b81a7e7486be107eb029ac2631a3575e55a3f1d25cf54bcf2d60b3f76694dedf8a2f60793877e1d192234157cdfd50d1a0d18b9a4c1487cdf65 + languageName: node + linkType: hard + +"vfile-statistics@npm:^3.0.0": + version: 3.0.0 + resolution: "vfile-statistics@npm:3.0.0" + dependencies: + vfile: "npm:^6.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/3de51670329701e2cff75d979564087578844444d9b9d8619a2fdd2a904bc970bf4d05b58e7cee71e0f6f34087f1f7f2ea85cdfa5bf58f572c777432c156bd8f + languageName: node + linkType: hard + +"vfile@npm:^6.0.0, vfile@npm:^6.0.3": + version: 6.0.3 + resolution: "vfile@npm:6.0.3" + dependencies: + "@types/unist": "npm:^3.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/e5d9eb4810623f23758cfc2205323e33552fb5972e5c2e6587babe08fe4d24859866277404fb9e2a20afb71013860d96ec806cb257536ae463c87d70022ab9ef + languageName: node + linkType: hard + "vue-eslint-parser@npm:^9.4.3": version: 9.4.3 resolution: "vue-eslint-parser@npm:9.4.3" @@ -10085,6 +14196,13 @@ __metadata: languageName: node linkType: hard +"walk-up-path@npm:^3.0.1": + version: 3.0.1 + resolution: "walk-up-path@npm:3.0.1" + checksum: 10c0/3184738e0cf33698dd58b0ee4418285b9c811e58698f52c1f025435a85c25cbc5a63fee599f1a79cb29ca7ef09a44ec9417b16bfd906b1a37c305f7aa20ee5bc + languageName: node + linkType: hard + "walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" @@ -10101,6 +14219,13 @@ __metadata: languageName: node linkType: hard +"whatwg-mimetype@npm:4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: 10c0/a773cdc8126b514d790bdae7052e8bf242970cebd84af62fb2f35a33411e78e981f6c0ab9ed1fe6ec5071b09d5340ac9178e05b52d35a9c4bcf558ba1b1551df + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -10179,7 +14304,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": +"which@npm:^1.2.14, which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: @@ -10201,6 +14326,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + "which@npm:^5.0.0": version: 5.0.0 resolution: "which@npm:5.0.0" @@ -10322,6 +14458,25 @@ __metadata: languageName: node linkType: hard +"yaml-eslint-parser@npm:^1.2.1": + version: 1.3.0 + resolution: "yaml-eslint-parser@npm:1.3.0" + dependencies: + eslint-visitor-keys: "npm:^3.0.0" + yaml: "npm:^2.0.0" + checksum: 10c0/160a8dcb97e65e08de85069898379fbecad85838384797df9695f4cb51e48a195e57b3f3fc5abb35eec7c8d1329c3b7b92b12999f5f20c314d9a7d8d549de105 + languageName: node + linkType: hard + +"yaml@npm:^2.0.0, yaml@npm:^2.2.2": + version: 2.7.1 + resolution: "yaml@npm:2.7.1" + bin: + yaml: bin.mjs + checksum: 10c0/ee2126398ab7d1fdde566b4013b68e36930b9e6d8e68b6db356875c99614c10d678b6f45597a145ff6d63814961221fc305bf9242af8bf7450177f8a68537590 + languageName: node + linkType: hard + "yargs-parser@npm:^15.0.0": version: 15.0.3 resolution: "yargs-parser@npm:15.0.3" @@ -10402,9 +14557,23 @@ __metadata: languageName: node linkType: hard +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f languageName: node linkType: hard + +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e + languageName: node + linkType: hard From e1cc25cf47fca040a4232c7675c784145e7e824c Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 18 Apr 2025 10:21:54 +0800 Subject: [PATCH 2/6] refactor: typescript __mocks__ --- .prettierignore | 5 - .prettierrc.mjs | 11 +- EXAMPLES.md | 5 +- __mocks__/{eslint.js => eslint.ts} | 54 +++-- __mocks__/fs.js | 15 -- __mocks__/fs.ts | 19 ++ __mocks__/loglevel-colored-level-prefix.js | 36 --- __mocks__/loglevel-colored-level-prefix.ts | 39 ++++ __mocks__/prettier.js | 22 -- __mocks__/prettier.ts | 34 +++ eslint.config.mjs | 6 +- global.d.ts | 2 + jest.config.js | 20 ++ jest.config.ts | 19 -- mock.d.ts | 50 +++++ package.json | 7 +- shim.d.ts | 42 ++-- src/index.ts | 8 +- src/tsconfig.json | 2 +- src/types.ts | 6 +- .../paths/node_modules/eslint/index.js | 18 +- .../paths/node_modules/prettier/index.js | 14 +- test/fixtures/paths/package.json | 1 + test/index.spec.ts | 34 +-- yarn.lock | 209 ++++-------------- 25 files changed, 333 insertions(+), 345 deletions(-) rename __mocks__/{eslint.js => eslint.ts} (54%) delete mode 100644 __mocks__/fs.js create mode 100644 __mocks__/fs.ts delete mode 100644 __mocks__/loglevel-colored-level-prefix.js create mode 100644 __mocks__/loglevel-colored-level-prefix.ts delete mode 100644 __mocks__/prettier.js create mode 100644 __mocks__/prettier.ts create mode 100644 jest.config.js delete mode 100644 jest.config.ts create mode 100644 mock.d.ts diff --git a/.prettierignore b/.prettierignore index 4afee847..61c3bc75 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1 @@ .yarn -node_modules -.nyc_output -coverage -dist -tests/fixtures/ diff --git a/.prettierrc.mjs b/.prettierrc.mjs index 03d032c5..0480993a 100644 --- a/.prettierrc.mjs +++ b/.prettierrc.mjs @@ -3,12 +3,19 @@ /** @import { Config, Plugin } from 'prettier' */ import base from '@1stg/prettier-config/semi'; -import svelte from 'prettier-plugin-svelte'; +import * as jsdoc from 'prettier-plugin-jsdoc'; +import * as jsdocType from 'prettier-plugin-jsdoc-type'; +import * as svelte from 'prettier-plugin-svelte'; /** @type {Config} */ const config = { ...base, - plugins: [.../** @type {Plugin[]} */ (base.plugins), svelte], + plugins: [ + .../** @type {Plugin[]} */ (base.plugins), + jsdoc, + jsdocType, + svelte, + ], }; export default config; diff --git a/EXAMPLES.md b/EXAMPLES.md index 4a380bd3..561a30fb 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -23,6 +23,7 @@ gulp.task('js:format', function () { ```js var through = require('through2'); +var PluginError = require('plugin-error'); var prettierEslint = require('prettier-eslint'); const options = { @@ -49,13 +50,13 @@ module.exports = function () { if (file.isStream()) { return callback( - new utils.PluginError('prettier-eslint', "doesn't support Streams"), + new PluginError('prettier-eslint', "doesn't support Streams"), ); } const sourceCode = file.contents.toString(); const formatted = prettierEslint({ - ...config, + ...options, text: sourceCode, }); diff --git a/__mocks__/eslint.js b/__mocks__/eslint.ts similarity index 54% rename from __mocks__/eslint.js rename to __mocks__/eslint.ts index 99591609..dc5acd3d 100644 --- a/__mocks__/eslint.js +++ b/__mocks__/eslint.ts @@ -1,18 +1,26 @@ -// this mock file is so eslint doesn't attempt to actually -// search around the file system for stuff +/** + * This mock file is so eslint doesn't attempt to actually search around the + * file system for stuff, we can not use `.ts` because it's called by + * `test/fixtures/node_modules/eslint/index.js` + */ + +import eslint_, { type ESLint as ESLint_ } from 'eslint'; + +import type { ESLintLintText, MockESLint } from '../mock.js'; -/** @import { ESLintConfig } from 'prettier-eslint' */ +import type { ESLintConfig } from 'prettier-eslint'; + +const eslint = jest.requireActual('eslint'); -const eslint = /** @type {typeof import('eslint')} */ ( - jest.requireActual('eslint') -); const { ESLint } = eslint; const mockCalculateConfigForFileSpy = jest.fn(mockCalculateConfigForFile); -mockCalculateConfigForFileSpy.overrides = {}; + +Object.assign(mockCalculateConfigForFileSpy, { overrides: {} }); + const mockLintTextSpy = jest.fn(mockLintText); -module.exports = Object.assign(eslint, { +export = Object.assign(eslint, { ESLint: jest.fn(MockESLint), mock: { calculateConfigForFile: mockCalculateConfigForFileSpy, @@ -20,25 +28,30 @@ module.exports = Object.assign(eslint, { }, }); -function MockESLint(...args) { +function MockESLint(options: ESLint_.Options): MockESLint { globalThis.__PRETTIER_ESLINT_TEST_STATE__.eslintPath = __filename; - const eslintInstance = new ESLint(...args); + const eslintInstance = new ESLint(options) as MockESLint; eslintInstance.calculateConfigForFile = mockCalculateConfigForFileSpy; + // eslint-disable-next-line @typescript-eslint/unbound-method eslintInstance._originalLintText = eslintInstance.lintText; eslintInstance.lintText = mockLintTextSpy; return eslintInstance; } -MockESLint.prototype = Object.create(ESLint.prototype); +MockESLint.prototype = Object.create(ESLint.prototype) as ESLint_; /** - * @param {string} filePath - * @returns {ESLintConfig} -- eslint config - * @throws {Error} -- if `throwError` is specifically set on the spy, or if the - * filePath is not handled + * @throws If `throwError` is specifically set on the spy, or if the filePath is + * not handled */ -function mockCalculateConfigForFile(filePath) { - if (mockCalculateConfigForFileSpy.throwError) { +// eslint-disable-next-line @typescript-eslint/require-await +async function mockCalculateConfigForFile( + filePath: string, +): Promise { + if ( + 'throwError' in mockCalculateConfigForFileSpy && + mockCalculateConfigForFileSpy.throwError instanceof Error + ) { throw mockCalculateConfigForFileSpy.throwError; } if (!filePath) { @@ -80,8 +93,11 @@ function mockCalculateConfigForFile(filePath) { ); } -function mockLintText(...args) { - if (mockLintTextSpy.throwError) { +function mockLintText(this: MockESLint, ...args: Parameters) { + if ( + 'throwError' in mockLintTextSpy && + mockLintTextSpy.throwError instanceof Error + ) { throw mockLintTextSpy.throwError; } return this._originalLintText(...args); diff --git a/__mocks__/fs.js b/__mocks__/fs.js deleted file mode 100644 index 729b2fef..00000000 --- a/__mocks__/fs.js +++ /dev/null @@ -1,15 +0,0 @@ -const fs = jest.requireActual('fs'); - -module.exports = { - ...fs, - readFileSync: jest.fn(filename => { - if (/package\.json$/.test(filename)) { - return '{"name": "fake", "version": "0.0.0", "prettier": {}}'; - } - if (/\.[jt]s$/.test(filename)) { - return 'var fake = true'; - } - - return ''; - }), -}; diff --git a/__mocks__/fs.ts b/__mocks__/fs.ts new file mode 100644 index 00000000..43d828a5 --- /dev/null +++ b/__mocks__/fs.ts @@ -0,0 +1,19 @@ +import type Fs_ from 'node:fs'; + +type Fs = typeof Fs_; + +const fs = jest.requireActual('fs'); + +// eslint-disable-next-line prefer-object-spread -- typing issue +export = Object.assign({}, fs, { + readFileSync: jest.fn((filename: string) => { + if (filename.endsWith('package.json')) { + return '{"name": "fake", "version": "0.0.0", "prettier": {}}'; + } + if (/\.[jt]s$/.test(filename)) { + return 'var fake = true'; + } + + return ''; + }), +}); diff --git a/__mocks__/loglevel-colored-level-prefix.js b/__mocks__/loglevel-colored-level-prefix.js deleted file mode 100644 index 7252f10e..00000000 --- a/__mocks__/loglevel-colored-level-prefix.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = getLogger; - -const logger = { - setLevel: jest.fn(), - trace: jest.fn(getTestImplementation('trace')), - debug: jest.fn(getTestImplementation('debug')), - info: jest.fn(getTestImplementation('info')), - warn: jest.fn(getTestImplementation('warn')), - error: jest.fn(getTestImplementation('error')), -}; - -const mock = { clearAll, logger, logThings: [] }; - -Object.assign(module.exports, { mock }); - -function getLogger() { - return logger; -} - -function clearAll() { - for (const name of Object.keys(logger)) { - if (logger[name].mock) { - logger[name].mockClear(); - } - } -} - -function getTestImplementation(level) { - return testLogImplementation; - - function testLogImplementation(...args) { - if (mock.logThings === 'all' || mock.logThings.includes(level)) { - console.log(level, ...args); // eslint-disable-line no-console - } - } -} diff --git a/__mocks__/loglevel-colored-level-prefix.ts b/__mocks__/loglevel-colored-level-prefix.ts new file mode 100644 index 00000000..ba84fd46 --- /dev/null +++ b/__mocks__/loglevel-colored-level-prefix.ts @@ -0,0 +1,39 @@ +import type { + GetLogger, + Logger, + LogLevel, +} from 'loglevel-colored-level-prefix'; + +const logger: Logger = { + setLevel: jest.fn(), + debug: jest.fn(getTestImplementation('debug')), + error: jest.fn(getTestImplementation('error')), + info: jest.fn(getTestImplementation('info')), + silent: jest.fn(getTestImplementation('silent')), + trace: jest.fn(getTestImplementation('trace')), + warn: jest.fn(getTestImplementation('warn')), +}; + +const mock: (typeof getLogger)['mock'] = { clearAll, logger, logThings: [] }; + +const getLogger = (() => logger) as unknown as GetLogger; + +Object.assign(getLogger, { mock }); + +export = getLogger; + +function clearAll() { + for (const name of Object.keys(logger) as LogLevel[]) { + logger[name].mockClear(); + } +} + +function getTestImplementation(level: LogLevel) { + return testLogImplementation; + + function testLogImplementation(message: string, ...args: unknown[]) { + if (mock.logThings === 'all' || mock.logThings.includes(level)) { + console.log(level, message, ...args); // eslint-disable-line no-console + } + } +} diff --git a/__mocks__/prettier.js b/__mocks__/prettier.js deleted file mode 100644 index d6b10e15..00000000 --- a/__mocks__/prettier.js +++ /dev/null @@ -1,22 +0,0 @@ -const prettier = jest.requireActual('prettier'); - -const { format } = prettier; - -module.exports = prettier; - -const mockFormatSpy = jest.fn(mockFormat); - -Object.assign(prettier, { - format: mockFormatSpy, - resolveConfig: jest.fn(), -}); - -function mockFormat(...args) { - globalThis.__PRETTIER_ESLINT_TEST_STATE__.prettierPath = __filename; - - if (mockFormatSpy.throwError) { - throw mockFormatSpy.throwError; - } - - return format(...args); -} diff --git a/__mocks__/prettier.ts b/__mocks__/prettier.ts new file mode 100644 index 00000000..6ce1093c --- /dev/null +++ b/__mocks__/prettier.ts @@ -0,0 +1,34 @@ +/** + * We can not use `.ts` because it's called by + * `test/fixtures/node_modules/prettier/index.js` + */ + +import type { Options } from 'prettier'; + +import type { PrettierMock } from '../mock.js'; + +const prettier = jest.requireActual('prettier'); + +const { format } = prettier; + +export = prettier; + +const mockFormatSpy = jest.fn(mockFormat); + +Object.assign(prettier, { + format: mockFormatSpy, + resolveConfig: jest.fn(), +}); + +function mockFormat(source: string, options?: Options) { + globalThis.__PRETTIER_ESLINT_TEST_STATE__.prettierPath = __filename; + + if ( + 'throwError' in mockFormatSpy && + mockFormatSpy.throwError instanceof Error + ) { + throw mockFormatSpy.throwError; + } + + return format(source, options); +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 8f6afd1b..cf3de676 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -9,7 +9,7 @@ export default tseslint.config( ...base, ...nodeDependencies.configs['flat/recommended'], { - ignores: ['test/fixtures'], + ignores: ['test/fixtures', '!test/fixtures/paths/node_modules/**/*.js'], }, { rules: { @@ -30,7 +30,7 @@ export default tseslint.config( }, }, { - files: ['**/__mocks__/**/*.js', '**/*.spec.ts'], + files: ['__mocks__/**/*.{js,ts}', 'test/**/*.spec.ts'], languageOptions: { globals: globals.jest, }, @@ -42,6 +42,8 @@ export default tseslint.config( { files: ['**/*.d.ts'], rules: { + // Declaration files use `declare var` for global types. + // `let`/`const` don’t propagate to the global object, so we disable `no-var`. 'no-var': 'off', }, }, diff --git a/global.d.ts b/global.d.ts index 2f9bf7d6..a6f904c5 100644 --- a/global.d.ts +++ b/global.d.ts @@ -1,3 +1,5 @@ +/// + declare global { declare var __PRETTIER_ESLINT_TEST_STATE__: { eslintPath?: string; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..5404a61d --- /dev/null +++ b/jest.config.js @@ -0,0 +1,20 @@ +// @ts-check + +/** @import { Config } from 'jest' */ + +module.exports = /** @satisfies {Config} */ ({ + collectCoverage: true, + collectCoverageFrom: ['src/**/*.ts'], + coverageThreshold: { + global: { + branches: 96, + functions: 100, + lines: 100, + statements: 100, + }, + }, + testEnvironment: 'node', + transform: { + '^.+\\.ts$': '@swc-node/jest', + }, +}); diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 412ef604..00000000 --- a/jest.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Options } from '@swc-node/core'; -import type { Config } from 'jest'; - -export default { - collectCoverage: true, - collectCoverageFrom: ['src/*.ts'], - coverageThreshold: { - global: { - branches: 96, - functions: 100, - lines: 100, - statements: 100, - }, - }, - testEnvironment: 'node', - transform: { - '^.+\\.ts$': ['@swc-node/jest', {} satisfies Options], - }, -} satisfies Config; diff --git a/mock.d.ts b/mock.d.ts new file mode 100644 index 00000000..0631ae12 --- /dev/null +++ b/mock.d.ts @@ -0,0 +1,50 @@ +import fs from 'node:fs'; +import eslint, { ESLint } from 'eslint'; +import prettier from 'prettier'; +import { ESLintConfig } from 'prettier-eslint'; + +// prettier-ignore +export interface FsMock extends (typeof fs) { + readFileSync: jest.Mock; +} + +export type ESLintCalculateConfigForFile = ESLint['calculateConfigForFile']; +export type ESLintLintText = ESLint['lintText']; + +export interface MockESLint extends ESLint { + _originalLintText: ESLintLintText; +} + +export interface ThrowError { + throwError?: Error | null; +} + +// prettier-ignore +export interface ESLintMock extends (typeof eslint) { + ESLint: jest.Mock; + mock: { + calculateConfigForFile: jest.Mock< + Promise, + Parameters + >; + lintText: jest.Mock< + ReturnType, + Parameters + > & + ThrowError; + }; +} + +// prettier-ignore +export interface PrettierMock extends (typeof prettier) { + format: jest.Mock< + ReturnType, + Parameters + > & + ThrowError; + resolveConfig: jest.Mock< + ReturnType, + Parameters + > & + ThrowError; +} diff --git a/package.json b/package.json index af85f501..e08dcae8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "prettier-eslint", "version": "16.3.2", + "type": "commonjs", "description": "Formats your JavaScript using prettier followed by eslint --fix", "repository": "git+https://github.com/prettier/prettier-eslint.git", "homepage": "https://github.com/prettier/prettier-eslint#readme", @@ -66,10 +67,11 @@ "@babel/core": "^7.26.10", "@babel/preset-env": "^7.26.9", "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.1", + "@changesets/cli": "^2.29.2", "@swc-node/jest": "^1.8.13", "@swc/core": "^1.11.21", "@swc/helpers": "^0.5.17", + "@total-typescript/ts-reset": "^0.6.1", "@types/common-tags": "^1.8.4", "@types/dlv": "^1.1.5", "@types/eslint": "^8.56.12", @@ -88,13 +90,14 @@ "nps-utils": "^1.7.0", "prettier-eslint": "link:.", "prettier-eslint-cli": "^8.0.1", + "prettier-plugin-jsdoc": "^1.3.2", + "prettier-plugin-jsdoc-type": "^0.1.11", "prettier-plugin-svelte": "^3.3.3", "rimraf": "^6.0.1", "simple-git-hooks": "^2.12.1", "strip-indent": "^3.0.0", "svelte": "^4.2.19", "svelte-eslint-parser": "^0.33.1", - "ts-node": "^10.9.2", "typescript": "^5.8.3" }, "resolutions": { diff --git a/shim.d.ts b/shim.d.ts index 2c369d24..93b49ca6 100644 --- a/shim.d.ts +++ b/shim.d.ts @@ -11,28 +11,30 @@ declare module 'eslint-plugin-node-dependencies' { } declare module 'loglevel-colored-level-prefix' { - type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'trace' | 'warn'; - - interface Logger - extends Record< - LogLevel, - (message: string, ...messages: unknown[]) => void - > { - setLevel(level: LogLevel): void; + namespace getLogger { + type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'trace' | 'warn'; + + interface Logger + extends Record< + LogLevel, + jest.Mock + > { + setLevel(level: LogLevel): void; + } + + interface GetLogger { + (options: { prefix: string }): Logger; + + // testing mock + mock: { + logThings: LogLevel[] | 'all'; + logger: Logger; + clearAll(): void; + }; + } } - interface GetLogger { - (options: { prefix: string }): Logger; - - // testing mock - mock: { - logThings: LogLevel[] | 'all'; - logger: Logger; - clearAll(): void; - }; - } - - const getLogger: GetLogger; + const getLogger: getLogger.GetLogger; export = getLogger; } diff --git a/src/index.ts b/src/index.ts index bbc5ad10..78ae1fca 100644 --- a/src/index.ts +++ b/src/index.ts @@ -327,16 +327,16 @@ function getESLintApiOptions(eslintConfig: ESLintConfig): ESLintConfig { // https://eslint.org/docs/developer-guide/nodejs-api // these options affect what calculateConfigForFile produces return { - ignore: eslintConfig.ignore || true, + ignore: eslintConfig.ignore ?? true, ignorePath: eslintConfig.ignorePath, - allowInlineConfig: eslintConfig.allowInlineConfig || true, + allowInlineConfig: eslintConfig.allowInlineConfig ?? true, baseConfig: eslintConfig.baseConfig, overrideConfig: eslintConfig.overrideConfig, overrideConfigFile: eslintConfig.overrideConfigFile, plugins: eslintConfig.plugins, resolvePluginsRelativeTo: eslintConfig.resolvePluginsRelativeTo, - rulePaths: eslintConfig.rulePaths || [], - useEslintrc: eslintConfig.useEslintrc || true, + rulePaths: eslintConfig.rulePaths ?? [], + useEslintrc: eslintConfig.useEslintrc ?? true, }; } diff --git a/src/tsconfig.json b/src/tsconfig.json index 768190b7..f6c90550 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -4,5 +4,5 @@ "rootDir": ".", "outDir": "../lib" }, - "include": [".", "../shim.d.ts"] + "include": [".", "../global.d.ts", "../shim.d.ts"] } diff --git a/src/types.ts b/src/types.ts index cd5a780f..40821e00 100644 --- a/src/types.ts +++ b/src/types.ts @@ -6,7 +6,7 @@ import { StringLiteral } from './utils'; /** Logging level for the traceback of the synchronous formatting process. */ export type LogLevel = 'debug' | 'error' | 'info' | 'silent' | 'trace' | 'warn'; -export { PrettierOptions }; +export type { PrettierOptions }; /** Options to format text with Prettier and ESLint. */ export interface FormatOptions { @@ -93,6 +93,10 @@ export type ESLintConfigGlobalValue = ValueOf>; export interface ESLintConfig extends Omit, ESLintOptions { + /** + * ESLint globals configuration, supporting both object format and string + * tuple format for compatibility with different ESLint versions. + */ globals?: ESLintConfigGlobals | [`${string}:${ESLintConfigGlobalValue}`]; ignorePattern?: string[] | string; } diff --git a/test/fixtures/paths/node_modules/eslint/index.js b/test/fixtures/paths/node_modules/eslint/index.js index 1b5d2510..bfe23c0b 100644 --- a/test/fixtures/paths/node_modules/eslint/index.js +++ b/test/fixtures/paths/node_modules/eslint/index.js @@ -1,11 +1,25 @@ +// @ts-check + +/** + * @import {ESLint} from 'eslint'; + * + * @import { MockESLint } from '../../../../../mock.js'; + */ + const eslintMock = require('../../../../../__mocks__/eslint') + module.exports = Object.assign({}, eslintMock, { ESLint: MockMockESLint }) -function MockMockESLint(...args) { +/** + * @this {MockESLint} + * @param {ESLint.Options} options + * @returns {MockESLint} MockESLint instance + */ +function MockMockESLint(options) { try { - return eslintMock.ESLint.apply(this, args) + return eslintMock.ESLint.call(this, options) } finally { global.__PRETTIER_ESLINT_TEST_STATE__.eslintPath = __filename } diff --git a/test/fixtures/paths/node_modules/prettier/index.js b/test/fixtures/paths/node_modules/prettier/index.js index 4a814655..24a1321e 100644 --- a/test/fixtures/paths/node_modules/prettier/index.js +++ b/test/fixtures/paths/node_modules/prettier/index.js @@ -1,10 +1,18 @@ -const mockPrettier = require('../../../../../__mocks__/prettier') +// @ts-check -module.exports = Object.assign({}, mockPrettier, {format: mockMockFormat}) +/** @import {format} from 'prettier' */ +const prettierMock = require('../../../../../__mocks__/prettier') + +module.exports = Object.assign({}, prettierMock, {format: mockMockFormat}) + +/** + * @param {Parameters} args + * @returns {ReturnType} Formatted code + */ function mockMockFormat(...args) { try { - return mockPrettier.format(...args) + return prettierMock.format(...args) } finally { global.__PRETTIER_ESLINT_TEST_STATE__.prettierPath = __filename } diff --git a/test/fixtures/paths/package.json b/test/fixtures/paths/package.json index 9e263252..3d7b58bb 100644 --- a/test/fixtures/paths/package.json +++ b/test/fixtures/paths/package.json @@ -1,4 +1,5 @@ { + "type": "commonjs", "eslintConfig": { "rules": {} }, diff --git a/test/index.spec.ts b/test/index.spec.ts index ee23a0bd..8a17f3a2 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -1,14 +1,16 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/unbound-method, sonarjs/fixme-tag */ // eslint-disable-next-line unicorn/prefer-node-protocol -- mocked -import fsMock from 'fs'; +import fsMock_ from 'fs'; import path from 'node:path'; -import eslintMock, { type ESLint, type Linter } from 'eslint'; +import eslintMock_, { type Linter } from 'eslint'; import loglevelMock from 'loglevel-colored-level-prefix'; -import prettierMock from 'prettier'; +import prettierMock_ from 'prettier'; import stripIndent from 'strip-indent'; +import type { ESLintMock, FsMock, PrettierMock } from '../mock.js'; + import { type ESLintConfig, format, @@ -19,7 +21,11 @@ import { jest.mock('fs'); // NOTE(cedric): this is a workaround to also mock `node:fs` -jest.mock('node:fs', () => fsMock); +jest.mock('node:fs', () => fsMock_); + +const fsMock = fsMock_ as unknown as FsMock; +const eslintMock = eslintMock_ as unknown as ESLintMock; +const prettierMock = prettierMock_ as unknown as PrettierMock; const { mock: { logger }, @@ -273,15 +279,10 @@ const tests: Array<{ ]; beforeEach(() => { - // @ts-expect-error -- FIXME: Fix this type error eslintMock.mock.lintText.mockClear(); - // @ts-expect-error -- FIXME: Fix this type error eslintMock.mock.calculateConfigForFile.mockClear(); - // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.mockClear(); - // @ts-expect-error -- FIXME: Fix this type error prettierMock.resolveConfig.mockClear(); - // @ts-expect-error -- FIXME: Fix this type error fsMock.readFileSync.mockClear(); loglevelMock.mock.clearAll(); globalThis.__PRETTIER_ESLINT_TEST_STATE__ = {}; @@ -316,16 +317,12 @@ test('analyze returns the messages', async () => { }); test('failure to fix with eslint throws and logs an error', async () => { - const { lintText } = - // @ts-expect-error -- FIXME: Fix this type error - eslintMock.mock as ESLint; + const { lintText } = eslintMock.mock; const error = new Error('Something happened'); - // @ts-expect-error -- FIXME: Fix this type error lintText.throwError = error; await expect(() => format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); - // @ts-expect-error -- FIXME: Fix this type error lintText.throwError = null; }); @@ -338,22 +335,17 @@ test('logLevel is used to configure the logger', async () => { test('when prettier throws, log to logger.error and throw the error', async () => { const error = new Error('something bad happened'); - // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.throwError = error; await expect(() => format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); - // @ts-expect-error -- FIXME: Fix this type error prettierMock.format.throwError = null; }); test('can accept a path to an eslint module and uses that instead.', async () => { const eslintPath = path.join(__dirname, '../__mocks__/eslint'); await format({ text: '', eslintPath }); - expect( - // @ts-expect-error -- FIXME: Fix this type error - eslintMock.mock.lintText, - ).toHaveBeenCalledTimes(1); + expect(eslintMock.mock.lintText).toHaveBeenCalledTimes(1); }); test('fails with an error if the eslint module cannot be resolved.', async () => { @@ -476,12 +468,10 @@ test('does not raise an error if prettier.resolveConfig is not defined', async ( test('logs if there is a problem making the CLIEngine', async () => { const error = new Error('fake error'); - // @ts-expect-error -- FIXME: Fix this type error eslintMock.ESLint.mockImplementation(() => { throw error; }); await expect(() => format({ text: '' })).rejects.toThrow(error); - // @ts-expect-error -- FIXME: Fix this type error eslintMock.ESLint.mockReset(); expect(logger.error).toHaveBeenCalledTimes(1); }); diff --git a/yarn.lock b/yarn.lock index d1160e33..ebb810b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1412,13 +1412,13 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.11": - version: 7.0.11 - resolution: "@changesets/apply-release-plan@npm:7.0.11" +"@changesets/apply-release-plan@npm:^7.0.12": + version: 7.0.12 + resolution: "@changesets/apply-release-plan@npm:7.0.12" dependencies: "@changesets/config": "npm:^3.1.1" "@changesets/get-version-range-type": "npm:^0.4.0" - "@changesets/git": "npm:^3.0.3" + "@changesets/git": "npm:^3.0.4" "@changesets/should-skip-package": "npm:^0.1.2" "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" @@ -1429,7 +1429,7 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10c0/30ef40d89dacdaf14017fe82a05fe4b70f426e6baf7c6b3473d52b836035bd3fe59553564ca4ffc867face5120f43ff5875473754dc129465edbf6f95aab1cad + checksum: 10c0/3211e6e75fc50275647fa023ca2187a23b6b2406788f7ef39b38c3486ccf1d068a78b026ec488e46a2e3d135084ba8c152323e8df314cdd6ffbe188bf73bd238 languageName: node linkType: hard @@ -1467,21 +1467,21 @@ __metadata: languageName: node linkType: hard -"@changesets/cli@npm:^2.29.1": - version: 2.29.1 - resolution: "@changesets/cli@npm:2.29.1" +"@changesets/cli@npm:^2.29.2": + version: 2.29.2 + resolution: "@changesets/cli@npm:2.29.2" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.11" + "@changesets/apply-release-plan": "npm:^7.0.12" "@changesets/assemble-release-plan": "npm:^6.0.6" "@changesets/changelog-git": "npm:^0.2.1" "@changesets/config": "npm:^3.1.1" "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.3" - "@changesets/get-release-plan": "npm:^4.0.9" - "@changesets/git": "npm:^3.0.3" + "@changesets/get-release-plan": "npm:^4.0.10" + "@changesets/git": "npm:^3.0.4" "@changesets/logger": "npm:^0.1.1" "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.4" + "@changesets/read": "npm:^0.6.5" "@changesets/should-skip-package": "npm:^0.1.2" "@changesets/types": "npm:^6.1.0" "@changesets/write": "npm:^0.4.0" @@ -1501,7 +1501,7 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: 10c0/1afe0432b91dd7f1cdeba60bd325b293dbde45b7ff0381ba55d92a05694d1d1aa83d4bc1bc705066255a5450f84b6495d788bd556dc0beee947faa74b21038df + checksum: 10c0/e13907dfd372752b3a4a9396ce31e7d4990fa03cc48cb5a797a8f6f96591c86a6b7954536d85b79073301a2fd86b9af758c29f1a65bcd34d6bb52b87c17f6019 languageName: node linkType: hard @@ -1551,17 +1551,17 @@ __metadata: languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.9": - version: 4.0.9 - resolution: "@changesets/get-release-plan@npm:4.0.9" +"@changesets/get-release-plan@npm:^4.0.10": + version: 4.0.10 + resolution: "@changesets/get-release-plan@npm:4.0.10" dependencies: "@changesets/assemble-release-plan": "npm:^6.0.6" "@changesets/config": "npm:^3.1.1" "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.4" + "@changesets/read": "npm:^0.6.5" "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10c0/7697475ece71c839b5b9217e8f5399019fc7c6c397b816e43e282c70537464798c5ac75614788a176fb9a5d6a8572495746cff0eba5d6c6729b2bfcd740edf81 + checksum: 10c0/1f2165e8e04368ce06109d080103aae112878d2d341ca4d861d9d0591c31ec8e7165af5968a99ab7fd90276c5409c50d33a88ce00a4b716ea834402930743c64 languageName: node linkType: hard @@ -1572,16 +1572,16 @@ __metadata: languageName: node linkType: hard -"@changesets/git@npm:^3.0.3": - version: 3.0.3 - resolution: "@changesets/git@npm:3.0.3" +"@changesets/git@npm:^3.0.4": + version: 3.0.4 + resolution: "@changesets/git@npm:3.0.4" dependencies: "@changesets/errors": "npm:^0.2.0" "@manypkg/get-packages": "npm:^1.1.3" is-subdir: "npm:^1.1.1" micromatch: "npm:^4.0.8" spawndamnit: "npm:^3.0.1" - checksum: 10c0/9484d7dee9511d60b226779e854d12953a5bbf6e45e2601e72420147ad622a0a273eb70a3cd51c7ef67f5b1be16007620195fdd589363d4560ba69f2ceb4d3d7 + checksum: 10c0/4abbdc1dec6ddc50b6ad927d9eba4f23acd775fdff615415813099befb0cecd1b0f56ceea5e18a5a3cbbb919d68179366074b02a954fbf4016501e5fd125d2b5 languageName: node linkType: hard @@ -1616,18 +1616,18 @@ __metadata: languageName: node linkType: hard -"@changesets/read@npm:^0.6.4": - version: 0.6.4 - resolution: "@changesets/read@npm:0.6.4" +"@changesets/read@npm:^0.6.5": + version: 0.6.5 + resolution: "@changesets/read@npm:0.6.5" dependencies: - "@changesets/git": "npm:^3.0.3" + "@changesets/git": "npm:^3.0.4" "@changesets/logger": "npm:^0.1.1" "@changesets/parse": "npm:^0.4.1" "@changesets/types": "npm:^6.1.0" fs-extra: "npm:^7.0.1" p-filter: "npm:^2.1.0" picocolors: "npm:^1.1.0" - checksum: 10c0/9f2f838e2052b3fab9867aebb0505acf26b8817953b6ae322c2dcde70b32fdf70917f9a7d03d0b2d5d14de255228421eb0a24b6ceebfd4f1cf1dadcec2c8053e + checksum: 10c0/0f32c7eb8fd58db09f02236f3f45290d995f93ea73fbbe889d4c0407975bf6b9f43389def0af93c86f18adc202f91bc2a79d05da2d7dde7c6f9fe916afc692af languageName: node linkType: hard @@ -1667,15 +1667,6 @@ __metadata: languageName: node linkType: hard -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - "@emnapi/core@npm:^1.4.0": version: 1.4.3 resolution: "@emnapi/core@npm:1.4.3" @@ -1728,13 +1719,13 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.5.0, @eslint-community/eslint-utils@npm:^4.5.1": - version: 4.6.0 - resolution: "@eslint-community/eslint-utils@npm:4.6.0" + version: 4.6.1 + resolution: "@eslint-community/eslint-utils@npm:4.6.1" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/a64131c1b43021e3a84267f6011fd678a936718097c9be169c37a40ada2c7016bec7d6685ecc88112737d57733f36837bb90d9425ad48d2e2aa351d999d32443 + checksum: 10c0/cdeb6f8fc33a83726357d7f736075cdbd6e79dc7ac4b00b15680f1111d0f33bda583e7fafa5937245a058cc66302dc47568bba57b251302dc74964d8e87f56d7 languageName: node linkType: hard @@ -2085,7 +2076,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e @@ -2106,16 +2097,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -2881,10 +2862,11 @@ __metadata: "@babel/core": "npm:^7.26.10" "@babel/preset-env": "npm:^7.26.9" "@changesets/changelog-github": "npm:^0.5.1" - "@changesets/cli": "npm:^2.29.1" + "@changesets/cli": "npm:^2.29.2" "@swc-node/jest": "npm:^1.8.13" "@swc/core": "npm:^1.11.21" "@swc/helpers": "npm:^0.5.17" + "@total-typescript/ts-reset": "npm:^0.6.1" "@types/common-tags": "npm:^1.8.4" "@types/dlv": "npm:^1.1.5" "@types/eslint": "npm:^8.56.12" @@ -2911,6 +2893,8 @@ __metadata: prettier: "npm:^3.5.3" prettier-eslint: "link:." prettier-eslint-cli: "npm:^8.0.1" + prettier-plugin-jsdoc: "npm:^1.3.2" + prettier-plugin-jsdoc-type: "npm:^0.1.11" prettier-plugin-svelte: "npm:^3.3.3" pretty-format: "npm:^29.7.0" require-relative: "npm:^0.8.7" @@ -2919,7 +2903,6 @@ __metadata: strip-indent: "npm:^3.0.0" svelte: "npm:^4.2.19" svelte-eslint-parser: "npm:^0.33.1" - ts-node: "npm:^10.9.2" typescript: "npm:^5.8.3" vue-eslint-parser: "npm:^9.4.3" peerDependencies: @@ -3236,31 +3219,10 @@ __metadata: languageName: node linkType: hard -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb +"@total-typescript/ts-reset@npm:^0.6.1": + version: 0.6.1 + resolution: "@total-typescript/ts-reset@npm:0.6.1" + checksum: 10c0/c42c592054d33e86ac870065820888f89f05e47b2cfbc6bed95f3084b1f6d13b0231b5b8577eabf461aeb3f37c63ae3216f343b573f7136766eb750aac0dd1ab languageName: node linkType: hard @@ -4083,15 +4045,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 - languageName: node - linkType: hard - "acorn@npm:^7.1.1": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -4101,7 +4054,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.14.1, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.9.0": +"acorn@npm:^8.0.0, acorn@npm:^8.10.0, acorn@npm:^8.14.0, acorn@npm:^8.14.1, acorn@npm:^8.5.0, acorn@npm:^8.9.0": version: 8.14.1 resolution: "acorn@npm:8.14.1" bin: @@ -4260,13 +4213,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -5385,13 +5331,6 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - "cross-env@npm:^3.1.4": version: 3.2.4 resolution: "cross-env@npm:3.2.4" @@ -5733,13 +5672,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - "diff@npm:^5.0.0": version: 5.2.0 resolution: "diff@npm:5.2.0" @@ -9604,13 +9536,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -11529,7 +11454,7 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-jsdoc-type@npm:^0.1.6": +"prettier-plugin-jsdoc-type@npm:^0.1.11, prettier-plugin-jsdoc-type@npm:^0.1.6": version: 0.1.11 resolution: "prettier-plugin-jsdoc-type@npm:0.1.11" dependencies: @@ -13522,44 +13447,6 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -14088,13 +13975,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.3.0 resolution: "v8-to-istanbul@npm:9.3.0" @@ -14557,13 +14437,6 @@ __metadata: languageName: node linkType: hard -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" From 62ebb074ed5eac69b69b4ed8d2a58ddc9c57b6e9 Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 18 Apr 2025 12:42:48 +0800 Subject: [PATCH 3/6] test: improve test coverage --- jest.config.js | 2 +- package.json | 5 +++-- src/index.ts | 8 ++++---- src/types.ts | 2 +- src/utils.ts | 10 ++++++---- test/index.spec.ts | 16 ++++++++++++++-- test/utils.spec.ts | 5 +++-- 7 files changed, 32 insertions(+), 16 deletions(-) diff --git a/jest.config.js b/jest.config.js index 5404a61d..2e60d850 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,7 +7,7 @@ module.exports = /** @satisfies {Config} */ ({ collectCoverageFrom: ['src/**/*.ts'], coverageThreshold: { global: { - branches: 96, + branches: 100, functions: 100, lines: 100, statements: 100, diff --git a/package.json b/package.json index e08dcae8..dbaa5196 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,11 @@ "prettier-eslint" ], "scripts": { - "fix": "nps -c ./package-scripts.cjs 'lint --fix'", + "build": "yarn start build", + "fix": "yarn start 'lint --fix'", "prepare": "patch-package && simple-git-hooks", "start": "nps -c ./package-scripts.cjs", - "test": "nps -c ./package-scripts.cjs test" + "test": "yarn start test" }, "peerDependencies": { "prettier-plugin-svelte": "^3.0.0", diff --git a/src/index.ts b/src/index.ts index 78ae1fca..bbc5ad10 100644 --- a/src/index.ts +++ b/src/index.ts @@ -327,16 +327,16 @@ function getESLintApiOptions(eslintConfig: ESLintConfig): ESLintConfig { // https://eslint.org/docs/developer-guide/nodejs-api // these options affect what calculateConfigForFile produces return { - ignore: eslintConfig.ignore ?? true, + ignore: eslintConfig.ignore || true, ignorePath: eslintConfig.ignorePath, - allowInlineConfig: eslintConfig.allowInlineConfig ?? true, + allowInlineConfig: eslintConfig.allowInlineConfig || true, baseConfig: eslintConfig.baseConfig, overrideConfig: eslintConfig.overrideConfig, overrideConfigFile: eslintConfig.overrideConfigFile, plugins: eslintConfig.plugins, resolvePluginsRelativeTo: eslintConfig.resolvePluginsRelativeTo, - rulePaths: eslintConfig.rulePaths ?? [], - useEslintrc: eslintConfig.useEslintrc ?? true, + rulePaths: eslintConfig.rulePaths || [], + useEslintrc: eslintConfig.useEslintrc || true, }; } diff --git a/src/types.ts b/src/types.ts index 40821e00..497c950b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -65,7 +65,7 @@ export interface OptionGetter { * @returns The value of the specified ESLint rule. */ ruleValue: ( - rules: Partial, + rules?: Partial, ) => StringLiteral | undefined; /** diff --git a/src/utils.ts b/src/utils.ts index e5315f32..65b5064e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -140,7 +140,8 @@ function getRelevantESLintConfig(eslintConfig: ESLintConfig): ESLintConfig { const relevantRules: Linter.RulesRecord = {}; for (const [name, rule] of rules.entries()) { - if (!rule.meta?.fixable) { + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- test coverage + if (!rule.meta || !rule.meta.fixable) { logger.trace('turning off rule:', JSON.stringify({ [name]: rule })); relevantRules[name] = ['off']; } @@ -187,7 +188,7 @@ function getPrettierOptionsFromESLintRules( ) { const { rules } = eslintConfig; - const prettierPluginOptions = getRuleValue(rules!, 'prettier/prettier', []); + const prettierPluginOptions = getRuleValue(rules, 'prettier/prettier', []); if ( ruleValueExists(prettierPluginOptions) && @@ -223,7 +224,7 @@ function configureOptions( if (optionIsGiven) { options[key] = givenOption; - } else if (rules) { + } else { const { ruleValue, ruleValueToPrettierOption } = OPTION_GETTERS[key]; const eslintRuleValue = ruleValue(rules); @@ -449,7 +450,8 @@ function extractRuleValue( * `RULE_NOT_CONFIGURED` if unset. */ function getRuleValue( - rules: Partial, + /* istanbul ignore next */ + rules: Partial = {}, name: string, objPath?: Array | string, ): StringLiteral | undefined { diff --git a/test/index.spec.ts b/test/index.spec.ts index 8a17f3a2..c6de3b47 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -11,7 +11,7 @@ import stripIndent from 'strip-indent'; import type { ESLintMock, FsMock, PrettierMock } from '../mock.js'; -import { +import prettierESLint, { type ESLintConfig, format, analyze, @@ -20,13 +20,25 @@ import { jest.mock('fs'); -// NOTE(cedric): this is a workaround to also mock `node:fs` +// !NOTE: this is a workaround to also mock `node:fs` jest.mock('node:fs', () => fsMock_); const fsMock = fsMock_ as unknown as FsMock; const eslintMock = eslintMock_ as unknown as ESLintMock; const prettierMock = prettierMock_ as unknown as PrettierMock; +describe('entrypoint', () => { + test('exports the format function', () => { + expect(prettierESLint).toHaveProperty('format'); + expect(prettierESLint.format).toBe(format); + }); + + test('exports the analyze function', () => { + expect(prettierESLint).toHaveProperty('analyze'); + expect(prettierESLint.analyze).toBe(analyze); + }); +}) + const { mock: { logger }, } = loglevelMock; diff --git a/test/utils.spec.ts b/test/utils.spec.ts index 616b640c..365ae437 100644 --- a/test/utils.spec.ts +++ b/test/utils.spec.ts @@ -5,6 +5,7 @@ import { getOptionsForFormatting, PrettierOptions } from 'prettier-eslint'; const getPrettierOptionsFromESLintRulesTests: Array<{ rules: Linter.RulesRecord; options: PrettierOptions; + prettierOptions?: PrettierOptions; fallbackPrettierOptions?: PrettierOptions; }> = [ { @@ -189,12 +190,12 @@ beforeEach(() => { for (const [ index, - { rules, options, fallbackPrettierOptions }, + { rules, options, prettierOptions, fallbackPrettierOptions }, ] of getPrettierOptionsFromESLintRulesTests.entries()) { test(`getPrettierOptionsFromESLintRulesTests ${index}`, () => { const { prettier } = getOptionsForFormatting( { rules }, - options, + prettierOptions, fallbackPrettierOptions, ); expect(prettier).toMatchObject(options); From c3ab826cb8e14008593b11cd82f36b6d70a0bba4 Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 18 Apr 2025 13:12:29 +0800 Subject: [PATCH 4/6] chore: add `tslib` as dependency --- package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/package.json b/package.json index dbaa5196..463358bd 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "strip-indent": "^3.0.0", "svelte": "^4.2.19", "svelte-eslint-parser": "^0.33.1", + "tslib": "^2.8.1", "typescript": "^5.8.3" }, "resolutions": { diff --git a/yarn.lock b/yarn.lock index ebb810b2..ffa4533e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2903,6 +2903,7 @@ __metadata: strip-indent: "npm:^3.0.0" svelte: "npm:^4.2.19" svelte-eslint-parser: "npm:^0.33.1" + tslib: "npm:^2.8.1" typescript: "npm:^5.8.3" vue-eslint-parser: "npm:^9.4.3" peerDependencies: From d06b35a87fc65eb2b979d3ad900511df181e2681 Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 18 Apr 2025 13:19:17 +0800 Subject: [PATCH 5/6] Create pink-dogs-clap.md Signed-off-by: JounQin --- .changeset/pink-dogs-clap.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pink-dogs-clap.md diff --git a/.changeset/pink-dogs-clap.md b/.changeset/pink-dogs-clap.md new file mode 100644 index 00000000..acce7fbf --- /dev/null +++ b/.changeset/pink-dogs-clap.md @@ -0,0 +1,5 @@ +--- +"prettier-eslint": minor +--- + +feat: migrate to TypeScript with 100% compatibility From b6aeb18bdd654c9039df1216bc4db5162d4deab8 Mon Sep 17 00:00:00 2001 From: JounQin Date: Fri, 18 Apr 2025 13:22:20 +0800 Subject: [PATCH 6/6] chore: cleanup --- test/index.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/index.spec.ts b/test/index.spec.ts index c6de3b47..085f1e17 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -333,7 +333,7 @@ test('failure to fix with eslint throws and logs an error', async () => { const error = new Error('Something happened'); lintText.throwError = error; - await expect(() => format({ text: '' })).rejects.toThrow(error); + await expect(format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); lintText.throwError = null; }); @@ -349,7 +349,7 @@ test('when prettier throws, log to logger.error and throw the error', async () = const error = new Error('something bad happened'); prettierMock.format.throwError = error; - await expect(() => format({ text: '' })).rejects.toThrow(error); + await expect(format({ text: '' })).rejects.toThrow(error); expect(logger.error).toHaveBeenCalledTimes(1); prettierMock.format.throwError = null; }); @@ -483,7 +483,7 @@ test('logs if there is a problem making the CLIEngine', async () => { eslintMock.ESLint.mockImplementation(() => { throw error; }); - await expect(() => format({ text: '' })).rejects.toThrow(error); + await expect(format({ text: '' })).rejects.toThrow(error); eslintMock.ESLint.mockReset(); expect(logger.error).toHaveBeenCalledTimes(1); });