@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.1.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 +483 -0
- package/dist/lib/cjs/library-build.d.cts +101 -0
- package/dist/lib/cjs/library-references.d.cts +5 -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 +196 -0
- package/dist/lib/cjs/linters/eslint.d.cts +74 -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 +101 -0
- package/dist/lib/esm/library-build.mjs +443 -0
- package/dist/lib/esm/library-references.d.mts +5 -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 +74 -0
- package/dist/lib/esm/linters/eslint.mjs +159 -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,181 @@
|
|
|
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 require_method_template_exports = {};
|
|
80
|
+
__export(require_method_template_exports, {
|
|
81
|
+
MESSAGE_ID_MISSING_TEMPLATE: () => MESSAGE_ID_MISSING_TEMPLATE,
|
|
82
|
+
MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION: () => MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION,
|
|
83
|
+
requireMethodTemplate: () => requireMethodTemplate
|
|
84
|
+
});
|
|
85
|
+
module.exports = __toCommonJS(require_method_template_exports);
|
|
86
|
+
var import_reg_exp = require('@mnaoumov/typescript-lib/reg-exp');
|
|
87
|
+
var import_ts_estree_node = require('./ts-estree-node.cjs');
|
|
88
|
+
const TAG_NAME = "typeParam";
|
|
89
|
+
const MESSAGE_ID_MISSING_TEMPLATE = "missingTemplate";
|
|
90
|
+
const MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION = "missingTemplateDescription";
|
|
91
|
+
const requireMethodTemplate = {
|
|
92
|
+
create(context) {
|
|
93
|
+
const settings = context.settings["jsdoc"];
|
|
94
|
+
const preferredTagName = settings?.tagNamePreference?.["template"] ?? TAG_NAME;
|
|
95
|
+
return {
|
|
96
|
+
"MethodDefinition"(node) {
|
|
97
|
+
const methodNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
98
|
+
const functionExpression = methodNode.value;
|
|
99
|
+
const typeParams = functionExpression.typeParameters?.params;
|
|
100
|
+
if (!typeParams || typeParams.length === 0) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const sourceCode = context.sourceCode;
|
|
104
|
+
const comments = sourceCode.getCommentsBefore(node);
|
|
105
|
+
const jsdocComment = findJsdocComment(comments);
|
|
106
|
+
if (!jsdocComment) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const parsedTags = parseTypeParameterTags({
|
|
110
|
+
commentBody: jsdocComment.value,
|
|
111
|
+
tagName: preferredTagName
|
|
112
|
+
});
|
|
113
|
+
for (const typeParameter of typeParams) {
|
|
114
|
+
const parameterName = typeParameter.name.name;
|
|
115
|
+
const matchingTag = parsedTags.find((tag) => tag.name === parameterName);
|
|
116
|
+
if (!matchingTag) {
|
|
117
|
+
context.report({
|
|
118
|
+
data: {
|
|
119
|
+
// eslint-disable-next-line unicorn/name-replacements -- `paramName` is the placeholder this rule's own message template reads.
|
|
120
|
+
paramName: parameterName,
|
|
121
|
+
tagName: preferredTagName
|
|
122
|
+
},
|
|
123
|
+
messageId: MESSAGE_ID_MISSING_TEMPLATE,
|
|
124
|
+
node
|
|
125
|
+
});
|
|
126
|
+
} else if (!matchingTag.hasDescription) {
|
|
127
|
+
context.report({
|
|
128
|
+
data: {
|
|
129
|
+
// eslint-disable-next-line unicorn/name-replacements -- `paramName` is the placeholder this rule's own message template reads.
|
|
130
|
+
paramName: parameterName,
|
|
131
|
+
tagName: preferredTagName
|
|
132
|
+
},
|
|
133
|
+
messageId: MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION,
|
|
134
|
+
node
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
},
|
|
141
|
+
meta: {
|
|
142
|
+
docs: {
|
|
143
|
+
description: "Require `@typeParam` tags with descriptions for generic method type parameters"
|
|
144
|
+
},
|
|
145
|
+
messages: {
|
|
146
|
+
[MESSAGE_ID_MISSING_TEMPLATE]: "Missing @{{ tagName }} {{ paramName }}",
|
|
147
|
+
[MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION]: "@{{ tagName }} {{ paramName }} is missing a description"
|
|
148
|
+
},
|
|
149
|
+
schema: [],
|
|
150
|
+
type: "suggestion"
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
function findJsdocComment(comments) {
|
|
154
|
+
for (let index = comments.length - 1; index >= 0; index--) {
|
|
155
|
+
const comment = comments[index];
|
|
156
|
+
if (comment?.type === "Block" && comment.value.startsWith("*")) {
|
|
157
|
+
return comment;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return void 0;
|
|
161
|
+
}
|
|
162
|
+
function parseTypeParameterTags(params) {
|
|
163
|
+
const { commentBody, tagName } = params;
|
|
164
|
+
const tags = [];
|
|
165
|
+
const tagPattern = new RegExp(String.raw`@(?:${tagName}|template|typeParam)\s+(?<typeName>[\w$]+)(?<rest>.*)`, "g");
|
|
166
|
+
let match;
|
|
167
|
+
while ((match = tagPattern.exec(commentBody)) !== null) {
|
|
168
|
+
const name = (0, import_reg_exp.getMandatoryNamedGroup)(match, "typeName");
|
|
169
|
+
const rest = (0, import_reg_exp.getMandatoryNamedGroup)(match, "rest").trim();
|
|
170
|
+
const hasDescription = rest.length > 0 && rest !== "-";
|
|
171
|
+
tags.push({ hasDescription, name });
|
|
172
|
+
}
|
|
173
|
+
return tags;
|
|
174
|
+
}
|
|
175
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
176
|
+
0 && (module.exports = {
|
|
177
|
+
MESSAGE_ID_MISSING_TEMPLATE,
|
|
178
|
+
MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION,
|
|
179
|
+
requireMethodTemplate
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlcXVpcmUtbWV0aG9kLXRlbXBsYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlcXVpcmUtbWV0aG9kLXRlbXBsYXRlXG4gKlxuICogUmVxdWlyZXMgdGhhdCBnZW5lcmljIG1ldGhvZHMgKG1ldGhvZHMgd2l0aCB0eXBlIHBhcmFtZXRlcnMpIGhhdmVcbiAqIGNvcnJlc3BvbmRpbmcgYEB0eXBlUGFyYW1gIChvciBgQHRlbXBsYXRlYCkgSlNEb2MgdGFncyBmb3IgZWFjaCB0eXBlIHBhcmFtZXRlci5cbiAqXG4gKiBUaGlzIGZpbGxzIGEgZ2FwIGluIGBlc2xpbnQtcGx1Z2luLWpzZG9jYCdzIGByZXF1aXJlLXRlbXBsYXRlYCBydWxlLCB3aGljaFxuICogb25seSBjaGVja3MgdG9wLWxldmVsIGRlY2xhcmF0aW9ucyAoZnVuY3Rpb25zLCBjbGFzc2VzLCBpbnRlcmZhY2VzLCB0eXBlIGFsaWFzZXMpXG4gKiBidXQgbm90IG1ldGhvZHMgd2l0aGluIGNsYXNzZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2dhanVzL2VzbGludC1wbHVnaW4tanNkb2MvaXNzdWVzLzEzODZ9XG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgQ29tbWVudCB9IGZyb20gJ2VzdHJlZSc7XG5cbmltcG9ydCB7IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbmludGVyZmFjZSBKc2RvY1NldHRpbmdzIHtcbiAgdGFnTmFtZVByZWZlcmVuY2U/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5jb25zdCBUQUdfTkFNRSA9ICd0eXBlUGFyYW0nO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCB0eXBlIHBhcmFtZXRlciBoYXMgbm8gbWF0Y2hpbmcgYEB0eXBlUGFyYW1gIHRhZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURSA9ICdtaXNzaW5nVGVtcGxhdGUnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCdzIGBAdHlwZVBhcmFtYCB0YWcgaXMgbWlzc2luZyBhIGRlc2NyaXB0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OID0gJ21pc3NpbmdUZW1wbGF0ZURlc2NyaXB0aW9uJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgZ2VuZXJpYyBtZXRob2QgdHlwZSBwYXJhbWV0ZXIgdG8gY2FycnkgYSBgQHR5cGVQYXJhbWAgdGFnIHdpdGggYSBkZXNjcmlwdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVNZXRob2RUZW1wbGF0ZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNldHRpbmdzID0gY29udGV4dC5zZXR0aW5nc1snanNkb2MnXSBhcyBKc2RvY1NldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHByZWZlcnJlZFRhZ05hbWUgPSBzZXR0aW5ncz8udGFnTmFtZVByZWZlcmVuY2U/LlsndGVtcGxhdGUnXSA/PyBUQUdfTkFNRTtcblxuICAgIHJldHVybiB7XG4gICAgICAnTWV0aG9kRGVmaW5pdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1ldGhvZE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICAgICAgICBjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBtZXRob2ROb2RlLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbXMgPSBmdW5jdGlvbkV4cHJlc3Npb24udHlwZVBhcmFtZXRlcnM/LnBhcmFtcztcbiAgICAgICAgaWYgKCF0eXBlUGFyYW1zIHx8IHR5cGVQYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuc291cmNlQ29kZTtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBzb3VyY2VDb2RlLmdldENvbW1lbnRzQmVmb3JlKG5vZGUpO1xuICAgICAgICBjb25zdCBqc2RvY0NvbW1lbnQgPSBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzKTtcblxuICAgICAgICBpZiAoIWpzZG9jQ29tbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFRhZ3MgPSBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHtcbiAgICAgICAgICBjb21tZW50Qm9keToganNkb2NDb21tZW50LnZhbHVlLFxuICAgICAgICAgIHRhZ05hbWU6IHByZWZlcnJlZFRhZ05hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlUGFyYW1ldGVyIG9mIHR5cGVQYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gdHlwZVBhcmFtZXRlci5uYW1lLm5hbWU7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdUYWcgPSBwYXJzZWRUYWdzLmZpbmQoKHRhZykgPT4gdGFnLm5hbWUgPT09IHBhcmFtZXRlck5hbWUpO1xuXG4gICAgICAgICAgaWYgKCFtYXRjaGluZ1RhZykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFtYXRjaGluZ1RhZy5oYXNEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBAdHlwZVBhcmFtYCB0YWdzIHdpdGggZGVzY3JpcHRpb25zIGZvciBnZW5lcmljIG1ldGhvZCB0eXBlIHBhcmFtZXRlcnMnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURV06ICdNaXNzaW5nIEB7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fScsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OXTogJ0B7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fSBpcyBtaXNzaW5nIGEgZGVzY3JpcHRpb24nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5pbnRlcmZhY2UgUGFyc2VkVGFnIHtcbiAgaGFzRGVzY3JpcHRpb246IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcGFyc2VUeXBlUGFyYW1ldGVyVGFnc30uXG4gKi9cbmludGVyZmFjZSBQYXJzZVR5cGVQYXJhbWV0ZXJUYWdzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSByYXcgY29tbWVudCBib2R5ICh3aXRob3V0IHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb21tZW50IGRlbGltaXRlcnMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudEJvZHk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCB0YWcgbmFtZSAoYHR5cGVQYXJhbWAgb3IgYHRlbXBsYXRlYCkuXG4gICAqL1xuICByZWFkb25seSB0YWdOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEpTRG9jIGJsb2NrIGNvbW1lbnQgZnJvbSBhIGxpc3Qgb2YgY29tbWVudHMuXG4gKlxuICogQHBhcmFtIGNvbW1lbnRzIC0gVGhlIGNvbW1lbnRzIGJlZm9yZSB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBKU0RvYyBibG9jayBjb21tZW50LCBvciBgdW5kZWZpbmVkYCBpZiBub25lIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzOiByZWFkb25seSBDb21tZW50W10pOiBDb21tZW50IHwgdW5kZWZpbmVkIHtcbiAgZm9yIChsZXQgaW5kZXggPSBjb21tZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRzW2luZGV4XTtcbiAgICBpZiAoY29tbWVudD8udHlwZSA9PT0gJ0Jsb2NrJyAmJiBjb21tZW50LnZhbHVlLnN0YXJ0c1dpdGgoJyonKSkge1xuICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYEB0eXBlUGFyYW1gIC8gYEB0ZW1wbGF0ZWAgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudCBib2R5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFyc2VkIHRhZyBlbnRyaWVzLlxuICovXG5mdW5jdGlvbiBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHBhcmFtczogUGFyc2VUeXBlUGFyYW1ldGVyVGFnc1BhcmFtcyk6IFBhcnNlZFRhZ1tdIHtcbiAgY29uc3QgeyBjb21tZW50Qm9keSwgdGFnTmFtZSB9ID0gcGFyYW1zO1xuICBjb25zdCB0YWdzOiBQYXJzZWRUYWdbXSA9IFtdO1xuICAvKlxuICAgKiBUaGUgYCRgIGNoYXJhY3RlciBpcyBhIGxlZ2FsIGlkZW50aWZpZXIgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZXhjbHVkZXMsIHNvIGEgdGFnIGxpa2UgYEB0eXBlUGFyYW0gJE9iamVjdGBcbiAgICogd291bGQgZmFpbCB0byBtYXRjaCBhdCBhbGwgYW5kIHRoZSB0eXBlIHBhcmFtZXRlciB3b3VsZCBiZSByZXBvcnRlZCBhcyB1bmRvY3VtZW50ZWQgZGVzcGl0ZSBoYXZpbmcgYSB0YWcuXG4gICAqL1xuICBjb25zdCB0YWdQYXR0ZXJuID0gbmV3IFJlZ0V4cChTdHJpbmcucmF3YEAoPzoke3RhZ05hbWV9fHRlbXBsYXRlfHR5cGVQYXJhbSlcXHMrKD88dHlwZU5hbWU+W1xcdyRdKykoPzxyZXN0Pi4qKWAsICdnJyk7XG5cbiAgbGV0IG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUGF0dGVybi5leGVjKGNvbW1lbnRCb2R5KSkgIT09IG51bGwpIHtcbiAgICBjb25zdCBuYW1lID0gZ2V0TWFuZGF0b3J5TmFtZWRHcm91cChtYXRjaCwgJ3R5cGVOYW1lJyk7XG4gICAgY29uc3QgcmVzdCA9IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICdyZXN0JykudHJpbSgpO1xuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gcmVzdC5sZW5ndGggPiAwICYmIHJlc3QgIT09ICctJztcbiAgICB0YWdzLnB1c2goeyBoYXNEZXNjcmlwdGlvbiwgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiB0YWdzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkEscUJBQXVDO0FBRXZDLDRCQUErQjtBQU0vQixNQUFNLFdBQVc7QUFLVixNQUFNLDhCQUE4QjtBQUtwQyxNQUFNLDBDQUEwQztBQUtoRCxNQUFNLHdCQUF5QztBQUFBLEVBQ3BELE9BQU8sU0FBUztBQUNkLFVBQU0sV0FBVyxRQUFRLFNBQVMsT0FBTztBQUN6QyxVQUFNLG1CQUFtQixVQUFVLG9CQUFvQixVQUFVLEtBQUs7QUFFdEUsV0FBTztBQUFBLE1BQ0wsbUJBQW1CLE1BQXVCO0FBQ3hDLGNBQU0saUJB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when a method type parameter has no matching `@typeParam` tag.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID_MISSING_TEMPLATE = "missingTemplate";
|
|
7
|
+
/**
|
|
8
|
+
Message ID reported when a method's `@typeParam` tag is missing a description.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION = "missingTemplateDescription";
|
|
11
|
+
/**
|
|
12
|
+
* ESLint rule requiring every generic method type parameter to carry a `@typeParam` tag with a description.
|
|
13
|
+
*/
|
|
14
|
+
export declare const requireMethodTemplate: Rule.RuleModule;
|
|
@@ -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 require_super_call_exports = {};
|
|
80
|
+
__export(require_super_call_exports, {
|
|
81
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
82
|
+
requireSuperCall: () => requireSuperCall
|
|
83
|
+
});
|
|
84
|
+
module.exports = __toCommonJS(require_super_call_exports);
|
|
85
|
+
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
86
|
+
var import_typescript = require('typescript');
|
|
87
|
+
var import_ts_estree_node = require('./ts-estree-node.cjs');
|
|
88
|
+
const MESSAGE_ID = "requireSuperCall";
|
|
89
|
+
const requireSuperCall = {
|
|
90
|
+
create(context) {
|
|
91
|
+
const methodStack = [];
|
|
92
|
+
return {
|
|
93
|
+
"AssignmentExpression"(node) {
|
|
94
|
+
const current = methodStack.at(-1);
|
|
95
|
+
if (current?.kind !== "set") {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const assignNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
99
|
+
if (isSuperPropertyAccess(assignNode.left, current.methodName)) {
|
|
100
|
+
current.hasSuperCall = true;
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"CallExpression"(node) {
|
|
104
|
+
const current = methodStack.at(-1);
|
|
105
|
+
if (current?.kind !== "method") {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const callNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
109
|
+
if (isSuperMethodCall(callNode, current.methodName)) {
|
|
110
|
+
current.hasSuperCall = true;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"MemberExpression"(node) {
|
|
114
|
+
const current = methodStack.at(-1);
|
|
115
|
+
if (current?.kind !== "get") {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const memberNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
119
|
+
if (isSuperPropertyAccess(memberNode, current.methodName)) {
|
|
120
|
+
current.hasSuperCall = true;
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"MethodDefinition"(node) {
|
|
124
|
+
const methodNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
125
|
+
if (!methodNode.override || methodNode.key.type !== "Identifier") {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const kind = methodNode.kind === "get" || methodNode.kind === "set" ? methodNode.kind : "method";
|
|
129
|
+
methodStack.push({
|
|
130
|
+
hasSuperCall: false,
|
|
131
|
+
kind,
|
|
132
|
+
methodName: methodNode.key.name,
|
|
133
|
+
node: methodNode,
|
|
134
|
+
reportNode: node
|
|
135
|
+
});
|
|
136
|
+
},
|
|
137
|
+
"MethodDefinition:exit"() {
|
|
138
|
+
const info = methodStack.at(-1);
|
|
139
|
+
if (!info) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
methodStack.pop();
|
|
143
|
+
if (info.hasSuperCall || isParentMethodAbstract({
|
|
144
|
+
context,
|
|
145
|
+
methodName: info.methodName,
|
|
146
|
+
methodNode: info.node
|
|
147
|
+
})) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
context.report({
|
|
151
|
+
data: { kind: info.kind, methodName: info.methodName },
|
|
152
|
+
messageId: MESSAGE_ID,
|
|
153
|
+
node: info.reportNode
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
},
|
|
158
|
+
meta: {
|
|
159
|
+
docs: {
|
|
160
|
+
description: "Require `override` methods to call `super.methodName()`"
|
|
161
|
+
},
|
|
162
|
+
messages: {
|
|
163
|
+
[MESSAGE_ID]: "Override {{ kind }} `{{ methodName }}` must access `super.{{ methodName }}`."
|
|
164
|
+
},
|
|
165
|
+
schema: [],
|
|
166
|
+
type: "problem"
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
function isAbstract(declaration) {
|
|
170
|
+
(0, import_type_guards.assert)((0, import_typescript.canHaveModifiers)(declaration), "Expected method declaration to support modifiers");
|
|
171
|
+
const modifiers = (0, import_typescript.getModifiers)(declaration);
|
|
172
|
+
return modifiers?.some(($module) => $module.kind === import_typescript.SyntaxKind.AbstractKeyword) ?? false;
|
|
173
|
+
}
|
|
174
|
+
function isParentMethodAbstract(params) {
|
|
175
|
+
const { context, methodName, methodNode } = params;
|
|
176
|
+
const services = context.sourceCode.parserServices;
|
|
177
|
+
if (!services.program || !services.esTreeNodeToTSNodeMap) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
const checker = services.program.getTypeChecker();
|
|
181
|
+
const classDeclaration = methodNode.parent.parent;
|
|
182
|
+
const tsClassNode = services.esTreeNodeToTSNodeMap.get(classDeclaration);
|
|
183
|
+
const classType = checker.getTypeAtLocation(tsClassNode);
|
|
184
|
+
const baseTypes = classType.getBaseTypes();
|
|
185
|
+
if (!baseTypes) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
for (const baseType of baseTypes) {
|
|
189
|
+
const property = baseType.getProperty(methodName);
|
|
190
|
+
if (!property) {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const declarations = property.getDeclarations();
|
|
194
|
+
if (!declarations) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
for (const declaration of declarations) {
|
|
198
|
+
if (isAbstract(declaration)) {
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
function isSuperMethodCall(node, methodName) {
|
|
206
|
+
const callee = node.callee;
|
|
207
|
+
return callee.type === "MemberExpression" && callee.object.type === "Super" && callee.property.type === "Identifier" && callee.property.name === methodName;
|
|
208
|
+
}
|
|
209
|
+
function isSuperPropertyAccess(node, propertyName) {
|
|
210
|
+
return node.type === "MemberExpression" && node.object.type === "Super" && node.property.type === "Identifier" && node.property.name === propertyName;
|
|
211
|
+
}
|
|
212
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
213
|
+
0 && (module.exports = {
|
|
214
|
+
MESSAGE_ID,
|
|
215
|
+
requireSuperCall
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlcXVpcmUtc3VwZXItY2FsbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZXF1aXJlLXN1cGVyLWNhbGxcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYW4gYG92ZXJyaWRlYCBtZXRob2QgZG9lcyBub3QgY2FsbCBgc3VwZXIubWV0aG9kTmFtZSgpYFxuICogYW55d2hlcmUgaW4gaXRzIGJvZHkuIE92ZXJyaWRpbmcgYSBtZXRob2Qgd2l0aG91dCBjYWxsaW5nIGBzdXBlcmAgaXMgYWxtb3N0XG4gKiBhbHdheXMgYSBtaXN0YWtlIHRoYXQgc2lsZW50bHkgYnJlYWtzIHBhcmVudC1jbGFzcyBiZWhhdmlvciAobGlmZWN5Y2xlIGhvb2tzLFxuICogaW5pdGlhbGl6YXRpb24sIGV2ZW50IHdpcmluZywgZXRjLikuXG4gKlxuICogVGhlIHN1cGVyIGNhbGwgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgbWV0aG9kIGJvZHkgXHUyMDE0IGFzIGEgc3RhbmRhbG9uZVxuICogc3RhdGVtZW50LCBhd2FpdGVkLCBhc3NpZ25lZCB0byBhIHZhcmlhYmxlLCBvciBuZXN0ZWQgaW4gYW55IGV4cHJlc3Npb24uXG4gKlxuICogVGhlIHJ1bGUgYXV0b21hdGljYWxseSBza2lwcyBtZXRob2RzIHdoZXJlIHRoZSBwYXJlbnQgaW1wbGVtZW50YXRpb24gaXNcbiAqIGBhYnN0cmFjdGAsIHNpbmNlIHRoZXJlIGlzIG5vIGNvbmNyZXRlIGBzdXBlcmAgdG8gY2FsbC5cbiAqXG4gKiBJZiB0aGUgb3ZlcnJpZGUgaW50ZW50aW9uYWxseSByZXBsYWNlcyB0aGUgcGFyZW50IGltcGxlbWVudGF0aW9uLCBkaXNhYmxlIHRoZVxuICogcnVsZSBvbiB0aGF0IGxpbmUgd2l0aCBhbiBleHBsYW5hdG9yeSBjb21tZW50LlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IERlY2xhcmF0aW9uIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQge1xuICBjYW5IYXZlTW9kaWZpZXJzLFxuICBnZXRNb2RpZmllcnMsXG4gIFN5bnRheEtpbmRcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGFuIGBvdmVycmlkZWAgbWV0aG9kIGRvZXMgbm90IGFjY2VzcyBpdHMgYHN1cGVyYCBjb3VudGVycGFydC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVxdWlyZVN1cGVyQ2FsbCc7XG5cbnR5cGUgTWV0aG9kS2luZCA9ICdnZXQnIHwgJ21ldGhvZCcgfCAnc2V0JztcblxuaW50ZXJmYWNlIE92ZXJyaWRlTWV0aG9kSW5mbyB7XG4gIGhhc1N1cGVyQ2FsbDogYm9vbGVhbjtcbiAga2luZDogTWV0aG9kS2luZDtcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBub2RlOiBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICByZXBvcnROb2RlOiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGBvdmVycmlkZWAgbWV0aG9kcyB0byBjYWxsIGBzdXBlci5tZXRob2ROYW1lKClgLCBzbyB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qgc2lsZW50bHkgc2tpcHBlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVTdXBlckNhbGw6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRob2RTdGFjazogT3ZlcnJpZGVNZXRob2RJbmZvW10gPSBbXTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQXNzaWdubWVudEV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2suYXQoLTEpO1xuICAgICAgICBpZiAoY3VycmVudD8ua2luZCAhPT0gJ3NldCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhc3NpZ25Ob2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuQXNzaWdubWVudEV4cHJlc3Npb247XG4gICAgICAgIGlmIChpc1N1cGVyUHJvcGVydHlBY2Nlc3MoYXNzaWduTm9kZS5sZWZ0LCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1ldGhvZFN0YWNrLmF0KC0xKTtcbiAgICAgICAgaWYgKGN1cnJlbnQ/LmtpbmQgIT09ICdtZXRob2QnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FsbE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbjtcbiAgICAgICAgaWYgKGlzU3VwZXJNZXRob2RDYWxsKGNhbGxOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01lbWJlckV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2suYXQoLTEpO1xuICAgICAgICBpZiAoY3VycmVudD8ua2luZCAhPT0gJ2dldCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW1iZXJOb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuTWVtYmVyRXhwcmVzc2lvbjtcbiAgICAgICAgaWYgKGlzU3VwZXJQcm9wZXJ0eUFjY2VzcyhtZW1iZXJOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01ldGhvZERlZmluaXRpb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRob2ROb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuTWV0aG9kRGVmaW5pdGlvbjtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLlxuICAgICAgICBpZiAoIW1ldGhvZE5vZGUub3ZlcnJpZGUgfHwgbWV0aG9kTm9kZS5rZXkudHlwZSAhPT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2luZCA9IG1ldGhvZE5vZGUua2luZCA9PT0gJ2dldCcgfHwgbWV0aG9kTm9kZS5raW5kID09PSAnc2V0JyA/IG1ldGhvZE5vZGUua2luZCA6ICdtZXRob2QnO1xuXG4gICAgICAgIG1ldGhvZFN0YWNrLnB1c2goe1xuICAgICAgICAgIGhhc1N1cGVyQ2FsbDogZmFsc2UsXG4gICAgICAgICAga2luZCxcbiAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROb2RlLmtleS5uYW1lLFxuICAgICAgICAgIG5vZGU6IG1ldGhvZE5vZGUsXG4gICAgICAgICAgcmVwb3J0Tm9kZTogbm9kZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAnTWV0aG9kRGVmaW5pdGlvbjpleGl0JygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IG1ldGhvZFN0YWNrLmF0KC0xKTtcbiAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0aG9kU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGluZm8uaGFzU3VwZXJDYWxsIHx8IGlzUGFyZW50TWV0aG9kQWJzdHJhY3Qoe1xuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IGluZm8ubWV0aG9kTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZE5vZGU6IGluZm8ubm9kZVxuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IGtpbmQ6IGluZm8ua2luZCwgbWV0aG9kTmFtZTogaW5mby5tZXRob2ROYW1lIH0sXG4gICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgIG5vZGU6IGluZm8ucmVwb3J0Tm9kZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBvdmVycmlkZWAgbWV0aG9kcyB0byBjYWxsIGBzdXBlci5tZXRob2ROYW1lKClgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ092ZXJyaWRlIHt7IGtpbmQgfX0gYHt7IG1ldGhvZE5hbWUgfX1gIG11c3QgYWNjZXNzIGBzdXBlci57eyBtZXRob2ROYW1lIH19YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpc1BhcmVudE1ldGhvZEFic3RyYWN0fS5cbiAqL1xuaW50ZXJmYWNlIENoZWNrSXNQYXJlbnRNZXRob2RBYnN0cmFjdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRob2QgbmFtZSB0byBsb29rIHVwIGluIHRoZSBwYXJlbnQgY2xhc3MuXG4gICAqL1xuICByZWFkb25seSBtZXRob2ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVycmlkZSBtZXRob2QgZGVmaW5pdGlvbiBBU1Qgbm9kZS5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGhvZE5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBkZWNsYXJhdGlvbiBoYXMgdGhlIGBhYnN0cmFjdGAgbW9kaWZpZXIuXG4gKlxuICogQHBhcmFtIGRlY2xhcmF0aW9uIC0gVGhlIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb24gaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGlzQWJzdHJhY3QoZGVjbGFyYXRpb246IERlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIGFzc2VydChjYW5IYXZlTW9kaWZpZXJzKGRlY2xhcmF0aW9uKSwgJ0V4cGVjdGVkIG1ldGhvZCBkZWNsYXJhdGlvbiB0byBzdXBwb3J0IG1vZGlmaWVycycpO1xuXG4gIGNvbnN0IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhkZWNsYXJhdGlvbik7XG4gIHJldHVybiBtb2RpZmllcnM/LnNvbWUoKCRtb2R1bGUpID0+ICRtb2R1bGUua2luZCA9PT0gU3ludGF4S2luZC5BYnN0cmFjdEtleXdvcmQpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXJlbnQgY2xhc3MncyB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaXMgYGFic3RyYWN0YC5cbiAqXG4gKiBXaGVuIHR5cGUgaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSAoZS5nLiwgcGFyc2VyIGNvbmZpZ3VyZWQgd2l0aG91dFxuICogYHByb2plY3RTZXJ2aWNlYCksIHJldHVybnMgYGZhbHNlYCBzbyB0aGUgcnVsZSBjb25zZXJ2YXRpdmVseSByZXBvcnRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXJlbnQgbWV0aG9kIGlzIGFic3RyYWN0LlxuICovXG5mdW5jdGlvbiBpc1BhcmVudE1ldGhvZEFic3RyYWN0KHBhcmFtczogQ2hlY2tJc1BhcmVudE1ldGhvZEFic3RyYWN0UGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgY29udGV4dCwgbWV0aG9kTmFtZSwgbWV0aG9kTm9kZSB9ID0gcGFyYW1zO1xuICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJ0aWFsPFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbj47XG5cbiAgaWYgKCFzZXJ2aWNlcy5wcm9ncmFtIHx8ICFzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjaGVja2VyID0gc2VydmljZXMucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBjbGFzc0RlY2xhcmF0aW9uID0gbWV0aG9kTm9kZS5wYXJlbnQucGFyZW50O1xuICBjb25zdCB0c0NsYXNzTm9kZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQoY2xhc3NEZWNsYXJhdGlvbik7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNDbGFzc05vZGUpO1xuICBjb25zdCBiYXNlVHlwZXMgPSBjbGFzc1R5cGUuZ2V0QmFzZVR5cGVzKCk7XG5cbiAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gYmFzZVR5cGUuZ2V0UHJvcGVydHkobWV0aG9kTmFtZSk7XG5cbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNsYXJhdGlvbnMgPSBwcm9wZXJ0eS5nZXREZWNsYXJhdGlvbnMoKTtcblxuICAgIGlmICghZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIGRlY2xhcmF0aW9ucykge1xuICAgICAgaWYgKGlzQWJzdHJhY3QoZGVjbGFyYXRpb24pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgc3VwZXIubWV0aG9kTmFtZSguLi4pYC5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBjYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIGV4cGVjdGVkIG1ldGhvZCBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgbWV0aG9kIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGlzU3VwZXJNZXRob2RDYWxsKG5vZGU6IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uLCBtZXRob2ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgY2FsbGVlID0gbm9kZS5jYWxsZWU7XG4gIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZW51bS1jb21wYXJpc29uIC0tIEFTVCBub2RlIHR5cGUgc3RyaW5nIGxpdGVyYWxzIG1hdGNoIHRoZSBUU0VTVHJlZSBlbnVtIHZhbHVlcy4gKi9cbiAgcmV0dXJuIGNhbGxlZS50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbidcbiAgICAmJiBjYWxsZWUub2JqZWN0LnR5cGUgPT09ICdTdXBlcidcbiAgICAmJiBjYWxsZWUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgJiYgY2FsbGVlLnByb3BlcnR5Lm5hbWUgPT09IG1ldGhvZE5hbWU7XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gUmUtZW5hYmxlIGFmdGVyIG11bHRpLWxpbmUgc3RyaW5nIGNvbXBhcmlzb24gYmxvY2suICovXG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGlzIGEgYHN1cGVyLnByb3BlcnR5TmFtZWAgbWVtYmVyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgQVNUIG5vZGUgdG8gY2hlY2sgKE1lbWJlckV4cHJlc3Npb24gb3IgQXNzaWdubWVudEV4cHJlc3Npb24gbGVmdC1oYW5kIHNpZGUpLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBleHBlY3RlZCBwcm9wZXJ0eSBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgcHJvcGVydHkgYWNjZXNzLlxuICovXG5mdW5jdGlvbiBpc1N1cGVyUHJvcGVydHlBY2Nlc3Mobm9kZTogVFNFU1RyZWUuTm9kZSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gbm9kZS50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbidcbiAgICAmJiBub2RlLm9iamVjdC50eXBlID09PSAnU3VwZXInXG4gICAgJiYgbm9kZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICAmJiBub2RlLnByb3BlcnR5Lm5hbWUgPT09IHByb3BlcnR5TmFtZTtcbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBSZS1lbmFibGUgYWZ0ZXIgbXVsdGktbGluZSBzdHJpbmcgY29tcGFyaXNvbiBibG9jay4gKi9cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBCQSx5QkFBdUI7QUFDdkIsd0JBSU87QUFFUCw0QkFBK0I7QUFLeEIsTUFBTSxhQUFhO0FBZW5CLE1BQU0sbUJBQW9DO0FBQUEsRUFDL0MsT0FBTyxTQUFTO0FBQ2QsVUFBTSxjQUFvQyxDQUFDO0FBRTNDLFdBQU87QUFBQSxNQUNMLHVCQUF1QixNQUF1QjtBQUM1QyxjQUFNLFVBQVUsWUFBWSxHQUFHLEVBQUU7QUFDakMsWUFBSSxTQUFTLFNBQVMsT0FBTztBQUMzQjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLGlCQUFhLHNDQUFlLElBQUk7QUFDdEMsWUFBSSxzQkFBc0Is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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported when an `override` method does not access its `super` counterpart.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "requireSuperCall";
|
|
7
|
+
/**
|
|
8
|
+
* ESLint rule requiring `override` methods to call `super.methodName()`, so the base implementation is not silently skipped.
|
|
9
|
+
*/
|
|
10
|
+
export declare const requireSuperCall: Rule.RuleModule;
|
|
@@ -0,0 +1,92 @@
|
|
|
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 rule_tester_helper_exports = {};
|
|
80
|
+
__export(rule_tester_helper_exports, {
|
|
81
|
+
toRuleTesterModule: () => toRuleTesterModule
|
|
82
|
+
});
|
|
83
|
+
module.exports = __toCommonJS(rule_tester_helper_exports);
|
|
84
|
+
function toRuleTesterModule(rule) {
|
|
85
|
+
const bridged = rule;
|
|
86
|
+
return bridged;
|
|
87
|
+
}
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
toRuleTesterModule
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3J1bGUtdGVzdGVyLWhlbHBlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhlbHBlciBmb3IgYnJpZGdpbmcgRVNMaW50IHYxMCBydWxlIHR5cGVzIHdpdGggYEB0eXBlc2NyaXB0LWVzbGludC9ydWxlLXRlc3RlcmAuXG4gKi9cbmltcG9ydCB0eXBlIHsgUnVsZVRlc3RlciB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC9ydWxlLXRlc3Rlcic7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG4vKipcbiAqIENhc3RzIGFuIEVTTGludCB2MTAgYFJ1bGUuUnVsZU1vZHVsZWAgdG8gdGhlIHR5cGUgZXhwZWN0ZWQgYnlcbiAqIGBAdHlwZXNjcmlwdC1lc2xpbnQvcnVsZS10ZXN0ZXJgLiBUaGUgdHlwZXMgYXJlIGluY29tcGF0aWJsZSBhdCB0aGUgdHlwZVxuICogbGV2ZWwgYmVjYXVzZSB0eXBlc2NyaXB0LWVzbGludCBoYXNuJ3QgdXBkYXRlZCBmb3IgRVNMaW50IHYxMCB5ZXQsIGJ1dFxuICogdGhleSBhcmUgY29tcGF0aWJsZSBhdCBydW50aW1lLlxuICpcbiAqIEBwYXJhbSBydWxlIC0gVGhlIEVTTGludCBydWxlIG1vZHVsZS5cbiAqIEByZXR1cm5zIFRoZSBzYW1lIHJ1bGUsIHR5cGVkIGZvciB0aGUgcnVsZSB0ZXN0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1J1bGVUZXN0ZXJNb2R1bGUocnVsZTogUnVsZS5SdWxlTW9kdWxlKTogUGFyYW1ldGVyczxSdWxlVGVzdGVyWydydW4nXT5bMV0ge1xuICAvLyBCcmlkZ2UgRVNMaW50IHYxMCBSdWxlLlJ1bGVNb2R1bGUgdG8gQHR5cGVzY3JpcHQtZXNsaW50L3J1bGUtdGVzdGVyJ3MgUnVsZU1vZHVsZS5cbiAgLy8gU3RydWN0dXJhbGx5IGNvbXBhdGlibGUgYnV0IG5vbWluYWxseSBpbmNvbXBhdGlibGUgdW50aWwgdHlwZXNjcmlwdC1lc2xpbnQgdXBkYXRlcy5cbiAgY29uc3QgYnJpZGdlZDogdW5rbm93biA9IHJ1bGU7XG5cbiAgcmV0dXJuIGJyaWRnZWQgYXMgUGFyYW1ldGVyczxSdWxlVGVzdGVyWydydW4nXT5bMV07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUJPLFNBQVMsbUJBQW1CLE1BQXlEO0FBRzFGLFFBQU0sVUFBbUI7QUFFekIsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Helper for bridging ESLint v10 rule types with `@typescript-eslint/rule-tester`.
|
|
6
|
+
*/
|
|
7
|
+
import type { RuleTester } from '@typescript-eslint/rule-tester' with { 'resolution-mode': 'import' };
|
|
8
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
9
|
+
/**
|
|
10
|
+
* Casts an ESLint v10 `Rule.RuleModule` to the type expected by
|
|
11
|
+
* `@typescript-eslint/rule-tester`. The types are incompatible at the type
|
|
12
|
+
* level because typescript-eslint hasn't updated for ESLint v10 yet, but
|
|
13
|
+
* they are compatible at runtime.
|
|
14
|
+
*
|
|
15
|
+
* @param rule - The ESLint rule module.
|
|
16
|
+
* @returns The same rule, typed for the rule tester.
|
|
17
|
+
*/
|
|
18
|
+
export declare function toRuleTesterModule(rule: Rule.RuleModule): Parameters<RuleTester['run']>[1];
|