@codeperfect/eslint-plugin 3.3.0 → 3.4.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/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/core/prefer-interface-types/autofix.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/autofix.js +7 -5
- package/dist/domain/core/prefer-interface-types/outermost-matches.d.ts +13 -0
- package/dist/domain/core/prefer-interface-types/outermost-matches.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/outermost-matches.js +24 -0
- package/package.json +1 -1
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autofix.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/autofix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAEV,oBAAoB,EAGrB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"autofix.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/autofix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAEV,oBAAoB,EAGrB,MAAM,SAAS,CAAC;AAoDjB;;;;;;;;;GASG;AACH,iBAAS,kBAAkB,CACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,SAAS,oBAAoB,EAAE,GACvC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CA8BrD;AAiLD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getOutermostMatches } from "./outermost-matches.js";
|
|
1
2
|
const generatedNameTodo = "// TODO: Review this autogenerated type name";
|
|
2
3
|
/**
|
|
3
4
|
* Checks whether an AST subtree contains a contextual `this` type.
|
|
@@ -45,18 +46,19 @@ function containsRange(outerRange, innerRange) {
|
|
|
45
46
|
*/
|
|
46
47
|
function createAggregateFix(context, matches) {
|
|
47
48
|
const sourceCode = getFixSourceCode(context);
|
|
49
|
+
const outermostMatches = getOutermostMatches(matches);
|
|
48
50
|
if (sourceCode === void 0 ||
|
|
49
|
-
!hasSafeRanges(
|
|
50
|
-
!hasRelocatableMatches(
|
|
51
|
+
!hasSafeRanges(outermostMatches, sourceCode.text.length) ||
|
|
52
|
+
!hasRelocatableMatches(outermostMatches, sourceCode)) {
|
|
51
53
|
return void 0;
|
|
52
54
|
}
|
|
53
55
|
const lineEnding = sourceCode.text.includes("\r\n") ? "\r\n" : "\n";
|
|
54
|
-
const declarations =
|
|
56
|
+
const declarations = outermostMatches
|
|
55
57
|
.map((match) => `${generatedNameTodo}${lineEnding}interface ${match.name} ${sourceCode.getText(match.node)}`)
|
|
56
58
|
.join(`${lineEnding}${lineEnding}`);
|
|
57
59
|
const appendText = `${getBlockSeparator(sourceCode.text, lineEnding)}${declarations}${lineEnding}`;
|
|
58
60
|
return (fixer) => [
|
|
59
|
-
...
|
|
61
|
+
...outermostMatches.map((match) => fixer.replaceTextRange(match.node.range, match.name)),
|
|
60
62
|
fixer.insertTextAfterRange([sourceCode.text.length, sourceCode.text.length], appendText),
|
|
61
63
|
];
|
|
62
64
|
}
|
|
@@ -192,4 +194,4 @@ function isRelocatableReference(literalRange, resolvedScope) {
|
|
|
192
194
|
return scopeRange !== void 0 && containsRange(literalRange, scopeRange);
|
|
193
195
|
}
|
|
194
196
|
export { createAggregateFix };
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL2F1dG9maXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxpQkFBaUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUV6RTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsc0JBQXNCLENBQUMsS0FBYztJQUM1QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxLQUFnQyxDQUFDO0lBRTlDLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWTtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssZ0JBQWdCO1FBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUNwRSxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLFVBQTRCLEVBQzVCLFVBQTRCO0lBRTVCLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFD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QyxJQUFJLEtBQUssUUFBUSxFQUMvQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFFOUMsT0FBTyxVQUFVLEtBQUssS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgRml4U291cmNlQ29kZSxcbiAgTmFtZWRJbmxpbmVUeXBlTWF0Y2gsXG4gIE5hbWluZ05vZGUsXG4gIFJhbmdlZE5hbWVkSW5saW5lVHlwZU1hdGNoLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBnZW5lcmF0ZWROYW1lVG9kbyA9IFwiLy8gVE9ETzogUmV2aWV3IHRoaXMgYXV0b2dlbmVyYXRlZCB0eXBlIG5hbWVcIjtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBBU1Qgc3VidHJlZSBjb250YWlucyBhIGNvbnRleHR1YWwgYHRoaXNgIHR5cGUuXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIEFTVCB2YWx1ZS5cbiAqIEByZXR1cm5zIFdoZXRoZXIgbW92aW5nIHRoZSB2YWx1ZSB3b3VsZCBjaGFuZ2UgYHRoaXNgIHNlbWFudGljcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZXh0dWFsID0gY29udGFpbnNDb250ZXh0dWFsVGhpcyh0eXBlTGl0ZXJhbCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29udGFpbnNDb250ZXh0dWFsVGhpcyh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuc29tZSgoaXRlbSkgPT4gY29udGFpbnNDb250ZXh0dWFsVGhpcyhpdGVtKSk7XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgbm9kZSA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIHJldHVybiAoXG4gICAgbm9kZVtcInR5cGVcIl0gPT09IFwiVFNUaGlzVHlwZVwiIHx8XG4gICAgbm9kZVtcInR5cGVcIl0gPT09IFwiVGhpc0V4cHJlc3Npb25cIiB8fFxuICAgIE9iamVjdC5lbnRyaWVzKG5vZGUpLnNvbWUoXG4gICAgICAoW2tleSwgY2hpbGRdKSA9PiBrZXkgIT09IFwicGFyZW50XCIgJiYgY29udGFpbnNDb250ZXh0dWFsVGhpcyhjaGlsZCksXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGlubmVyIHJhbmdlIGlzIGZ1bGx5IGNvbnRhaW5lZCBieSBhbiBvdXRlciByYW5nZS5cbiAqIEBwYXJhbSBvdXRlclJhbmdlIENhbmRpZGF0ZSBjb250YWluaW5nIHJhbmdlLlxuICogQHBhcmFtIGlubmVyUmFuZ2UgQ2FuZGlkYXRlIGNvbnRhaW5lZCByYW5nZS5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGlubmVyIHJhbmdlIGlzIGNvbnRhaW5lZCBieSB0aGUgb3V0ZXIgcmFuZ2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29udGFpbmVkID0gY29udGFpbnNSYW5nZShbMCwgNV0sIFsxLCA0XSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29udGFpbnNSYW5nZShcbiAgb3V0ZXJSYW5nZTogW251bWJlciwgbnVtYmVyXSxcbiAgaW5uZXJSYW5nZTogW251bWJlciwgbnVtYmVyXSxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5uZXJSYW5nZVswXSA+PSBvdXRlclJhbmdlWzBdICYmIGlubmVyUmFuZ2VbMV0gPD0gb3V0ZXJSYW5nZVsxXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBzb2xlIGFnZ3JlZ2F0ZSBmaXggZm9yIGFsbCBmaW5kaW5ncyB3aGVuIGV2ZXJ5IHNvdXJjZSByYW5nZSBpcyBzYWZlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBtYXRjaGVzIE5hbWVkIGlubGluZSBvYmplY3QgdHlwZSBtYXRjaGVzLlxuICogQHJldHVybnMgQWdncmVnYXRlIGZpeCBjYWxsYmFjaywgb3IgdW5kZWZpbmVkIHdoZW4gc291cmNlIGRhdGEgaXMgaW5jb21wbGV0ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXggPSBjcmVhdGVBZ2dyZWdhdGVGaXgoY29udGV4dCwgbWF0Y2hlcyk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRlRml4KFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBtYXRjaGVzOiByZWFkb25seSBOYW1lZElubGluZVR5cGVNYXRjaFtdLFxuKTogKChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4W10pIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc291cmNlQ29kZSA9IGdldEZpeFNvdXJjZUNvZGUoY29udGV4dCk7XG5cbiAgaWYgKFxuICAgIHNvdXJjZUNvZGUgPT09IHZvaWQgMCB8fFxuICAgICFoYXNTYWZlUmFuZ2VzKG1hdGNoZXMsIHNvdXJjZUNvZGUudGV4dC5sZW5ndGgpIHx8XG4gICAgIWhhc1JlbG9jYXRhYmxlTWF0Y2hlcyhtYXRjaGVzLCBzb3VyY2VDb2RlKVxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbGluZUVuZGluZyA9IHNvdXJjZUNvZGUudGV4dC5pbmNsdWRlcyhcIlxcclxcblwiKSA/IFwiXFxyXFxuXCIgOiBcIlxcblwiO1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBtYXRjaGVzXG4gICAgLm1hcChcbiAgICAgIChtYXRjaCkgPT5cbiAgICAgICAgYCR7Z2VuZXJhdGVkTmFtZVRvZG99JHtsaW5lRW5kaW5nfWludGVyZmFjZSAke21hdGNoLm5hbWV9ICR7c291cmNlQ29kZS5nZXRUZXh0KG1hdGNoLm5vZGUgYXMgbmV2ZXIpfWAsXG4gICAgKVxuICAgIC5qb2luKGAke2xpbmVFbmRpbmd9JHtsaW5lRW5kaW5nfWApO1xuICBjb25zdCBhcHBlbmRUZXh0ID0gYCR7Z2V0QmxvY2tTZXBhcmF0b3Ioc291cmNlQ29kZS50ZXh0LCBsaW5lRW5kaW5nKX0ke2RlY2xhcmF0aW9uc30ke2xpbmVFbmRpbmd9YDtcblxuICByZXR1cm4gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT4gW1xuICAgIC4uLm1hdGNoZXMubWFwKChtYXRjaCkgPT5cbiAgICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UobWF0Y2gubm9kZS5yYW5nZSwgbWF0Y2gubmFtZSksXG4gICAgKSxcbiAgICBmaXhlci5pbnNlcnRUZXh0QWZ0ZXJSYW5nZShcbiAgICAgIFtzb3VyY2VDb2RlLnRleHQubGVuZ3RoLCBzb3VyY2VDb2RlLnRleHQubGVuZ3RoXSxcbiAgICAgIGFwcGVuZFRleHQsXG4gICAgKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBibGFuay1saW5lIHNlcGFyYXRvciByZXF1aXJlZCBiZWZvcmUgdGhlIGdlbmVyYXRlZCBibG9jay5cbiAqIEBwYXJhbSBzb3VyY2VUZXh0IEV4aXN0aW5nIHNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIGxpbmVFbmRpbmcgRGV0ZWN0ZWQgc291cmNlIGxpbmUgZW5kaW5nLlxuICogQHJldHVybnMgU2VwYXJhdG9yIHJlcXVpcmVkIGJlZm9yZSBnZW5lcmF0ZWQgZGVjbGFyYXRpb25zLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlcGFyYXRvciA9IGdldEJsb2NrU2VwYXJhdG9yKFwiY29uc3QgdmFsdWUgPSAxO1wiLCBcIlxcblwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRCbG9ja1NlcGFyYXRvcihzb3VyY2VUZXh0OiBzdHJpbmcsIGxpbmVFbmRpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzb3VyY2VUZXh0Lmxlbmd0aCA9PT0gMCB8fCBzb3VyY2VUZXh0LmVuZHNXaXRoKGxpbmVFbmRpbmcgKyBsaW5lRW5kaW5nKSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZVRleHQuZW5kc1dpdGgobGluZUVuZGluZykgPyBsaW5lRW5kaW5nIDogbGluZUVuZGluZyArIGxpbmVFbmRpbmc7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc291cmNlLWNvZGUgbWV0aG9kcyBvbmx5IHdoZW4gYSBjb21wbGV0ZSBzb3VyY2UgcGF5bG9hZCBpcyBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHJldHVybnMgQ29tcGxldGUgc291cmNlLWNvZGUgcGF5bG9hZCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VDb2RlID0gZ2V0Rml4U291cmNlQ29kZShjb250ZXh0KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRGaXhTb3VyY2VDb2RlKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuKTogRml4U291cmNlQ29kZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBjb250ZXh0LnNvdXJjZUNvZGUgYXMgUGFydGlhbDxGaXhTb3VyY2VDb2RlPiB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4gc291cmNlQ29kZSAhPT0gdm9pZCAwICYmXG4gICAgdHlwZW9mIHNvdXJjZUNvZGUudGV4dCA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHR5cGVvZiBzb3VyY2VDb2RlLmdldFRleHQgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIHNvdXJjZUNvZGUuYXN0ICE9PSB2b2lkIDBcbiAgICA/IChzb3VyY2VDb2RlIGFzIEZpeFNvdXJjZUNvZGUpXG4gICAgOiB2b2lkIDA7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBsaXRlcmFsIGJlbG9uZ3MgdG8gYSBuYW1lc3BhY2Ugb3IgYW1iaWVudCBtb2R1bGUuXG4gKiBAcGFyYW0gbm9kZSBJbmxpbmUgdHlwZSBsaXRlcmFsIG5vZGUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIEVPRiBpbnNlcnRpb24gd291bGQgbW92ZSB0aGUgZGVjbGFyYXRpb24gb3V0c2lkZSBpdHMgbW9kdWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5lc3RlZCA9IGhhc01vZHVsZUFuY2VzdG9yKHR5cGVMaXRlcmFsKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBoYXNNb2R1bGVBbmNlc3Rvcihub2RlOiBOYW1lZElubGluZVR5cGVNYXRjaFtcIm5vZGVcIl0pOiBib29sZWFuIHtcbiAgbGV0IGN1cnJlbnQgPSAobm9kZSBhcyBOYW1pbmdOb2RlKS5wYXJlbnQ7XG5cbiAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gXCJUU01vZHVsZURlY2xhcmF0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBtb3ZpbmcgZXZlcnkgbGl0ZXJhbCB0byBtb2R1bGUgc2NvcGUgcHJlc2VydmVzIGl0cyBiaW5kaW5ncy5cbiAqIEBwYXJhbSBtYXRjaGVzIFJhbmdlZCBpbmxpbmUgdHlwZSBtYXRjaGVzLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFuZCBzY29wZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGFjdGl2ZSBmaWxlLlxuICogQHJldHVybnMgV2hldGhlciBldmVyeSBsaXRlcmFsIGNhbiBzYWZlbHkgbW92ZSB0byBtb2R1bGUgc2NvcGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVsb2NhdGFibGUgPSBoYXNSZWxvY2F0YWJsZU1hdGNoZXMobWF0Y2hlcywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaGFzUmVsb2NhdGFibGVNYXRjaGVzKFxuICBtYXRjaGVzOiByZWFkb25seSBSYW5nZWROYW1lZElubGluZVR5cGVNYXRjaFtdLFxuICBzb3VyY2VDb2RlOiBGaXhTb3VyY2VDb2RlLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNjb3BlcyA9IHNvdXJjZUNvZGUuc2NvcGVNYW5hZ2VyPy5zY29wZXM7XG5cbiAgaWYgKHNjb3BlcyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgaWYgKGNvbnRhaW5zQ29udGV4dHVhbFRoaXMobWF0Y2gubm9kZSkgfHwgaGFzTW9kdWxlQW5jZXN0b3IobWF0Y2gubm9kZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHNjb3BlIG9mIHNjb3Blcykge1xuICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHNjb3BlLnJlZmVyZW5jZXMgPz8gW107XG5cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlUmFuZ2UgPSByZWZlcmVuY2UuaWRlbnRpZmllcj8ucmFuZ2U7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlZmVyZW5jZVJhbmdlICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICBjb250YWluc1JhbmdlKG1hdGNoLm5vZGUucmFuZ2UsIHJlZmVyZW5jZVJhbmdlKSAmJlxuICAgICAgICAgICFpc1JlbG9jYXRhYmxlUmVmZXJlbmNlKG1hdGNoLm5vZGUucmFuZ2UsIHJlZmVyZW5jZS5yZXNvbHZlZD8uc2NvcGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGF0IGFsbCByZXBsYWNlbWVudCByYW5nZXMgZXhpc3QsIGFyZSBvcmRlcmVkLCBhbmQgZG8gbm90IG92ZXJsYXAuXG4gKiBAcGFyYW0gbWF0Y2hlcyBOYW1lZCBpbmxpbmUgb2JqZWN0IHR5cGUgbWF0Y2hlcy5cbiAqIEBwYXJhbSBzb3VyY2VMZW5ndGggRXhpc3Rpbmcgc291cmNlIGxlbmd0aC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgZXZlcnkgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgc2FmZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzYWZlID0gaGFzU2FmZVJhbmdlcyhtYXRjaGVzLCBzb3VyY2VUZXh0Lmxlbmd0aCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaGFzU2FmZVJhbmdlcyhcbiAgbWF0Y2hlczogcmVhZG9ubHkgTmFtZWRJbmxpbmVUeXBlTWF0Y2hbXSxcbiAgc291cmNlTGVuZ3RoOiBudW1iZXIsXG4pOiBtYXRjaGVzIGlzIHJlYWRvbmx5IFJhbmdlZE5hbWVkSW5saW5lVHlwZU1hdGNoW10ge1xuICBsZXQgcHJldmlvdXNFbmQgPSAtMTtcblxuICBjb25zdCBvcmRlcmVkTWF0Y2hlcyA9IG1hdGNoZXMudG9Tb3J0ZWQoXG4gICAgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgKGxlZnQubm9kZS5yYW5nZT8uWzBdID8/IC0xKSAtIChyaWdodC5ub2RlLnJhbmdlPy5bMF0gPz8gLTEpLFxuICApO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2Ygb3JkZXJlZE1hdGNoZXMpIHtcbiAgICBjb25zdCByYW5nZSA9IG1hdGNoLm5vZGUucmFuZ2U7XG5cbiAgICBpZiAoXG4gICAgICByYW5nZSA9PT0gdm9pZCAwIHx8XG4gICAgICByYW5nZVswXSA8IDAgfHxcbiAgICAgIHJhbmdlWzBdIDwgcHJldmlvdXNFbmQgfHxcbiAgICAgIHJhbmdlWzFdIDwgcmFuZ2VbMF0gfHxcbiAgICAgIHJhbmdlWzFdID4gc291cmNlTGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJldmlvdXNFbmQgPSByYW5nZVsxXTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGtlZXBzIHRoZSBzYW1lIGJpbmRpbmcgYXQgbW9kdWxlIHNjb3BlLlxuICogQHBhcmFtIGxpdGVyYWxSYW5nZSBSYW5nZSBvZiB0aGUgdHlwZSBsaXRlcmFsIGJlaW5nIG1vdmVkLlxuICogQHBhcmFtIHJlc29sdmVkU2NvcGUgU2NvcGUgY29udGFpbmluZyB0aGUgcmVmZXJlbmNlZCBkZWNsYXJhdGlvbi5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBtb2R1bGUtc2FmZSBvciBtb3ZlcyB3aXRoIHRoZSBsaXRlcmFsLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlbG9jYXRhYmxlID0gaXNSZWxvY2F0YWJsZVJlZmVyZW5jZShsaXRlcmFsUmFuZ2UsIHJlc29sdmVkU2NvcGUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzUmVsb2NhdGFibGVSZWZlcmVuY2UoXG4gIGxpdGVyYWxSYW5nZTogW251bWJlciwgbnVtYmVyXSxcbiAgcmVzb2x2ZWRTY29wZTogaW1wb3J0KFwiLi90eXBlc1wiKS5TY29wZSB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgcmVzb2x2ZWRTY29wZSA9PT0gdm9pZCAwIHx8XG4gICAgcmVzb2x2ZWRTY29wZS50eXBlID09PSBcImdsb2JhbFwiIHx8XG4gICAgcmVzb2x2ZWRTY29wZS50eXBlID09PSBcIm1vZHVsZVwiXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3Qgc2NvcGVSYW5nZSA9IHJlc29sdmVkU2NvcGUuYmxvY2s/LnJhbmdlO1xuXG4gIHJldHVybiBzY29wZVJhbmdlICE9PSB2b2lkIDAgJiYgY29udGFpbnNSYW5nZShsaXRlcmFsUmFuZ2UsIHNjb3BlUmFuZ2UpO1xufVxuXG5leHBvcnQgeyBjcmVhdGVBZ2dyZWdhdGVGaXggfTtcbiJdfQ==
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL2F1dG9maXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsTUFBTSxpQkFBaUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUV6RTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsc0JBQXNCLENBQUMsS0FBYztJQUM1QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxLQUFnQyxDQUFDO0lBRTlDLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWTtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssZ0JBQWdCO1FBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUNwRSxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLFVBQTRCLEVBQzVCLFVBQTRCO0lBRTVCLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFD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c0IsQ0FDN0IsWUFBOEIsRUFDOUIsYUFBa0Q7SUFFbEQsSUFDRSxhQUFhLEtBQUssS0FBSyxDQUFDO1FBQ3hCLGFBQWEsQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUMvQixhQUFhLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFDL0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRTlDLE9BQU8sVUFBVSxLQUFLLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZpeFNvdXJjZUNvZGUsXG4gIE5hbWVkSW5saW5lVHlwZU1hdGNoLFxuICBOYW1pbmdOb2RlLFxuICBSYW5nZWROYW1lZElubGluZVR5cGVNYXRjaCxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgZ2V0T3V0ZXJtb3N0TWF0Y2hlcyB9IGZyb20gXCIuL291dGVybW9zdC1tYXRjaGVzXCI7XG5cbmNvbnN0IGdlbmVyYXRlZE5hbWVUb2RvID0gXCIvLyBUT0RPOiBSZXZpZXcgdGhpcyBhdXRvZ2VuZXJhdGVkIHR5cGUgbmFtZVwiO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIEFTVCBzdWJ0cmVlIGNvbnRhaW5zIGEgY29udGV4dHVhbCBgdGhpc2AgdHlwZS5cbiAqIEBwYXJhbSB2YWx1ZSBDYW5kaWRhdGUgQVNUIHZhbHVlLlxuICogQHJldHVybnMgV2hldGhlciBtb3ZpbmcgdGhlIHZhbHVlIHdvdWxkIGNoYW5nZSBgdGhpc2Agc2VtYW50aWNzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbnRleHR1YWwgPSBjb250YWluc0NvbnRleHR1YWxUaGlzKHR5cGVMaXRlcmFsKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb250YWluc0NvbnRleHR1YWxUaGlzKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5zb21lKChpdGVtKSA9PiBjb250YWluc0NvbnRleHR1YWxUaGlzKGl0ZW0pKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBub2RlID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgcmV0dXJuIChcbiAgICBub2RlW1widHlwZVwiXSA9PT0gXCJUU1RoaXNUeXBlXCIgfHxcbiAgICBub2RlW1widHlwZVwiXSA9PT0gXCJUaGlzRXhwcmVzc2lvblwiIHx8XG4gICAgT2JqZWN0LmVudHJpZXMobm9kZSkuc29tZShcbiAgICAgIChba2V5LCBjaGlsZF0pID0+IGtleSAhPT0gXCJwYXJlbnRcIiAmJiBjb250YWluc0NvbnRleHR1YWxUaGlzKGNoaWxkKSxcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gaW5uZXIgcmFuZ2UgaXMgZnVsbHkgY29udGFpbmVkIGJ5IGFuIG91dGVyIHJhbmdlLlxuICogQHBhcmFtIG91dGVyUmFuZ2UgQ2FuZGlkYXRlIGNvbnRhaW5pbmcgcmFuZ2UuXG4gKiBAcGFyYW0gaW5uZXJSYW5nZSBDYW5kaWRhdGUgY29udGFpbmVkIHJhbmdlLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgaW5uZXIgcmFuZ2UgaXMgY29udGFpbmVkIGJ5IHRoZSBvdXRlciByYW5nZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250YWluZWQgPSBjb250YWluc1JhbmdlKFswLCA1XSwgWzEsIDRdKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb250YWluc1JhbmdlKFxuICBvdXRlclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLFxuICBpbm5lclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBpbm5lclJhbmdlWzBdID49IG91dGVyUmFuZ2VbMF0gJiYgaW5uZXJSYW5nZVsxXSA8PSBvdXRlclJhbmdlWzFdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHNvbGUgYWdncmVnYXRlIGZpeCBmb3IgYWxsIGZpbmRpbmdzIHdoZW4gZXZlcnkgc291cmNlIHJhbmdlIGlzIHNhZmUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG1hdGNoZXMgTmFtZWQgaW5saW5lIG9iamVjdCB0eXBlIG1hdGNoZXMuXG4gKiBAcmV0dXJucyBBZ2dyZWdhdGUgZml4IGNhbGxiYWNrLCBvciB1bmRlZmluZWQgd2hlbiBzb3VyY2UgZGF0YSBpcyBpbmNvbXBsZXRlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeCA9IGNyZWF0ZUFnZ3JlZ2F0ZUZpeChjb250ZXh0LCBtYXRjaGVzKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdGVGaXgoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG1hdGNoZXM6IHJlYWRvbmx5IE5hbWVkSW5saW5lVHlwZU1hdGNoW10sXG4pOiAoKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikgPT4gUnVsZS5GaXhbXSkgfCB1bmRlZmluZWQge1xuICBjb25zdCBzb3VyY2VDb2RlID0gZ2V0Rml4U291cmNlQ29kZShjb250ZXh0KTtcbiAgY29uc3Qgb3V0ZXJtb3N0TWF0Y2hlcyA9IGdldE91dGVybW9zdE1hdGNoZXMobWF0Y2hlcyk7XG5cbiAgaWYgKFxuICAgIHNvdXJjZUNvZGUgPT09IHZvaWQgMCB8fFxuICAgICFoYXNTYWZlUmFuZ2VzKG91dGVybW9zdE1hdGNoZXMsIHNvdXJjZUNvZGUudGV4dC5sZW5ndGgpIHx8XG4gICAgIWhhc1JlbG9jYXRhYmxlTWF0Y2hlcyhvdXRlcm1vc3RNYXRjaGVzLCBzb3VyY2VDb2RlKVxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbGluZUVuZGluZyA9IHNvdXJjZUNvZGUudGV4dC5pbmNsdWRlcyhcIlxcclxcblwiKSA/IFwiXFxyXFxuXCIgOiBcIlxcblwiO1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBvdXRlcm1vc3RNYXRjaGVzXG4gICAgLm1hcChcbiAgICAgIChtYXRjaCkgPT5cbiAgICAgICAgYCR7Z2VuZXJhdGVkTmFtZVRvZG99JHtsaW5lRW5kaW5nfWludGVyZmFjZSAke21hdGNoLm5hbWV9ICR7c291cmNlQ29kZS5nZXRUZXh0KG1hdGNoLm5vZGUgYXMgbmV2ZXIpfWAsXG4gICAgKVxuICAgIC5qb2luKGAke2xpbmVFbmRpbmd9JHtsaW5lRW5kaW5nfWApO1xuICBjb25zdCBhcHBlbmRUZXh0ID0gYCR7Z2V0QmxvY2tTZXBhcmF0b3Ioc291cmNlQ29kZS50ZXh0LCBsaW5lRW5kaW5nKX0ke2RlY2xhcmF0aW9uc30ke2xpbmVFbmRpbmd9YDtcblxuICByZXR1cm4gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4W10gPT4gW1xuICAgIC4uLm91dGVybW9zdE1hdGNoZXMubWFwKChtYXRjaCkgPT5cbiAgICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UobWF0Y2gubm9kZS5yYW5nZSwgbWF0Y2gubmFtZSksXG4gICAgKSxcbiAgICBmaXhlci5pbnNlcnRUZXh0QWZ0ZXJSYW5nZShcbiAgICAgIFtzb3VyY2VDb2RlLnRleHQubGVuZ3RoLCBzb3VyY2VDb2RlLnRleHQubGVuZ3RoXSxcbiAgICAgIGFwcGVuZFRleHQsXG4gICAgKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBibGFuay1saW5lIHNlcGFyYXRvciByZXF1aXJlZCBiZWZvcmUgdGhlIGdlbmVyYXRlZCBibG9jay5cbiAqIEBwYXJhbSBzb3VyY2VUZXh0IEV4aXN0aW5nIHNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIGxpbmVFbmRpbmcgRGV0ZWN0ZWQgc291cmNlIGxpbmUgZW5kaW5nLlxuICogQHJldHVybnMgU2VwYXJhdG9yIHJlcXVpcmVkIGJlZm9yZSBnZW5lcmF0ZWQgZGVjbGFyYXRpb25zLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlcGFyYXRvciA9IGdldEJsb2NrU2VwYXJhdG9yKFwiY29uc3QgdmFsdWUgPSAxO1wiLCBcIlxcblwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRCbG9ja1NlcGFyYXRvcihzb3VyY2VUZXh0OiBzdHJpbmcsIGxpbmVFbmRpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzb3VyY2VUZXh0Lmxlbmd0aCA9PT0gMCB8fCBzb3VyY2VUZXh0LmVuZHNXaXRoKGxpbmVFbmRpbmcgKyBsaW5lRW5kaW5nKSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZVRleHQuZW5kc1dpdGgobGluZUVuZGluZykgPyBsaW5lRW5kaW5nIDogbGluZUVuZGluZyArIGxpbmVFbmRpbmc7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc291cmNlLWNvZGUgbWV0aG9kcyBvbmx5IHdoZW4gYSBjb21wbGV0ZSBzb3VyY2UgcGF5bG9hZCBpcyBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHJldHVybnMgQ29tcGxldGUgc291cmNlLWNvZGUgcGF5bG9hZCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VDb2RlID0gZ2V0Rml4U291cmNlQ29kZShjb250ZXh0KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRGaXhTb3VyY2VDb2RlKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuKTogRml4U291cmNlQ29kZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBjb250ZXh0LnNvdXJjZUNvZGUgYXMgUGFydGlhbDxGaXhTb3VyY2VDb2RlPiB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4gc291cmNlQ29kZSAhPT0gdm9pZCAwICYmXG4gICAgdHlwZW9mIHNvdXJjZUNvZGUudGV4dCA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHR5cGVvZiBzb3VyY2VDb2RlLmdldFRleHQgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIHNvdXJjZUNvZGUuYXN0ICE9PSB2b2lkIDBcbiAgICA/IChzb3VyY2VDb2RlIGFzIEZpeFNvdXJjZUNvZGUpXG4gICAgOiB2b2lkIDA7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBsaXRlcmFsIGJlbG9uZ3MgdG8gYSBuYW1lc3BhY2Ugb3IgYW1iaWVudCBtb2R1bGUuXG4gKiBAcGFyYW0gbm9kZSBJbmxpbmUgdHlwZSBsaXRlcmFsIG5vZGUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIEVPRiBpbnNlcnRpb24gd291bGQgbW92ZSB0aGUgZGVjbGFyYXRpb24gb3V0c2lkZSBpdHMgbW9kdWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5lc3RlZCA9IGhhc01vZHVsZUFuY2VzdG9yKHR5cGVMaXRlcmFsKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBoYXNNb2R1bGVBbmNlc3Rvcihub2RlOiBOYW1lZElubGluZVR5cGVNYXRjaFtcIm5vZGVcIl0pOiBib29sZWFuIHtcbiAgbGV0IGN1cnJlbnQgPSAobm9kZSBhcyBOYW1pbmdOb2RlKS5wYXJlbnQ7XG5cbiAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gXCJUU01vZHVsZURlY2xhcmF0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBtb3ZpbmcgZXZlcnkgbGl0ZXJhbCB0byBtb2R1bGUgc2NvcGUgcHJlc2VydmVzIGl0cyBiaW5kaW5ncy5cbiAqIEBwYXJhbSBtYXRjaGVzIFJhbmdlZCBpbmxpbmUgdHlwZSBtYXRjaGVzLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFuZCBzY29wZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGFjdGl2ZSBmaWxlLlxuICogQHJldHVybnMgV2hldGhlciBldmVyeSBsaXRlcmFsIGNhbiBzYWZlbHkgbW92ZSB0byBtb2R1bGUgc2NvcGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVsb2NhdGFibGUgPSBoYXNSZWxvY2F0YWJsZU1hdGNoZXMobWF0Y2hlcywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaGFzUmVsb2NhdGFibGVNYXRjaGVzKFxuICBtYXRjaGVzOiByZWFkb25seSBSYW5nZWROYW1lZElubGluZVR5cGVNYXRjaFtdLFxuICBzb3VyY2VDb2RlOiBGaXhTb3VyY2VDb2RlLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNjb3BlcyA9IHNvdXJjZUNvZGUuc2NvcGVNYW5hZ2VyPy5zY29wZXM7XG5cbiAgaWYgKHNjb3BlcyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgaWYgKGNvbnRhaW5zQ29udGV4dHVhbFRoaXMobWF0Y2gubm9kZSkgfHwgaGFzTW9kdWxlQW5jZXN0b3IobWF0Y2gubm9kZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHNjb3BlIG9mIHNjb3Blcykge1xuICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHNjb3BlLnJlZmVyZW5jZXMgPz8gW107XG5cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlUmFuZ2UgPSByZWZlcmVuY2UuaWRlbnRpZmllcj8ucmFuZ2U7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlZmVyZW5jZVJhbmdlICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICBjb250YWluc1JhbmdlKG1hdGNoLm5vZGUucmFuZ2UsIHJlZmVyZW5jZVJhbmdlKSAmJlxuICAgICAgICAgICFpc1JlbG9jYXRhYmxlUmVmZXJlbmNlKG1hdGNoLm5vZGUucmFuZ2UsIHJlZmVyZW5jZS5yZXNvbHZlZD8uc2NvcGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGF0IGFsbCByZXBsYWNlbWVudCByYW5nZXMgZXhpc3QsIGFyZSBvcmRlcmVkLCBhbmQgZG8gbm90IG92ZXJsYXAuXG4gKiBAcGFyYW0gbWF0Y2hlcyBOYW1lZCBpbmxpbmUgb2JqZWN0IHR5cGUgbWF0Y2hlcy5cbiAqIEBwYXJhbSBzb3VyY2VMZW5ndGggRXhpc3Rpbmcgc291cmNlIGxlbmd0aC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgZXZlcnkgcmVwbGFjZW1lbnQgcmFuZ2UgaXMgc2FmZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzYWZlID0gaGFzU2FmZVJhbmdlcyhtYXRjaGVzLCBzb3VyY2VUZXh0Lmxlbmd0aCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaGFzU2FmZVJhbmdlcyhcbiAgbWF0Y2hlczogcmVhZG9ubHkgTmFtZWRJbmxpbmVUeXBlTWF0Y2hbXSxcbiAgc291cmNlTGVuZ3RoOiBudW1iZXIsXG4pOiBtYXRjaGVzIGlzIHJlYWRvbmx5IFJhbmdlZE5hbWVkSW5saW5lVHlwZU1hdGNoW10ge1xuICBsZXQgcHJldmlvdXNFbmQgPSAtMTtcblxuICBjb25zdCBvcmRlcmVkTWF0Y2hlcyA9IG1hdGNoZXMudG9Tb3J0ZWQoXG4gICAgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgKGxlZnQubm9kZS5yYW5nZT8uWzBdID8/IC0xKSAtIChyaWdodC5ub2RlLnJhbmdlPy5bMF0gPz8gLTEpLFxuICApO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2Ygb3JkZXJlZE1hdGNoZXMpIHtcbiAgICBjb25zdCByYW5nZSA9IG1hdGNoLm5vZGUucmFuZ2U7XG5cbiAgICBpZiAoXG4gICAgICByYW5nZSA9PT0gdm9pZCAwIHx8XG4gICAgICByYW5nZVswXSA8IDAgfHxcbiAgICAgIHJhbmdlWzBdIDwgcHJldmlvdXNFbmQgfHxcbiAgICAgIHJhbmdlWzFdIDwgcmFuZ2VbMF0gfHxcbiAgICAgIHJhbmdlWzFdID4gc291cmNlTGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJldmlvdXNFbmQgPSByYW5nZVsxXTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGtlZXBzIHRoZSBzYW1lIGJpbmRpbmcgYXQgbW9kdWxlIHNjb3BlLlxuICogQHBhcmFtIGxpdGVyYWxSYW5nZSBSYW5nZSBvZiB0aGUgdHlwZSBsaXRlcmFsIGJlaW5nIG1vdmVkLlxuICogQHBhcmFtIHJlc29sdmVkU2NvcGUgU2NvcGUgY29udGFpbmluZyB0aGUgcmVmZXJlbmNlZCBkZWNsYXJhdGlvbi5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBtb2R1bGUtc2FmZSBvciBtb3ZlcyB3aXRoIHRoZSBsaXRlcmFsLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlbG9jYXRhYmxlID0gaXNSZWxvY2F0YWJsZVJlZmVyZW5jZShsaXRlcmFsUmFuZ2UsIHJlc29sdmVkU2NvcGUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzUmVsb2NhdGFibGVSZWZlcmVuY2UoXG4gIGxpdGVyYWxSYW5nZTogW251bWJlciwgbnVtYmVyXSxcbiAgcmVzb2x2ZWRTY29wZTogaW1wb3J0KFwiLi90eXBlc1wiKS5TY29wZSB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgcmVzb2x2ZWRTY29wZSA9PT0gdm9pZCAwIHx8XG4gICAgcmVzb2x2ZWRTY29wZS50eXBlID09PSBcImdsb2JhbFwiIHx8XG4gICAgcmVzb2x2ZWRTY29wZS50eXBlID09PSBcIm1vZHVsZVwiXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3Qgc2NvcGVSYW5nZSA9IHJlc29sdmVkU2NvcGUuYmxvY2s/LnJhbmdlO1xuXG4gIHJldHVybiBzY29wZVJhbmdlICE9PSB2b2lkIDAgJiYgY29udGFpbnNSYW5nZShsaXRlcmFsUmFuZ2UsIHNjb3BlUmFuZ2UpO1xufVxuXG5leHBvcnQgeyBjcmVhdGVBZ2dyZWdhdGVGaXggfTtcbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NamedInlineTypeMatch } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Selects literals that can be replaced without overlapping an enclosing fix.
|
|
4
|
+
* @param matches Named inline object type matches.
|
|
5
|
+
* @returns Outermost matches; nested signatures remain for the next lint pass.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const outermostMatches = getOutermostMatches(matches);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
declare function getOutermostMatches(matches: readonly NamedInlineTypeMatch[]): readonly NamedInlineTypeMatch[];
|
|
12
|
+
export { getOutermostMatches };
|
|
13
|
+
//# sourceMappingURL=outermost-matches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outermost-matches.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/outermost-matches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAc,MAAM,SAAS,CAAC;AAEhE;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,SAAS,oBAAoB,EAAE,GACvC,SAAS,oBAAoB,EAAE,CAgBjC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selects literals that can be replaced without overlapping an enclosing fix.
|
|
3
|
+
* @param matches Named inline object type matches.
|
|
4
|
+
* @returns Outermost matches; nested signatures remain for the next lint pass.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const outermostMatches = getOutermostMatches(matches);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
function getOutermostMatches(matches) {
|
|
11
|
+
const matchedNodes = new Set(matches.map((match) => match.node));
|
|
12
|
+
return matches.filter((match) => {
|
|
13
|
+
let current = match.node.parent;
|
|
14
|
+
while (current !== null && current !== void 0) {
|
|
15
|
+
if (matchedNodes.has(current)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
current = current.parent;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export { getOutermostMatches };
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0ZXJtb3N0LW1hdGNoZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvcHJlZmVyLWludGVyZmFjZS10eXBlcy9vdXRlcm1vc3QtbWF0Y2hlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLE9BQXdDO0lBRXhDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFVLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzlCLElBQUksT0FBTyxHQUFJLEtBQUssQ0FBQyxJQUFtQixDQUFDLE1BQU0sQ0FBQztRQUVoRCxPQUFPLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOYW1lZElubGluZVR5cGVNYXRjaCwgTmFtaW5nTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogU2VsZWN0cyBsaXRlcmFscyB0aGF0IGNhbiBiZSByZXBsYWNlZCB3aXRob3V0IG92ZXJsYXBwaW5nIGFuIGVuY2xvc2luZyBmaXguXG4gKiBAcGFyYW0gbWF0Y2hlcyBOYW1lZCBpbmxpbmUgb2JqZWN0IHR5cGUgbWF0Y2hlcy5cbiAqIEByZXR1cm5zIE91dGVybW9zdCBtYXRjaGVzOyBuZXN0ZWQgc2lnbmF0dXJlcyByZW1haW4gZm9yIHRoZSBuZXh0IGxpbnQgcGFzcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvdXRlcm1vc3RNYXRjaGVzID0gZ2V0T3V0ZXJtb3N0TWF0Y2hlcyhtYXRjaGVzKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRPdXRlcm1vc3RNYXRjaGVzKFxuICBtYXRjaGVzOiByZWFkb25seSBOYW1lZElubGluZVR5cGVNYXRjaFtdLFxuKTogcmVhZG9ubHkgTmFtZWRJbmxpbmVUeXBlTWF0Y2hbXSB7XG4gIGNvbnN0IG1hdGNoZWROb2RlcyA9IG5ldyBTZXQ8dW5rbm93bj4obWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiBtYXRjaC5ub2RlKSk7XG5cbiAgcmV0dXJuIG1hdGNoZXMuZmlsdGVyKChtYXRjaCkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gKG1hdGNoLm5vZGUgYXMgTmFtaW5nTm9kZSkucGFyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAobWF0Y2hlZE5vZGVzLmhhcyhjdXJyZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldE91dGVybW9zdE1hdGNoZXMgfTtcbiJdfQ==
|