@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,176 @@
|
|
|
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 initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import {
|
|
49
|
+
FunctionHandlingMode,
|
|
50
|
+
toJson
|
|
51
|
+
} from "@mnaoumov/typescript-lib/object-utils";
|
|
52
|
+
import {
|
|
53
|
+
makeValidVariableName,
|
|
54
|
+
replaceAll
|
|
55
|
+
} from "@mnaoumov/typescript-lib/string";
|
|
56
|
+
import { readFile } from "node:fs/promises";
|
|
57
|
+
function ensureBrowserProcess() {
|
|
58
|
+
const browserProcess = {
|
|
59
|
+
browser: true,
|
|
60
|
+
cwd() {
|
|
61
|
+
return "/";
|
|
62
|
+
},
|
|
63
|
+
env: {},
|
|
64
|
+
platform: "android"
|
|
65
|
+
};
|
|
66
|
+
const existingProcess = globalThis.process;
|
|
67
|
+
if (!existingProcess) {
|
|
68
|
+
globalThis.process = browserProcess;
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (existingProcess.versions?.node) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const existingProcessRecord = existingProcess;
|
|
75
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
76
|
+
existingProcessRecord[key] ??= value;
|
|
77
|
+
}
|
|
78
|
+
existingProcessRecord["browser"] = true;
|
|
79
|
+
}
|
|
80
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
81
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
82
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
83
|
+
}
|
|
84
|
+
function keepName($unknown) {
|
|
85
|
+
return $unknown;
|
|
86
|
+
}
|
|
87
|
+
function makePreprocessBanner(options = {}) {
|
|
88
|
+
const { additionalBannerInitFunctions = [], isEsm = false } = options;
|
|
89
|
+
const shims = isEsm ? [ensureDisposeSymbols, ensureBrowserProcess] : [ensureDisposeSymbols, ensureBrowserProcess, keepName];
|
|
90
|
+
const init = isEsm ? initEsm : initCjs;
|
|
91
|
+
const additionalInits = additionalBannerInitFunctions.map((function_) => `(${String(function_)})();
|
|
92
|
+
`).join("");
|
|
93
|
+
return `
|
|
94
|
+
(function () {
|
|
95
|
+
${shims.map(String).join("\n\n")}
|
|
96
|
+
|
|
97
|
+
(${String(init)})();
|
|
98
|
+
})();
|
|
99
|
+
${additionalInits}`;
|
|
100
|
+
}
|
|
101
|
+
function preprocessPlugin(options = {}) {
|
|
102
|
+
const { additionalBannerInitFunctions = [], cjsImportMetaUrlProvider = getCjsImportMetaUrl, isEsm = false } = options;
|
|
103
|
+
const replacements = isEsm ? {} : {
|
|
104
|
+
[replaceAll({
|
|
105
|
+
$string: "import(dot)meta(dot)url",
|
|
106
|
+
replacer: ".",
|
|
107
|
+
searchValue: "(dot)"
|
|
108
|
+
})]: cjsImportMetaUrlProvider
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
name: "preprocess",
|
|
112
|
+
setup(build) {
|
|
113
|
+
build.initialOptions.define ??= {};
|
|
114
|
+
for (const key of Object.keys(replacements)) {
|
|
115
|
+
build.initialOptions.define[key] = `__${makeValidVariableName(key)}`;
|
|
116
|
+
}
|
|
117
|
+
build.initialOptions.banner ??= {};
|
|
118
|
+
build.initialOptions.banner["js"] ??= "";
|
|
119
|
+
build.initialOptions.banner["js"] += makePreprocessBanner({ additionalBannerInitFunctions, isEsm });
|
|
120
|
+
build.onLoad({ filter: /\.(?:js|ts|cjs|mjs|cts|mts)$/ }, async ($arguments) => {
|
|
121
|
+
let contents = await readFile($arguments.path, "utf-8");
|
|
122
|
+
for (const [key, value] of Object.entries(replacements)) {
|
|
123
|
+
const variable = `__${makeValidVariableName(key)}`;
|
|
124
|
+
if (!contents.includes(key) || contents.includes(`var ${variable}`)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const valueString = typeof value === "function" ? `(${String(value)})()` : toJson(value, { functionHandlingMode: FunctionHandlingMode.Full });
|
|
128
|
+
contents = `var ${variable} = globalThis['${key}'] ?? ${valueString};
|
|
129
|
+
${contents}`;
|
|
130
|
+
}
|
|
131
|
+
contents = replaceAll({
|
|
132
|
+
$string: contents,
|
|
133
|
+
// eslint-disable-next-line no-template-curly-in-string -- It is intentional, the string looks like a template literal, but it is not.
|
|
134
|
+
replacer: "`\n//#${''} sourceMappingURL",
|
|
135
|
+
searchValue: /`\r?\n\/\/# sourceMappingURL/g
|
|
136
|
+
});
|
|
137
|
+
return {
|
|
138
|
+
contents,
|
|
139
|
+
loader: "ts"
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function getCjsImportMetaUrl() {
|
|
146
|
+
if (typeof __filename === "string") {
|
|
147
|
+
const localRequire = require;
|
|
148
|
+
const url = localRequire("node:url");
|
|
149
|
+
if (typeof url.pathToFileURL === "function") {
|
|
150
|
+
return url.pathToFileURL(__filename).href;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return globalThis.location?.href ?? "";
|
|
154
|
+
}
|
|
155
|
+
function initCjs() {
|
|
156
|
+
const globalThisRecord = globalThis;
|
|
157
|
+
ensureDisposeSymbols();
|
|
158
|
+
globalThisRecord["__name"] ??= keepName;
|
|
159
|
+
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
160
|
+
ensureBrowserProcess();
|
|
161
|
+
function extractDefault(module) {
|
|
162
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function initEsm() {
|
|
166
|
+
ensureDisposeSymbols();
|
|
167
|
+
ensureBrowserProcess();
|
|
168
|
+
}
|
|
169
|
+
export {
|
|
170
|
+
ensureBrowserProcess,
|
|
171
|
+
ensureDisposeSymbols,
|
|
172
|
+
keepName,
|
|
173
|
+
makePreprocessBanner,
|
|
174
|
+
preprocessPlugin
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL2VzYnVpbGQtaW1wbC9wcmVwcm9jZXNzLXBsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjdXN0b20gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgSmF2YVNjcmlwdCBhbmQgVHlwZVNjcmlwdCBmaWxlcyBmb3IgYW55IGJ1aWxkIHRhcmdldC5cbiAqXG4gKiBAcmVtYXJrc1xuICogV2UgY2Fubm90IHVzZSBgLmAgaW5zdGVhZCBvZiBgKGRvdClgIGluIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiBiZWNhdXNlIHRoZSBmaWxlIGl0c2VsZiBpcyBwcmVwcm9jZXNzZWQgd2l0aCB0aGUgc2FtZSBydWxlLlxuICpcbiAqIGBpbml0Q2pzYCwgYGluaXRFc21gIGFuZCB0aGUgc2hpbXMgdGhleSBjYWxsIGFyZSBzdHJpbmdpZmllZCB3aXRoIGBTdHJpbmcoZm4pYCBhbmQgaW5qZWN0ZWQgaW50byBldmVyeVxuICogYnVpbHQgYnVuZGxlIGFzIGFuIGVzYnVpbGQgYmFubmVyLCBzbyB0aGV5IG11c3QgYmUgcmVhY2hhYmxlIGZyb20gb25lIGFub3RoZXIgYnkgQkFSRSBpZGVudGlmaWVyLiBUaGF0IGlzXG4gKiB3aHkgdGhleSBhbGwgbGl2ZSBpbiB0aGlzIG1vZHVsZTogZXNidWlsZCBjb21waWxlcyBhIGNyb3NzLW1vZHVsZSBjYWxsIHRvIGAoMCwgaW1wb3J0X21vZHVsZS5mbikoXHUyMDI2KWAsXG4gKiB3aGljaCB3b3VsZCBuYW1lIGEgYmluZGluZyB0aGUgZW1pdHRlZCBidW5kbGUgZG9lcyBub3QgaGF2ZS4gU2FtZS1tb2R1bGUgcmVmZXJlbmNlcyBzdGF5IGJhcmUsIGFuZFxuICoge0BsaW5rIG1ha2VQcmVwcm9jZXNzQmFubmVyfSBzZXJpYWxpemVzIHRoZSBzaGltcyBhbG9uZ3NpZGUgdGhlIGBpbml0YCBmdW5jdGlvbiBzbyB0aGV5IGFyZSBpbiBzY29wZSB0aGVyZS4gQSBzaGltXG4gKiB0aGF0IGlzIG5vdCBzZXJpYWxpemVkIHNpbGVudGx5IGRlZ3JhZGVzIHRvIHdoYXRldmVyIHRoZSBjb25zdW1lcidzIGdsb2JhbCBzY29wZSBob2xkcyB1bmRlciB0aGF0IG5hbWUgXHUyMDE0IHdoaWNoXG4gKiBpcyBob3cgYF9fbmFtZWAgdXNlZCB0byBlbmQgdXAgaG9sZGluZyBgd2luZG93Lm5hbWVgLlxuICpcbiAqIEEgY2FsbGVyIHRoYXQgbmVlZHMgbW9yZSBpbiB0aGUgYmFubmVyICh0aGUgT2JzaWRpYW4gcGx1Z2luIGJ1aWxkZXIgcGF0Y2hlcyBgcmVxdWlyZWApIGhhbmRzIGluXG4gKiB7QGxpbmsgUHJlcHJvY2Vzc1BsdWdpbk9wdGlvbnMuYWRkaXRpb25hbEJhbm5lckluaXRGdW5jdGlvbnN9LiBFYWNoIG9uZSBpcyBzZXJpYWxpemVkIGFzIGl0cyBPV04gaW1tZWRpYXRlbHlcbiAqIGludm9rZWQgZnVuY3Rpb24gYWZ0ZXIgdGhlIHNoYXJlZCBzY29wZSwgc28gaXQgbXVzdCBiZSBzZWxmLWNvbnRhaW5lZDogaXQgY2Fubm90IHNlZSB0aGUgc2hpbXMsIGFuZCBjYWxsaW5nIG9uZVxuICogZnJvbSBhbm90aGVyIG1vZHVsZSB3b3VsZCBoaXQgZXhhY3RseSB0aGUgY3Jvc3MtbW9kdWxlIHRyYXAgYWJvdmUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljT2JqZWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgdHlwZSB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCc7XG5cbmltcG9ydCB7XG4gIEZ1bmN0aW9uSGFuZGxpbmdNb2RlLFxuICB0b0pzb25cbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQge1xuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBtYWtlUHJlcHJvY2Vzc0Jhbm5lcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFrZVByZXByb2Nlc3NCYW5uZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNlbGYtY29udGFpbmVkIGZ1bmN0aW9ucyBzZXJpYWxpemVkIGFmdGVyIHRoZSBzaGFyZWQgc2hpbXMsIGVhY2ggaW52b2tlZCBvbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJhbm5lckluaXRGdW5jdGlvbnM/OiByZWFkb25seSAoKCkgPT4gdm9pZClbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYnVpbGQgaXMgZm9yIGFuIEVTTSBmb3JtYXQuXG4gICAqL1xuICByZWFkb25seSBpc0VzbT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHByZXByb2Nlc3NQbHVnaW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXByb2Nlc3NQbHVnaW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNlbGYtY29udGFpbmVkIGZ1bmN0aW9ucyBzZXJpYWxpemVkIGludG8gdGhlIGJhbm5lciBhZnRlciB0aGUgc2hhcmVkIHNoaW1zLCBlYWNoIGludm9rZWQgb25jZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRWFjaCBmdW5jdGlvbiBpcyBlbWl0dGVkIGFzIGAoJHtTdHJpbmcoZm4pfSkoKTtgLCBzbyBpdCBtYXkgcmVmZXJlbmNlIG9ubHkgZ2xvYmFscyBhbmQgd2hhdCBpdCBkZWNsYXJlcyBpdHNlbGYuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQmFubmVySW5pdEZ1bmN0aW9ucz86IHJlYWRvbmx5ICgoKSA9PiB2b2lkKVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZi1jb250YWluZWQgZnVuY3Rpb24gd2hvc2UgcmVzdWx0IHJlcGxhY2VzIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgaW4gYSBDb21tb25KUyBidWlsZC4gU2VyaWFsaXplZCBpbnRvXG4gICAqIGV2ZXJ5IGZpbGUgdGhhdCByZWFkcyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGZpbGUgVVJMIG9mIGBfX2ZpbGVuYW1lYCwgb3IgYGxvY2F0aW9uLmhyZWZgIHdoZXJlIHRoZXJlIGlzIG5vIGBfX2ZpbGVuYW1lYC5cbiAgICovXG4gIHJlYWRvbmx5IGNqc0ltcG9ydE1ldGFVcmxQcm92aWRlcj86ICgpID0+IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYnVpbGQgaXMgZm9yIGFuIEVTTSBmb3JtYXQuXG4gICAqL1xuICByZWFkb25seSBpc0VzbT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBicm93c2VyLWZsYXZvcmVkIHN0YW5kLWluIGZvciBOb2RlJ3MgYHByb2Nlc3NgIGdsb2JhbC5cbiAqL1xuaW50ZXJmYWNlIEJyb3dzZXJQcm9jZXNzIGV4dGVuZHMgUGFydGlhbDxOb2RlSlMuUHJvY2Vzcz4ge1xuICAvKipcbiAgICogTWFya3MgdGhlIHByb2Nlc3MgYXMgYSBicm93c2VyIG9uZS4gVGhlIGJ1bmRsZWQgYGRlYnVnYCBwYWNrYWdlIHNlbGVjdHMgaXRzIGJyb3dzZXIgZW50cnkgcG9pbnQgb24gaXQuXG4gICAqL1xuICBicm93c2VyOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiB0aGUgYFN5bWJvbGAgY29uc3RydWN0b3Ige0BsaW5rIGVuc3VyZURpc3Bvc2VTeW1ib2xzfSByZWFkcyBhbmQgd3JpdGVzLCB3aXRoIHRoZSB0d28gZGlzcG9zZVxuICogc3ltYm9scyBvcHRpb25hbCBiZWNhdXNlIGFuIGVuZ2luZSB3aXRob3V0IEV4cGxpY2l0IFJlc291cmNlIE1hbmFnZW1lbnQgZG9lcyBub3QgaGF2ZSB0aGVtLlxuICovXG5pbnRlcmZhY2UgRGlzcG9zZVN5bWJvbEhvc3Qge1xuICBhc3luY0Rpc3Bvc2U/OiBzeW1ib2w7XG4gIGRpc3Bvc2U/OiBzeW1ib2w7XG4gIGZvcjogKGtleTogc3RyaW5nKSA9PiBzeW1ib2w7XG59XG5cbmludGVyZmFjZSBFc21Nb2R1bGUge1xuICBfX2VzTW9kdWxlOiBib29sZWFuO1xuICBkZWZhdWx0OiB1bmtub3duO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBhIGJyb3dzZXIgZ2xvYmFsIHtAbGluayBnZXRDanNJbXBvcnRNZXRhVXJsfSByZWFkcywgb3B0aW9uYWwgYmVjYXVzZSBhIG5vbi1icm93c2VyIGhvc3QgaGFzIG5vbmUuXG4gKi9cbmludGVyZmFjZSBMb2NhdGlvbkhvc3Qge1xuICBsb2NhdGlvbj86IFBhZ2VMb2NhdGlvbjtcbn1cblxuaW50ZXJmYWNlIFBhZ2VMb2NhdGlvbiB7XG4gIGhyZWY6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVybE1vZHVsZSB7XG4gIHBhdGhUb0ZpbGVVUkw6IHR5cGVvZiBwYXRoVG9GaWxlVVJMO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhlIGJ1bmRsZSBydW5zIGFnYWluc3QgYSBgcHJvY2Vzc2AgZ2xvYmFsIHRoYXQgYnJvd3Nlci10YXJnZXRpbmcgcGFja2FnZXMgcmVjb2duaXplLlxuICpcbiAqIEByZW1hcmtzXG4gKiBTZXJpYWxpemVkIGludG8gdGhlIGVtaXR0ZWQgYmFubmVyLCBzbyBpdCBuZXZlciBydW5zIGluIHRoZSBidWlsZGVyIHByb2Nlc3MgXHUyMDE0IGJ1dCBpdCBpcyBhbiBvcmRpbmFyeVxuICogZnVuY3Rpb24gaGVyZSwgc28gaXQgaXMgdW5pdC10ZXN0ZWQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gYnkgZXZhbHVhdGluZyB0aGUgYmFubmVyIHRleHQuXG4gKlxuICogRmlsbHMgaW4gdGhlIGtleXMgTUlTU0lORyBmcm9tIGEgaG9zdC1wcm92aWRlZCBgcHJvY2Vzc2AgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIG9yIHNraXBwaW5nIGl0LiBPYnNpZGlhblxuICogTW9iaWxlIGV4cG9zZXMgYSBwYXJ0aWFsIGBwcm9jZXNzYCwgYW5kIHRoZSB3aG9sZS1vYmplY3QgZ3VhcmRzIHRoaXMgcmVwbGFjZWQgKGBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzKSB7XG4gKiByZXR1cm47IH1gIC8gYGdsb2JhbFRoaXNSZWNvcmRbJ3Byb2Nlc3MnXSA/Pz0gXHUyMDI2YCkgdG9vayB0aGF0IGFzIFwiYWxyZWFkeSBzaGltbWVkXCIsIHNvIGBicm93c2VyYCBuZXZlclxuICogbGFuZGVkLiBUaGUgYnVuZGxlZCBgZGVidWdgIHBhY2thZ2UgdGhlbiBzZWxlY3RlZCBpdHMgTm9kZSBlbnRyeSBwb2ludCwgd2hpY2ggY2FsbHNcbiAqIGByZXF1aXJlKCd1dGlsJykuZGVwcmVjYXRlKClgIGF0IG1vZHVsZSB0b3AgbGV2ZWwsIGFuZCBvbiBtb2JpbGUgdGhlIHBhdGNoZWQgYHJlcXVpcmVgIHJldHVybnMgYHt9YCBcdTIwMTQgc29cbiAqIHRoZSBwbHVnaW4gdGhyZXcgYmVmb3JlIGl0cyBgb25sb2FkYCByYW4uXG4gKlxuICogQSByZWFsIE5vZGUgb3IgRWxlY3Ryb24gYHByb2Nlc3NgIGlzIGxlZnQgY29tcGxldGVseSB1bnRvdWNoZWQuIGBwcm9jZXNzLnZlcnNpb25zLm5vZGVgIGlzIHRoZSBzaWduYWwgZm9yXG4gKiBpdCwgYW5kIGl0IGlzIHNlbGYtY29udGFpbmVkLCBzbyBpdCBhbHNvIGhvbGRzIGluIHRoZSBOb2RlIENMSSBidW5kbGVzIHRoaXMgYmFubmVyIGlzIGVtaXR0ZWQgaW50by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUJyb3dzZXJQcm9jZXNzKCk6IHZvaWQge1xuICBjb25zdCBicm93c2VyUHJvY2VzczogR2VuZXJpY09iamVjdDxCcm93c2VyUHJvY2Vzcz4gPSB7XG4gICAgYnJvd3NlcjogdHJ1ZSxcbiAgICBjd2QoKSB7XG4gICAgICByZXR1cm4gJy8nO1xuICAgIH0sXG4gICAgZW52OiB7fSxcbiAgICBwbGF0Zm9ybTogJ2FuZHJvaWQnXG4gIH07XG5cbiAgY29uc3QgZXhpc3RpbmdQcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzIGFzIFBhcnRpYWw8Tm9kZUpTLlByb2Nlc3M+IHwgdW5kZWZpbmVkO1xuXG4gIGlmICghZXhpc3RpbmdQcm9jZXNzKSB7XG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzID0gYnJvd3NlclByb2Nlc3MgYXMgTm9kZUpTLlByb2Nlc3M7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nUHJvY2Vzcy52ZXJzaW9ucz8ubm9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUHJvY2Vzc1JlY29yZCA9IGV4aXN0aW5nUHJvY2VzcyBhcyBHZW5lcmljT2JqZWN0O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGJyb3dzZXJQcm9jZXNzKSkge1xuICAgIGV4aXN0aW5nUHJvY2Vzc1JlY29yZFtrZXldID8/PSB2YWx1ZTtcbiAgfVxuXG4gIGV4aXN0aW5nUHJvY2Vzc1JlY29yZFsnYnJvd3NlciddID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBNYWtlcyBgU3ltYm9sLmRpc3Bvc2VgIGFuZCBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgZXhpc3QsIGZhbGxpbmcgYmFjayB0byB0aGUgcmVnaXN0cnkgc3ltYm9scyBlc2J1aWxkJ3NcbiAqIGB1c2luZ2AgaGVscGVycyBsb29rIHVwLlxuICpcbiAqIEBwYXJhbSBzeW1ib2xDb25zdHJ1Y3RvciAtIFRoZSBgU3ltYm9sYCBjb25zdHJ1Y3RvciB0byBwYXRjaC4gRGVmYXVsdHMgdG8gdGhlIGFtYmllbnQgb25lOyB0aGUgcGFyYW1ldGVyXG4gKiBleGlzdHMgc28gYSB0ZXN0IGNhbiBoYW5kIGluIGFuIGVuZ2luZSB0aGF0IGxhY2tzIHRoZSB3ZWxsLWtub3duIHN5bWJvbHMuXG4gKlxuICogQHJlbWFya3NcbiAqIFNlcmlhbGl6ZWQgaW50byB0aGUgZW1pdHRlZCBiYW5uZXIuIEEgZGlzcG9zYWJsZSBkZWNsYXJlcyBpdHMgbWV0aG9kIHVuZGVyIHRoZSBMSVRFUkFMIGtleVxuICogYFtTeW1ib2wuZGlzcG9zZV1gLCB3aGlsZSBlc2J1aWxkIGxvd2VycyBldmVyeSBgdXNpbmdgIHRvIGEgbG9va3VwIHRocm91Z2ggYF9fa25vd25TeW1ib2woJ2Rpc3Bvc2UnKWAsXG4gKiB3aGljaCBmYWxscyBiYWNrIHRvIGBTeW1ib2wuZm9yKCdTeW1ib2wuZGlzcG9zZScpYCB3aGVuIHRoZSBlbmdpbmUgaGFzIG5vIHdlbGwta25vd24gc3ltYm9sLiBPbiBzdWNoIGFuXG4gKiBlbmdpbmUgdGhlIGxpdGVyYWwga2V5IGV2YWx1YXRlcyB0byBgdW5kZWZpbmVkYCwgdGhlIG1ldGhvZCBsYW5kcyB1bmRlciB0aGUgc3RyaW5nIGBcInVuZGVmaW5lZFwiYCwgYW5kXG4gKiBldmVyeSBgdXNpbmdgIG9mIGl0IHRocm93cyBgT2JqZWN0IG5vdCBkaXNwb3NhYmxlYC4gRmlsbGluZyB0aGUgd2VsbC1rbm93biBzbG90IHdpdGggdGhhdCBzYW1lIHJlZ2lzdHJ5XG4gKiBzeW1ib2wgbWFrZXMgYm90aCBzaWRlcyBuYW1lIG9uZSBrZXkgb24gZXZlcnkgZW5naW5lLiBBIGhvc3QgdGhhdCBhbHJlYWR5IGhhcyB0aGUgc3ltYm9sIGlzIGxlZnRcbiAqIHVudG91Y2hlZDogYD8/PWAgbmV2ZXIgcmVhY2hlcyB0aGUgYXNzaWdubWVudCwgd2hpY2ggdGhlIGhvc3QncyBub24td3JpdGFibGUgcHJvcGVydHkgd291bGQgcmVmdXNlLlxuICpcbiAqIFRoZSBkZWZhdWx0IG5hbWVzIGBTeW1ib2xgIGJhcmUgb24gcHVycG9zZTogaXQgZXhpc3RzIG9uIGV2ZXJ5IGVuZ2luZSB0aGlzIHJ1bnMgb24sIGFuZCBhIGJhcmUgcmVmZXJlbmNlXG4gKiByZXNvbHZlcyBhZ2FpbnN0IHdoYXRldmVyIHNjb3BlIHRoZSBiYW5uZXIgaXMgZXZhbHVhdGVkIGluLCBleGFjdGx5IGFzIHRoZSBidW5kbGUncyBvd25cbiAqIGBbU3ltYm9sLmRpc3Bvc2VdYCBrZXlzIGRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlzcG9zZVN5bWJvbHMoc3ltYm9sQ29uc3RydWN0b3I6IERpc3Bvc2VTeW1ib2xIb3N0ID0gU3ltYm9sKTogdm9pZCB7XG4gIHN5bWJvbENvbnN0cnVjdG9yLmFzeW5jRGlzcG9zZSA/Pz0gc3ltYm9sQ29uc3RydWN0b3IuZm9yKCdTeW1ib2wuYXN5bmNEaXNwb3NlJyk7XG4gIHN5bWJvbENvbnN0cnVjdG9yLmRpc3Bvc2UgPz89IHN5bWJvbENvbnN0cnVjdG9yLmZvcignU3ltYm9sLmRpc3Bvc2UnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtICR1bmtub3duIC0gVGhlIHZhbHVlIHRvIHJldHVybi5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBwYXNzZWQgaW4uXG4gKlxuICogQHJlbWFya3NcbiAqIFNlcmlhbGl6ZWQgaW50byB0aGUgZW1pdHRlZCBiYW5uZXIsIHdoZXJlIGl0IHN0YW5kcyBpbiBmb3IgZXNidWlsZCdzIGBfX25hbWVgIGhlbHBlciBcdTIwMTQgd2hpY2ggbmFtZXMgYVxuICogZnVuY3Rpb24gYW5kIHJldHVybnMgaXQgXHUyMDE0IGZvciBidW5kbGVzIHRoYXQgcmVmZXJlbmNlIHRoZSBoZWxwZXIgd2l0aG91dCBlbWl0dGluZyB0aGVpciBvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZWVwTmFtZSgkdW5rbm93bjogdW5rbm93bik6IHVua25vd24ge1xuICByZXR1cm4gJHVua25vd247XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBiYW5uZXIgaW5qZWN0ZWQgYXQgdGhlIHRvcCBvZiBldmVyeSBlbWl0dGVkIGJ1bmRsZS5cbiAqXG4gKiBgU3RyaW5nKGZuKWAgY2FwdHVyZXMgb25seSB0aGUgZnVuY3Rpb24ncyBvd24gYm9keSwgc28gZXZlcnkgc2hpbSB0aGUgYGluaXRgIGZ1bmN0aW9uIGNhbGxzIGhhcyB0byBiZVxuICogc2VyaWFsaXplZCBuZXh0IHRvIGl0IGFuZCB3cmFwcGVkIGluIG9uZSBzaGFyZWQgc2NvcGU7IG90aGVyd2lzZSB0aGUgY2FsbCBpdCBtYWtlcyByZXNvbHZlcyBhZ2FpbnN0IHRoZVxuICogY29uc3VtZXIncyBnbG9iYWwgc2NvcGUgYXQgcnVudGltZS4gU2VlIHRoaXMgZmlsZSdzIGBAZmlsZWAgcmVtYXJrcy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBiYW5uZXIgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBiYW5uZXIgc291cmNlIHRvIHByZXBlbmQgdG8gdGhlIGVtaXR0ZWQgYnVuZGxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVByZXByb2Nlc3NCYW5uZXIob3B0aW9uczogTWFrZVByZXByb2Nlc3NCYW5uZXJPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICBjb25zdCB7IGFkZGl0aW9uYWxCYW5uZXJJbml0RnVuY3Rpb25zID0gW10sIGlzRXNtID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNoaW1zID0gaXNFc20gPyBbZW5zdXJlRGlzcG9zZVN5bWJvbHMsIGVuc3VyZUJyb3dzZXJQcm9jZXNzXSA6IFtlbnN1cmVEaXNwb3NlU3ltYm9scywgZW5zdXJlQnJvd3NlclByb2Nlc3MsIGtlZXBOYW1lXTtcbiAgY29uc3QgaW5pdCA9IGlzRXNtID8gaW5pdEVzbSA6IGluaXRDanM7XG4gIGNvbnN0IGFkZGl0aW9uYWxJbml0cyA9IGFkZGl0aW9uYWxCYW5uZXJJbml0RnVuY3Rpb25zLm1hcCgoZnVuY3Rpb25fKSA9PiBgKCR7U3RyaW5nKGZ1bmN0aW9uXyl9KSgpO1xcbmApLmpvaW4oJycpO1xuICByZXR1cm4gYFxcbihmdW5jdGlvbiAoKSB7XFxuJHtzaGltcy5tYXAoU3RyaW5nKS5qb2luKCdcXG5cXG4nKX1cXG5cXG4oJHtTdHJpbmcoaW5pdCl9KSgpO1xcbn0pKCk7XFxuJHthZGRpdGlvbmFsSW5pdHN9YDtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBtYXRjaGluZyBgc3RvcGAgZWl0aGVyIG5lZWRzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQgb3IgaXMgc2VyaWFsaXplZCBpbnRvIHRoZSBlbWl0dGVkIGJhbm5lciBhbmQgc28gcnVucyBpbnNpZGUgdGhlIGJ1aWx0IGJ1bmRsZSwgbmV2ZXIgaW4gdGhpcyBwcm9jZXNzLiBUaGUgc2hpbXMgYWJvdmUgYXJlIGRlbGliZXJhdGVseSBOT1QgaWdub3JlZDogdGhleSBhcmUgb3JkaW5hcnkgZnVuY3Rpb25zIGhlcmUgYW5kIGFyZSB1bml0LXRlc3RlZCBkaXJlY3RseS4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKlxuICogVGhpcyBwbHVnaW4gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyB0YXNrczpcbiAqIC0gUmVwbGFjZXMgaW5zdGFuY2VzIG9mIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgd2l0aCBhIENvbW1vbkpTLWNvbXBhdGlibGUgYF9fZmlsZW5hbWVgIGFsdGVybmF0aXZlLlxuICogLSBNb2RpZmllcyB0aGUgYHNvdXJjZU1hcHBpbmdVUkxgIGNvbW1lbnQgc28gYSB0ZW1wbGF0ZSBsaXRlcmFsIGVuZGluZyBhIGZpbGUgZG9lcyBub3Qgc3dhbGxvdyBpdC5cbiAqIC0gQWRkcyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgdG8gdGhlIGdsb2JhbCBzY29wZSBpZiBgcHJvY2Vzc2AgaXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQuXG4gKiAtIEZpbGxzIGluIGBTeW1ib2wuZGlzcG9zZWAgLyBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgb24gZW5naW5lcyB0aGF0IGxhY2sgdGhlbSwgc28gYHVzaW5nYCB3b3JrcyB0aGVyZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwbHVnaW4gb3B0aW9ucy5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0IHRoYXQgaGFuZGxlcyB0aGUgcHJlcHJvY2Vzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3NQbHVnaW4ob3B0aW9uczogUHJlcHJvY2Vzc1BsdWdpbk9wdGlvbnMgPSB7fSk6IFBsdWdpbiB7XG4gIGNvbnN0IHsgYWRkaXRpb25hbEJhbm5lckluaXRGdW5jdGlvbnMgPSBbXSwgY2pzSW1wb3J0TWV0YVVybFByb3ZpZGVyID0gZ2V0Q2pzSW1wb3J0TWV0YVVybCwgaXNFc20gPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gaXNFc21cbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICBbXG4gICAgICAgIHJlcGxhY2VBbGwoe1xuICAgICAgICAgICRzdHJpbmc6ICdpbXBvcnQoZG90KW1ldGEoZG90KXVybCcsXG4gICAgICAgICAgcmVwbGFjZXI6ICcuJyxcbiAgICAgICAgICBzZWFyY2hWYWx1ZTogJyhkb3QpJ1xuICAgICAgICB9KVxuICAgICAgXTogY2pzSW1wb3J0TWV0YVVybFByb3ZpZGVyXG4gICAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdwcmVwcm9jZXNzJyxcbiAgICBzZXR1cChidWlsZCk6IHZvaWQge1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuZGVmaW5lID8/PSB7fTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKSkge1xuICAgICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5kZWZpbmVba2V5XSA9IGBfXyR7bWFrZVZhbGlkVmFyaWFibGVOYW1lKGtleSl9YDtcbiAgICAgIH1cblxuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyID8/PSB7fTtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSA/Pz0gJyc7XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXJbJ2pzJ10gKz0gbWFrZVByZXByb2Nlc3NCYW5uZXIoeyBhZGRpdGlvbmFsQmFubmVySW5pdEZ1bmN0aW9ucywgaXNFc20gfSk7XG5cbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogL1xcLig/OmpzfHRzfGNqc3xtanN8Y3RzfG10cykkLyB9LCBhc3luYyAoJGFyZ3VtZW50cykgPT4ge1xuICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCByZWFkRmlsZSgkYXJndW1lbnRzLnBhdGgsICd1dGYtOCcpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcGxhY2VtZW50cykpIHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGBfXyR7bWFrZVZhbGlkVmFyaWFibGVOYW1lKGtleSl9YDtcbiAgICAgICAgICBpZiAoIWNvbnRlbnRzLmluY2x1ZGVzKGtleSkgfHwgY29udGVudHMuaW5jbHVkZXMoYHZhciAke3ZhcmlhYmxlfWApKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyBgKCR7U3RyaW5nKHZhbHVlKX0pKClgIDogdG9Kc29uKHZhbHVlLCB7IGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZS5GdWxsIH0pO1xuICAgICAgICAgIGNvbnRlbnRzID0gYHZhciAke3ZhcmlhYmxlfSA9IGdsb2JhbFRoaXNbJyR7a2V5fSddID8/ICR7dmFsdWVTdHJpbmd9O1xcbiR7Y29udGVudHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhBQ0s6IFRoZSAkeycnfSBwYXJ0IGlzIHVzZWQgdG8gZW5zdXJlIE9ic2lkaWFuIGxvYWRzIHRoZSBwbHVnaW4gcHJvcGVybHksXG4gICAgICAgIC8vIE90aGVyd2lzZSwgaXQgc3RvcHMgbG9hZGluZyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc291cmNlTWFwcGluZ1VSTCBjb21tZW50LlxuXG4gICAgICAgIGNvbnRlbnRzID0gcmVwbGFjZUFsbCh7XG4gICAgICAgICAgJHN0cmluZzogY29udGVudHMsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZyAtLSBJdCBpcyBpbnRlbnRpb25hbCwgdGhlIHN0cmluZyBsb29rcyBsaWtlIGEgdGVtcGxhdGUgbGl0ZXJhbCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgICAgICByZXBsYWNlcjogJ2BcXG4vLyMke1xcJ1xcJ30gc291cmNlTWFwcGluZ1VSTCcsXG4gICAgICAgICAgc2VhcmNoVmFsdWU6IC9gXFxyP1xcblxcL1xcLyMgc291cmNlTWFwcGluZ1VSTC9nXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgbG9hZGVyOiAndHMnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENqc0ltcG9ydE1ldGFVcmwoKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgY29uc3QgdXJsID0gbG9jYWxSZXF1aXJlKCdub2RlOnVybCcpIGFzIFVybE1vZHVsZTtcbiAgICBpZiAodHlwZW9mIHVybC5wYXRoVG9GaWxlVVJMID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdXJsLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkuaHJlZjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byB0aGUgcGFnZSBVUkwsIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93bi5cbiAgcmV0dXJuIChnbG9iYWxUaGlzIGFzIExvY2F0aW9uSG9zdCkubG9jYXRpb24/LmhyZWYgPz8gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXRDanMoKTogdm9pZCB7XG4gIGNvbnN0IGdsb2JhbFRoaXNSZWNvcmQgPSBnbG9iYWxUaGlzIGFzIEdlbmVyaWNPYmplY3Q7XG4gIGVuc3VyZURpc3Bvc2VTeW1ib2xzKCk7XG4gIGdsb2JhbFRoaXNSZWNvcmRbJ19fbmFtZSddID8/PSBrZWVwTmFtZTtcbiAgZ2xvYmFsVGhpc1JlY29yZFsnX19leHRyYWN0RGVmYXVsdCddID8/PSBleHRyYWN0RGVmYXVsdDtcblxuICBlbnN1cmVCcm93c2VyUHJvY2VzcygpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL2NvbnNpc3RlbnQtZnVuY3Rpb24tc2NvcGluZyAtLSBTZXJpYWxpemVkIHdpdGggaW5pdENqcyBpbnRvIHRoZSBiYW5uZXI7IGF0IG1vZHVsZSBzY29wZSBpdCB3b3VsZCBiZSBsZWZ0IG91dCBvZiBpdC5cbiAgZnVuY3Rpb24gZXh0cmFjdERlZmF1bHQobW9kdWxlOiBQYXJ0aWFsPEVzbU1vZHVsZT4gfCB1bmRlZmluZWQpOiB1bmtub3duIHtcbiAgICByZXR1cm4gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtb2R1bGUgPyBtb2R1bGUuZGVmYXVsdCA6IG1vZHVsZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RXNtKCk6IHZvaWQge1xuICBlbnN1cmVEaXNwb3NlU3ltYm9scygpO1xuICBlbnN1cmVCcm93c2VyUHJvY2VzcygpO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference path="../../index.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Svelte wrapper esbuild plugin.
|
|
6
|
+
*/
|
|
7
|
+
import type { Plugin } from 'esbuild';
|
|
8
|
+
/**
|
|
9
|
+
* Wraps the esbuild-svelte plugin to ensure that the correct format is used.
|
|
10
|
+
*
|
|
11
|
+
* @param isProductionBuild - Whether the build is a production build.
|
|
12
|
+
* @returns The esbuild plugin.
|
|
13
|
+
*/
|
|
14
|
+
export declare function svelteWrapperPlugin(isProductionBuild: boolean): Plugin;
|
|
@@ -0,0 +1,82 @@
|
|
|
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 initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import { extractDefaultExportInterop } from "@mnaoumov/typescript-lib/object-utils";
|
|
49
|
+
import esbuildSvelte_ from "esbuild-svelte";
|
|
50
|
+
import { sveltePreprocess } from "svelte-preprocess";
|
|
51
|
+
import { readPackageJson } from "../../npm.mjs";
|
|
52
|
+
const esbuildSvelte = extractDefaultExportInterop(esbuildSvelte_);
|
|
53
|
+
function svelteWrapperPlugin(isProductionBuild) {
|
|
54
|
+
const esbuildSveltePlugin = esbuildSvelte({
|
|
55
|
+
compilerOptions: {
|
|
56
|
+
css: "injected",
|
|
57
|
+
dev: !isProductionBuild
|
|
58
|
+
},
|
|
59
|
+
moduleCompilerOptions: {
|
|
60
|
+
dev: !isProductionBuild
|
|
61
|
+
},
|
|
62
|
+
preprocess: sveltePreprocess()
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
name: "svelte-wrapper",
|
|
66
|
+
async setup(build) {
|
|
67
|
+
const packageJson = await readPackageJson();
|
|
68
|
+
const format = packageJson.type === "module" ? "esm" : "cjs";
|
|
69
|
+
await esbuildSveltePlugin.setup({
|
|
70
|
+
...build,
|
|
71
|
+
initialOptions: {
|
|
72
|
+
...build.initialOptions,
|
|
73
|
+
format
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
svelteWrapperPlugin
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL2VzYnVpbGQtaW1wbC9zdmVsdGUtd3JhcHBlci1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBTdmVsdGUgd3JhcHBlciBlc2J1aWxkIHBsdWdpbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gd3JhcHBpbmcgZXNidWlsZC1zdmVsdGUgd2l0aCBzdmVsdGUtcHJlcHJvY2VzczsgcmVxdWlyZXMgYSBsaXZlIGVzYnVpbGQgY29udGV4dC4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgZXNidWlsZFN2ZWx0ZV8gZnJvbSAnZXNidWlsZC1zdmVsdGUnO1xuaW1wb3J0IHsgc3ZlbHRlUHJlcHJvY2VzcyB9IGZyb20gJ3N2ZWx0ZS1wcmVwcm9jZXNzJztcblxuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vLi4vbnBtLnRzJztcblxuY29uc3QgZXNidWlsZFN2ZWx0ZSA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChlc2J1aWxkU3ZlbHRlXyk7XG5cbi8qKlxuICogV3JhcHMgdGhlIGVzYnVpbGQtc3ZlbHRlIHBsdWdpbiB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmb3JtYXQgaXMgdXNlZC5cbiAqXG4gKiBAcGFyYW0gaXNQcm9kdWN0aW9uQnVpbGQgLSBXaGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAcmV0dXJucyBUaGUgZXNidWlsZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdmVsdGVXcmFwcGVyUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUGx1Z2luIHtcbiAgY29uc3QgZXNidWlsZFN2ZWx0ZVBsdWdpbiA9IGVzYnVpbGRTdmVsdGUoe1xuICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgY3NzOiAnaW5qZWN0ZWQnLFxuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIG1vZHVsZUNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIHByZXByb2Nlc3M6IHN2ZWx0ZVByZXByb2Nlc3MoKVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzdmVsdGUtd3JhcHBlcicsXG4gICAgYXN5bmMgc2V0dXAoYnVpbGQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJyA/ICdlc20nIDogJ2Nqcyc7XG4gICAgICBhd2FpdCBlc2J1aWxkU3ZlbHRlUGx1Z2luLnNldHVwKHtcbiAgICAgICAgLi4uYnVpbGQsXG4gICAgICAgIGluaXRpYWxPcHRpb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGQuaW5pdGlhbE9wdGlvbnMsXG4gICAgICAgICAgZm9ybWF0XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsU0FBUyxtQ0FBbUM7QUFDNUMsT0FBTyxvQkFBb0I7QUFDM0IsU0FBUyx3QkFBd0I7QUFFakMsU0FBUyx1QkFBdUI7QUFFaEMsTUFBTSxnQkFBZ0IsNEJBQTRCLGNBQWM7QUFRekQsU0FBUyxvQkFBb0IsbUJBQW9DO0FBQ3RFLFFBQU0sc0JBQXNCLGNBQWM7QUFBQSxJQUN4QyxpQkFBaUI7QUFBQSxNQUNmLEtBQUs7QUFBQSxNQUNMLEtBQUssQ0FBQztBQUFBLElBQ1I7QUFBQSxJQUNBLHVCQUF1QjtBQUFBLE1BQ3JCLEtBQUssQ0FBQztBQUFBLElBQ1I7QUFBQSxJQUNBLFlBQVksaUJBQWlCO0FBQUEsRUFDL0IsQ0FBQztBQUVELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sTUFBTSxPQUFzQjtBQUNoQyxZQUFNLGNBQWMsTUFBTSxnQkFBZ0I7QUFDMUMsWUFBTSxTQUFTLFlBQVksU0FBUyxXQUFXLFFBQVE7QUFDdkQsWUFBTSxvQkFBb0IsTUFBTTtBQUFBLFFBQzlCLEdBQUc7QUFBQSxRQUNILGdCQUFnQjtBQUFBLFVBQ2QsR0FBRyxNQUFNO0FBQUEsVUFDVDtBQUFBLFFBQ0Y7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,52 @@
|
|
|
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 initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import * as esbuild_impl from "./esbuild-impl/index.mjs";
|
|
49
|
+
export {
|
|
50
|
+
esbuild_impl as "esbuild-impl"
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2VzYnVpbGQtaW1wbCcgZnJvbSAnLi9lc2J1aWxkLWltcGwvaW5kZXgudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSxrQkFBb0I7IiwKICAibmFtZXMiOiBbImVzYnVpbGQtaW1wbCJdCn0K
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/// <reference path="./index.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Type-checks a set of TypeScript files with `skipLibCheck` disabled, but reports only the
|
|
6
|
+
* diagnostics whose source file we own. This lets the general build run with `skipLibCheck: true`
|
|
7
|
+
* (so it does not fail on broken upstream `.d.ts` files we do not control, such as a given
|
|
8
|
+
* version's `obsidian.d.ts`) while still fully validating the declarations we author.
|
|
9
|
+
*
|
|
10
|
+
* When upstream types are fixed, the `Ignored N diagnostic(s)` count drops to `0`, signalling the
|
|
11
|
+
* workaround is no longer doing anything.
|
|
12
|
+
*/
|
|
13
|
+
import type { CompilerOptions, Diagnostic } from 'typescript';
|
|
14
|
+
/**
|
|
15
|
+
* Parameters for {@link checkProjectTypes}.
|
|
16
|
+
*/
|
|
17
|
+
export interface CheckProjectTypesParams {
|
|
18
|
+
/**
|
|
19
|
+
* When `true`, the ignored diagnostics (those dropped by {@link CheckProjectTypesParams.shouldKeepFile}
|
|
20
|
+
* or {@link CheckProjectTypesParams.shouldKeepDiagnostic}) are printed in full after the ignored
|
|
21
|
+
* count, so they can be inspected. When omitted or `false`, only the count is printed.
|
|
22
|
+
*
|
|
23
|
+
* @default `false`
|
|
24
|
+
*/
|
|
25
|
+
readonly isVerbose?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
Compiler options for the program. `skipLibCheck` is always forced to `false`.
|
|
28
|
+
*/
|
|
29
|
+
readonly options: CompilerOptions;
|
|
30
|
+
/**
|
|
31
|
+
The root files to type-check.
|
|
32
|
+
*/
|
|
33
|
+
readonly rootNames: readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* Decides whether a diagnostic should be reported, based on the diagnostic itself rather than its
|
|
36
|
+
* source file. Runs in addition to {@link CheckProjectTypesParams.shouldKeepFile} — a diagnostic is
|
|
37
|
+
* reported only when both predicates keep it. Use this to drop diagnostics that are reported in a
|
|
38
|
+
* file we own but are caused by something we do not control (e.g. a cross-module-format interop
|
|
39
|
+
* complaint about a third-party import). When omitted, no diagnostic is dropped on this basis.
|
|
40
|
+
*
|
|
41
|
+
* @param diagnostic - The diagnostic to evaluate.
|
|
42
|
+
* @returns `true` to report the diagnostic, `false` to ignore it.
|
|
43
|
+
*/
|
|
44
|
+
readonly shouldKeepDiagnostic?: (diagnostic: Diagnostic) => boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Decides whether a diagnostic's source file is one we care about.
|
|
47
|
+
*
|
|
48
|
+
* @param fileName - The diagnostic's source file, already passed through {@link toCanonical}.
|
|
49
|
+
* @returns `true` to report the diagnostic, `false` to ignore it.
|
|
50
|
+
*/
|
|
51
|
+
readonly shouldKeepFile: (fileName: string) => boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The resolved result of {@link parseTsConfig}.
|
|
55
|
+
*/
|
|
56
|
+
export interface ParsedTsConfig {
|
|
57
|
+
/**
|
|
58
|
+
The resolved list of files the config includes (absolute paths).
|
|
59
|
+
*/
|
|
60
|
+
readonly fileNames: readonly string[];
|
|
61
|
+
/**
|
|
62
|
+
The resolved compiler options (with `extends` applied).
|
|
63
|
+
*/
|
|
64
|
+
readonly options: CompilerOptions;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Type-checks a set of files with `skipLibCheck: false`, but reports only the diagnostics whose
|
|
68
|
+
* source file passes `shouldKeepFile`. Diagnostics from files we do not control (e.g. broken
|
|
69
|
+
* third-party `.d.ts` pulled in transitively) are dropped, while still being counted for
|
|
70
|
+
* visibility. When `isVerbose` is set, the dropped diagnostics are also printed in full.
|
|
71
|
+
*
|
|
72
|
+
* @param params - The program inputs and the keep predicate.
|
|
73
|
+
* @returns `true` when no reported diagnostic is an error, `false` otherwise.
|
|
74
|
+
*/
|
|
75
|
+
export declare function checkProjectTypes(params: CheckProjectTypesParams): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Parses a `tsconfig.json` (resolving `extends`, `include`, `exclude`) into the resolved file list
|
|
78
|
+
* and compiler options.
|
|
79
|
+
*
|
|
80
|
+
* @param tsConfigPath - Absolute path to the config file.
|
|
81
|
+
* @returns The resolved file names and options.
|
|
82
|
+
* @throws If the config cannot be parsed or contains errors.
|
|
83
|
+
*/
|
|
84
|
+
export declare function parseTsConfig(tsConfigPath: string): ParsedTsConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Normalizes a file path for comparison: forward slashes everywhere, lower-cased on a
|
|
87
|
+
* case-insensitive file system.
|
|
88
|
+
*
|
|
89
|
+
* @param fileName - The path to normalize.
|
|
90
|
+
* @returns The canonical path.
|
|
91
|
+
*/
|
|
92
|
+
export declare function toCanonical(fileName: string): string;
|
|
@@ -0,0 +1,123 @@
|
|
|
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 initEsm() {
|
|
43
|
+
ensureDisposeSymbols();
|
|
44
|
+
ensureBrowserProcess();
|
|
45
|
+
})();
|
|
46
|
+
})();
|
|
47
|
+
|
|
48
|
+
import process from "node:process";
|
|
49
|
+
import {
|
|
50
|
+
createProgram,
|
|
51
|
+
DiagnosticCategory,
|
|
52
|
+
formatDiagnostic,
|
|
53
|
+
formatDiagnostics,
|
|
54
|
+
formatDiagnosticsWithColorAndContext,
|
|
55
|
+
getParsedCommandLineOfConfigFile,
|
|
56
|
+
getPreEmitDiagnostics,
|
|
57
|
+
sys
|
|
58
|
+
} from "typescript";
|
|
59
|
+
const FORMAT_HOST = {
|
|
60
|
+
getCanonicalFileName: (fileName) => fileName,
|
|
61
|
+
getCurrentDirectory: () => sys.getCurrentDirectory(),
|
|
62
|
+
getNewLine: () => sys.newLine
|
|
63
|
+
};
|
|
64
|
+
function checkProjectTypes(params) {
|
|
65
|
+
const options = {
|
|
66
|
+
...params.options,
|
|
67
|
+
skipLibCheck: false
|
|
68
|
+
};
|
|
69
|
+
const program = createProgram({
|
|
70
|
+
options,
|
|
71
|
+
rootNames: [...params.rootNames]
|
|
72
|
+
});
|
|
73
|
+
const allDiagnostics = getPreEmitDiagnostics(program);
|
|
74
|
+
const keptDiagnostics = allDiagnostics.filter((diagnostic) => shouldKeepDiagnosticByFile(diagnostic, params.shouldKeepFile) && (params.shouldKeepDiagnostic?.(diagnostic) ?? true));
|
|
75
|
+
const ignoredCount = allDiagnostics.length - keptDiagnostics.length;
|
|
76
|
+
if (keptDiagnostics.length > 0) {
|
|
77
|
+
process.stdout.write(formatDiagnosticsWithColorAndContext(keptDiagnostics, FORMAT_HOST));
|
|
78
|
+
}
|
|
79
|
+
process.stdout.write(`Ignored ${String(ignoredCount)} diagnostic(s) outside the validated set.
|
|
80
|
+
`);
|
|
81
|
+
if (params.isVerbose && ignoredCount > 0) {
|
|
82
|
+
const ignoredDiagnostics = allDiagnostics.filter((diagnostic) => !keptDiagnostics.includes(diagnostic));
|
|
83
|
+
process.stdout.write(formatDiagnosticsWithColorAndContext(ignoredDiagnostics, FORMAT_HOST));
|
|
84
|
+
}
|
|
85
|
+
return keptDiagnostics.every((diagnostic) => diagnostic.category !== DiagnosticCategory.Error);
|
|
86
|
+
}
|
|
87
|
+
function parseTsConfig(tsConfigPath) {
|
|
88
|
+
const host = {
|
|
89
|
+
fileExists: (path) => sys.fileExists(path),
|
|
90
|
+
getCurrentDirectory: () => sys.getCurrentDirectory(),
|
|
91
|
+
onUnRecoverableConfigFileDiagnostic: (diagnostic) => {
|
|
92
|
+
throw new Error(formatDiagnostic(diagnostic, FORMAT_HOST));
|
|
93
|
+
},
|
|
94
|
+
readDirectory: (rootDirectory, extensions, excludes, includes, depth) => sys.readDirectory(rootDirectory, extensions, excludes, includes, depth),
|
|
95
|
+
readFile: (path) => sys.readFile(path),
|
|
96
|
+
useCaseSensitiveFileNames: sys.useCaseSensitiveFileNames
|
|
97
|
+
};
|
|
98
|
+
const parsed = getParsedCommandLineOfConfigFile(tsConfigPath, void 0, host);
|
|
99
|
+
if (!parsed) {
|
|
100
|
+
throw new Error(`Failed to parse TypeScript config: ${tsConfigPath}`);
|
|
101
|
+
}
|
|
102
|
+
if (parsed.errors.length > 0) {
|
|
103
|
+
throw new Error(`Errors while parsing TypeScript config ${tsConfigPath}:
|
|
104
|
+
${formatDiagnostics(parsed.errors, FORMAT_HOST)}`);
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
fileNames: parsed.fileNames,
|
|
108
|
+
options: parsed.options
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function toCanonical(fileName) {
|
|
112
|
+
const normalized = fileName.replaceAll("\\", "/");
|
|
113
|
+
return sys.useCaseSensitiveFileNames ? normalized : normalized.toLowerCase();
|
|
114
|
+
}
|
|
115
|
+
function shouldKeepDiagnosticByFile(diagnostic, shouldKeepFile) {
|
|
116
|
+
return !diagnostic.file || shouldKeepFile(toCanonical(diagnostic.file.fileName));
|
|
117
|
+
}
|
|
118
|
+
export {
|
|
119
|
+
checkProjectTypes,
|
|
120
|
+
parseTsConfig,
|
|
121
|
+
toCanonical
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NoZWNrLXByb2plY3QtdHlwZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlLWNoZWNrcyBhIHNldCBvZiBUeXBlU2NyaXB0IGZpbGVzIHdpdGggYHNraXBMaWJDaGVja2AgZGlzYWJsZWQsIGJ1dCByZXBvcnRzIG9ubHkgdGhlXG4gKiBkaWFnbm9zdGljcyB3aG9zZSBzb3VyY2UgZmlsZSB3ZSBvd24uIFRoaXMgbGV0cyB0aGUgZ2VuZXJhbCBidWlsZCBydW4gd2l0aCBgc2tpcExpYkNoZWNrOiB0cnVlYFxuICogKHNvIGl0IGRvZXMgbm90IGZhaWwgb24gYnJva2VuIHVwc3RyZWFtIGAuZC50c2AgZmlsZXMgd2UgZG8gbm90IGNvbnRyb2wsIHN1Y2ggYXMgYSBnaXZlblxuICogdmVyc2lvbidzIGBvYnNpZGlhbi5kLnRzYCkgd2hpbGUgc3RpbGwgZnVsbHkgdmFsaWRhdGluZyB0aGUgZGVjbGFyYXRpb25zIHdlIGF1dGhvci5cbiAqXG4gKiBXaGVuIHVwc3RyZWFtIHR5cGVzIGFyZSBmaXhlZCwgdGhlIGBJZ25vcmVkIE4gZGlhZ25vc3RpYyhzKWAgY291bnQgZHJvcHMgdG8gYDBgLCBzaWduYWxsaW5nIHRoZVxuICogd29ya2Fyb3VuZCBpcyBubyBsb25nZXIgZG9pbmcgYW55dGhpbmcuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBDb21waWxlck9wdGlvbnMsXG4gIERpYWdub3N0aWMsXG4gIEZvcm1hdERpYWdub3N0aWNzSG9zdCxcbiAgUGFyc2VDb25maWdGaWxlSG9zdFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb2dyYW0sXG4gIERpYWdub3N0aWNDYXRlZ29yeSxcbiAgZm9ybWF0RGlhZ25vc3RpYyxcbiAgZm9ybWF0RGlhZ25vc3RpY3MsXG4gIGZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dCxcbiAgZ2V0UGFyc2VkQ29tbWFuZExpbmVPZkNvbmZpZ0ZpbGUsXG4gIGdldFByZUVtaXREaWFnbm9zdGljcyxcbiAgc3lzXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjaGVja1Byb2plY3RUeXBlc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tQcm9qZWN0VHlwZXNQYXJhbXMge1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBpZ25vcmVkIGRpYWdub3N0aWNzICh0aG9zZSBkcm9wcGVkIGJ5IHtAbGluayBDaGVja1Byb2plY3RUeXBlc1BhcmFtcy5zaG91bGRLZWVwRmlsZX1cbiAgICogb3Ige0BsaW5rIENoZWNrUHJvamVjdFR5cGVzUGFyYW1zLnNob3VsZEtlZXBEaWFnbm9zdGljfSkgYXJlIHByaW50ZWQgaW4gZnVsbCBhZnRlciB0aGUgaWdub3JlZFxuICAgKiBjb3VudCwgc28gdGhleSBjYW4gYmUgaW5zcGVjdGVkLiBXaGVuIG9taXR0ZWQgb3IgYGZhbHNlYCwgb25seSB0aGUgY291bnQgaXMgcHJpbnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNWZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgQ29tcGlsZXIgb3B0aW9ucyBmb3IgdGhlIHByb2dyYW0uIGBza2lwTGliQ2hlY2tgIGlzIGFsd2F5cyBmb3JjZWQgdG8gYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgVGhlIHJvb3QgZmlsZXMgdG8gdHlwZS1jaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3ROYW1lczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciBhIGRpYWdub3N0aWMgc2hvdWxkIGJlIHJlcG9ydGVkLCBiYXNlZCBvbiB0aGUgZGlhZ25vc3RpYyBpdHNlbGYgcmF0aGVyIHRoYW4gaXRzXG4gICAqIHNvdXJjZSBmaWxlLiBSdW5zIGluIGFkZGl0aW9uIHRvIHtAbGluayBDaGVja1Byb2plY3RUeXBlc1BhcmFtcy5zaG91bGRLZWVwRmlsZX0gXHUyMDE0IGEgZGlhZ25vc3RpYyBpc1xuICAgKiByZXBvcnRlZCBvbmx5IHdoZW4gYm90aCBwcmVkaWNhdGVzIGtlZXAgaXQuIFVzZSB0aGlzIHRvIGRyb3AgZGlhZ25vc3RpY3MgdGhhdCBhcmUgcmVwb3J0ZWQgaW4gYVxuICAgKiBmaWxlIHdlIG93biBidXQgYXJlIGNhdXNlZCBieSBzb21ldGhpbmcgd2UgZG8gbm90IGNvbnRyb2wgKGUuZy4gYSBjcm9zcy1tb2R1bGUtZm9ybWF0IGludGVyb3BcbiAgICogY29tcGxhaW50IGFib3V0IGEgdGhpcmQtcGFydHkgaW1wb3J0KS4gV2hlbiBvbWl0dGVkLCBubyBkaWFnbm9zdGljIGlzIGRyb3BwZWQgb24gdGhpcyBiYXNpcy5cbiAgICpcbiAgICogQHBhcmFtIGRpYWdub3N0aWMgLSBUaGUgZGlhZ25vc3RpYyB0byBldmFsdWF0ZS5cbiAgICogQHJldHVybnMgYHRydWVgIHRvIHJlcG9ydCB0aGUgZGlhZ25vc3RpYywgYGZhbHNlYCB0byBpZ25vcmUgaXQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRLZWVwRGlhZ25vc3RpYz86IChkaWFnbm9zdGljOiBEaWFnbm9zdGljKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWNpZGVzIHdoZXRoZXIgYSBkaWFnbm9zdGljJ3Mgc291cmNlIGZpbGUgaXMgb25lIHdlIGNhcmUgYWJvdXQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBkaWFnbm9zdGljJ3Mgc291cmNlIGZpbGUsIGFscmVhZHkgcGFzc2VkIHRocm91Z2gge0BsaW5rIHRvQ2Fub25pY2FsfS5cbiAgICogQHJldHVybnMgYHRydWVgIHRvIHJlcG9ydCB0aGUgZGlhZ25vc3RpYywgYGZhbHNlYCB0byBpZ25vcmUgaXQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRLZWVwRmlsZTogKGZpbGVOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJlc29sdmVkIHJlc3VsdCBvZiB7QGxpbmsgcGFyc2VUc0NvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVHNDb25maWcge1xuICAvKipcbiAgVGhlIHJlc29sdmVkIGxpc3Qgb2YgZmlsZXMgdGhlIGNvbmZpZyBpbmNsdWRlcyAoYWJzb2x1dGUgcGF0aHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgVGhlIHJlc29sdmVkIGNvbXBpbGVyIG9wdGlvbnMgKHdpdGggYGV4dGVuZHNgIGFwcGxpZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogQ29tcGlsZXJPcHRpb25zO1xufVxuXG5jb25zdCBGT1JNQVRfSE9TVDogRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0ge1xuICBnZXRDYW5vbmljYWxGaWxlTmFtZTogKGZpbGVOYW1lKSA9PiBmaWxlTmFtZSxcbiAgZ2V0Q3VycmVudERpcmVjdG9yeTogKCkgPT4gc3lzLmdldEN1cnJlbnREaXJlY3RvcnkoKSxcbiAgZ2V0TmV3TGluZTogKCkgPT4gc3lzLm5ld0xpbmVcbn07XG5cbi8qKlxuICogVHlwZS1jaGVja3MgYSBzZXQgb2YgZmlsZXMgd2l0aCBgc2tpcExpYkNoZWNrOiBmYWxzZWAsIGJ1dCByZXBvcnRzIG9ubHkgdGhlIGRpYWdub3N0aWNzIHdob3NlXG4gKiBzb3VyY2UgZmlsZSBwYXNzZXMgYHNob3VsZEtlZXBGaWxlYC4gRGlhZ25vc3RpY3MgZnJvbSBmaWxlcyB3ZSBkbyBub3QgY29udHJvbCAoZS5nLiBicm9rZW5cbiAqIHRoaXJkLXBhcnR5IGAuZC50c2AgcHVsbGVkIGluIHRyYW5zaXRpdmVseSkgYXJlIGRyb3BwZWQsIHdoaWxlIHN0aWxsIGJlaW5nIGNvdW50ZWQgZm9yXG4gKiB2aXNpYmlsaXR5LiBXaGVuIGBpc1ZlcmJvc2VgIGlzIHNldCwgdGhlIGRyb3BwZWQgZGlhZ25vc3RpY3MgYXJlIGFsc28gcHJpbnRlZCBpbiBmdWxsLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcHJvZ3JhbSBpbnB1dHMgYW5kIHRoZSBrZWVwIHByZWRpY2F0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIG5vIHJlcG9ydGVkIGRpYWdub3N0aWMgaXMgYW4gZXJyb3IsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQcm9qZWN0VHlwZXMocGFyYW1zOiBDaGVja1Byb2plY3RUeXBlc1BhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCBvcHRpb25zOiBDb21waWxlck9wdGlvbnMgPSB7XG4gICAgLi4ucGFyYW1zLm9wdGlvbnMsXG4gICAgc2tpcExpYkNoZWNrOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKHtcbiAgICBvcHRpb25zLFxuICAgIHJvb3ROYW1lczogWy4uLnBhcmFtcy5yb290TmFtZXNdXG4gIH0pO1xuXG4gIGNvbnN0IGFsbERpYWdub3N0aWNzID0gZ2V0UHJlRW1pdERpYWdub3N0aWNzKHByb2dyYW0pO1xuICBjb25zdCBrZXB0RGlhZ25vc3RpY3MgPSBhbGxEaWFnbm9zdGljcy5maWx0ZXIoKGRpYWdub3N0aWMpID0+IHNob3VsZEtlZXBEaWFnbm9zdGljQnlGaWxlKGRpYWdub3N0aWMsIHBhcmFtcy5zaG91bGRLZWVwRmlsZSkgJiYgKHBhcmFtcy5zaG91bGRLZWVwRGlhZ25vc3RpYz8uKGRpYWdub3N0aWMpID8/IHRydWUpKTtcbiAgY29uc3QgaWdub3JlZENvdW50ID0gYWxsRGlhZ25vc3RpY3MubGVuZ3RoIC0ga2VwdERpYWdub3N0aWNzLmxlbmd0aDtcblxuICBpZiAoa2VwdERpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShmb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQoa2VwdERpYWdub3N0aWNzLCBGT1JNQVRfSE9TVCkpO1xuICB9XG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYElnbm9yZWQgJHtTdHJpbmcoaWdub3JlZENvdW50KX0gZGlhZ25vc3RpYyhzKSBvdXRzaWRlIHRoZSB2YWxpZGF0ZWQgc2V0LlxcbmApO1xuXG4gIGlmIChwYXJhbXMuaXNWZXJib3NlICYmIGlnbm9yZWRDb3VudCA+IDApIHtcbiAgICBjb25zdCBpZ25vcmVkRGlhZ25vc3RpY3MgPSBhbGxEaWFnbm9zdGljcy5maWx0ZXIoKGRpYWdub3N0aWMpID0+ICFrZXB0RGlhZ25vc3RpY3MuaW5jbHVkZXMoZGlhZ25vc3RpYykpO1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dChpZ25vcmVkRGlhZ25vc3RpY3MsIEZPUk1BVF9IT1NUKSk7XG4gIH1cblxuICByZXR1cm4ga2VwdERpYWdub3N0aWNzLmV2ZXJ5KChkaWFnbm9zdGljKSA9PiBkaWFnbm9zdGljLmNhdGVnb3J5ICE9PSBEaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIGB0c2NvbmZpZy5qc29uYCAocmVzb2x2aW5nIGBleHRlbmRzYCwgYGluY2x1ZGVgLCBgZXhjbHVkZWApIGludG8gdGhlIHJlc29sdmVkIGZpbGUgbGlzdFxuICogYW5kIGNvbXBpbGVyIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHRzQ29uZmlnUGF0aCAtIEFic29sdXRlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIGZpbGUgbmFtZXMgYW5kIG9wdGlvbnMuXG4gKiBAdGhyb3dzIElmIHRoZSBjb25maWcgY2Fubm90IGJlIHBhcnNlZCBvciBjb250YWlucyBlcnJvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRzQ29uZmlnKHRzQ29uZmlnUGF0aDogc3RyaW5nKTogUGFyc2VkVHNDb25maWcge1xuICBjb25zdCBob3N0OiBQYXJzZUNvbmZpZ0ZpbGVIb3N0ID0ge1xuICAgIGZpbGVFeGlzdHM6IChwYXRoKSA9PiBzeXMuZmlsZUV4aXN0cyhwYXRoKSxcbiAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiAoKSA9PiBzeXMuZ2V0Q3VycmVudERpcmVjdG9yeSgpLFxuICAgIG9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljOiAoZGlhZ25vc3RpYykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWMoZGlhZ25vc3RpYywgRk9STUFUX0hPU1QpKTtcbiAgICB9LFxuICAgIHJlYWREaXJlY3Rvcnk6IChyb290RGlyZWN0b3J5LCBleHRlbnNpb25zLCBleGNsdWRlcywgaW5jbHVkZXMsIGRlcHRoKSA9PiBzeXMucmVhZERpcmVjdG9yeShyb290RGlyZWN0b3J5LCBleHRlbnNpb25zLCBleGNsdWRlcywgaW5jbHVkZXMsIGRlcHRoKSxcbiAgICByZWFkRmlsZTogKHBhdGgpID0+IHN5cy5yZWFkRmlsZShwYXRoKSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBzeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lc1xuICB9O1xuXG4gIGNvbnN0IHBhcnNlZCA9IGdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlKHRzQ29uZmlnUGF0aCwgdW5kZWZpbmVkLCBob3N0KTtcblxuICBpZiAoIXBhcnNlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIFR5cGVTY3JpcHQgY29uZmlnOiAke3RzQ29uZmlnUGF0aH1gKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9ycyB3aGlsZSBwYXJzaW5nIFR5cGVTY3JpcHQgY29uZmlnICR7dHNDb25maWdQYXRofTpcXG4ke2Zvcm1hdERpYWdub3N0aWNzKHBhcnNlZC5lcnJvcnMsIEZPUk1BVF9IT1NUKX1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsZU5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgIG9wdGlvbnM6IHBhcnNlZC5vcHRpb25zXG4gIH07XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGZpbGUgcGF0aCBmb3IgY29tcGFyaXNvbjogZm9yd2FyZCBzbGFzaGVzIGV2ZXJ5d2hlcmUsIGxvd2VyLWNhc2VkIG9uIGFcbiAqIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGZpbGVOYW1lIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW5vbmljYWwoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWxlTmFtZS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgcmV0dXJuIHN5cy51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzID8gbm9ybWFsaXplZCA6IG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkS2VlcERpYWdub3N0aWNCeUZpbGUoZGlhZ25vc3RpYzogRGlhZ25vc3RpYywgc2hvdWxkS2VlcEZpbGU6IChmaWxlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhZGlhZ25vc3RpYy5maWxlIHx8IHNob3VsZEtlZXBGaWxlKHRvQ2Fub25pY2FsKGRpYWdub3N0aWMuZmlsZS5maWxlTmFtZSkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsT0FBTyxhQUFhO0FBQ3BCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFD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
|