@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +15 -1
- package/bundlers/esbuild-impl/change-extension-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/custom-esbuild-options-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/fix-esm-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/index/package.json +6 -0
- package/bundlers/esbuild-impl/package.json +6 -0
- package/bundlers/esbuild-impl/preprocess-plugin/package.json +6 -0
- package/bundlers/esbuild-impl/svelte-wrapper-plugin/package.json +6 -0
- package/bundlers/index/package.json +6 -0
- package/bundlers/package.json +6 -0
- package/dist/lib/cjs/build.cjs +191 -0
- package/dist/lib/cjs/build.d.cts +59 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.cjs +139 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.d.cts +25 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +96 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +14 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.cjs +106 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.d.cts +13 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +111 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +6 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +211 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +143 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +129 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +14 -0
- package/dist/lib/cjs/bundlers/index.cjs +99 -0
- package/dist/lib/cjs/bundlers/index.d.cts +2 -0
- package/dist/lib/cjs/check-project-types.cjs +163 -0
- package/dist/lib/cjs/check-project-types.d.cts +92 -0
- package/dist/lib/cjs/cli-utils.cjs +276 -0
- package/dist/lib/cjs/cli-utils.d.cts +123 -0
- package/dist/lib/cjs/code-generator.cjs +96 -0
- package/dist/lib/cjs/code-generator.d.cts +14 -0
- package/dist/lib/cjs/commitlint-config.cjs +110 -0
- package/dist/lib/cjs/commitlint-config.d.cts +14 -0
- package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +110 -0
- package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +37 -0
- package/dist/lib/cjs/commitlint-spellcheck-header.cjs +126 -0
- package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +40 -0
- package/dist/lib/cjs/env-toggle.cjs +133 -0
- package/dist/lib/cjs/env-toggle.d.cts +42 -0
- package/dist/lib/cjs/exec.cjs +455 -0
- package/dist/lib/cjs/exec.d.cts +162 -0
- package/dist/lib/cjs/forbidden-patterns.cjs +157 -0
- package/dist/lib/cjs/forbidden-patterns.d.cts +57 -0
- package/dist/lib/cjs/formatters/dprint.cjs +108 -0
- package/dist/lib/cjs/formatters/dprint.d.cts +33 -0
- package/dist/lib/cjs/formatters/index.cjs +99 -0
- package/dist/lib/cjs/formatters/index.d.cts +2 -0
- package/dist/lib/cjs/fs.cjs +123 -0
- package/dist/lib/cjs/fs.d.cts +80 -0
- package/dist/lib/cjs/gate.cjs +140 -0
- package/dist/lib/cjs/gate.d.cts +93 -0
- package/dist/lib/cjs/git.cjs +109 -0
- package/dist/lib/cjs/git.d.cts +37 -0
- package/dist/lib/cjs/index.cjs +186 -0
- package/dist/lib/cjs/index.d.cts +35 -0
- package/dist/lib/cjs/json.cjs +141 -0
- package/dist/lib/cjs/json.d.cts +102 -0
- package/dist/lib/cjs/library-build.cjs +475 -0
- package/dist/lib/cjs/library-build.d.cts +97 -0
- package/dist/lib/cjs/linters/cspell-content.cjs +124 -0
- package/dist/lib/cjs/linters/cspell-content.d.cts +46 -0
- package/dist/lib/cjs/linters/cspell.cjs +103 -0
- package/dist/lib/cjs/linters/cspell.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +94 -0
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +49 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +1068 -0
- package/dist/lib/cjs/linters/eslint-config.d.cts +123 -0
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +130 -0
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +27 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +116 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +26 -0
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +132 -0
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +13 -0
- package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +175 -0
- package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +290 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +265 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.d.cts +41 -0
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +134 -0
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +217 -0
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +126 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +125 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +181 -0
- package/dist/lib/cjs/linters/eslint-rules/require-method-template.d.cts +14 -0
- package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +217 -0
- package/dist/lib/cjs/linters/eslint-rules/require-super-call.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.cjs +92 -0
- package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.d.cts +18 -0
- package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.cjs +92 -0
- package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.d.cts +23 -0
- package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +20 -0
- package/dist/lib/cjs/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +17 -0
- package/dist/lib/cjs/linters/eslint.cjs +122 -0
- package/dist/lib/cjs/linters/eslint.d.cts +35 -0
- package/dist/lib/cjs/linters/index.cjs +138 -0
- package/dist/lib/cjs/linters/index.d.cts +15 -0
- package/dist/lib/cjs/linters/lint-ignores.cjs +91 -0
- package/dist/lib/cjs/linters/lint-ignores.d.cts +30 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +169 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +11 -0
- package/dist/lib/cjs/linters/markdownlint-content.cjs +120 -0
- package/dist/lib/cjs/linters/markdownlint-content.d.cts +47 -0
- package/dist/lib/cjs/linters/markdownlint-ignores.cjs +95 -0
- package/dist/lib/cjs/linters/markdownlint-ignores.d.cts +35 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +99 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.cjs +152 -0
- package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.d.cts +35 -0
- package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1344 -0
- package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2.d.cts +67 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +151 -0
- package/dist/lib/cjs/linters/markdownlint.d.cts +32 -0
- package/dist/lib/cjs/linters/over-exposure.cjs +685 -0
- package/dist/lib/cjs/linters/over-exposure.d.cts +357 -0
- package/dist/lib/cjs/nano-staged-config.cjs +148 -0
- package/dist/lib/cjs/nano-staged-config.d.cts +54 -0
- package/dist/lib/cjs/npm-publish.cjs +93 -0
- package/dist/lib/cjs/npm-publish.d.cts +19 -0
- package/dist/lib/cjs/npm-run.cjs +120 -0
- package/dist/lib/cjs/npm-run.d.cts +34 -0
- package/dist/lib/cjs/npm.cjs +200 -0
- package/dist/lib/cjs/npm.d.cts +168 -0
- package/dist/lib/cjs/package-lock-integrity.cjs +134 -0
- package/dist/lib/cjs/package-lock-integrity.d.cts +38 -0
- package/dist/lib/cjs/package-manager.cjs +291 -0
- package/dist/lib/cjs/package-manager.d.cts +93 -0
- package/dist/lib/cjs/released-issues.cjs +178 -0
- package/dist/lib/cjs/released-issues.d.cts +79 -0
- package/dist/lib/cjs/repo-paths.cjs +167 -0
- package/dist/lib/cjs/repo-paths.d.cts +318 -0
- package/dist/lib/cjs/root.cjs +150 -0
- package/dist/lib/cjs/root.d.cts +107 -0
- package/dist/lib/cjs/test-runners/index.cjs +102 -0
- package/dist/lib/cjs/test-runners/index.d.cts +3 -0
- package/dist/lib/cjs/test-runners/vitest-config.cjs +126 -0
- package/dist/lib/cjs/test-runners/vitest-config.d.cts +90 -0
- package/dist/lib/cjs/test-runners/vitest.cjs +115 -0
- package/dist/lib/cjs/test-runners/vitest.d.cts +52 -0
- package/dist/lib/cjs/validate-declarations.cjs +120 -0
- package/dist/lib/cjs/validate-declarations.d.cts +37 -0
- package/dist/lib/cjs/version.cjs +758 -0
- package/dist/lib/cjs/version.d.cts +418 -0
- package/dist/lib/esm/build.d.mts +59 -0
- package/dist/lib/esm/build.mjs +165 -0
- package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.d.mts +25 -0
- package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.mjs +101 -0
- package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +14 -0
- package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +59 -0
- package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.d.mts +13 -0
- package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.mjs +69 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +6 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +60 -0
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +143 -0
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +176 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +14 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +82 -0
- package/dist/lib/esm/bundlers/index.d.mts +2 -0
- package/dist/lib/esm/bundlers/index.mjs +52 -0
- package/dist/lib/esm/check-project-types.d.mts +92 -0
- package/dist/lib/esm/check-project-types.mjs +123 -0
- package/dist/lib/esm/cli-utils.d.mts +123 -0
- package/dist/lib/esm/cli-utils.mjs +225 -0
- package/dist/lib/esm/code-generator.d.mts +14 -0
- package/dist/lib/esm/code-generator.mjs +59 -0
- package/dist/lib/esm/commitlint-config.d.mts +14 -0
- package/dist/lib/esm/commitlint-config.mjs +79 -0
- package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +37 -0
- package/dist/lib/esm/commitlint-forbidden-patterns.mjs +75 -0
- package/dist/lib/esm/commitlint-spellcheck-header.d.mts +40 -0
- package/dist/lib/esm/commitlint-spellcheck-header.mjs +87 -0
- package/dist/lib/esm/env-toggle.d.mts +42 -0
- package/dist/lib/esm/env-toggle.mjs +84 -0
- package/dist/lib/esm/exec.d.mts +162 -0
- package/dist/lib/esm/exec.mjs +410 -0
- package/dist/lib/esm/forbidden-patterns.d.mts +57 -0
- package/dist/lib/esm/forbidden-patterns.mjs +108 -0
- package/dist/lib/esm/formatters/dprint.d.mts +33 -0
- package/dist/lib/esm/formatters/dprint.mjs +75 -0
- package/dist/lib/esm/formatters/index.d.mts +2 -0
- package/dist/lib/esm/formatters/index.mjs +52 -0
- package/dist/lib/esm/fs.d.mts +80 -0
- package/dist/lib/esm/fs.mjs +89 -0
- package/dist/lib/esm/gate.d.mts +93 -0
- package/dist/lib/esm/gate.mjs +106 -0
- package/dist/lib/esm/git.d.mts +37 -0
- package/dist/lib/esm/git.mjs +72 -0
- package/dist/lib/esm/index.d.mts +35 -0
- package/dist/lib/esm/index.mjs +110 -0
- package/dist/lib/esm/json.d.mts +102 -0
- package/dist/lib/esm/json.mjs +106 -0
- package/dist/lib/esm/library-build.d.mts +97 -0
- package/dist/lib/esm/library-build.mjs +435 -0
- package/dist/lib/esm/linters/cspell-content.d.mts +46 -0
- package/dist/lib/esm/linters/cspell-content.mjs +87 -0
- package/dist/lib/esm/linters/cspell.d.mts +36 -0
- package/dist/lib/esm/linters/cspell.mjs +69 -0
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +49 -0
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +57 -0
- package/dist/lib/esm/linters/eslint-config.d.mts +123 -0
- package/dist/lib/esm/linters/eslint-config.mjs +1022 -0
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +27 -0
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +93 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +26 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +77 -0
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +13 -0
- package/dist/lib/esm/linters/eslint-rules/index.mjs +74 -0
- package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +144 -0
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +277 -0
- package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.d.mts +41 -0
- package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +227 -0
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +96 -0
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.d.mts +36 -0
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +179 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +88 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +87 -0
- package/dist/lib/esm/linters/eslint-rules/require-method-template.d.mts +14 -0
- package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +142 -0
- package/dist/lib/esm/linters/eslint-rules/require-super-call.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +183 -0
- package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.d.mts +18 -0
- package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.mjs +55 -0
- package/dist/lib/esm/linters/eslint-rules/ts-estree-node.d.mts +23 -0
- package/dist/lib/esm/linters/eslint-rules/ts-estree-node.mjs +55 -0
- package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +20 -0
- package/dist/lib/esm/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +17 -0
- package/dist/lib/esm/linters/eslint.d.mts +35 -0
- package/dist/lib/esm/linters/eslint.mjs +88 -0
- package/dist/lib/esm/linters/index.d.mts +15 -0
- package/dist/lib/esm/linters/index.mjs +78 -0
- package/dist/lib/esm/linters/lint-ignores.d.mts +30 -0
- package/dist/lib/esm/linters/lint-ignores.mjs +54 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +11 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +122 -0
- package/dist/lib/esm/linters/markdownlint-content.d.mts +47 -0
- package/dist/lib/esm/linters/markdownlint-content.mjs +83 -0
- package/dist/lib/esm/linters/markdownlint-ignores.d.mts +35 -0
- package/dist/lib/esm/linters/markdownlint-ignores.mjs +57 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.mjs +52 -0
- package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.d.mts +35 -0
- package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.mjs +114 -0
- package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1344 -0
- package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2.d.mts +67 -0
- package/dist/lib/esm/linters/markdownlint.d.mts +32 -0
- package/dist/lib/esm/linters/markdownlint.mjs +124 -0
- package/dist/lib/esm/linters/over-exposure.d.mts +357 -0
- package/dist/lib/esm/linters/over-exposure.mjs +672 -0
- package/dist/lib/esm/nano-staged-config.d.mts +54 -0
- package/dist/lib/esm/nano-staged-config.mjs +103 -0
- package/dist/lib/esm/npm-publish.d.mts +19 -0
- package/dist/lib/esm/npm-publish.mjs +56 -0
- package/dist/lib/esm/npm-run.d.mts +34 -0
- package/dist/lib/esm/npm-run.mjs +81 -0
- package/dist/lib/esm/npm.d.mts +168 -0
- package/dist/lib/esm/npm.mjs +155 -0
- package/dist/lib/esm/package-lock-integrity.d.mts +38 -0
- package/dist/lib/esm/package-lock-integrity.mjs +99 -0
- package/dist/lib/esm/package-manager.d.mts +93 -0
- package/dist/lib/esm/package-manager.mjs +245 -0
- package/dist/lib/esm/released-issues.d.mts +79 -0
- package/dist/lib/esm/released-issues.mjs +143 -0
- package/dist/lib/esm/repo-paths.d.mts +318 -0
- package/dist/lib/esm/repo-paths.mjs +130 -0
- package/dist/lib/esm/root.d.mts +107 -0
- package/dist/lib/esm/root.mjs +115 -0
- package/dist/lib/esm/test-runners/index.d.mts +3 -0
- package/dist/lib/esm/test-runners/index.mjs +54 -0
- package/dist/lib/esm/test-runners/vitest-config.d.mts +90 -0
- package/dist/lib/esm/test-runners/vitest-config.mjs +86 -0
- package/dist/lib/esm/test-runners/vitest.d.mts +52 -0
- package/dist/lib/esm/test-runners/vitest.mjs +76 -0
- package/dist/lib/esm/validate-declarations.d.mts +37 -0
- package/dist/lib/esm/validate-declarations.mjs +87 -0
- package/dist/lib/esm/version.d.mts +418 -0
- package/dist/lib/esm/version.mjs +723 -0
- package/formatters/dprint/package.json +6 -0
- package/formatters/index/package.json +6 -0
- package/formatters/package.json +6 -0
- package/linters/cspell/package.json +6 -0
- package/linters/cspell-content/package.json +6 -0
- package/linters/eslint/package.json +6 -0
- package/linters/eslint-agnostic-core-boundary/package.json +6 -0
- package/linters/eslint-config/package.json +6 -0
- package/linters/eslint-no-restricted-syntax/package.json +6 -0
- package/linters/eslint-rules/in-house-plugin/package.json +6 -0
- package/linters/eslint-rules/index/package.json +6 -0
- package/linters/eslint-rules/no-async-callback-to-unsafe-return/package.json +6 -0
- package/linters/eslint-rules/no-unresolved-jsdoc-link/package.json +6 -0
- package/linters/eslint-rules/no-unused-params-members/package.json +6 -0
- package/linters/eslint-rules/no-used-underscore-variables/package.json +6 -0
- package/linters/eslint-rules/package.json +6 -0
- package/linters/eslint-rules/params-options-name-match/package.json +6 -0
- package/linters/eslint-rules/prefer-noop-async/package.json +6 -0
- package/linters/eslint-rules/readonly-params-options-result-members/package.json +6 -0
- package/linters/eslint-rules/require-method-template/package.json +6 -0
- package/linters/eslint-rules/require-super-call/package.json +6 -0
- package/linters/eslint-rules/rule-tester-helper/package.json +6 -0
- package/linters/eslint-rules/ts-estree-node/package.json +6 -0
- package/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
- package/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
- package/linters/index/package.json +6 -0
- package/linters/lint-ignores/package.json +6 -0
- package/linters/markdownlint/package.json +6 -0
- package/linters/markdownlint-cli2-config/package.json +6 -0
- package/linters/markdownlint-content/package.json +6 -0
- package/linters/markdownlint-ignores/package.json +6 -0
- package/linters/markdownlint-rules/index/package.json +6 -0
- package/linters/markdownlint-rules/no-soft-break-in-paragraph/package.json +6 -0
- package/linters/markdownlint-rules/package.json +6 -0
- package/linters/markdownlint-types/@types/markdownlint-cli2/package.json +4 -0
- package/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
- package/linters/over-exposure/package.json +6 -0
- package/linters/package.json +6 -0
- package/package.json +329 -13
- package/test-runners/index/package.json +6 -0
- package/test-runners/package.json +6 -0
- package/test-runners/vitest/package.json +6 -0
- package/test-runners/vitest-config/package.json +6 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function keepName($unknown) {
|
|
43
|
+
return $unknown;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(function initCjs() {
|
|
47
|
+
const globalThisRecord = globalThis;
|
|
48
|
+
ensureDisposeSymbols();
|
|
49
|
+
globalThisRecord['__name'] ??= keepName;
|
|
50
|
+
globalThisRecord['__extractDefault'] ??= extractDefault;
|
|
51
|
+
|
|
52
|
+
ensureBrowserProcess();
|
|
53
|
+
|
|
54
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
55
|
+
function extractDefault(module) {
|
|
56
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
})();
|
|
60
|
+
|
|
61
|
+
"use strict";
|
|
62
|
+
var __defProp = Object.defineProperty;
|
|
63
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
64
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
65
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
66
|
+
var __export = (target, all) => {
|
|
67
|
+
for (var name in all)
|
|
68
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
69
|
+
};
|
|
70
|
+
var __copyProps = (to, from, except, desc) => {
|
|
71
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
72
|
+
for (let key of __getOwnPropNames(from))
|
|
73
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
74
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
75
|
+
}
|
|
76
|
+
return to;
|
|
77
|
+
};
|
|
78
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
79
|
+
var params_options_name_match_exports = {};
|
|
80
|
+
__export(params_options_name_match_exports, {
|
|
81
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
82
|
+
paramsOptionsNameMatch: () => paramsOptionsNameMatch
|
|
83
|
+
});
|
|
84
|
+
module.exports = __toCommonJS(params_options_name_match_exports);
|
|
85
|
+
const PARAMS_OPTIONS_SUFFIX_PATTERN = /(?:Params|Options)$/;
|
|
86
|
+
const PARAMS_SUFFIX = "Params";
|
|
87
|
+
const OPTIONS_SUFFIX = "Options";
|
|
88
|
+
const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
89
|
+
const paramsOptionsNameMatch = {
|
|
90
|
+
create(context) {
|
|
91
|
+
return {
|
|
92
|
+
":function[params.length>0]"(node) {
|
|
93
|
+
if (!isInExportedScope(node)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const functionNode = node;
|
|
97
|
+
const expectedPrefix = getExpectedPrefix(node);
|
|
98
|
+
if (!expectedPrefix) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const isSoleParameter = functionNode.params.length === 1;
|
|
102
|
+
for (const parameter of functionNode.params) {
|
|
103
|
+
const typeInfo = getTypeAnnotationInfo(parameter);
|
|
104
|
+
if (!typeInfo || !PARAMS_OPTIONS_SUFFIX_PATTERN.test(typeInfo.name)) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const expectedSuffix = isSoleParameter && !isOptionalParameter(parameter) ? PARAMS_SUFFIX : OPTIONS_SUFFIX;
|
|
108
|
+
const expectedName = `${expectedPrefix}${expectedSuffix}`;
|
|
109
|
+
if (typeInfo.name !== expectedName) {
|
|
110
|
+
context.report({
|
|
111
|
+
data: {
|
|
112
|
+
actualName: typeInfo.name,
|
|
113
|
+
expectedName
|
|
114
|
+
},
|
|
115
|
+
messageId: MESSAGE_ID,
|
|
116
|
+
node: typeInfo.node
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
meta: {
|
|
124
|
+
docs: {
|
|
125
|
+
description: "Require `*Params`/`*Options` type names to match the owning function/constructor (prefix) and the sole-vs-supplementary argument convention (suffix)"
|
|
126
|
+
},
|
|
127
|
+
messages: {
|
|
128
|
+
[MESSAGE_ID]: 'Type "{{ actualName }}" does not match the expected name "{{ expectedName }}" for this function/constructor.'
|
|
129
|
+
},
|
|
130
|
+
schema: [],
|
|
131
|
+
type: "suggestion"
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
function getClassName(methodDefinition) {
|
|
135
|
+
const classBody = methodDefinition.parent;
|
|
136
|
+
const classNode = classBody?.parent;
|
|
137
|
+
return !classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string" ? void 0 : classNode.id.name;
|
|
138
|
+
}
|
|
139
|
+
function getExpectedPrefix(node) {
|
|
140
|
+
const methodPrefix = getMethodExpectedPrefix(node);
|
|
141
|
+
return methodPrefix ?? getFunctionExpectedPrefix(node);
|
|
142
|
+
}
|
|
143
|
+
function getFunctionExpectedPrefix(node) {
|
|
144
|
+
if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
|
|
145
|
+
return toPascalCase(node.id.name);
|
|
146
|
+
}
|
|
147
|
+
return node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string" ? toPascalCase(node.parent.id.name) : void 0;
|
|
148
|
+
}
|
|
149
|
+
function getMethodExpectedPrefix(node) {
|
|
150
|
+
const methodDefinition = node.parent;
|
|
151
|
+
if (methodDefinition?.type !== "MethodDefinition") {
|
|
152
|
+
return void 0;
|
|
153
|
+
}
|
|
154
|
+
if (!("key" in methodDefinition) || !methodDefinition.key || typeof methodDefinition.key !== "object" || !("name" in methodDefinition.key) || typeof methodDefinition.key.name !== "string") {
|
|
155
|
+
return void 0;
|
|
156
|
+
}
|
|
157
|
+
const methodName = methodDefinition.key.name;
|
|
158
|
+
const className = getClassName(methodDefinition);
|
|
159
|
+
if (!className) {
|
|
160
|
+
return void 0;
|
|
161
|
+
}
|
|
162
|
+
return methodName === "constructor" ? `${className}Constructor` : className + toPascalCase(methodName);
|
|
163
|
+
}
|
|
164
|
+
function getTypeAnnotationInfo(parameter) {
|
|
165
|
+
const target = parameter.type === "AssignmentPattern" ? parameter.left : parameter;
|
|
166
|
+
if (!("typeAnnotation" in target) || !target.typeAnnotation) {
|
|
167
|
+
return void 0;
|
|
168
|
+
}
|
|
169
|
+
const annotation = target.typeAnnotation;
|
|
170
|
+
const typeNode = annotation["typeAnnotation"];
|
|
171
|
+
if (!typeNode || typeof typeNode !== "object") {
|
|
172
|
+
return void 0;
|
|
173
|
+
}
|
|
174
|
+
const typeNodeObject = typeNode;
|
|
175
|
+
if (typeNodeObject["type"] === "TSTypeReference" && typeNodeObject["typeName"] && typeof typeNodeObject["typeName"] === "object") {
|
|
176
|
+
const typeName = typeNodeObject["typeName"];
|
|
177
|
+
if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
|
|
178
|
+
return { name: typeName["name"], node: typeNode };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return void 0;
|
|
182
|
+
}
|
|
183
|
+
function isInExportedScope(node) {
|
|
184
|
+
const methodDefinition = node.parent;
|
|
185
|
+
if (methodDefinition?.type === "MethodDefinition") {
|
|
186
|
+
const classBody = methodDefinition.parent;
|
|
187
|
+
const classNode = classBody?.parent;
|
|
188
|
+
if (!classNode) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const classParent = classNode.parent;
|
|
192
|
+
return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
|
|
193
|
+
}
|
|
194
|
+
if (node.type === "FunctionDeclaration") {
|
|
195
|
+
const parentNode = node.parent;
|
|
196
|
+
return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
|
|
197
|
+
}
|
|
198
|
+
if (node.parent?.type === "VariableDeclarator") {
|
|
199
|
+
const variableDeclaration = node.parent.parent;
|
|
200
|
+
if (variableDeclaration?.parent?.type === "ExportNamedDeclaration") {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
function isOptionalParameter(parameter) {
|
|
207
|
+
return parameter.type === "AssignmentPattern" || parameter.optional === true;
|
|
208
|
+
}
|
|
209
|
+
function toPascalCase(name) {
|
|
210
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
211
|
+
}
|
|
212
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
213
|
+
0 && (module.exports = {
|
|
214
|
+
MESSAGE_ID,
|
|
215
|
+
paramsOptionsNameMatch
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaFxuICpcbiAqIEVuc3VyZXMgdGhhdCBwYXJhbWV0ZXItYmFnIHR5cGUgbmFtZXMgbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXlcbiAqIGJlbG9uZyB0bywgb24gdHdvIGF4ZXMgXHUyMDE0IGEgcHJlZml4IGRlcml2ZWQgZnJvbSB0aGUgb3duZXIgYW5kIGEgc3VmZml4IGRlcml2ZWRcbiAqIGZyb20gaG93IHRoZSBiYWcgaXMgcGFzc2VkLlxuICpcbiAqIFByZWZpeCAob3duZXIpOlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyXHUyMDI2KWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgdGhlIGZ1bmN0aW9uIG5hbWVcbiAqIC0gYGNsYXNzIEJheiB7IGNvbnN0cnVjdG9yKHBhcmFtczogQmF6Q29uc3RydWN0b3JcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBgQ29uc3RydWN0b3JgXG4gKiAtIGBjbGFzcyBCYXogeyBtZXRob2QocGFyYW1zOiBCYXpNZXRob2RcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBQYXNjYWxDYXNlKG1ldGhvZE5hbWUpXG4gKlxuICogU3VmZml4ICh3aGV0aGVyIHRoZSBiYWcgaXMgYSByZXF1aXJlZCBzb2xlIGFyZ3VtZW50KTpcbiAqIC0gYFBhcmFtc2Agb25seSB3aGVuIHRoZSBiYWcgaXMgdGhlIFNPTEUgYW5kIFJFUVVJUkVEIHBhcmFtZXRlciBcdTIwMTRcbiAqICAgYGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylgXG4gKiAtIGBPcHRpb25zYCBvdGhlcndpc2UuIFRoYXQgaXM6IGFuIE9QVElPTkFMIGJhZyBcdTIwMTQgYGZvb0JhcihvcHRpb25zPzogRm9vQmFyT3B0aW9ucylgXG4gKiAgIG9yIGBmb29CYXIob3B0aW9uczogRm9vQmFyT3B0aW9ucyA9IHt9KWAgXHUyMDE0IG9yIGEgYmFnIFNVUFBMRU1FTlRBUlkgdG8gb3RoZXJcbiAqICAgcGFyYW1ldGVycyBcdTIwMTQgYGZvb0JhcihiYXo6IHN0cmluZywgb3B0aW9uczogRm9vQmFyT3B0aW9ucylgLlxuICpcbiAqIE9ubHkgY2hlY2tzIHBhcmFtZXRlcnMgd2hvc2UgdHlwZSBhbm5vdGF0aW9uIG5hbWUgZW5kcyB3aXRoIGBQYXJhbXNgIG9yXG4gKiBgT3B0aW9uc2AuIE9ubHkgY2hlY2tzIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbmQgbWVtYmVycyBvZiBleHBvcnRlZCBjbGFzc2VzXG4gKiAocmVnYXJkbGVzcyBvZiBhY2Nlc3NpYmlsaXR5IFx1MjAxNCBgcHVibGljYCwgYHByb3RlY3RlZGAsIGFuZCBgcHJpdmF0ZWAgYXJlIGFsbFxuICogY2hlY2tlZCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gaW50ZXJuYWwgb3B0aW9ucy1wYXNzdGhyb3VnaCBoZWxwZXJzLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUnVsZS5Ob2RlIHBhcmVudC9wcm9wZXJ0eSB0eXBlcyBhcmUgd2lkZXIgdGhhbiB3aGF0IHRoZSB0eXBlIGNoZWNrZXIgaW5mZXJzOyBkZWZlbnNpdmUgY2hlY2tzIGFyZSBhcHByb3ByaWF0ZSBmb3IgQVNUIHRyYXZlcnNhbC4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5jb25zdCBQQVJBTVNfU1VGRklYID0gJ1BhcmFtcyc7XG5jb25zdCBPUFRJT05TX1NVRkZJWCA9ICdPcHRpb25zJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBwYXJhbWV0ZXItYmFnIHR5cGUncyBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIChwcmVmaXggYW5kIHJlcXVpcmVkL29wdGlvbmFsIHN1ZmZpeCkgZm9yIGl0cyBmdW5jdGlvbiBvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIE1heWJlT3B0aW9uYWxOb2RlIHtcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25JbmZvIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlaXIgb3duaW5nIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yLCBhbmQgdG8gdXNlIHRoZSBzdWZmaXggdGhhdCBtYXRjaGVzIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcmFtc09wdGlvbnNOYW1lTWF0Y2g6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbltwYXJhbXMubGVuZ3RoPjBdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0luRXhwb3J0ZWRTY29wZShub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzU29sZVBhcmFtZXRlciA9IGZ1bmN0aW9uTm9kZS5wYXJhbXMubGVuZ3RoID09PSAxO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uTm9kZS5wYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbWV0ZXIpO1xuICAgICAgICAgIGlmICghdHlwZUluZm8gfHwgIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QodHlwZUluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgcmVxdWlyZWQgc29sZS1hcmd1bWVudCBiYWcgXHUyMTkyIGAqUGFyYW1zYC4gQW4gb3B0aW9uYWwgYmFnIChgP2Agb3IgYSBkZWZhdWx0XG4gICAgICAgICAgLy8gdmFsdWUpIG9yIGEgYmFnIHN1cHBsZW1lbnRhcnkgdG8gb3RoZXIgcGFyYW1ldGVycyBcdTIxOTIgYCpPcHRpb25zYC5cbiAgICAgICAgICBjb25zdCBleHBlY3RlZFN1ZmZpeCA9IGlzU29sZVBhcmFtZXRlciAmJiAhaXNPcHRpb25hbFBhcmFtZXRlcihwYXJhbWV0ZXIpID8gUEFSQU1TX1NVRkZJWCA6IE9QVElPTlNfU1VGRklYO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IGAke2V4cGVjdGVkUHJlZml4fSR7ZXhwZWN0ZWRTdWZmaXh9YDtcblxuICAgICAgICAgIGlmICh0eXBlSW5mby5uYW1lICE9PSBleHBlY3RlZE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdHVhbE5hbWU6IHR5cGVJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWROYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgbm9kZTogdHlwZUluZm8ubm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgKlBhcmFtc2AvYCpPcHRpb25zYCB0eXBlIG5hbWVzIHRvIG1hdGNoIHRoZSBvd25pbmcgZnVuY3Rpb24vY29uc3RydWN0b3IgKHByZWZpeCkgYW5kIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbiAoc3VmZml4KSdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdUeXBlIFwie3sgYWN0dWFsTmFtZSB9fVwiIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIFwie3sgZXhwZWN0ZWROYW1lIH19XCIgZm9yIHRoaXMgZnVuY3Rpb24vY29uc3RydWN0b3IuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZmluaXRpb246IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNsYXNzQm9keSA9IG1ldGhvZERlZmluaXRpb24ucGFyZW50O1xuICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgcmV0dXJuICFjbGFzc05vZGUgfHwgISgnaWQnIGluIGNsYXNzTm9kZSkgfHwgIWNsYXNzTm9kZS5pZCB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBjbGFzc05vZGUuaWQpXG4gICAgICB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGNsYXNzTm9kZS5pZC5uYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRFeHBlY3RlZFByZWZpeChub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZXRob2RQcmVmaXggPSBnZXRNZXRob2RFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgcmV0dXJuIG1ldGhvZFByZWZpeCA/PyBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGUpO1xufVxuXG5mdW5jdGlvbiBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIE5hbWVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpXG4gIGlmICgnaWQnIGluIG5vZGUgJiYgbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZCA9PT0gJ29iamVjdCcgJiYgJ25hbWUnIGluIG5vZGUuaWQgJiYgdHlwZW9mIG5vZGUuaWQubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdG9QYXNjYWxDYXNlKG5vZGUuaWQubmFtZSk7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBhc3NpZ25lZCB0byBhIHZhcmlhYmxlOiBjb25zdCBmb29CYXIgPSAocGFyYW1zOiBGb29CYXJQYXJhbXMpID0+IC4uLlxuICByZXR1cm4gbm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmICdpZCcgaW4gbm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuaWQgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5wYXJlbnQuaWRcbiAgICAgICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZC5uYW1lID09PSAnc3RyaW5nJ1xuICAgID8gdG9QYXNjYWxDYXNlKG5vZGUucGFyZW50LmlkLm5hbWUpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgIT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIE1ldGhvZERlZmluaXRpb24gYWx3YXlzIGhhcyBhIG5hbWVkIGtleS4gKi9cbiAgaWYgKFxuICAgICEoJ2tleScgaW4gbWV0aG9kRGVmaW5pdGlvbikgfHwgIW1ldGhvZERlZmluaXRpb24ua2V5IHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleSAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gbWV0aG9kRGVmaW5pdGlvbi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleS5uYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZERlZmluaXRpb24ua2V5Lm5hbWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGdldENsYXNzTmFtZShtZXRob2REZWZpbml0aW9uKTtcbiAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgPyBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgIDogY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW1ldGVyOiBSdWxlLk5vZGUpOiBUeXBlQW5ub3RhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuICAvLyBVbndyYXAgYSBkZWZhdWx0ZWQgcGFyYW1ldGVyIHN1Y2ggYXMgYG9wdGlvbnM6IEZvb09wdGlvbnMgPSB7fWAuXG4gIC8vIEl0cyB0eXBlIGFubm90YXRpb24gbGl2ZXMgb24gdGhlIEFzc2lnbm1lbnRQYXR0ZXJuJ3MgbGVmdC1oYW5kIGJpbmRpbmcuXG4gIGNvbnN0IHRhcmdldCA9IHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nID8gcGFyYW1ldGVyLmxlZnQgOiBwYXJhbWV0ZXI7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVHlwZVNjcmlwdC1wYXJzZWQgcGFyYW1zIGFsd2F5cyBoYXZlIHR5cGVBbm5vdGF0aW9uIHdoZW4gdHlwZWQuICovXG4gIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gdGFyZ2V0KSB8fCAhdGFyZ2V0LnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IGFubm90YXRpb24gPSB0YXJnZXQudHlwZUFubm90YXRpb24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5ub3RhdGlvblsndHlwZUFubm90YXRpb24nXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gIGlmICghdHlwZU5vZGUgfHwgdHlwZW9mIHR5cGVOb2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0eXBlTm9kZU9iamVjdCA9IHR5cGVOb2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICBpZiAodHlwZU5vZGVPYmplY3RbJ3R5cGUnXSA9PT0gJ1RTVHlwZVJlZmVyZW5jZScgJiYgdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gJiYgdHlwZW9mIHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICBpZiAodHlwZU5hbWVbJ3R5cGUnXSA9PT0gJ0lkZW50aWZpZXInICYmIHR5cGVvZiB0eXBlTmFtZVsnbmFtZSddID09PSAnc3RyaW5nJykge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzSW5FeHBvcnRlZFNjb3BlKG5vZGU6IFJ1bGUuTm9kZSk6IGJvb2xlYW4ge1xuICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkLCByZWdhcmRsZXNzIG9mIGFjY2Vzc2liaWxpdHlcbiAgLy8gKHB1YmxpYy9wcm90ZWN0ZWQvcHJpdmF0ZSBtZW1iZXJzIGFyZSBhbGwgY2hlY2tlZCkuXG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWZpbml0aW9uLnBhcmVudDtcbiAgICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIGFsd2F5cyBoYXMgcGFyZW50IGNoYWluIGZvciBjbGFzcyBtZXRob2RzLiAqL1xuICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY29uc3QgY2xhc3NQYXJlbnQgPSBjbGFzc05vZGUucGFyZW50O1xuICAgIHJldHVybiBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgfVxuXG4gIC8vIFRvcC1sZXZlbCBmdW5jdGlvbjogY2hlY2sgaWYgZXhwb3J0ZWRcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nKSB7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgIHJldHVybiBwYXJlbnROb2RlPy50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gIGlmIChub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicpIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc09wdGlvbmFsUGFyYW1ldGVyKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gIC8vIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gIGlzIGFuIEFzc2lnbm1lbnRQYXR0ZXJuOyBgb3B0aW9ucz86IEZvb09wdGlvbnNgIGNhcnJpZXMgYW5cbiAgLy8gYG9wdGlvbmFsYCBmbGFnLiBCb3RoIG1ha2UgdGhlIGJhZyBvcHRpb25hbCBcdTIxOTIgYCpPcHRpb25zYC5cbiAgcmV0dXJuIHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nIHx8IChwYXJhbWV0ZXIgYXMgTWF5YmVPcHRpb25hbE5vZGUpLm9wdGlvbmFsID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0b1Bhc2NhbENhc2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZSwgd2hpY2ggaXMgbm93IHRoZSB3aG9sZSBmaWxlOiB0aGUgcHJlZml4IGhlbHBlcnMgbW92ZWQgdG8gbW9kdWxlIHNjb3BlIGFuZCB3YWxrIHRo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
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference path="../../index.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* ESLint rule: params-options-name-match
|
|
6
|
+
*
|
|
7
|
+
* Ensures that parameter-bag type names match the function or constructor they
|
|
8
|
+
* belong to, on two axes — a prefix derived from the owner and a suffix derived
|
|
9
|
+
* from how the bag is passed.
|
|
10
|
+
*
|
|
11
|
+
* Prefix (owner):
|
|
12
|
+
* - `fooBar(params: FooBar…)` — PascalCase of the function name
|
|
13
|
+
* - `class Baz { constructor(params: BazConstructor…) }` — ClassName + `Constructor`
|
|
14
|
+
* - `class Baz { method(params: BazMethod…) }` — ClassName + PascalCase(methodName)
|
|
15
|
+
*
|
|
16
|
+
* Suffix (whether the bag is a required sole argument):
|
|
17
|
+
* - `Params` only when the bag is the SOLE and REQUIRED parameter —
|
|
18
|
+
* `fooBar(params: FooBarParams)`
|
|
19
|
+
* - `Options` otherwise. That is: an OPTIONAL bag — `fooBar(options?: FooBarOptions)`
|
|
20
|
+
* or `fooBar(options: FooBarOptions = {})` — or a bag SUPPLEMENTARY to other
|
|
21
|
+
* parameters — `fooBar(baz: string, options: FooBarOptions)`.
|
|
22
|
+
*
|
|
23
|
+
* Only checks parameters whose type annotation name ends with `Params` or
|
|
24
|
+
* `Options`. Only checks exported functions and members of exported classes
|
|
25
|
+
* (regardless of accessibility — `public`, `protected`, and `private` are all
|
|
26
|
+
* checked) to avoid false positives from internal options-passthrough helpers.
|
|
27
|
+
*/
|
|
28
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
29
|
+
/**
|
|
30
|
+
Message ID reported when a parameter-bag type's name does not match the expected name (prefix and required/optional suffix) for its function or constructor.
|
|
31
|
+
*/
|
|
32
|
+
export declare const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
33
|
+
/**
|
|
34
|
+
* ESLint rule requiring `*Params`/`*Options` type names to match their owning function or constructor, and to use the suffix that matches the sole-vs-supplementary argument convention.
|
|
35
|
+
*/
|
|
36
|
+
export declare const paramsOptionsNameMatch: Rule.RuleModule;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function keepName($unknown) {
|
|
43
|
+
return $unknown;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(function initCjs() {
|
|
47
|
+
const globalThisRecord = globalThis;
|
|
48
|
+
ensureDisposeSymbols();
|
|
49
|
+
globalThisRecord['__name'] ??= keepName;
|
|
50
|
+
globalThisRecord['__extractDefault'] ??= extractDefault;
|
|
51
|
+
|
|
52
|
+
ensureBrowserProcess();
|
|
53
|
+
|
|
54
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
55
|
+
function extractDefault(module) {
|
|
56
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
})();
|
|
60
|
+
|
|
61
|
+
"use strict";
|
|
62
|
+
var __defProp = Object.defineProperty;
|
|
63
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
64
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
65
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
66
|
+
var __export = (target, all) => {
|
|
67
|
+
for (var name in all)
|
|
68
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
69
|
+
};
|
|
70
|
+
var __copyProps = (to, from, except, desc) => {
|
|
71
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
72
|
+
for (let key of __getOwnPropNames(from))
|
|
73
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
74
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
75
|
+
}
|
|
76
|
+
return to;
|
|
77
|
+
};
|
|
78
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
79
|
+
var prefer_noop_async_exports = {};
|
|
80
|
+
__export(prefer_noop_async_exports, {
|
|
81
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
82
|
+
preferNoopAsync: () => preferNoopAsync
|
|
83
|
+
});
|
|
84
|
+
module.exports = __toCommonJS(prefer_noop_async_exports);
|
|
85
|
+
var import_ts_estree_node = require('./ts-estree-node.cjs');
|
|
86
|
+
const MESSAGE_ID = "preferNoopAsync";
|
|
87
|
+
const preferNoopAsync = {
|
|
88
|
+
create(context) {
|
|
89
|
+
return {
|
|
90
|
+
"CallExpression"(node) {
|
|
91
|
+
const callNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
92
|
+
if (!isPromiseResolveWithNoArguments(callNode)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
context.report({
|
|
96
|
+
fix(fixer) {
|
|
97
|
+
return fixer.replaceText(node, "noopAsync()");
|
|
98
|
+
},
|
|
99
|
+
messageId: MESSAGE_ID,
|
|
100
|
+
node
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
meta: {
|
|
106
|
+
docs: {
|
|
107
|
+
description: "Prefer `noopAsync()` over `Promise.resolve()`"
|
|
108
|
+
},
|
|
109
|
+
fixable: "code",
|
|
110
|
+
messages: {
|
|
111
|
+
[MESSAGE_ID]: "Use `noopAsync()` instead of `Promise.resolve()` for async no-ops."
|
|
112
|
+
},
|
|
113
|
+
schema: [],
|
|
114
|
+
type: "suggestion"
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
function isPromiseResolveWithNoArguments(node) {
|
|
118
|
+
const callee = node.callee;
|
|
119
|
+
return node.arguments.length === 0 && callee.type === "MemberExpression" && callee.object.type === "Identifier" && callee.object.name === "Promise" && callee.property.type === "Identifier" && callee.property.name === "resolve";
|
|
120
|
+
}
|
|
121
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
122
|
+
0 && (module.exports = {
|
|
123
|
+
MESSAGE_ID,
|
|
124
|
+
preferNoopAsync
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3ByZWZlci1ub29wLWFzeW5jLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHByZWZlci1ub29wLWFzeW5jXG4gKlxuICogUmVwb3J0cyBgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKClgIGFuZCBzdWdnZXN0cyByZXBsYWNpbmcgaXQgd2l0aFxuICogYGF3YWl0IG5vb3BBc3luYygpYCBmb3IgY29uc2lzdGVuY3kgYW5kIHJlYWRhYmlsaXR5LlxuICpcbiAqIGBub29wQXN5bmMoKWAgZnJvbSB0aGUgcHJvamVjdCdzIGBmdW5jdGlvbi50c2AgbW9kdWxlIGlzIHRoZSBjb252ZW50aW9uYWxcbiAqIHdheSB0byBleHByZXNzIGFuIGludGVudGlvbmFsIGFzeW5jIG5vLW9wLlxuICovXG5pbXBvcnQgdHlwZSB7IFRTRVNUcmVlIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBQcm9taXNlLnJlc29sdmUoKWAgaXMgdXNlZCBmb3IgYW4gYXN5bmMgbm8tb3AgaW5zdGVhZCBvZiBgbm9vcEFzeW5jKClgLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdwcmVmZXJOb29wQXN5bmMnO1xuXG4vKipcbiAqIEVTTGludCBydWxlIHByZWZlcnJpbmcgYG5vb3BBc3luYygpYCBvdmVyIGBQcm9taXNlLnJlc29sdmUoKWAgZm9yIGFuIGFzeW5jIG5vLW9wLlxuICovXG5leHBvcnQgY29uc3QgcHJlZmVyTm9vcEFzeW5jOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDYWxsRXhwcmVzc2lvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxOb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgaWYgKCFpc1Byb21pc2VSZXNvbHZlV2l0aE5vQXJndW1lbnRzKGNhbGxOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dChub2RlLCAnbm9vcEFzeW5jKCknKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBgbm9vcEFzeW5jKClgIG92ZXIgYFByb21pc2UucmVzb2x2ZSgpYCdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnVXNlIGBub29wQXN5bmMoKWAgaW5zdGVhZCBvZiBgUHJvbWlzZS5yZXNvbHZlKClgIGZvciBhc3luYyBuby1vcHMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgUHJvbWlzZS5yZXNvbHZlKClgIHdpdGggbm8gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGNhbGwgZXhwcmVzc2lvbiBub2RlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGBQcm9taXNlLnJlc29sdmUoKWAgd2l0aCBubyBhcmd1bWVudHMuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZVJlc29sdmVXaXRoTm9Bcmd1bWVudHMobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgY29uc3QgY2FsbGVlID0gbm9kZS5jYWxsZWU7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gbm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAwXG4gICAgJiYgY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmIGNhbGxlZS5vYmplY3QubmFtZSA9PT0gJ1Byb21pc2UnXG4gICAgJiYgY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09ICdJZGVudGlmaWVyJyAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gJ3Jlc29sdmUnO1xuICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZW51bS1jb21wYXJpc29uIC0tIEFTVCBub2RlIHR5cGUgc3RyaW5nIGxpdGVyYWxzIG1hdGNoIHRoZSBUU0VTVHJlZSBlbnVtIHZhbHVlcy4gKi9cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLDRCQUErQjtBQUt4QixNQUFNLGFBQWE7QUFLbkIsTUFBTSxrQkFBbUM7QUFBQSxFQUM5QyxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxpQkFBaUIsTUFBdUI7QUFDdEMsY0FBTSxlQUFXLHNDQUFlLElBQUk7QUFFcEMsWUFBSSxDQUFDLGdDQUFnQyxRQUFRLEdBQUc7QUFDOUM7QUFBQSxRQUNGO0FBRUEsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsSUFBSSxPQUFPO0FBQ1QsbUJBQU8sTUFBTSxZQUFZLE1BQU0sYUFBYTtBQUFBLFVBQzlDO0FBQUEsVUFDQSxXQUFXO0FBQUEsVUFDWDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjtBQVFBLFNBQVMsZ0NBQWdDLE1BQXdDO0FBQy9FLFFBQU0sU0FBUyxLQUFLO0FBR3BCLFNBQU8sS0FBSyxVQUFVLFdBQVcsS0FDNUIsT0FBTyxTQUFTLHNCQUNoQixPQUFPLE9BQU8sU0FBUyxnQkFBZ0IsT0FBTyxPQUFPLFNBQVMsYUFDOUQsT0FBTyxTQUFTLFNBQVMsZ0JBQWdCLE9BQU8sU0FBUyxTQUFTO0FBRXpFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../index.d.cts" />
|
|
2
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when `Promise.resolve()` is used for an async no-op instead of `noopAsync()`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "preferNoopAsync";
|
|
7
|
+
/**
|
|
8
|
+
* ESLint rule preferring `noopAsync()` over `Promise.resolve()` for an async no-op.
|
|
9
|
+
*/
|
|
10
|
+
export declare const preferNoopAsync: Rule.RuleModule;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const existingProcess = globalThis.process;
|
|
23
|
+
|
|
24
|
+
if (!existingProcess) {
|
|
25
|
+
globalThis.process = browserProcess;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (existingProcess.versions?.node) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const existingProcessRecord = existingProcess;
|
|
34
|
+
|
|
35
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
36
|
+
existingProcessRecord[key] ??= value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
existingProcessRecord['browser'] = true;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function keepName($unknown) {
|
|
43
|
+
return $unknown;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(function initCjs() {
|
|
47
|
+
const globalThisRecord = globalThis;
|
|
48
|
+
ensureDisposeSymbols();
|
|
49
|
+
globalThisRecord['__name'] ??= keepName;
|
|
50
|
+
globalThisRecord['__extractDefault'] ??= extractDefault;
|
|
51
|
+
|
|
52
|
+
ensureBrowserProcess();
|
|
53
|
+
|
|
54
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
55
|
+
function extractDefault(module) {
|
|
56
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
})();
|
|
60
|
+
|
|
61
|
+
"use strict";
|
|
62
|
+
var __defProp = Object.defineProperty;
|
|
63
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
64
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
65
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
66
|
+
var __export = (target, all) => {
|
|
67
|
+
for (var name in all)
|
|
68
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
69
|
+
};
|
|
70
|
+
var __copyProps = (to, from, except, desc) => {
|
|
71
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
72
|
+
for (let key of __getOwnPropNames(from))
|
|
73
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
74
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
75
|
+
}
|
|
76
|
+
return to;
|
|
77
|
+
};
|
|
78
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
79
|
+
var readonly_params_options_result_members_exports = {};
|
|
80
|
+
__export(readonly_params_options_result_members_exports, {
|
|
81
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
82
|
+
readonlyParamsOptionsResultMembers: () => readonlyParamsOptionsResultMembers
|
|
83
|
+
});
|
|
84
|
+
module.exports = __toCommonJS(readonly_params_options_result_members_exports);
|
|
85
|
+
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
86
|
+
const MESSAGE_ID = "readonlyParamsOptionsResultMembers";
|
|
87
|
+
const readonlyParamsOptionsResultMembers = {
|
|
88
|
+
create(context) {
|
|
89
|
+
return {
|
|
90
|
+
"TSInterfaceDeclaration[id.name=/(?:Params|Options|Result)$/] TSPropertySignature[readonly=false]"(node) {
|
|
91
|
+
reportNonReadonly(context, node);
|
|
92
|
+
},
|
|
93
|
+
"TSTypeAliasDeclaration[id.name=/(?:Params|Options|Result)$/] TSPropertySignature[readonly=false]"(node) {
|
|
94
|
+
reportNonReadonly(context, node);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
meta: {
|
|
99
|
+
docs: {
|
|
100
|
+
description: "Require all properties in `*Params`, `*Options`, and `*Result` interfaces to be `readonly`"
|
|
101
|
+
},
|
|
102
|
+
fixable: "code",
|
|
103
|
+
messages: {
|
|
104
|
+
[MESSAGE_ID]: "Property must be `readonly`. Params/Options/Result interfaces should be immutable."
|
|
105
|
+
},
|
|
106
|
+
schema: [],
|
|
107
|
+
type: "suggestion"
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
function reportNonReadonly($context, node) {
|
|
111
|
+
const propertyNode = node;
|
|
112
|
+
$context.report({
|
|
113
|
+
fix(fixer) {
|
|
114
|
+
return fixer.insertTextBefore((0, import_type_guards.ensureNonNullable)(propertyNode.key), "readonly ");
|
|
115
|
+
},
|
|
116
|
+
messageId: MESSAGE_ID,
|
|
117
|
+
node
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
121
|
+
0 && (module.exports = {
|
|
122
|
+
MESSAGE_ID,
|
|
123
|
+
readonlyParamsOptionsResultMembers
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlYWRvbmx5LXBhcmFtcy1vcHRpb25zLXJlc3VsdC1tZW1iZXJzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlYWRvbmx5LXBhcmFtcy1vcHRpb25zLXJlc3VsdC1tZW1iZXJzXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGludGVyZmFjZSBvciB0eXBlIGFsaWFzIHdob3NlIG5hbWUgZW5kcyB3aXRoXG4gKiBgUGFyYW1zYCwgYE9wdGlvbnNgLCBvciBgUmVzdWx0YCBoYXMgYSBwcm9wZXJ0eSBzaWduYXR1cmUgdGhhdCBpcyBub3RcbiAqIGByZWFkb25seWAuIFBhcmFtZXRlci9vcHRpb25zL3Jlc3VsdCBiYWdzIHNob3VsZCBiZSBpbW11dGFibGUgXHUyMDE0IGNhbGxlcnNcbiAqIHNob3VsZCBuZXZlciBtdXRhdGUgdGhlIG9iamVjdCB0aGV5IHJlY2VpdmVkLlxuICovXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgbWVtYmVyIG9mIGEgYCpQYXJhbXNgL2AqT3B0aW9uc2AvYCpSZXN1bHRgIGludGVyZmFjZSBpcyBub3QgZGVjbGFyZWQgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVhZG9ubHlQYXJhbXNPcHRpb25zUmVzdWx0TWVtYmVycyc7XG5cbmludGVyZmFjZSBQcm9wZXJ0eVNpZ25hdHVyZU5vZGUge1xuICByZWFkb25seSBrZXk6IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgcHJvcGVydHkgb2YgYSBgKlBhcmFtc2AsIGAqT3B0aW9uc2AsIG9yIGAqUmVzdWx0YCBpbnRlcmZhY2UgdG8gYmUgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlYWRvbmx5UGFyYW1zT3B0aW9uc1Jlc3VsdE1lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb25baWQubmFtZT0vKD86UGFyYW1zfE9wdGlvbnN8UmVzdWx0KSQvXSBUU1Byb3BlcnR5U2lnbmF0dXJlW3JlYWRvbmx5PWZhbHNlXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydE5vblJlYWRvbmx5KGNvbnRleHQsIG5vZGUpO1xuICAgICAgfSxcbiAgICAgICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uW2lkLm5hbWU9Lyg/OlBhcmFtc3xPcHRpb25zfFJlc3VsdCkkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCwgYCpPcHRpb25zYCwgYW5kIGAqUmVzdWx0YCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMvUmVzdWx0IGludGVyZmFjZXMgc2hvdWxkIGJlIGltbXV0YWJsZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5mdW5jdGlvbiByZXBvcnROb25SZWFkb25seSgkY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCwgbm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAkY29udGV4dC5yZXBvcnQoe1xuICAgIGZpeChmaXhlcikge1xuICAgICAgcmV0dXJuIGZpeGVyLmluc2VydFRleHRCZWZvcmUoZW5zdXJlTm9uTnVsbGFibGUocHJvcGVydHlOb2RlLmtleSksICdyZWFkb25seSAnKTtcbiAgICB9LFxuICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICBub2RlXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEseUJBQWtDO0FBSzNCLE1BQU0sYUFBYTtBQVNuQixNQUFNLHFDQUFzRDtBQUFBLEVBQ2pFLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLG1HQUFtRyxNQUF1QjtBQUN4SCwwQkFBa0IsU0FBUyxJQUFJO0FBQUEsTUFDakM7QUFBQSxNQUNBLG1HQUFtRyxNQUF1QjtBQUN4SCwwQkFBa0IsU0FBUyxJQUFJO0FBQUEsTUFDakM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjtBQUVBLFNBQVMsa0JBQWtCLFVBQTRCLE1BQXVCO0FBQzVFLFFBQU0sZUFBZTtBQUNyQixXQUFTLE9BQU87QUFBQSxJQUNkLElBQUksT0FBTztBQUNULGFBQU8sTUFBTSxxQkFBaUIsc0NBQWtCLGFBQWEsR0FBRyxHQUFHLFdBQVc7QUFBQSxJQUNoRjtBQUFBLElBQ0EsV0FBVztBQUFBLElBQ1g7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference path="../../index.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* ESLint rule: readonly-params-options-result-members
|
|
6
|
+
*
|
|
7
|
+
* Reports an error when an interface or type alias whose name ends with
|
|
8
|
+
* `Params`, `Options`, or `Result` has a property signature that is not
|
|
9
|
+
* `readonly`. Parameter/options/result bags should be immutable — callers
|
|
10
|
+
* should never mutate the object they received.
|
|
11
|
+
*/
|
|
12
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
13
|
+
/**
|
|
14
|
+
Message ID reported when a member of a `*Params`/`*Options`/`*Result` interface is not declared `readonly`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MESSAGE_ID = "readonlyParamsOptionsResultMembers";
|
|
17
|
+
/**
|
|
18
|
+
* ESLint rule requiring every property of a `*Params`, `*Options`, or `*Result` interface to be `readonly`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const readonlyParamsOptionsResultMembers: Rule.RuleModule;
|