@mnaoumov/typescript-dev-toolkit 5.0.0 → 5.2.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/bundlers/esbuild-impl/svelte-preprocessor/package.json +6 -0
- package/dist/lib/cjs/bulk-concurrency.cjs +49 -0
- package/dist/lib/cjs/bulk-concurrency.d.cts +14 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +4 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.cjs +152 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-preprocessor.d.cts +95 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +4 -3
- package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
- package/dist/lib/cjs/docs-site/docs-links.cjs +3 -2
- package/dist/lib/cjs/docs-site/og-images.cjs +3 -2
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +2 -1
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +5 -1
- package/dist/lib/cjs/linters/eslint-rules/import-fix.cjs +116 -0
- package/dist/lib/cjs/linters/eslint-rules/import-fix.d.cts +49 -0
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +5 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +10 -1
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +3 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.cjs +189 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +57 -3
- package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.cjs +130 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-member-arrays.d.cts +6 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +8 -2
- package/dist/lib/cjs/linters/over-exposure.cjs +14 -3
- package/dist/lib/cjs/linters/over-exposure.d.cts +3 -1
- package/dist/lib/cjs/nano-staged-config.cjs +24 -3
- package/dist/lib/cjs/nano-staged-config.d.cts +4 -0
- package/dist/lib/cjs/test-runners/auto.cjs +1 -1
- package/dist/lib/cjs/test-runners/auto.d.cts +5 -0
- package/dist/lib/cjs/test-runners/forwarded-arguments.cjs +50 -0
- package/dist/lib/cjs/test-runners/forwarded-arguments.d.cts +49 -0
- package/dist/lib/cjs/test-runners/index.cjs +4 -1
- package/dist/lib/cjs/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/jest.cjs +16 -3
- package/dist/lib/cjs/test-runners/jest.d.cts +5 -0
- package/dist/lib/cjs/test-runners/vitest.cjs +111 -5
- package/dist/lib/cjs/test-runners/vitest.d.cts +5 -0
- package/dist/lib/esm/bulk-concurrency.d.mts +14 -0
- package/dist/lib/esm/bulk-concurrency.mjs +15 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +3 -1
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.d.mts +95 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-preprocessor.mjs +126 -0
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +4 -3
- package/dist/lib/esm/docs-site/docs-links.mjs +3 -2
- package/dist/lib/esm/docs-site/og-images.mjs +3 -2
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/linters/eslint-config.mjs +2 -1
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +5 -1
- package/dist/lib/esm/linters/eslint-rules/import-fix.d.mts +49 -0
- package/dist/lib/esm/linters/eslint-rules/import-fix.mjs +90 -0
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +5 -1
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +3 -0
- package/dist/lib/esm/linters/eslint-rules/index.mjs +7 -1
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.mjs +168 -0
- package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +61 -3
- package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.d.mts +6 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-member-arrays.mjs +106 -0
- package/dist/lib/esm/linters/markdownlint.mjs +8 -2
- package/dist/lib/esm/linters/over-exposure.d.mts +3 -1
- package/dist/lib/esm/linters/over-exposure.mjs +16 -3
- package/dist/lib/esm/nano-staged-config.d.mts +4 -0
- package/dist/lib/esm/nano-staged-config.mjs +24 -3
- package/dist/lib/esm/test-runners/auto.d.mts +5 -0
- package/dist/lib/esm/test-runners/auto.mjs +1 -1
- package/dist/lib/esm/test-runners/forwarded-arguments.d.mts +49 -0
- package/dist/lib/esm/test-runners/forwarded-arguments.mjs +26 -0
- package/dist/lib/esm/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/test-runners/index.mjs +3 -1
- package/dist/lib/esm/test-runners/jest.d.mts +5 -0
- package/dist/lib/esm/test-runners/jest.mjs +16 -3
- package/dist/lib/esm/test-runners/vitest.d.mts +5 -0
- package/dist/lib/esm/test-runners/vitest.mjs +105 -6
- package/linters/eslint-rules/import-fix/package.json +6 -0
- package/linters/eslint-rules/prefer-dedent/package.json +6 -0
- package/linters/eslint-rules/readonly-member-arrays/package.json +6 -0
- package/package.json +5 -2
- package/test-runners/forwarded-arguments/package.json +6 -0
|
@@ -2,6 +2,39 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return '/';
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: 'android'
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const existingProcess = globalThis.process;
|
|
17
|
+
|
|
18
|
+
if (!existingProcess) {
|
|
19
|
+
globalThis.process = browserProcess;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (existingProcess.versions?.node) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const existingProcessRecord = existingProcess;
|
|
28
|
+
|
|
29
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
30
|
+
existingProcessRecord[key] ??= value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
existingProcessRecord['browser'] = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ensureBrowserProcess();
|
|
37
|
+
})();
|
|
5
38
|
|
|
6
39
|
"use strict";
|
|
7
40
|
var __defProp = Object.defineProperty;
|
|
@@ -27,19 +60,35 @@ __export(prefer_noop_async_exports, {
|
|
|
27
60
|
preferNoopAsync: () => preferNoopAsync
|
|
28
61
|
});
|
|
29
62
|
module.exports = __toCommonJS(prefer_noop_async_exports);
|
|
63
|
+
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
64
|
+
var import_import_fix = require('./import-fix.cjs');
|
|
30
65
|
var import_ts_estree_node = require('./ts-estree-node.cjs');
|
|
66
|
+
const FUNCTION_MODULE = "@mnaoumov/typescript-lib/function";
|
|
31
67
|
const MESSAGE_ID = "preferNoopAsync";
|
|
32
68
|
const preferNoopAsync = {
|
|
33
69
|
create(context) {
|
|
34
70
|
return {
|
|
35
71
|
"CallExpression"(node) {
|
|
36
72
|
const callNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
37
|
-
if (!isPromiseResolveWithNoArguments(callNode)) {
|
|
73
|
+
if (!isPromiseResolveWithNoArguments(callNode) || isLocallyBoundPromise(context.sourceCode.getScope(node), callNode)) {
|
|
38
74
|
return;
|
|
39
75
|
}
|
|
40
76
|
context.report({
|
|
41
77
|
fix(fixer) {
|
|
42
|
-
|
|
78
|
+
const sourceCode = context.sourceCode;
|
|
79
|
+
const importedName = (0, import_import_fix.findVisibleImportName)({ importedName: "noopAsync", moduleName: FUNCTION_MODULE, node, sourceCode });
|
|
80
|
+
if (importedName !== null) {
|
|
81
|
+
return fixer.replaceText(node, `${importedName}()`);
|
|
82
|
+
}
|
|
83
|
+
if (sourceCode.ast.sourceType !== "module") {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const name = (0, import_import_fix.getUnusedName)(sourceCode, "noopAsync");
|
|
87
|
+
const binding = name === "noopAsync" ? name : `noopAsync as ${name}`;
|
|
88
|
+
return [
|
|
89
|
+
(0, import_import_fix.insertImport)(fixer, sourceCode, `import { ${binding} } from '${FUNCTION_MODULE}';`),
|
|
90
|
+
fixer.replaceText(node, `${name}()`)
|
|
91
|
+
];
|
|
43
92
|
},
|
|
44
93
|
messageId: MESSAGE_ID,
|
|
45
94
|
node
|
|
@@ -59,6 +108,11 @@ const preferNoopAsync = {
|
|
|
59
108
|
type: "suggestion"
|
|
60
109
|
}
|
|
61
110
|
};
|
|
111
|
+
function isLocallyBoundPromise(scope, node) {
|
|
112
|
+
const callee = node.callee;
|
|
113
|
+
const reference = (0, import_type_guards.ensureNonNullable)(scope.references.find((candidate) => (0, import_ts_estree_node.toTSESTreeNode)(candidate.identifier) === callee.object));
|
|
114
|
+
return (reference.resolved?.defs.length ?? 0) > 0;
|
|
115
|
+
}
|
|
62
116
|
function isPromiseResolveWithNoArguments(node) {
|
|
63
117
|
const callee = node.callee;
|
|
64
118
|
return node.arguments.length === 0 && callee.type === "MemberExpression" && callee.object.type === "Identifier" && callee.object.name === "Promise" && callee.property.type === "Identifier" && callee.property.name === "resolve";
|
|
@@ -68,4 +122,4 @@ function isPromiseResolveWithNoArguments(node) {
|
|
|
68
122
|
MESSAGE_ID,
|
|
69
123
|
preferNoopAsync
|
|
70
124
|
});
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItbm9vcC1hc3luYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHByZWZlci1ub29wLWFzeW5jXG4gKlxuICogUmVwb3J0cyBgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKClgIGFuZCBzdWdnZXN0cyByZXBsYWNpbmcgaXQgd2l0aFxuICogYGF3YWl0IG5vb3BBc3luYygpYCBmb3IgY29uc2lzdGVuY3kgYW5kIHJlYWRhYmlsaXR5LlxuICpcbiAqIFRoZSBmaXggcmV1c2VzIGEgdmlzaWJsZSB2YWx1ZSBpbXBvcnQgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uYCxcbiAqIG9yIGFkZHMgYSBjb2xsaXNpb24tZnJlZSBpbXBvcnQuIFNjcmlwdHMgd2l0aG91dCBvbmUgcmV0YWluIHRoZSBkaWFnbm9zdGljIG9ubHkuXG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUge1xuICBSdWxlLFxuICBTY29wZVxufSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB7XG4gIGZpbmRWaXNpYmxlSW1wb3J0TmFtZSxcbiAgZ2V0VW51c2VkTmFtZSxcbiAgaW5zZXJ0SW1wb3J0XG59IGZyb20gJy4vaW1wb3J0LWZpeC50cyc7XG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG5jb25zdCBGVU5DVElPTl9NT0RVTEUgPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBQcm9taXNlLnJlc29sdmUoKWAgaXMgdXNlZCBmb3IgYW4gYXN5bmMgbm8tb3AgaW5zdGVhZCBvZiBgbm9vcEFzeW5jKClgLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdwcmVmZXJOb29wQXN5bmMnO1xuXG4vKipcbiAqIEVTTGludCBydWxlIHByZWZlcnJpbmcgYG5vb3BBc3luYygpYCBvdmVyIGBQcm9taXNlLnJlc29sdmUoKWAgZm9yIGFuIGFzeW5jIG5vLW9wLlxuICovXG5leHBvcnQgY29uc3QgcHJlZmVyTm9vcEFzeW5jOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDYWxsRXhwcmVzc2lvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxOb2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG5cbiAgICAgICAgaWYgKCFpc1Byb21pc2VSZXNvbHZlV2l0aE5vQXJndW1lbnRzKGNhbGxOb2RlKSB8fCBpc0xvY2FsbHlCb3VuZFByb21pc2UoY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpLCBjYWxsTm9kZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgZml4KGZpeGVyKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5zb3VyY2VDb2RlO1xuICAgICAgICAgICAgY29uc3QgaW1wb3J0ZWROYW1lID0gZmluZFZpc2libGVJbXBvcnROYW1lKHsgaW1wb3J0ZWROYW1lOiAnbm9vcEFzeW5jJywgbW9kdWxlTmFtZTogRlVOQ1RJT05fTU9EVUxFLCBub2RlLCBzb3VyY2VDb2RlIH0pO1xuICAgICAgICAgICAgaWYgKGltcG9ydGVkTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHQobm9kZSwgYCR7aW1wb3J0ZWROYW1lfSgpYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEEgc2NyaXB0IGNhbm5vdCBhY2NlcHQgYW4gRVNNIGltcG9ydC4gTGVhdmUgaXRzIGRpYWdub3N0aWMgZm9yIGEgbWFudWFsIGVkaXQuXG4gICAgICAgICAgICBpZiAoc291cmNlQ29kZS5hc3Quc291cmNlVHlwZSAhPT0gJ21vZHVsZScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0VW51c2VkTmFtZShzb3VyY2VDb2RlLCAnbm9vcEFzeW5jJyk7XG4gICAgICAgICAgICBjb25zdCBiaW5kaW5nID0gbmFtZSA9PT0gJ25vb3BBc3luYycgPyBuYW1lIDogYG5vb3BBc3luYyBhcyAke25hbWV9YDtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIGluc2VydEltcG9ydChmaXhlciwgc291cmNlQ29kZSwgYGltcG9ydCB7ICR7YmluZGluZ30gfSBmcm9tICcke0ZVTkNUSU9OX01PRFVMRX0nO2ApLFxuICAgICAgICAgICAgICBmaXhlci5yZXBsYWNlVGV4dChub2RlLCBgJHtuYW1lfSgpYClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSUQsXG4gICAgICAgICAgbm9kZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVmZXIgYG5vb3BBc3luYygpYCBvdmVyIGBQcm9taXNlLnJlc29sdmUoKWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1VzZSBgbm9vcEFzeW5jKClgIGluc3RlYWQgb2YgYFByb21pc2UucmVzb2x2ZSgpYCBmb3IgYXN5bmMgbm8tb3BzLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGBQcm9taXNlYCBvZiBhIGBQcm9taXNlLnJlc29sdmUoKWAgY2FsbCByZXNvbHZlcyB0byBhIGJpbmRpbmcgdGhlIGNvZGUgZGVjbGFyZXMgaXRzZWxmLFxuICogc3VjaCBhcyBhIGxvY2FsIHZhcmlhYmxlLCBhIHBhcmFtZXRlciBvciBhbiBpbXBvcnQsIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGVuY2xvc2luZyB0aGUgY2FsbC5cbiAqIEBwYXJhbSBub2RlIC0gVGhlIGBQcm9taXNlLnJlc29sdmUoKWAgY2FsbCBleHByZXNzaW9uLlxuICogQHJldHVybnMgYHRydWVgIGlmIGBQcm9taXNlYCBpcyBib3VuZCBieSBhIGRlY2xhcmF0aW9uIGluIHRoZSBjb2RlLlxuICovXG5mdW5jdGlvbiBpc0xvY2FsbHlCb3VuZFByb21pc2Uoc2NvcGU6IFNjb3BlLlNjb3BlLCBub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZSBhcyBUU0VTVHJlZS5NZW1iZXJFeHByZXNzaW9uO1xuICBjb25zdCByZWZlcmVuY2UgPSBlbnN1cmVOb25OdWxsYWJsZShzY29wZS5yZWZlcmVuY2VzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gdG9UU0VTVHJlZU5vZGUoY2FuZGlkYXRlLmlkZW50aWZpZXIpID09PSBjYWxsZWUub2JqZWN0KSk7XG4gIC8vIEEgZ2xvYmFsIGBQcm9taXNlYCByZXNvbHZlcyB0byBhIHZhcmlhYmxlIHdpdGhvdXQgZGVmaW5pdGlvbnMsIG9yIHRvIG5vdGhpbmcgd2hlbiBubyBnbG9iYWxzIGFyZSBjb25maWd1cmVkLlxuICByZXR1cm4gKHJlZmVyZW5jZS5yZXNvbHZlZD8uZGVmcy5sZW5ndGggPz8gMCkgPiAwO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCBleHByZXNzaW9uIGlzIGBQcm9taXNlLnJlc29sdmUoKWAgd2l0aCBubyBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgY2FsbCBleHByZXNzaW9uIG5vZGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYFByb21pc2UucmVzb2x2ZSgpYCB3aXRoIG5vIGFyZ3VtZW50cy5cbiAqL1xuZnVuY3Rpb24gaXNQcm9taXNlUmVzb2x2ZVdpdGhOb0FyZ3VtZW50cyhub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuICovXG4gIHJldHVybiBub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDBcbiAgICAmJiBjYWxsZWUudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nXG4gICAgJiYgY2FsbGVlLm9iamVjdC50eXBlID09PSAnSWRlbnRpZmllcicgJiYgY2FsbGVlLm9iamVjdC5uYW1lID09PSAnUHJvbWlzZSdcbiAgICAmJiBjYWxsZWUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmIGNhbGxlZS5wcm9wZXJ0eS5uYW1lID09PSAncmVzb2x2ZSc7XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSx5QkFBa0M7QUFFbEMsd0JBSU87QUFDUCw0QkFBK0I7QUFFL0IsTUFBTSxrQkFBa0I7QUFJakIsTUFBTSxhQUFhO0FBS25CLE1BQU0sa0JBQW1DO0FBQUEsRUFDOUMsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsaUJBQWlCLE1BQXVCO0FBQ3RDLGNBQU0sZUFBVyxzQ0FBZSxJQUFJO0FBRXBDLFlBQUksQ0FBQyxnQ0FBZ0MsUUFBUSxLQUFLLHNCQUFzQixRQUFRLFdBQVcsU0FBUyxJQUFJLEdBQUcsUUFBUSxHQUFHO0FBQ3BIO0FBQUEsUUFDRjtBQUVBLGdCQUFRLE9BQU87QUFBQSxVQUNiLElBQUksT0FBTztBQUNULGtCQUFNLGFBQWEsUUFBUTtBQUMzQixrQkFBTSxtQkFBZSx5Q0FBc0IsRUFBRSxjQUFjLGFBQWEsWUFBWSxpQkFBaUIsTUFBTSxXQUFXLENBQUM7QUFDdkgsZ0JBQUksaUJBQWlCLE1BQU07QUFDekIscUJBQU8sTUFBTSxZQUFZLE1BQU0sR0FBRyxZQUFZLElBQUk7QUFBQSxZQUNwRDtBQUdBLGdCQUFJLFdBQVcsSUFBSSxlQUFlLFVBQVU7QUFDMUMscUJBQU87QUFBQSxZQUNUO0FBQ0Esa0JBQU0sV0FBTyxpQ0FBYyxZQUFZLFdBQVc7QUFDbEQsa0JBQU0sVUFBVSxTQUFTLGNBQWMsT0FBTyxnQkFBZ0IsSUFBSTtBQUNsRSxtQkFBTztBQUFBLGtCQUNMLGdDQUFhLE9BQU8sWUFBWSxZQUFZLE9BQU8sWUFBWSxlQUFlLElBQUk7QUFBQSxjQUNsRixNQUFNLFlBQVksTUFBTSxHQUFHLElBQUksSUFBSTtBQUFBLFlBQ3JDO0FBQUEsVUFDRjtBQUFBLFVBQ0EsV0FBVztBQUFBLFVBQ1g7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFVQSxTQUFTLHNCQUFzQixPQUFvQixNQUF3QztBQUN6RixRQUFNLFNBQVMsS0FBSztBQUNwQixRQUFNLGdCQUFZLHNDQUFrQixNQUFNLFdBQVcsS0FBSyxDQUFDLGtCQUFjLHNDQUFlLFVBQVUsVUFBVSxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBRWhJLFVBQVEsVUFBVSxVQUFVLEtBQUssVUFBVSxLQUFLO0FBQ2xEO0FBUUEsU0FBUyxnQ0FBZ0MsTUFBd0M7QUFDL0UsUUFBTSxTQUFTLEtBQUs7QUFHcEIsU0FBTyxLQUFLLFVBQVUsV0FBVyxLQUM1QixPQUFPLFNBQVMsc0JBQ2hCLE9BQU8sT0FBTyxTQUFTLGdCQUFnQixPQUFPLE9BQU8sU0FBUyxhQUM5RCxPQUFPLFNBQVMsU0FBUyxnQkFBZ0IsT0FBTyxTQUFTLFNBQVM7QUFFekU7IiwibmFtZXMiOltdfQ==
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return '/';
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: 'android'
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const existingProcess = globalThis.process;
|
|
17
|
+
|
|
18
|
+
if (!existingProcess) {
|
|
19
|
+
globalThis.process = browserProcess;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (existingProcess.versions?.node) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const existingProcessRecord = existingProcess;
|
|
28
|
+
|
|
29
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
30
|
+
existingProcessRecord[key] ??= value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
existingProcessRecord['browser'] = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ensureBrowserProcess();
|
|
37
|
+
})();
|
|
38
|
+
|
|
39
|
+
"use strict";
|
|
40
|
+
var __defProp = Object.defineProperty;
|
|
41
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
42
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
43
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
44
|
+
var __export = (target, all) => {
|
|
45
|
+
for (var name in all)
|
|
46
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
47
|
+
};
|
|
48
|
+
var __copyProps = (to, from, except, desc) => {
|
|
49
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
50
|
+
for (let key of __getOwnPropNames(from))
|
|
51
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
52
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
53
|
+
}
|
|
54
|
+
return to;
|
|
55
|
+
};
|
|
56
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
57
|
+
var readonly_member_arrays_exports = {};
|
|
58
|
+
__export(readonly_member_arrays_exports, {
|
|
59
|
+
readonlyMemberArrays: () => readonlyMemberArrays
|
|
60
|
+
});
|
|
61
|
+
module.exports = __toCommonJS(readonly_member_arrays_exports);
|
|
62
|
+
var import_utils = require('@typescript-eslint/utils');
|
|
63
|
+
var import_ts_estree_node = require('./ts-estree-node.cjs');
|
|
64
|
+
const readonlyMemberArrays = {
|
|
65
|
+
create(context) {
|
|
66
|
+
function check(node, property) {
|
|
67
|
+
if (node.type === import_utils.AST_NODE_TYPES.TSUnionType || node.type === import_utils.AST_NODE_TYPES.TSIntersectionType) {
|
|
68
|
+
for (const member of node.types) {
|
|
69
|
+
check(member, property);
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (node.type === import_utils.AST_NODE_TYPES.TSArrayType) {
|
|
74
|
+
context.report({
|
|
75
|
+
messageId: "readonly",
|
|
76
|
+
node,
|
|
77
|
+
suggest: [{ fix: (fixer) => fixer.insertTextBefore(node, "readonly "), messageId: "review" }]
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (node.type !== import_utils.AST_NODE_TYPES.TSTypeReference || node.typeName.type !== import_utils.AST_NODE_TYPES.Identifier || node.typeName.name !== "Array" || node.typeArguments?.params.length !== 1) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
let scope = context.sourceCode.getScope(property);
|
|
85
|
+
let canSuggest = true;
|
|
86
|
+
while (scope) {
|
|
87
|
+
if (scope.set.get("Array")?.defs.length) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (scope.set.get("ReadonlyArray")?.defs.length) {
|
|
91
|
+
canSuggest = false;
|
|
92
|
+
}
|
|
93
|
+
scope = scope.upper;
|
|
94
|
+
}
|
|
95
|
+
context.report({
|
|
96
|
+
messageId: "readonly",
|
|
97
|
+
node,
|
|
98
|
+
suggest: canSuggest ? [{
|
|
99
|
+
fix: (fixer) => fixer.replaceTextRange(node.typeName.range, "ReadonlyArray"),
|
|
100
|
+
messageId: "review"
|
|
101
|
+
}] : []
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function visitProperty(node) {
|
|
105
|
+
const property = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
106
|
+
if (property.typeAnnotation) {
|
|
107
|
+
check(property.typeAnnotation.typeAnnotation, node);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
"TSInterfaceDeclaration TSPropertySignature": visitProperty,
|
|
112
|
+
"TSTypeAliasDeclaration TSPropertySignature": visitProperty
|
|
113
|
+
};
|
|
114
|
+
},
|
|
115
|
+
meta: {
|
|
116
|
+
docs: { description: "Require readonly member arrays as an explicit collection immutability policy" },
|
|
117
|
+
hasSuggestions: true,
|
|
118
|
+
messages: {
|
|
119
|
+
readonly: "Use a readonly member array, or disable this rule with a reason for mutation.",
|
|
120
|
+
review: "Make this array readonly after reviewing mutations and assignability."
|
|
121
|
+
},
|
|
122
|
+
schema: [],
|
|
123
|
+
type: "suggestion"
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
127
|
+
0 && (module.exports = {
|
|
128
|
+
readonlyMemberArrays
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9yZWFkb25seS1tZW1iZXItYXJyYXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXF1aXJlcyByZWFkb25seSBhcnJheSB0eXBlcyBvbiBpbnRlcmZhY2UgYW5kIG9iamVjdCB0eXBlIGFsaWFzIHByb3BlcnRpZXMuXG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgQVNUX05PREVfVFlQRVMgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG4vKipcbiAqIE9wdC1pbiBhcnJheSBpbW11dGFiaWxpdHkgcG9saWN5LCBpbmRlcGVuZGVudCBvZiByZWFkb25seSBwcm9wZXJ0eSByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgY29uc3QgcmVhZG9ubHlNZW1iZXJBcnJheXM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBmdW5jdGlvbiBjaGVjayhub2RlOiBUU0VTVHJlZS5UeXBlTm9kZSwgcHJvcGVydHk6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNVbmlvblR5cGUgfHwgbm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU0ludGVyc2VjdGlvblR5cGUpIHtcbiAgICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2Ygbm9kZS50eXBlcykge1xuICAgICAgICAgIGNoZWNrKG1lbWJlciwgcHJvcGVydHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlRTQXJyYXlUeXBlKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBtZXNzYWdlSWQ6ICdyZWFkb25seScsXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBzdWdnZXN0OiBbeyBmaXg6IChmaXhlcik6IFJ1bGUuRml4ID0+IGZpeGVyLmluc2VydFRleHRCZWZvcmUobm9kZSwgJ3JlYWRvbmx5ICcpLCBtZXNzYWdlSWQ6ICdyZXZpZXcnIH1dXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuVFNUeXBlUmVmZXJlbmNlXG4gICAgICAgIHx8IG5vZGUudHlwZU5hbWUudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllclxuICAgICAgICB8fCBub2RlLnR5cGVOYW1lLm5hbWUgIT09ICdBcnJheSdcbiAgICAgICAgfHwgbm9kZS50eXBlQXJndW1lbnRzPy5wYXJhbXMubGVuZ3RoICE9PSAxXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHNjb3BlOiBudWxsIHwgUmV0dXJuVHlwZTx0eXBlb2YgY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlPiA9IGNvbnRleHQuc291cmNlQ29kZS5nZXRTY29wZShwcm9wZXJ0eSk7XG4gICAgICBsZXQgY2FuU3VnZ2VzdCA9IHRydWU7XG4gICAgICB3aGlsZSAoc2NvcGUpIHtcbiAgICAgICAgaWYgKHNjb3BlLnNldC5nZXQoJ0FycmF5Jyk/LmRlZnMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY29wZS5zZXQuZ2V0KCdSZWFkb25seUFycmF5Jyk/LmRlZnMubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuU3VnZ2VzdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNjb3BlID0gc2NvcGUudXBwZXI7XG4gICAgICB9XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG1lc3NhZ2VJZDogJ3JlYWRvbmx5JyxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgc3VnZ2VzdDogY2FuU3VnZ2VzdFxuICAgICAgICAgID8gW3tcbiAgICAgICAgICAgIGZpeDogKGZpeGVyKTogUnVsZS5GaXggPT4gZml4ZXIucmVwbGFjZVRleHRSYW5nZShub2RlLnR5cGVOYW1lLnJhbmdlLCAnUmVhZG9ubHlBcnJheScpLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAncmV2aWV3J1xuICAgICAgICAgIH1dXG4gICAgICAgICAgOiBbXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmlzaXRQcm9wZXJ0eShub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuVFNQcm9wZXJ0eVNpZ25hdHVyZTtcbiAgICAgIGlmIChwcm9wZXJ0eS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICBjaGVjayhwcm9wZXJ0eS50eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbiwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdUU0ludGVyZmFjZURlY2xhcmF0aW9uIFRTUHJvcGVydHlTaWduYXR1cmUnOiB2aXNpdFByb3BlcnR5LFxuICAgICAgJ1RTVHlwZUFsaWFzRGVjbGFyYXRpb24gVFNQcm9wZXJ0eVNpZ25hdHVyZSc6IHZpc2l0UHJvcGVydHlcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczogeyBkZXNjcmlwdGlvbjogJ1JlcXVpcmUgcmVhZG9ubHkgbWVtYmVyIGFycmF5cyBhcyBhbiBleHBsaWNpdCBjb2xsZWN0aW9uIGltbXV0YWJpbGl0eSBwb2xpY3knIH0sXG4gICAgaGFzU3VnZ2VzdGlvbnM6IHRydWUsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlYWRvbmx5OiAnVXNlIGEgcmVhZG9ubHkgbWVtYmVyIGFycmF5LCBvciBkaXNhYmxlIHRoaXMgcnVsZSB3aXRoIGEgcmVhc29uIGZvciBtdXRhdGlvbi4nLFxuICAgICAgcmV2aWV3OiAnTWFrZSB0aGlzIGFycmF5IHJlYWRvbmx5IGFmdGVyIHJldmlld2luZyBtdXRhdGlvbnMgYW5kIGFzc2lnbmFiaWxpdHkuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsbUJBQStCO0FBRS9CLDRCQUErQjtBQUt4QixNQUFNLHVCQUF3QztBQUFBLEVBQ25ELE9BQU8sU0FBUztBQUNkLGFBQVMsTUFBTSxNQUF5QixVQUEyQjtBQUNqRSxVQUFJLEtBQUssU0FBUyw0QkFBZSxlQUFlLEtBQUssU0FBUyw0QkFBZSxvQkFBb0I7QUFDL0YsbUJBQVcsVUFBVSxLQUFLLE9BQU87QUFDL0IsZ0JBQU0sUUFBUSxRQUFRO0FBQUEsUUFDeEI7QUFDQTtBQUFBLE1BQ0Y7QUFDQSxVQUFJLEtBQUssU0FBUyw0QkFBZSxhQUFhO0FBQzVDLGdCQUFRLE9BQU87QUFBQSxVQUNiLFdBQVc7QUFBQSxVQUNYO0FBQUEsVUFDQSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsVUFBb0IsTUFBTSxpQkFBaUIsTUFBTSxXQUFXLEdBQUcsV0FBVyxTQUFTLENBQUM7QUFBQSxRQUN4RyxDQUFDO0FBQ0Q7QUFBQSxNQUNGO0FBQ0EsVUFDRSxLQUFLLFNBQVMsNEJBQWUsbUJBQzFCLEtBQUssU0FBUyxTQUFTLDRCQUFlLGNBQ3RDLEtBQUssU0FBUyxTQUFTLFdBQ3ZCLEtBQUssZUFBZSxPQUFPLFdBQVcsR0FDekM7QUFDQTtBQUFBLE1BQ0Y7QUFDQSxVQUFJLFFBQStELFFBQVEsV0FBVyxTQUFTLFFBQVE7QUFDdkcsVUFBSSxhQUFhO0FBQ2pCLGFBQU8sT0FBTztBQUNaLFlBQUksTUFBTSxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtBQUN2QztBQUFBLFFBQ0Y7QUFDQSxZQUFJLE1BQU0sSUFBSSxJQUFJLGVBQWUsR0FBRyxLQUFLLFFBQVE7QUFDL0MsdUJBQWE7QUFBQSxRQUNmO0FBQ0EsZ0JBQVEsTUFBTTtBQUFBLE1BQ2hCO0FBQ0EsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWDtBQUFBLFFBQ0EsU0FBUyxhQUNMLENBQUM7QUFBQSxVQUNELEtBQUssQ0FBQyxVQUFvQixNQUFNLGlCQUFpQixLQUFLLFNBQVMsT0FBTyxlQUFlO0FBQUEsVUFDckYsV0FBVztBQUFBLFFBQ2IsQ0FBQyxJQUNDLENBQUM7QUFBQSxNQUNQLENBQUM7QUFBQSxJQUNIO0FBRUEsYUFBUyxjQUFjLE1BQXVCO0FBQzVDLFlBQU0sZUFBVyxzQ0FBZSxJQUFJO0FBQ3BDLFVBQUksU0FBUyxnQkFBZ0I7QUFDM0IsY0FBTSxTQUFTLGVBQWUsZ0JBQWdCLElBQUk7QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFFQSxXQUFPO0FBQUEsTUFDTCw4Q0FBOEM7QUFBQSxNQUM5Qyw4Q0FBOEM7QUFBQSxJQUNoRDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU0sRUFBRSxhQUFhLCtFQUErRTtBQUFBLElBQ3BHLGdCQUFnQjtBQUFBLElBQ2hCLFVBQVU7QUFBQSxNQUNSLFVBQVU7QUFBQSxNQUNWLFFBQVE7QUFBQSxJQUNWO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwibmFtZXMiOltdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
3
|
+
/**
|
|
4
|
+
* Opt-in array immutability policy, independent of readonly property references.
|
|
5
|
+
*/
|
|
6
|
+
export declare const readonlyMemberArrays: Rule.RuleModule;
|
|
@@ -65,6 +65,7 @@ var import_path = require('@mnaoumov/typescript-lib/path');
|
|
|
65
65
|
var import_node_fs = require('node:fs');
|
|
66
66
|
var import_promises = require('node:fs/promises');
|
|
67
67
|
var import_node_path = require('node:path');
|
|
68
|
+
var import_bulk_concurrency = require('../bulk-concurrency.cjs');
|
|
68
69
|
var import_git = require('../git.cjs');
|
|
69
70
|
var import_package_manager = require('../package-manager.cjs');
|
|
70
71
|
var import_repo_paths = require('../repo-paths.cjs');
|
|
@@ -102,7 +103,10 @@ async function lint(options) {
|
|
|
102
103
|
}
|
|
103
104
|
await (0, import_root.execFromRoot)([
|
|
104
105
|
...(0, import_package_manager.resolveToolCommand)({ tool: "linkinator" }),
|
|
105
|
-
"--
|
|
106
|
+
"--concurrency",
|
|
107
|
+
String((0, import_bulk_concurrency.getBulkConcurrency)(LINK_CHECK_CONCURRENCY)),
|
|
108
|
+
"--timeout",
|
|
109
|
+
String(LINK_CHECK_TIMEOUT_IN_MILLISECONDS),
|
|
106
110
|
"--retry-errors",
|
|
107
111
|
"--retry-errors-count",
|
|
108
112
|
"3",
|
|
@@ -118,6 +122,8 @@ async function lint(options) {
|
|
|
118
122
|
]);
|
|
119
123
|
}
|
|
120
124
|
const MARKDOWN_PATHSPEC = "*.md";
|
|
125
|
+
const LINK_CHECK_CONCURRENCY = 100;
|
|
126
|
+
const LINK_CHECK_TIMEOUT_IN_MILLISECONDS = 3e4;
|
|
121
127
|
async function getMarkdownFiles() {
|
|
122
128
|
const nonIgnoredFiles = await (0, import_git.getNonIgnoredFiles)({ patterns: [MARKDOWN_PATHSPEC] });
|
|
123
129
|
return nonIgnoredFiles ? nonIgnoredFiles.filter((path) => !(0, import_markdownlint_ignores.checkIsInNodeModules)(path)) : await (0, import_async.toArray)((0, import_promises.glob)(["**/*.md"], {
|
|
@@ -132,4 +138,4 @@ async function getMarkdownFiles() {
|
|
|
132
138
|
0 && (module.exports = {
|
|
133
139
|
lint
|
|
134
140
|
});
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0Tm9uSWdub3JlZEZpbGVzIH0gZnJvbSAnLi4vZ2l0LnRzJztcbmltcG9ydCB7IHJlc29sdmVUb29sQ29tbWFuZCB9IGZyb20gJy4uL3BhY2thZ2UtbWFuYWdlci50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuLi9yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGV4ZWNGcm9tUm9vdCxcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQge1xuICBjaGVja0lzSW5Ob2RlTW9kdWxlcyxcbiAgTk9ERV9NT0RVTEVTX0lHTk9SRV9HTE9CXG59IGZyb20gJy4vbWFya2Rvd25saW50LWlnbm9yZXMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3BpZWQgdG8gdGhlIHByb2plY3Qgcm9vdCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLiBXaXRob3V0IGl0LFxuICAgKiBgbWFya2Rvd25saW50LWNsaTJgIHJ1bnMgd2l0aCBpdHMgb3duIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHbG9icywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLCBvZiBtYXJrZG93biBmaWxlcyB0byBsZWF2ZSBvdXQgb2YgdGhlIGBsaW5raW5hdG9yYCBwYXNzIG9ubHk7XG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgc3RpbGwgbGludHMgdGhlbS5cbiAgICpcbiAgICogRm9yIGEgZG9jdW1lbnRhdGlvbiBzaXRlIHdob3NlIHBhZ2VzIGxpbmsgdG8gZWFjaCBvdGhlciBiYXNlLWFic29sdXRlbHkgKGAvPHNpdGUtYmFzZT4vZ3VpZGVzLy4uLmApOiB0aG9zZVxuICAgKiBsaW5rcyByZXNvbHZlIG9ubHkgYWdhaW5zdCB0aGUgQlVJTFQgc2l0ZSwgc28gYGxpbmtpbmF0b3JgIHJlcG9ydHMgZWFjaCBvbmUgYXMgYSA0MDQsIGFuZCB0aGUgc2l0ZSdzIG93blxuICAgKiBidWlsZCBpcyB3aGF0IGNoZWNrcyB0aGVtLlxuICAgKlxuICAgKiBAZXhhbXBsZSBgWydkb2NzLyoqJ11gXG4gICAqL1xuICByZWFkb25seSBsaW5rQ2hlY2tFeGNsdWRlR2xvYnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZmlsZSBwYXRocyB0byBsaW50LiBJZiBvbWl0dGVkLCBsaW50cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpeCBsaW50aW5nIGlzc3VlcyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGaXg/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIExpbnQgbWFya2Rvd24gZG9jdW1lbnRhdGlvbiB1c2luZyBgbWFya2Rvd25saW50LWNsaTJgIGFuZCBgbGlua2luYXRvcmAuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIExpbnRPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpbnQob3B0aW9ucz86IExpbnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMgPSBbXSwgcGF0aHMsIHNob3VsZEZpeCA9IGZhbHNlIH0gPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCBjb25maWdGaWxlcyA9IFtcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ0NqcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ0pzb24sXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1lhbWwsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ1ltbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdNanNcbiAgXTtcblxuICBjb25zdCBkb2VzQ29uZmlnRmlsZUV4aXN0ID0gY29uZmlnRmlsZXMuc29tZSgoY29uZmlnRmlsZSkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBjb25maWdGaWxlIH0pO1xuICAgIHJldHVybiBleGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKTtcbiAgfSk7XG5cbiAgaWYgKCFkb2VzQ29uZmlnRmlsZUV4aXN0ICYmIGRlZmF1bHRDb25maWdGaWxlUGF0aCkge1xuICAgIGdldExpYkRlYnVnZ2VyKCdtYXJrZG93bmxpbnQ6bGludCcpKCdtYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZC4gQ3JlYXRpbmcgZGVmYXVsdCBjb25maWcuLi4nKTtcbiAgICBhd2FpdCBjcChkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogYmFzZW5hbWUoZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB9KSk7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaGVzIGFyZSBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHRhcmdldHMgPSBwYXRocz8ubGVuZ3RoID8gcGF0aHMgOiBbUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXJdO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWy4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdtYXJrZG93bmxpbnQtY2xpMicgfSksIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XSk7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2ggaXMgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCByb290Rm9sZGVyID0gZ2V0Um9vdEZvbGRlcigpID8/IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IG1kRmlsZXMgPSBwYXRocz8ubGVuZ3RoXG4gICAgPyBwYXRocy5tYXAoKHApID0+IHJlbGF0aXZlKHJvb3RGb2xkZXIsIHApLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpIHx8IHApXG4gICAgOiBhd2FpdCBnZXRNYXJrZG93bkZpbGVzKCk7XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGNvbnN0IGxpbmtDaGVja0ZpbGVzID0gbWRGaWxlcy5maWx0ZXIoKG1kRmlsZSkgPT4gbGlua0NoZWNrRXhjbHVkZUdsb2JzLmV2ZXJ5KChleGNsdWRlR2xvYikgPT4gIW1hdGNoZXNHbG9iKG1kRmlsZSwgZXhjbHVkZUdsb2IpKSk7XG4gIC8vIGBsaW5raW5hdG9yYCB3aXRoIG5vIExPQ0FUSU9OIHByaW50cyBpdHMgdXNhZ2UgYW5kIGV4aXRzIG5vbi16ZXJvLCBzbyBhIGxpc3QgZW1wdGllZCBieSB0aGUgZXhjbHVzaW9ucyBoYXMgbm90aGluZyB0byBjaGVjay5cbiAgaWYgKGxpbmtDaGVja0ZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBBIGhvc3QgdGhhdCByYXRlLWxpbWl0cyB0aGUgcnVubmVyIChmb3J1bS5vYnNpZGlhbi5tZCBhbnN3ZXJzIGEgQ0kgYnVyc3Qgd2l0aCA0MjkpIGlzIHJldHJpZWQgd2l0aCBhIGppdHRlciBvZiB1cCB0b1xuICAvLyA1IHMsIHdoaWNoIGBsaW5raW5hdG9yYCByZWFkcyBhcyBNSUxMSVNFQ09ORFMsIHNvIHRoZSByZXRyaWVzIGRvIG5vdCBhbGwgbGFuZCBpbiB0aGUgc2FtZSBpbnN0YW50LiBBIGxpbmsgc3RpbGxcbiAgLy8gYW5zd2VyaW5nIDQyOSBvbmNlIHRoZXkgYXJlIHNwZW50IGlzIGEgd2FybmluZywgbm90IGEgZmFpbHVyZTogYSByYXRlIGxpbWl0IHNheXMgbm90aGluZyBhYm91dCB3aGV0aGVyIHRoZSBsaW5rIGV4aXN0cy5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnbGlua2luYXRvcicgfSksXG4gICAgJy0tcmV0cnknLFxuICAgICctLXJldHJ5LWVycm9ycycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWNvdW50JyxcbiAgICAnMycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWppdHRlcicsXG4gICAgJzUwMDAnLFxuICAgICctLXN0YXR1cy1jb2RlJyxcbiAgICAnNDI5Ondhcm4nLFxuICAgICctLXVybC1yZXdyaXRlLXNlYXJjaCcsXG4gICAgU3RyaW5nLnJhd2BodHRwczovL3d3d1xcLm5wbWpzXFwuY29tL3BhY2thZ2UvYCxcbiAgICAnLS11cmwtcmV3cml0ZS1yZXBsYWNlJyxcbiAgICAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICB7IGJhdGNoZWRBcmd1bWVudHM6IGxpbmtDaGVja0ZpbGVzIH1cbiAgXSk7XG59XG5cbi8qKlxuICogVGhlIGdpdCBwYXRoc3BlYyBtYXRjaGluZyBldmVyeSBtYXJrZG93biBmaWxlIGluIHRoZSByZXBvc2l0b3J5LCBhdCBhbnkgZGVwdGguXG4gKi9cbmNvbnN0IE1BUktET1dOX1BBVEhTUEVDID0gJyoubWQnO1xuXG4vKipcbiAqIExpc3RzIHRoZSBtYXJrZG93biBmaWxlcyB0byBoYW5kIHRvIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBgbGlua2luYXRvcmAgdGFrZXMgYSBmaWxlIGxpc3QgcmF0aGVyIHRoYW4gYW4gaWdub3JlIGNvbmZpZ3VyYXRpb24sIHNvIHRoZSBnaXRpZ25vcmVkIGZpbGVzIGhhdmUgdG8gYmVcbiAqIGRyb3BwZWQgYmVmb3JlIGl0IGlzIGludm9rZWQuIEdpdCBpdHNlbGYgYW5zd2VycyB0aGF0IChuZXN0ZWQgaWdub3JlIGZpbGVzLCBgIWAgbmVnYXRpb25zIGFuZCBhbGwpOyB0aGVcbiAqIGhhbmQtbWFpbnRhaW5lZCBnbG9iIGV4Y2x1c2lvbnMgYmVsb3cgYXJlIG9ubHkgdGhlIGZhbGxiYWNrIGZvciBhIGNoZWNrb3V0IHdpdGhvdXQgZ2l0LCBhbmQgdGhleSBhcmUgdGhlXG4gKiB2ZXJ5IGxpc3RzIHRoaXMgaW5kaXJlY3Rpb24gZXhpc3RzIHRvIHN0b3AgZnJvbSBkcmlmdGluZy5cbiAqXG4gKiBUaGUgYG5vZGVfbW9kdWxlc2AgZmlsdGVyIGlzIGFwcGxpZWQgdG8gdGhlIGdpdC1kZXJpdmVkIGxpc3QgdG9vLCBhbmQgZGVsaWJlcmF0ZWx5IHNvOiBnaXQgb25seSBza2lwc1xuICogd2hhdCB0aGUgcmVwb3NpdG9yeSBhc2tlZCBpdCB0byBza2lwLCBhbmQgYSByZXBvc2l0b3J5IGNhbiBkZWxpYmVyYXRlbHkgVFJBQ0sgYSB2ZW5kb3JlZCBgbm9kZV9tb2R1bGVzYFxuICogdHJlZS4gVGhhdCBpcyB0aGUgb25lIGV4Y2x1c2lvbiBgLmdpdGlnbm9yZWAgY2Fubm90IGFuc3dlciDigJQgc2VlIGBtYXJrZG93bmxpbnQtaWdub3Jlcy50c2AuIEFwcGx5aW5nIGl0XG4gKiBoZXJlIGtlZXBzIGBsaW5raW5hdG9yYCBpbiBzdGVwIHdpdGggdGhlIG1hcmtkb3dubGludCBoYWxmLCB3aGljaCBpZ25vcmVzIHRoZSBzYW1lIHBhdGhzIGJ5IGdsb2IuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBtYXJrZG93biBmaWxlIHBhdGhzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBub25JZ25vcmVkRmlsZXMgPSBhd2FpdCBnZXROb25JZ25vcmVkRmlsZXMoeyBwYXR0ZXJuczogW01BUktET1dOX1BBVEhTUEVDXSB9KTtcbiAgcmV0dXJuIG5vbklnbm9yZWRGaWxlc1xuICAgID8gbm9uSWdub3JlZEZpbGVzLmZpbHRlcigocGF0aCkgPT4gIWNoZWNrSXNJbk5vZGVNb2R1bGVzKHBhdGgpKVxuICAgIDogKGF3YWl0IHRvQXJyYXkoZ2xvYihbJyoqLyoubWQnXSwge1xuICAgICAgZXhjbHVkZTogW1xuICAgICAgICAnLmdpdC8qKicsXG4gICAgICAgICdkaXN0LyoqJyxcbiAgICAgICAgTk9ERV9NT0RVTEVTX0lHTk9SRV9HTE9CXG4gICAgICBdXG4gICAgfSkpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsbUJBQXdCO0FBQ3hCLG1CQUErQjtBQUMvQixrQkFBeUI7QUFDekIscUJBQTJCO0FBQzNCLHNCQUdPO0FBQ1AsdUJBR087QUFFUCxpQkFBbUM7QUFDbkMsNkJBQW1DO0FBQ25DLHdCQUEwQjtBQUMxQixrQkFJTztBQUNQLGtDQUdPO0FBMENQLGVBQXNCLEtBQUssU0FBc0M7QUFDL0QsUUFBTSxFQUFFLHVCQUF1Qix3QkFBd0IsQ0FBQyxHQUFHLE9BQU8sWUFBWSxNQUFNLElBQUksV0FBVyxDQUFDO0FBQ3BHLFFBQU0sY0FBYztBQUFBLElBQ2xCLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsRUFDWjtBQUVBLFFBQU0sc0JBQXNCLFlBQVksS0FBSyxDQUFDLGVBQWU7QUFDM0QsVUFBTSxxQkFBaUIscUNBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsZUFBTywyQkFBVyxjQUFjO0FBQUEsRUFDbEMsQ0FBQztBQUVELE1BQUksQ0FBQyx1QkFBdUIsdUJBQXVCO0FBQ2pELHFDQUFlLG1CQUFtQixFQUFFLHVFQUF1RTtBQUMzRyxjQUFNLG9CQUFHLDJCQUF1QixxQ0FBd0IsRUFBRSxVQUFNLHNCQUFTLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUFBLEVBQ3BHO0FBR0EsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsNEJBQVUsYUFBYTtBQUVoRSxZQUFNLDBCQUFhLENBQUMsT0FBRywyQ0FBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDLEdBQUcsR0FBSSxZQUFZLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBSSxFQUFFLGtCQUFrQixRQUFRLENBQUMsQ0FBQztBQUd6SSxRQUFNLGlCQUFhLDJCQUFjLEtBQUssUUFBUSxJQUFJO0FBQ2xELFFBQU0sVUFBVSxPQUFPLFNBQ25CLE1BQU0sSUFBSSxDQUFDLFVBQU0sMkJBQVMsWUFBWSxDQUFDLEVBQUUsV0FBVyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQ25FLE1BQU0saUJBQWlCO0FBRTNCLFFBQU0saUJBQWlCLFFBQVEsT0FBTyxDQUFDLFdBQVcsc0JBQXNCLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBQyw4QkFBWSxRQUFRLFdBQVcsQ0FBQyxDQUFDO0FBRWpJLE1BQUksZUFBZSxXQUFXLEdBQUc7QUFDL0I7QUFBQSxFQUNGO0FBSUEsWUFBTSwwQkFBYTtBQUFBLElBQ2pCLE9BQUcsMkNBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUM1QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxPQUFPO0FBQUEsSUFDUDtBQUFBLElBQ0E7QUFBQSxJQUNBLEVBQUUsa0JBQWtCLGVBQWU7QUFBQSxFQUNyQyxDQUFDO0FBQ0g7QUFLQSxNQUFNLG9CQUFvQjtBQWlCMUIsZUFBZSxtQkFBc0M7QUFDbkQsUUFBTSxrQkFBa0IsVUFBTSwrQkFBbUIsRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUNsRixTQUFPLGtCQUNILGdCQUFnQixPQUFPLENBQUMsU0FBUyxLQUFDLGtEQUFxQixJQUFJLENBQUMsSUFDM0QsVUFBTSwwQkFBUSxzQkFBSyxDQUFDLFNBQVMsR0FBRztBQUFBLElBQ2pDLFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDLENBQUM7QUFDTjsiLCJuYW1lcyI6W119
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0QnVsa0NvbmN1cnJlbmN5IH0gZnJvbSAnLi4vYnVsay1jb25jdXJyZW5jeS50cyc7XG5pbXBvcnQgeyBnZXROb25JZ25vcmVkRmlsZXMgfSBmcm9tICcuLi9naXQudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGNoZWNrSXNJbk5vZGVNb2R1bGVzLFxuICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0Jcbn0gZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNvcGllZCB0byB0aGUgcHJvamVjdCByb290IHdoZW4gdGhlIHByb2plY3QgaGFzIG5vbmUuIFdpdGhvdXQgaXQsXG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgcnVucyB3aXRoIGl0cyBvd24gZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEdsb2JzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIG9mIG1hcmtkb3duIGZpbGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYGxpbmtpbmF0b3JgIHBhc3Mgb25seTtcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBzdGlsbCBsaW50cyB0aGVtLlxuICAgKlxuICAgKiBGb3IgYSBkb2N1bWVudGF0aW9uIHNpdGUgd2hvc2UgcGFnZXMgbGluayB0byBlYWNoIG90aGVyIGJhc2UtYWJzb2x1dGVseSAoYC88c2l0ZS1iYXNlPi9ndWlkZXMvLi4uYCk6IHRob3NlXG4gICAqIGxpbmtzIHJlc29sdmUgb25seSBhZ2FpbnN0IHRoZSBCVUlMVCBzaXRlLCBzbyBgbGlua2luYXRvcmAgcmVwb3J0cyBlYWNoIG9uZSBhcyBhIDQwNCwgYW5kIHRoZSBzaXRlJ3Mgb3duXG4gICAqIGJ1aWxkIGlzIHdoYXQgY2hlY2tzIHRoZW0uXG4gICAqXG4gICAqIEBleGFtcGxlIGBbJ2RvY3MvKionXWBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtDaGVja0V4Y2x1ZGVHbG9icz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIGxpbmtDaGVja0V4Y2x1ZGVHbG9icyA9IFtdLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgbGlua0NoZWNrRmlsZXMgPSBtZEZpbGVzLmZpbHRlcigobWRGaWxlKSA9PiBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMuZXZlcnkoKGV4Y2x1ZGVHbG9iKSA9PiAhbWF0Y2hlc0dsb2IobWRGaWxlLCBleGNsdWRlR2xvYikpKTtcbiAgLy8gYGxpbmtpbmF0b3JgIHdpdGggbm8gTE9DQVRJT04gcHJpbnRzIGl0cyB1c2FnZSBhbmQgZXhpdHMgbm9uLXplcm8sIHNvIGEgbGlzdCBlbXB0aWVkIGJ5IHRoZSBleGNsdXNpb25zIGhhcyBub3RoaW5nIHRvIGNoZWNrLlxuICBpZiAobGlua0NoZWNrRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEVycm9yIHJldHJpZXMgdXNlIG1pbGxpc2Vjb25kIGppdHRlci4gT21pdCAtLXJldHJ5OiBpdHMgc2VwYXJhdGUgUmV0cnktQWZ0ZXIgbW9kZSBjYW4gc2xlZXAgZm9yIHRob3VzYW5kc1xuICAvLyBvZiBzZWNvbmRzIG9uIGEgNDI5IHdlIGFscmVhZHkgYWNjZXB0IGFzIGEgd2FybmluZy4gUmVxdWVzdCB0aW1lb3V0cyByZW1haW4gZXJyb3JzIGFuZCBrZWVwIHRoZWlyIHJldHJpZXMuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2xpbmtpbmF0b3InIH0pLFxuICAgICctLWNvbmN1cnJlbmN5JyxcbiAgICBTdHJpbmcoZ2V0QnVsa0NvbmN1cnJlbmN5KExJTktfQ0hFQ0tfQ09OQ1VSUkVOQ1kpKSxcbiAgICAnLS10aW1lb3V0JyxcbiAgICBTdHJpbmcoTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyksXG4gICAgJy0tcmV0cnktZXJyb3JzJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtY291bnQnLFxuICAgICczJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtaml0dGVyJyxcbiAgICAnNTAwMCcsXG4gICAgJy0tc3RhdHVzLWNvZGUnLFxuICAgICc0Mjk6d2FybicsXG4gICAgJy0tdXJsLXJld3JpdGUtc2VhcmNoJyxcbiAgICBTdHJpbmcucmF3YGh0dHBzOi8vd3d3XFwubnBtanNcXC5jb20vcGFja2FnZS9gLFxuICAgICctLXVybC1yZXdyaXRlLXJlcGxhY2UnLFxuICAgICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogbGlua0NoZWNrRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2l0IHBhdGhzcGVjIG1hdGNoaW5nIGV2ZXJ5IG1hcmtkb3duIGZpbGUgaW4gdGhlIHJlcG9zaXRvcnksIGF0IGFueSBkZXB0aC5cbiAqL1xuY29uc3QgTUFSS0RPV05fUEFUSFNQRUMgPSAnKi5tZCc7XG5jb25zdCBMSU5LX0NIRUNLX0NPTkNVUlJFTkNZID0gMTAwO1xuY29uc3QgTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwXzAwMDtcblxuLyoqXG4gKiBMaXN0cyB0aGUgbWFya2Rvd24gZmlsZXMgdG8gaGFuZCB0byBgbGlua2luYXRvcmAuXG4gKlxuICogYGxpbmtpbmF0b3JgIHRha2VzIGEgZmlsZSBsaXN0IHJhdGhlciB0aGFuIGFuIGlnbm9yZSBjb25maWd1cmF0aW9uLCBzbyB0aGUgZ2l0aWdub3JlZCBmaWxlcyBoYXZlIHRvIGJlXG4gKiBkcm9wcGVkIGJlZm9yZSBpdCBpcyBpbnZva2VkLiBHaXQgaXRzZWxmIGFuc3dlcnMgdGhhdCAobmVzdGVkIGlnbm9yZSBmaWxlcywgYCFgIG5lZ2F0aW9ucyBhbmQgYWxsKTsgdGhlXG4gKiBoYW5kLW1haW50YWluZWQgZ2xvYiBleGNsdXNpb25zIGJlbG93IGFyZSBvbmx5IHRoZSBmYWxsYmFjayBmb3IgYSBjaGVja291dCB3aXRob3V0IGdpdCwgYW5kIHRoZXkgYXJlIHRoZVxuICogdmVyeSBsaXN0cyB0aGlzIGluZGlyZWN0aW9uIGV4aXN0cyB0byBzdG9wIGZyb20gZHJpZnRpbmcuXG4gKlxuICogVGhlIGBub2RlX21vZHVsZXNgIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBnaXQtZGVyaXZlZCBsaXN0IHRvbywgYW5kIGRlbGliZXJhdGVseSBzbzogZ2l0IG9ubHkgc2tpcHNcbiAqIHdoYXQgdGhlIHJlcG9zaXRvcnkgYXNrZWQgaXQgdG8gc2tpcCwgYW5kIGEgcmVwb3NpdG9yeSBjYW4gZGVsaWJlcmF0ZWx5IFRSQUNLIGEgdmVuZG9yZWQgYG5vZGVfbW9kdWxlc2BcbiAqIHRyZWUuIFRoYXQgaXMgdGhlIG9uZSBleGNsdXNpb24gYC5naXRpZ25vcmVgIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSBgbWFya2Rvd25saW50LWlnbm9yZXMudHNgLiBBcHBseWluZyBpdFxuICogaGVyZSBrZWVwcyBgbGlua2luYXRvcmAgaW4gc3RlcCB3aXRoIHRoZSBtYXJrZG93bmxpbnQgaGFsZiwgd2hpY2ggaWdub3JlcyB0aGUgc2FtZSBwYXRocyBieSBnbG9iLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWFya2Rvd24gZmlsZSBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgbm9uSWdub3JlZEZpbGVzID0gYXdhaXQgZ2V0Tm9uSWdub3JlZEZpbGVzKHsgcGF0dGVybnM6IFtNQVJLRE9XTl9QQVRIU1BFQ10gfSk7XG4gIHJldHVybiBub25JZ25vcmVkRmlsZXNcbiAgICA/IG5vbklnbm9yZWRGaWxlcy5maWx0ZXIoKHBhdGgpID0+ICFjaGVja0lzSW5Ob2RlTW9kdWxlcyhwYXRoKSlcbiAgICA6IChhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxuICAgICAgXVxuICAgIH0pKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLG1CQUF3QjtBQUN4QixtQkFBK0I7QUFDL0Isa0JBQXlCO0FBQ3pCLHFCQUEyQjtBQUMzQixzQkFHTztBQUNQLHVCQUdPO0FBRVAsOEJBQW1DO0FBQ25DLGlCQUFtQztBQUNuQyw2QkFBbUM7QUFDbkMsd0JBQTBCO0FBQzFCLGtCQUlPO0FBQ1Asa0NBR087QUEwQ1AsZUFBc0IsS0FBSyxTQUFzQztBQUMvRCxRQUFNLEVBQUUsdUJBQXVCLHdCQUF3QixDQUFDLEdBQUcsT0FBTyxZQUFZLE1BQU0sSUFBSSxXQUFXLENBQUM7QUFDcEcsUUFBTSxjQUFjO0FBQUEsSUFDbEIsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxFQUNaO0FBRUEsUUFBTSxzQkFBc0IsWUFBWSxLQUFLLENBQUMsZUFBZTtBQUMzRCxVQUFNLHFCQUFpQixxQ0FBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxlQUFPLDJCQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQscUNBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLGNBQU0sb0JBQUcsMkJBQXVCLHFDQUF3QixFQUFFLFVBQU0sc0JBQVMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDcEc7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyw0QkFBVSxhQUFhO0FBRWhFLFlBQU0sMEJBQWEsQ0FBQyxPQUFHLDJDQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUMsR0FBRyxHQUFJLFlBQVksQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFJLEVBQUUsa0JBQWtCLFFBQVEsQ0FBQyxDQUFDO0FBR3pJLFFBQU0saUJBQWEsMkJBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsVUFBTSwyQkFBUyxZQUFZLENBQUMsRUFBRSxXQUFXLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFDbkUsTUFBTSxpQkFBaUI7QUFFM0IsUUFBTSxpQkFBaUIsUUFBUSxPQUFPLENBQUMsV0FBVyxzQkFBc0IsTUFBTSxDQUFDLGdCQUFnQixLQUFDLDhCQUFZLFFBQVEsV0FBVyxDQUFDLENBQUM7QUFFakksTUFBSSxlQUFlLFdBQVcsR0FBRztBQUMvQjtBQUFBLEVBQ0Y7QUFHQSxZQUFNLDBCQUFhO0FBQUEsSUFDakIsT0FBRywyQ0FBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQzVDO0FBQUEsSUFDQSxXQUFPLDRDQUFtQixzQkFBc0IsQ0FBQztBQUFBLElBQ2pEO0FBQUEsSUFDQSxPQUFPLGtDQUFrQztBQUFBLElBQ3pDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQSxFQUFFLGtCQUFrQixlQUFlO0FBQUEsRUFDckMsQ0FBQztBQUNIO0FBS0EsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSx5QkFBeUI7QUFDL0IsTUFBTSxxQ0FBcUM7QUFpQjNDLGVBQWUsbUJBQXNDO0FBQ25ELFFBQU0sa0JBQWtCLFVBQU0sK0JBQW1CLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDbEYsU0FBTyxrQkFDSCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsS0FBQyxrREFBcUIsSUFBSSxDQUFDLElBQzNELFVBQU0sMEJBQVEsc0JBQUssQ0FBQyxTQUFTLEdBQUc7QUFBQSxJQUNqQyxTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ047IiwibmFtZXMiOltdfQ==
|