@codeperfect/eslint-plugin 2.6.0 → 2.8.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/README.md +3 -7
- package/dist/application/custom-rules.d.ts.map +1 -1
- package/dist/application/custom-rules.js +15 -57
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +1 -1
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts +0 -1
- package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/index.js +1 -2
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +3 -9
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +3 -9
- package/dist/domain/architecture/index.d.ts +2 -1
- package/dist/domain/architecture/index.d.ts.map +1 -1
- package/dist/domain/architecture/index.js +3 -2
- package/dist/domain/architecture/no-import-export-extensions/index.d.ts +2 -0
- package/dist/domain/architecture/no-import-export-extensions/index.d.ts.map +1 -0
- package/dist/domain/architecture/no-import-export-extensions/index.js +2 -0
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -0
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +171 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +6 -1
- package/dist/domain/core/no-multiple-declarators/types.js +1 -1
- package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -1
- package/dist/domain/core/no-useless-delegation/rule.js +12 -8
- package/dist/domain/core/prefer-interface-types/autofix.d.ts +15 -0
- package/dist/domain/core/prefer-interface-types/autofix.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/autofix.js +196 -0
- package/dist/domain/core/prefer-interface-types/declaration-names.d.ts +23 -0
- package/dist/domain/core/prefer-interface-types/declaration-names.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/declaration-names.js +139 -0
- package/dist/domain/core/prefer-interface-types/naming.d.ts +45 -0
- package/dist/domain/core/prefer-interface-types/naming.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/naming.js +179 -0
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +2 -0
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule-utilities.js +1 -1
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule.js +40 -16
- package/dist/domain/core/prefer-interface-types/types.d.ts +80 -0
- package/dist/domain/core/prefer-interface-types/types.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/types.js +2 -0
- package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +2 -7
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -6
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -5
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.js +6 -2
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +2 -6
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/reporting.js +34 -7
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/rule.js +6 -1
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +5 -3
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +4 -2
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.js +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +27 -3
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +29 -4
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +1 -1
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.helpers.js +1 -1
- package/dist/domain/testing/aaa/analyzer.super.js +10 -3
- package/dist/domain/testing/aaa/index.d.ts +1 -1
- package/dist/domain/testing/aaa/index.d.ts.map +1 -1
- package/dist/domain/testing/aaa/index.js +1 -1
- package/dist/domain/testing/aaa/types.d.ts +7 -9
- package/dist/domain/testing/aaa/types.d.ts.map +1 -1
- package/dist/domain/testing/aaa/types.js +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +2 -18
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +3 -2
- package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +44 -58
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/rule.js +4 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +10 -4
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +2 -6
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +10 -4
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +10 -5
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/rule.js +4 -13
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
- package/dist/infrastructure/codeperfect-plugin.js +2 -4
- package/dist/infrastructure/index.js +1 -1
- package/dist/infrastructure/presets.d.ts.map +1 -1
- package/dist/infrastructure/presets.js +2 -4
- package/package.json +24 -23
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +0 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +0 -134
- /package/dist/domain/architecture/{consistent-barrel-files → no-import-export-extensions}/no-import-export-extensions-rule.d.ts +0 -0
package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/** Set of disallowed module-specifier file extensions. */
|
|
2
|
+
const disallowedExtensions = new Set([
|
|
3
|
+
".cjs",
|
|
4
|
+
".cts",
|
|
5
|
+
".js",
|
|
6
|
+
".jsx",
|
|
7
|
+
".mjs",
|
|
8
|
+
".mts",
|
|
9
|
+
".ts",
|
|
10
|
+
".tsx",
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Gets the trailing extension from a module specifier string.
|
|
14
|
+
* @param source Module specifier text.
|
|
15
|
+
* @returns File extension including the leading dot when present.
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const extension = getTrailingExtension("./feature.ts");
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const getSpecifierEndIndex = (source) => {
|
|
22
|
+
const queryIndex = source.indexOf("?");
|
|
23
|
+
const hashIndex = source.indexOf("#");
|
|
24
|
+
const endIndexCandidates = [queryIndex, hashIndex].filter((index) => index >= 0);
|
|
25
|
+
return endIndexCandidates.length === 0
|
|
26
|
+
? source.length
|
|
27
|
+
: Math.min(...endIndexCandidates);
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Gets the trailing extension from a module specifier string.
|
|
31
|
+
* @param source Module specifier text.
|
|
32
|
+
* @returns File extension including the leading dot when present.
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const extension = getTrailingExtension("./feature.ts");
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
const getTrailingExtension = (source) => {
|
|
39
|
+
const endIndex = getSpecifierEndIndex(source);
|
|
40
|
+
const cleanedSource = source.slice(0, endIndex);
|
|
41
|
+
const lastSlashIndex = Math.max(cleanedSource.lastIndexOf("/"), cleanedSource.lastIndexOf("\\"));
|
|
42
|
+
const basename = cleanedSource.slice(lastSlashIndex + 1);
|
|
43
|
+
const dotIndex = basename.lastIndexOf(".");
|
|
44
|
+
if (dotIndex <= 0) {
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
return basename.slice(dotIndex).toLowerCase();
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Builds the fixed source literal text with the disallowed extension removed.
|
|
51
|
+
* @param sourceLiteral Source literal node to fix.
|
|
52
|
+
* @returns Fixed source text including surrounding quotes.
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const fixed = buildFixedSource(sourceLiteral);
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
const buildFixedSource = (sourceLiteral) => {
|
|
59
|
+
const raw = sourceLiteral.raw;
|
|
60
|
+
const value = sourceLiteral.value;
|
|
61
|
+
if (typeof value !== "string" || raw === void 0) {
|
|
62
|
+
return void 0;
|
|
63
|
+
}
|
|
64
|
+
const quoteChar = raw[0];
|
|
65
|
+
const endIndex = getSpecifierEndIndex(value);
|
|
66
|
+
const cleanedSource = value.slice(0, endIndex);
|
|
67
|
+
const suffix = value.slice(endIndex);
|
|
68
|
+
const lastSlashIndex = Math.max(cleanedSource.lastIndexOf("/"), cleanedSource.lastIndexOf("\\"));
|
|
69
|
+
const basename = cleanedSource.slice(lastSlashIndex + 1);
|
|
70
|
+
const dotIndex = basename.lastIndexOf(".");
|
|
71
|
+
if (dotIndex <= 0) {
|
|
72
|
+
return void 0;
|
|
73
|
+
}
|
|
74
|
+
const withoutExtension = cleanedSource.slice(0, cleanedSource.length - basename.length + dotIndex);
|
|
75
|
+
return `${String(quoteChar)}${withoutExtension}${suffix}${String(quoteChar)}`;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Checks whether a source literal should be reported.
|
|
79
|
+
* @param sourceLiteral Source literal node.
|
|
80
|
+
* @returns True when the source includes a disallowed file extension.
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const forbidden = hasDisallowedExtension(sourceLiteral);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
const hasDisallowedExtension = (sourceLiteral) => {
|
|
87
|
+
if (typeof sourceLiteral.value !== "string") {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const extension = getTrailingExtension(sourceLiteral.value);
|
|
91
|
+
return extension !== void 0 && disallowedExtensions.has(extension);
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Reports a statement when it references a source with disallowed extension.
|
|
95
|
+
* @param context Rule execution context.
|
|
96
|
+
* @param statement Statement that may include a source literal.
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* reportWhenSourceHasExtension(context, statement);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
const reportWhenSourceHasExtension = (context, statement) => {
|
|
103
|
+
const sourceLiteral = statement.source;
|
|
104
|
+
if (sourceLiteral === null || sourceLiteral === void 0) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!hasDisallowedExtension(sourceLiteral)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const fixedSource = buildFixedSource(sourceLiteral);
|
|
111
|
+
const fix = fixedSource === void 0
|
|
112
|
+
? void 0
|
|
113
|
+
: (fixer) => fixer.replaceText(sourceLiteral, fixedSource);
|
|
114
|
+
context.report({
|
|
115
|
+
...(fix !== void 0 && { fix }),
|
|
116
|
+
messageId: "unexpectedExtension",
|
|
117
|
+
node: sourceLiteral,
|
|
118
|
+
...(fix !== void 0 && { suggest: [{ fix, messageId: "removeExtension" }] }),
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Narrows one program statement to the source-bearing declarations this rule inspects.
|
|
123
|
+
* @param statement Program statement node.
|
|
124
|
+
* @returns Source-bearing declaration when supported.
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const declaration = asSourceDeclaration(statement);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
const asSourceDeclaration = (statement) => {
|
|
131
|
+
if (statement.type === "ExportAllDeclaration") {
|
|
132
|
+
return statement;
|
|
133
|
+
}
|
|
134
|
+
if (statement.type === "ExportNamedDeclaration") {
|
|
135
|
+
return statement;
|
|
136
|
+
}
|
|
137
|
+
if (statement.type === "ImportDeclaration") {
|
|
138
|
+
return statement;
|
|
139
|
+
}
|
|
140
|
+
return void 0;
|
|
141
|
+
};
|
|
142
|
+
/** ESLint rule that forbids import/export module specifiers with explicit file extensions. */
|
|
143
|
+
const noImportExportExtensionsRule = {
|
|
144
|
+
create: (context) => ({
|
|
145
|
+
Program(node) {
|
|
146
|
+
for (const statement of node.body) {
|
|
147
|
+
const declaration = asSourceDeclaration(statement);
|
|
148
|
+
if (declaration !== void 0) {
|
|
149
|
+
reportWhenSourceHasExtension(context, declaration);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
}),
|
|
154
|
+
meta: {
|
|
155
|
+
docs: {
|
|
156
|
+
description: "Forbid explicit file extensions in import/export module specifiers.",
|
|
157
|
+
recommended: false,
|
|
158
|
+
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-import-export-extensions.md",
|
|
159
|
+
},
|
|
160
|
+
fixable: "code",
|
|
161
|
+
hasSuggestions: true,
|
|
162
|
+
messages: {
|
|
163
|
+
removeExtension: "Remove the file extension from this module specifier.",
|
|
164
|
+
unexpectedExtension: "Avoid file extensions in import/export module specifiers.",
|
|
165
|
+
},
|
|
166
|
+
schema: [],
|
|
167
|
+
type: "problem",
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
export { noImportExportExtensionsRule };
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1wb3J0LWV4cG9ydC1leHRlbnNpb25zLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMvbm8taW1wb3J0LWV4cG9ydC1leHRlbnNpb25zLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsMERBQTBEO0FBQzFELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbkMsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQVUsRUFBRTtJQUN0RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQ3ZELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUN0QixDQUFDO0lBRUYsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU07UUFDZixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBYyxFQUFzQixFQUFFO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLE1B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Q0FBQyxJQUFJLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRiw4RkFBOEY7QUFDOUYsTUFBTSw0QkFBNEIsR0FBb0I7SUFDcEQsTUFBTSxFQUFFLENBQUMsT0FBeUIsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLElBQW9CO1lBQzFCLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsNEJBQTRCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0lBQ0YsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULHFFQUFxRTtZQUN2RSxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsOEZBQThGO1NBQ3BHO1FBQ0QsT0FBTyxFQUFFLE1BQU07UUFDZixjQUFjLEVBQUUsSUFBSTtRQUNwQixRQUFRLEVBQUU7WUFDUixlQUFlLEVBQUUsdURBQXVEO1lBQ3hFLG1CQUFtQixFQUNqQiwyREFBMkQ7U0FDOUQ7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG4vKiogU2V0IG9mIGRpc2FsbG93ZWQgbW9kdWxlLXNwZWNpZmllciBmaWxlIGV4dGVuc2lvbnMuICovXG5jb25zdCBkaXNhbGxvd2VkRXh0ZW5zaW9ucyA9IG5ldyBTZXQoW1xuICBcIi5janNcIixcbiAgXCIuY3RzXCIsXG4gIFwiLmpzXCIsXG4gIFwiLmpzeFwiLFxuICBcIi5tanNcIixcbiAgXCIubXRzXCIsXG4gIFwiLnRzXCIsXG4gIFwiLnRzeFwiLFxuXSk7XG5cbi8qKlxuICogR2V0cyB0aGUgdHJhaWxpbmcgZXh0ZW5zaW9uIGZyb20gYSBtb2R1bGUgc3BlY2lmaWVyIHN0cmluZy5cbiAqIEBwYXJhbSBzb3VyY2UgTW9kdWxlIHNwZWNpZmllciB0ZXh0LlxuICogQHJldHVybnMgRmlsZSBleHRlbnNpb24gaW5jbHVkaW5nIHRoZSBsZWFkaW5nIGRvdCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXh0ZW5zaW9uID0gZ2V0VHJhaWxpbmdFeHRlbnNpb24oXCIuL2ZlYXR1cmUudHNcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0U3BlY2lmaWVyRW5kSW5kZXggPSAoc291cmNlOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICBjb25zdCBxdWVyeUluZGV4ID0gc291cmNlLmluZGV4T2YoXCI/XCIpO1xuICBjb25zdCBoYXNoSW5kZXggPSBzb3VyY2UuaW5kZXhPZihcIiNcIik7XG4gIGNvbnN0IGVuZEluZGV4Q2FuZGlkYXRlcyA9IFtxdWVyeUluZGV4LCBoYXNoSW5kZXhdLmZpbHRlcihcbiAgICAoaW5kZXgpID0+IGluZGV4ID49IDAsXG4gICk7XG5cbiAgcmV0dXJuIGVuZEluZGV4Q2FuZGlkYXRlcy5sZW5ndGggPT09IDBcbiAgICA/IHNvdXJjZS5sZW5ndGhcbiAgICA6IE1hdGgubWluKC4uLmVuZEluZGV4Q2FuZGlkYXRlcyk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHRyYWlsaW5nIGV4dGVuc2lvbiBmcm9tIGEgbW9kdWxlIHNwZWNpZmllciBzdHJpbmcuXG4gKiBAcGFyYW0gc291cmNlIE1vZHVsZSBzcGVjaWZpZXIgdGV4dC5cbiAqIEByZXR1cm5zIEZpbGUgZXh0ZW5zaW9uIGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3Qgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4dGVuc2lvbiA9IGdldFRyYWlsaW5nRXh0ZW5zaW9uKFwiLi9mZWF0dXJlLnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFRyYWlsaW5nRXh0ZW5zaW9uID0gKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZW5kSW5kZXggPSBnZXRTcGVjaWZpZXJFbmRJbmRleChzb3VyY2UpO1xuICBjb25zdCBjbGVhbmVkU291cmNlID0gc291cmNlLnNsaWNlKDAsIGVuZEluZGV4KTtcbiAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSBNYXRoLm1heChcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiL1wiKSxcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiXFxcXFwiKSxcbiAgKTtcbiAgY29uc3QgYmFzZW5hbWUgPSBjbGVhbmVkU291cmNlLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XG4gIGNvbnN0IGRvdEluZGV4ID0gYmFzZW5hbWUubGFzdEluZGV4T2YoXCIuXCIpO1xuXG4gIGlmIChkb3RJbmRleCA8PSAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBiYXNlbmFtZS5zbGljZShkb3RJbmRleCkudG9Mb3dlckNhc2UoKTtcbn07XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmaXhlZCBzb3VyY2UgbGl0ZXJhbCB0ZXh0IHdpdGggdGhlIGRpc2FsbG93ZWQgZXh0ZW5zaW9uIHJlbW92ZWQuXG4gKiBAcGFyYW0gc291cmNlTGl0ZXJhbCBTb3VyY2UgbGl0ZXJhbCBub2RlIHRvIGZpeC5cbiAqIEByZXR1cm5zIEZpeGVkIHNvdXJjZSB0ZXh0IGluY2x1ZGluZyBzdXJyb3VuZGluZyBxdW90ZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ZWQgPSBidWlsZEZpeGVkU291cmNlKHNvdXJjZUxpdGVyYWwpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkRml4ZWRTb3VyY2UgPSAoXG4gIHNvdXJjZUxpdGVyYWw6IEVTVHJlZS5MaXRlcmFsLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmF3ID0gc291cmNlTGl0ZXJhbC5yYXc7XG4gIGNvbnN0IHZhbHVlID0gc291cmNlTGl0ZXJhbC52YWx1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8IHJhdyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHF1b3RlQ2hhciA9IHJhd1swXTtcbiAgY29uc3QgZW5kSW5kZXggPSBnZXRTcGVjaWZpZXJFbmRJbmRleCh2YWx1ZSk7XG4gIGNvbnN0IGNsZWFuZWRTb3VyY2UgPSB2YWx1ZS5zbGljZSgwLCBlbmRJbmRleCk7XG4gIGNvbnN0IHN1ZmZpeCA9IHZhbHVlLnNsaWNlKGVuZEluZGV4KTtcbiAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSBNYXRoLm1heChcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiL1wiKSxcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiXFxcXFwiKSxcbiAgKTtcbiAgY29uc3QgYmFzZW5hbWUgPSBjbGVhbmVkU291cmNlLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XG4gIGNvbnN0IGRvdEluZGV4ID0gYmFzZW5hbWUubGFzdEluZGV4T2YoXCIuXCIpO1xuXG4gIGlmIChkb3RJbmRleCA8PSAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHdpdGhvdXRFeHRlbnNpb24gPSBjbGVhbmVkU291cmNlLnNsaWNlKFxuICAgIDAsXG4gICAgY2xlYW5lZFNvdXJjZS5sZW5ndGggLSBiYXNlbmFtZS5sZW5ndGggKyBkb3RJbmRleCxcbiAgKTtcblxuICByZXR1cm4gYCR7U3RyaW5nKHF1b3RlQ2hhcil9JHt3aXRob3V0RXh0ZW5zaW9ufSR7c3VmZml4fSR7U3RyaW5nKHF1b3RlQ2hhcil9YDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBzb3VyY2UgbGl0ZXJhbCBzaG91bGQgYmUgcmVwb3J0ZWQuXG4gKiBAcGFyYW0gc291cmNlTGl0ZXJhbCBTb3VyY2UgbGl0ZXJhbCBub2RlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBzb3VyY2UgaW5jbHVkZXMgYSBkaXNhbGxvd2VkIGZpbGUgZXh0ZW5zaW9uLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZvcmJpZGRlbiA9IGhhc0Rpc2FsbG93ZWRFeHRlbnNpb24oc291cmNlTGl0ZXJhbCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzRGlzYWxsb3dlZEV4dGVuc2lvbiA9IChzb3VyY2VMaXRlcmFsOiBFU1RyZWUuTGl0ZXJhbCk6IGJvb2xlYW4gPT4ge1xuICBpZiAodHlwZW9mIHNvdXJjZUxpdGVyYWwudmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihzb3VyY2VMaXRlcmFsLnZhbHVlKTtcblxuICByZXR1cm4gZXh0ZW5zaW9uICE9PSB2b2lkIDAgJiYgZGlzYWxsb3dlZEV4dGVuc2lvbnMuaGFzKGV4dGVuc2lvbik7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgYSBzdGF0ZW1lbnQgd2hlbiBpdCByZWZlcmVuY2VzIGEgc291cmNlIHdpdGggZGlzYWxsb3dlZCBleHRlbnNpb24uXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHN0YXRlbWVudCBTdGF0ZW1lbnQgdGhhdCBtYXkgaW5jbHVkZSBhIHNvdXJjZSBsaXRlcmFsLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydFdoZW5Tb3VyY2VIYXNFeHRlbnNpb24oY29udGV4dCwgc3RhdGVtZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRXaGVuU291cmNlSGFzRXh0ZW5zaW9uID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBzdGF0ZW1lbnQ6XG4gICAgfCBFU1RyZWUuRXhwb3J0QWxsRGVjbGFyYXRpb25cbiAgICB8IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uXG4gICAgfCBFU1RyZWUuSW1wb3J0RGVjbGFyYXRpb24sXG4pOiB2b2lkID0+IHtcbiAgY29uc3Qgc291cmNlTGl0ZXJhbCA9IHN0YXRlbWVudC5zb3VyY2U7XG5cbiAgaWYgKHNvdXJjZUxpdGVyYWwgPT09IG51bGwgfHwgc291cmNlTGl0ZXJhbCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFoYXNEaXNhbGxvd2VkRXh0ZW5zaW9uKHNvdXJjZUxpdGVyYWwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZml4ZWRTb3VyY2UgPSBidWlsZEZpeGVkU291cmNlKHNvdXJjZUxpdGVyYWwpO1xuXG4gIGNvbnN0IGZpeCA9XG4gICAgZml4ZWRTb3VyY2UgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4ID0+XG4gICAgICAgICAgZml4ZXIucmVwbGFjZVRleHQoc291cmNlTGl0ZXJhbCwgZml4ZWRTb3VyY2UpO1xuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICAuLi4oZml4ICE9PSB2b2lkIDAgJiYgeyBmaXggfSksXG4gICAgbWVzc2FnZUlkOiBcInVuZXhwZWN0ZWRFeHRlbnNpb25cIixcbiAgICBub2RlOiBzb3VyY2VMaXRlcmFsLFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IHN1Z2dlc3Q6IFt7IGZpeCwgbWVzc2FnZUlkOiBcInJlbW92ZUV4dGVuc2lvblwiIH1dIH0pLFxuICB9KTtcbn07XG5cbi8qKlxuICogTmFycm93cyBvbmUgcHJvZ3JhbSBzdGF0ZW1lbnQgdG8gdGhlIHNvdXJjZS1iZWFyaW5nIGRlY2xhcmF0aW9ucyB0aGlzIHJ1bGUgaW5zcGVjdHMuXG4gKiBAcGFyYW0gc3RhdGVtZW50IFByb2dyYW0gc3RhdGVtZW50IG5vZGUuXG4gKiBAcmV0dXJucyBTb3VyY2UtYmVhcmluZyBkZWNsYXJhdGlvbiB3aGVuIHN1cHBvcnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBhc1NvdXJjZURlY2xhcmF0aW9uID0gKFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTpcbiAgfCBFU1RyZWUuRXhwb3J0QWxsRGVjbGFyYXRpb25cbiAgfCBFU1RyZWUuRXhwb3J0TmFtZWREZWNsYXJhdGlvblxuICB8IEVTVHJlZS5JbXBvcnREZWNsYXJhdGlvblxuICB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiKSB7XG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIpIHtcbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIpIHtcbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbi8qKiBFU0xpbnQgcnVsZSB0aGF0IGZvcmJpZHMgaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycyB3aXRoIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9ucy4gKi9cbmNvbnN0IG5vSW1wb3J0RXhwb3J0RXh0ZW5zaW9uc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlOiAoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyID0+ICh7XG4gICAgUHJvZ3JhbShub2RlOiBFU1RyZWUuUHJvZ3JhbSk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygbm9kZS5ib2R5KSB7XG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gYXNTb3VyY2VEZWNsYXJhdGlvbihzdGF0ZW1lbnQpO1xuXG4gICAgICAgIGlmIChkZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmVwb3J0V2hlblNvdXJjZUhhc0V4dGVuc2lvbihjb250ZXh0LCBkZWNsYXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9KSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZvcmJpZCBleHBsaWNpdCBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLWltcG9ydC1leHBvcnQtZXh0ZW5zaW9ucy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgaGFzU3VnZ2VzdGlvbnM6IHRydWUsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlbW92ZUV4dGVuc2lvbjogXCJSZW1vdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIGZyb20gdGhpcyBtb2R1bGUgc3BlY2lmaWVyLlwiLFxuICAgICAgdW5leHBlY3RlZEV4dGVuc2lvbjpcbiAgICAgICAgXCJBdm9pZCBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycy5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub0ltcG9ydEV4cG9ydEV4dGVuc2lvbnNSdWxlIH07XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAmFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAwBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -42,6 +42,9 @@ const reportVariableDeclaration = (context, node) => {
|
|
|
42
42
|
...(fix !== void 0 && { fix }),
|
|
43
43
|
messageId: "singleDeclarator",
|
|
44
44
|
node: node,
|
|
45
|
+
...(fix !== void 0 && {
|
|
46
|
+
suggest: [{ fix, messageId: "splitDeclaration" }],
|
|
47
|
+
}),
|
|
45
48
|
});
|
|
46
49
|
};
|
|
47
50
|
/** ESLint rule implementation for single-declarator variable statements. */
|
|
@@ -58,12 +61,14 @@ const noMultipleDeclaratorsRule = {
|
|
|
58
61
|
url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-multiple-declarators.md",
|
|
59
62
|
},
|
|
60
63
|
fixable: "code",
|
|
64
|
+
hasSuggestions: true,
|
|
61
65
|
messages: {
|
|
62
66
|
singleDeclarator: "Declare exactly one variable per declaration statement.",
|
|
67
|
+
splitDeclaration: "Split this declaration into separate single-variable statements.",
|
|
63
68
|
},
|
|
64
69
|
schema: [],
|
|
65
70
|
type: "suggestion",
|
|
66
71
|
},
|
|
67
72
|
};
|
|
68
73
|
export { noMultipleDeclaratorsRule };
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUIsRUFBWSxFQUFFLENBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsT0FBeUIsRUFDekIsSUFBNkIsRUFDdkIsRUFBRTtJQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsSUFBNEI7UUFDbEMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztTQUNsRCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sRUFBRSxDQUFDLE9BQXlCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFtQixFQUFFLENBQUMsSUFBZSxFQUFRLEVBQUU7WUFDN0MseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQStCLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnRkFBZ0Y7WUFDbEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsY0FBYyxFQUFFLElBQUk7UUFDcEIsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QseURBQXlEO1lBQzNELGdCQUFnQixFQUNkLGtFQUFrRTtTQUNyRTtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgU291cmNlQ29kZUFjY2VzcyxcbiAgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGJ1aWxkUmVwbGFjZW1lbnQsXG4gIGNhbkZpeCxcbiAgZ2V0UmFuZ2VkRGVjbGFyYXRpb25zLFxuICBnZXRTb3VyY2VDb2RlLFxuICBnZXRTb3VyY2VUZXh0LFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgaGFzRml4RGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhdXRvZml4IGNhbGxiYWNrIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGNhbiBiZSByZXdyaXR0ZW4gc2FmZWx5LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBEZWNsYXJhdG9ycyBmcm9tIHRoZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgYWNjZXNzIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBGaXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgc2FmZSB0byBzcGxpdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNyZWF0ZURlY2xhcmF0aW9uRml4ID0gKFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgZGVjbGFyYXRpb25zOiByZWFkb25seSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10sXG4gIHNvdXJjZUNvZGU6IFNvdXJjZUNvZGVBY2Nlc3MsXG4pOiAoKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikgPT4gUnVsZS5GaXgpIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFjYW5GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KSB8fCAhaGFzRml4RGF0YShub2RlKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCByYW5nZWREZWNsYXJhdGlvbnMgPSBnZXRSYW5nZWREZWNsYXJhdGlvbnMoZGVjbGFyYXRpb25zKTtcbiAgaWYgKHJhbmdlZERlY2xhcmF0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT5cbiAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFxuICAgICAgbm9kZS5yYW5nZSxcbiAgICAgIGJ1aWxkUmVwbGFjZW1lbnQobm9kZSwgcmFuZ2VkRGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKSxcbiAgICApO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGRlY2xhcmF0aW9ucyB0aGF0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBkZWNsYXJhdG9yLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gcmVwb3J0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydFZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgZGVjbGFyYXRpb25zID0gbm9kZS5kZWNsYXJhdGlvbnMgPz8gW107XG5cbiAgaWYgKGRlY2xhcmF0aW9ucy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBnZXRTb3VyY2VDb2RlKGNvbnRleHQpO1xuICBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICAuLi4oZml4ICE9PSB2b2lkIDAgJiYgeyBmaXggfSksXG4gICAgbWVzc2FnZUlkOiBcInNpbmdsZURlY2xhcmF0b3JcIixcbiAgICBub2RlOiBub2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7XG4gICAgICBzdWdnZXN0OiBbeyBmaXgsIG1lc3NhZ2VJZDogXCJzcGxpdERlY2xhcmF0aW9uXCIgfV0sXG4gICAgfSksXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgIH0sXG4gIH0pLFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgaGFzU3VnZ2VzdGlvbnM6IHRydWUsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgICAgc3BsaXREZWNsYXJhdGlvbjpcbiAgICAgICAgXCJTcGxpdCB0aGlzIGRlY2xhcmF0aW9uIGludG8gc2VwYXJhdGUgc2luZ2xlLXZhcmlhYmxlIHN0YXRlbWVudHMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZSB9O1xuIl19
|
|
@@ -38,4 +38,4 @@ function isRange(value) {
|
|
|
38
38
|
value[0] <= value[1]);
|
|
39
39
|
}
|
|
40
40
|
export { hasFixData, hasRange };
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0VBOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxVQUFVLENBQ2pCLElBQTZCO0lBRTdCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUEwQjtJQUMxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RCxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUHJvdmlkZXMgdGhlIG1pbmltYWwgbm9kZSBzaGFwZSB1c2VkIGJ5IHRoZSBydWxlLiAqL1xuaW50ZXJmYWNlIEJhc2VOb2RlIHtcbiAgLyoqIFBhcmVudCBub2RlIHVzZWQgdG8gaW5zcGVjdCBzdXJyb3VuZGluZyBzeW50YXguICovXG4gIHBhcmVudD86IEJhc2VOb2RlO1xuICAvKiogU291cmNlIHJhbmdlIHVzZWQgYnkgYXV0b2ZpeCBsb2dpYy4gKi9cbiAgcmFuZ2U/OiBSYW5nZTtcbiAgLyoqIEVTVHJlZSBub2RlIHR5cGUuICovXG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBkZWNsYXJhdGlvbiB0aGF0IGNhbiBiZSByZXdyaXR0ZW4gYnkgdGhlIGZpeGVyLiAqL1xuaW50ZXJmYWNlIEZpeGFibGVWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSBleHRlbmRzIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIHtcbiAgLyoqIENvbmZpcm1lZCBkZWNsYXJhdGlvbiBrZXl3b3JkLiAqL1xuICBraW5kOiBzdHJpbmc7XG4gIC8qKiBDb25maXJtZWQgc291cmNlIHJhbmdlIGZvciB0aGUgZnVsbCBkZWNsYXJhdGlvbi4gKi9cbiAgcmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBmb3IuLi5pbmAgb3IgYGZvci4uLm9mYCBzdGF0ZW1lbnQuICovXG5pbnRlcmZhY2UgRm9ySW5Pck9mU3RhdGVtZW50Tm9kZSBleHRlbmRzIEJhc2VOb2RlIHtcbiAgLyoqIExlZnQtaGFuZCBpbml0aWFsaXplciBvZiB0aGUgbG9vcC4gKi9cbiAgbGVmdD86IEJhc2VOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzaWMgYGZvcmAgc3RhdGVtZW50LiAqL1xuaW50ZXJmYWNlIEZvclN0YXRlbWVudE5vZGUgZXh0ZW5kcyBCYXNlTm9kZSB7XG4gIC8qKiBJbml0aWFsaXplciBzZWN0aW9uIG9mIHRoZSBsb29wLiAqL1xuICBpbml0PzogQmFzZU5vZGUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHNvdXJjZSByYW5nZSB3aXRoaW4gdGhlIG9yaWdpbmFsIGZpbGUuICovXG50eXBlIFJhbmdlID0gW251bWJlciwgbnVtYmVyXTtcblxuLyoqIFJlcHJlc2VudHMgYSBub2RlIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cbmludGVyZmFjZSBSYW5nZWROb2RlIGV4dGVuZHMgQmFzZU5vZGUge1xuICAvKiogQ29uZmlybWVkIHNvdXJjZSByYW5nZSBmb3IgdGhlIG5vZGUuICovXG4gIHJhbmdlOiBSYW5nZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBkZWNsYXJhdG9yIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cbmludGVyZmFjZSBSYW5nZWRWYXJpYWJsZURlY2xhcmF0b3JOb2RlIGV4dGVuZHMgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSB7XG4gIC8qKiBDb25maXJtZWQgc291cmNlIHJhbmdlIGZvciB0aGUgZGVjbGFyYXRvci4gKi9cbiAgcmFuZ2U6IFJhbmdlO1xufVxuXG4vKiogRXhwb3NlcyB0aGUgc291cmNlIGFjY2VzcyBtZXRob2RzIHVzZWQgYnkgdGhlIHJ1bGUuICovXG5pbnRlcmZhY2UgU291cmNlQ29kZUFjY2VzcyB7XG4gIC8qKiBSZXR1cm5zIHRoZSBzb3VyY2UgdGV4dCBmb3IgYSBub2RlIG9yIHRoZSBmdWxsIGZpbGUgd2hlbiBvbWl0dGVkLiAqL1xuICBnZXRUZXh0OiAobm9kZT86IEJhc2VOb2RlKSA9PiBzdHJpbmc7XG4gIC8qKiBSYXcgc291cmNlIHRleHQgd2hlbiBhdmFpbGFibGUgZnJvbSBFU0xpbnQuICovXG4gIHRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gc3RhdGVtZW50LiAqL1xuaW50ZXJmYWNlIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIGV4dGVuZHMgQmFzZU5vZGUge1xuICAvKiogSW5kaXZpZHVhbCBkZWNsYXJhdG9ycyBjb250YWluZWQgaW4gdGhlIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbnM/OiBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW107XG4gIC8qKiBUeXBlU2NyaXB0IGFtYmllbnQgZGVjbGFyYXRpb24gbW9kaWZpZXIuICovXG4gIGRlY2xhcmU/OiBib29sZWFuO1xuICAvKiogRGVjbGFyYXRpb24ga2luZCBzdWNoIGFzIGBjb25zdGAsIGBsZXRgLCBvciBgdmFyYC4gKi9cbiAga2luZD86IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cbnR5cGUgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSA9IEJhc2VOb2RlO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGRlY2xhcmF0aW9uIGNvbnRhaW5zIHRoZSBkYXRhIG5lZWRlZCBmb3IgYXV0b2ZpeC5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIHRvIHZhbGlkYXRlLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gZXhwb3NlcyBib3RoIGBraW5kYCBhbmQgYHJhbmdlYC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhhYmxlID0gaGFzRml4RGF0YSh7IGtpbmQ6IFwiY29uc3RcIiwgcmFuZ2U6IFswLCA1XSwgdHlwZTogXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIgfSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaGFzRml4RGF0YShcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiBub2RlIGlzIEZpeGFibGVWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSB7XG4gIHJldHVybiBoYXNSYW5nZShub2RlKSAmJiBcImtpbmRcIiBpbiBub2RlICYmIHR5cGVvZiBub2RlLmtpbmQgPT09IFwic3RyaW5nXCI7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbm9kZSBoYXMgYSBjb21wbGV0ZSByYW5nZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBub2RlIGV4cG9zZXMgYSB2YWxpZCB0d28taXRlbSByYW5nZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByYW5nZWQgPSBoYXNSYW5nZSh7IHJhbmdlOiBbMCwgMV0sIHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGhhc1JhbmdlKG5vZGU6IEJhc2VOb2RlIHwgdW5kZWZpbmVkKTogbm9kZSBpcyBSYW5nZWROb2RlIHtcbiAgcmV0dXJuIGlzUmFuZ2Uobm9kZT8ucmFuZ2UpO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBjb21wbGV0ZSBzb3VyY2UgcmFuZ2UuXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIHJhbmdlIHZhbHVlLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSB2YWxpZCBzb3VyY2UgcmFuZ2UgdHVwbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdmFsaWRSYW5nZSA9IGlzUmFuZ2UoWzAsIDFdKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc1JhbmdlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmFuZ2Uge1xuICByZXR1cm4gKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUubGVuZ3RoID09PSAyICYmXG4gICAgdmFsdWUuZXZlcnkoKHBhcnQpID0+IE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhcnQpICYmIHBhcnQgPj0gMCkgJiZcbiAgICB2YWx1ZVswXSA8PSB2YWx1ZVsxXVxuICApO1xufVxuXG5leHBvcnQgeyBoYXNGaXhEYXRhLCBoYXNSYW5nZSB9O1xuZXhwb3J0IHR5cGUge1xuICBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIEZvckluT3JPZlN0YXRlbWVudE5vZGUsXG4gIEZvclN0YXRlbWVudE5vZGUsXG4gIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG4gIFNvdXJjZUNvZGVBY2Nlc3MsXG4gIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBWYXJpYWJsZURlY2xhcmF0b3JOb2RlLFxufTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA6OnC,kFAAkF;AAClF,QAAA,MAAM,uBAAuB,EAAE,IAAI,CAAC,UAqCnC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -106,16 +106,15 @@ const forwardsParameter = (argument, parameter) => {
|
|
|
106
106
|
return getIdentifierName(argument) === parameter.name;
|
|
107
107
|
};
|
|
108
108
|
/**
|
|
109
|
-
* Determines whether a
|
|
110
|
-
* @param
|
|
111
|
-
* @returns Whether the
|
|
109
|
+
* Determines whether a node is a plain named reference.
|
|
110
|
+
* @param node Candidate receiver node to inspect.
|
|
111
|
+
* @returns Whether the node is a plain identifier reference.
|
|
112
112
|
* @example
|
|
113
113
|
* ```typescript
|
|
114
|
-
* const
|
|
114
|
+
* const isNamed = isNamedReceiver({ type: "Identifier" });
|
|
115
115
|
* ```
|
|
116
116
|
*/
|
|
117
|
-
const
|
|
118
|
-
asNode(callee["object"])?.type === "Literal";
|
|
117
|
+
const isNamedReceiver = (node) => node?.type === "Identifier";
|
|
119
118
|
/**
|
|
120
119
|
* Determines whether a function does nothing except directly call another function.
|
|
121
120
|
* @param functionNode Function node to inspect.
|
|
@@ -135,7 +134,12 @@ const isUselessDelegation = (functionNode, functionName) => {
|
|
|
135
134
|
parameters === void 0 ||
|
|
136
135
|
arguments_ === void 0 ||
|
|
137
136
|
callee === void 0 ||
|
|
138
|
-
|
|
137
|
+
// A method call is only a replaceable delegation when its receiver is a
|
|
138
|
+
// plain named reference (e.g. `service.run`). Expression receivers such
|
|
139
|
+
// as type assertions, calls, or literals cannot be inlined at the call
|
|
140
|
+
// site, so the wrapper is not useless.
|
|
141
|
+
(callee.type === "MemberExpression" &&
|
|
142
|
+
!isNamedReceiver(asNode(callee["object"]))) ||
|
|
139
143
|
getIdentifierName(callee) === functionName ||
|
|
140
144
|
arguments_.length !== parameters.length) {
|
|
141
145
|
return false;
|
|
@@ -197,4 +201,4 @@ const noUselessDelegationRule = {
|
|
|
197
201
|
},
|
|
198
202
|
};
|
|
199
203
|
export { noUselessDelegationRule };
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby11c2VsZXNzLWRlbGVnYXRpb24vcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBb0IsRUFBRSxDQUNsRCxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksS0FBSztJQUM1RCxDQUFDLENBQUUsS0FBYztJQUNqQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFzQixFQUFFLENBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBRSxLQUFnQjtJQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFzQixFQUFzQixFQUFFLENBQ3ZFLElBQUksRUFBRSxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVE7SUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDZCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxZQUFrQixFQUFvQixFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxPQUFP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Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbi8qKiBPbmUgbmFtZWQgcGFyYW1ldGVyIGFuZCB3aGV0aGVyIGl0IG11c3QgYmUgc3ByZWFkIGF0IHRoZSBjYWxsIHNpdGUuICovXG5pbnRlcmZhY2UgRGVsZWdhdGVkUGFyYW1ldGVyIHtcbiAgLyoqIFdoZXRoZXIgdGhpcyBwYXJhbWV0ZXIgdXNlcyByZXN0IHN5bnRheC4gKi9cbiAgaXNSZXN0OiBib29sZWFuO1xuICAvKiogUGFyYW1ldGVyIGlkZW50aWZpZXIgbmFtZS4gKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogTWluaW1hbCBFU1RyZWUgbm9kZSBzaGFwZSB1c2VkIHRvIGluc3BlY3QgcGFzcy10aHJvdWdoIGZ1bmN0aW9ucy4gKi9cbmludGVyZmFjZSBOb2RlIHtcbiAgLyoqIER5bmFtaWNhbGx5IHJlYWQgY2hpbGQgbm9kZXMgYW5kIHBhcnNlci1zcGVjaWZpYyBwcm9wZXJ0aWVzLiAqL1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAvKiogV2hldGhlciB0aGUgZnVuY3Rpb24gaXMgYXN5bmNocm9ub3VzLiAqL1xuICBhc3luYz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci4gKi9cbiAgZ2VuZXJhdG9yPzogYm9vbGVhbjtcbiAgLyoqIEVTVHJlZSBkaXNjcmltaW5hdG9yLiAqL1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBub2RlIHZhbHVlIHdoZW4gaXQgaXMgYW4gRVNUcmVlIG5vZGUuXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIEFTVCB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhbiBFU1RyZWUgbm9kZSB3aGVuIGl0IGhhcyBhIHR5cGUgZGlzY3JpbWluYXRvci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBub2RlID0gYXNOb2RlKHsgdHlwZTogXCJJZGVudGlmaWVyXCIgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYXNOb2RlID0gKHZhbHVlOiB1bmtub3duKTogTm9kZSB8IHVuZGVmaW5lZCA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgXCJ0eXBlXCIgaW4gdmFsdWVcbiAgICA/ICh2YWx1ZSBhcyBOb2RlKVxuICAgIDogdm9pZCAwO1xuXG4vKipcbiAqIFJlc29sdmVzIGEgbm9kZSBhcnJheSB3aGlsZSByZWplY3RpbmcgbWFsZm9ybWVkIEFTVCBkYXRhLlxuICogQHBhcmFtIHZhbHVlIENhbmRpZGF0ZSBBU1QgdmFsdWUuXG4gKiBAcmV0dXJucyBBU1Qgbm9kZXMgd2hlbiBldmVyeSBhcnJheSBpdGVtIGlzIGEgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBub2RlcyA9IGFzTm9kZUFycmF5KFt7IHR5cGU6IFwiSWRlbnRpZmllclwiIH1dKTtcbiAqIGBgYFxuICovXG5jb25zdCBhc05vZGVBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IE5vZGVbXSB8IHVuZGVmaW5lZCA9PlxuICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeSgoaXRlbSkgPT4gYXNOb2RlKGl0ZW0pICE9PSB2b2lkIDApXG4gICAgPyAodmFsdWUgYXMgTm9kZVtdKVxuICAgIDogdm9pZCAwO1xuXG4vKipcbiAqIFJlYWRzIGFuIGlkZW50aWZpZXIgbmFtZSBmcm9tIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSBpZGVudGlmaWVyIG5vZGUuXG4gKiBAcmV0dXJucyBJZGVudGlmaWVyIG5hbWUgd2hlbiB0aGUgbm9kZSBpcyBhbiBpZGVudGlmaWVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWUgPSBnZXRJZGVudGlmaWVyTmFtZSh7IG5hbWU6IFwicnVuXCIsIHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldElkZW50aWZpZXJOYW1lID0gKG5vZGU6IE5vZGUgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgbm9kZT8udHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiYgdHlwZW9mIG5vZGVbXCJuYW1lXCJdID09PSBcInN0cmluZ1wiXG4gICAgPyBub2RlW1wibmFtZVwiXVxuICAgIDogdm9pZCAwO1xuXG4vKipcbiAqIEdldHMgdGhlIGNhbGxlZCBleHByZXNzaW9uIGZyb20gYSBmdW5jdGlvbiB3aXRoIG9uZSByZXR1cm4gc3RhdGVtZW50LlxuICogQHBhcmFtIGZ1bmN0aW9uTm9kZSBGdW5jdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0bHkgcmV0dXJuZWQgY2FsbCBleHByZXNzaW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYWxsID0gZ2V0RGVsZWdhdGVkQ2FsbChmdW5jdGlvbk5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldERlbGVnYXRlZENhbGwgPSAoZnVuY3Rpb25Ob2RlOiBOb2RlKTogTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChmdW5jdGlvbk5vZGUuYXN5bmMgPT09IHRydWUgfHwgZnVuY3Rpb25Ob2RlLmdlbmVyYXRvciA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBib2R5ID0gYXNOb2RlKGZ1bmN0aW9uTm9kZVtcImJvZHlcIl0pO1xuICBpZiAoYm9keSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChib2R5LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIikge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgY29uc3Qgc3RhdGVtZW50cyA9IGFzTm9kZUFycmF5KGJvZHlbXCJib2R5XCJdKTtcbiAgaWYgKGJvZHkudHlwZSAhPT0gXCJCbG9ja1N0YXRlbWVudFwiIHx8IHN0YXRlbWVudHM/Lmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCByZXR1cm5TdGF0ZW1lbnQgPSBzdGF0ZW1lbnRzWzBdO1xuICByZXR1cm4gcmV0dXJuU3RhdGVtZW50Py50eXBlID09PSBcIlJldHVyblN0YXRlbWVudFwiXG4gICAgPyBhc05vZGUocmV0dXJuU3RhdGVtZW50W1wiYXJndW1lbnRcIl0pXG4gICAgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEdldHMgcGFyYW1ldGVyIG5hbWVzIGFuZCB3aGV0aGVyIGVhY2ggcGFyYW1ldGVyIGlzIGEgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIE5hbWVkIHBhcmFtZXRlciBtZXRhZGF0YSB3aGVuIGV2ZXJ5IHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcGFyYW1ldGVycyA9IGdldFBhcmFtZXRlcnMoZnVuY3Rpb25Ob2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJzID0gKFxuICBmdW5jdGlvbk5vZGU6IE5vZGUsXG4pOiBEZWxlZ2F0ZWRQYXJhbWV0ZXJbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHBhcmFtZXRlcnMgPSBhc05vZGVBcnJheShmdW5jdGlvbk5vZGVbXCJwYXJhbXNcIl0pO1xuICBpZiAocGFyYW1ldGVycyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRGVsZWdhdGVkUGFyYW1ldGVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgcGFyYW1ldGVycykge1xuICAgIGNvbnN0IGlzUmVzdCA9IHBhcmFtZXRlci50eXBlID09PSBcIlJlc3RFbGVtZW50XCI7XG4gICAgY29uc3QgbmFtZSA9IGdldElkZW50aWZpZXJOYW1lKFxuICAgICAgaXNSZXN0ID8gYXNOb2RlKHBhcmFtZXRlcltcImFyZ3VtZW50XCJdKSA6IHBhcmFtZXRlcixcbiAgICApO1xuICAgIGlmIChuYW1lID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2goeyBpc1Jlc3QsIG5hbWUgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgb25lIGNhbGwgYXJndW1lbnQgZm9yd2FyZHMgaXRzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyLlxuICogQHBhcmFtIGFyZ3VtZW50IENhbGwgYXJndW1lbnQgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXIgQ29ycmVzcG9uZGluZyBmdW5jdGlvbiBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBhcmd1bWVudCBmb3J3YXJkcyB0aGUgcGFyYW1ldGVyIHdpdGhvdXQgY2hhbmdlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZvcndhcmRzID0gZm9yd2FyZHNQYXJhbWV0ZXIoYXJndW1lbnQsIHBhcmFtZXRlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZm9yd2FyZHNQYXJhbWV0ZXIgPSAoXG4gIGFyZ3VtZW50OiBOb2RlLFxuICBwYXJhbWV0ZXI6IERlbGVnYXRlZFBhcmFtZXRlcixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAocGFyYW1ldGVyLmlzUmVzdCkge1xuICAgIHJldHVybiAoXG4gICAgICBhcmd1bWVudC50eXBlID09PSBcIlNwcmVhZEVsZW1lbnRcIiAmJlxuICAgICAgZ2V0SWRlbnRpZmllck5hbWUoYXNOb2RlKGFyZ3VtZW50W1wiYXJndW1lbnRcIl0pKSA9PT0gcGFyYW1ldGVyLm5hbWVcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGdldElkZW50aWZpZXJOYW1lKGFyZ3VtZW50KSA9PT0gcGFyYW1ldGVyLm5hbWU7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGNhbGwgaW52b2tlcyBhIG1ldGhvZCBvbiBhIGxpdGVyYWwgdmFsdWUuXG4gKiBAcGFyYW0gY2FsbGVlIENhbGwgdGFyZ2V0IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB0YXJnZXQgaXMgYSBtZW1iZXIgYWNjZXNzIG9uIGEgbGl0ZXJhbCByZWNlaXZlci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpc0xpdGVyYWxDYWxsID0gaXNMaXRlcmFsTWVtYmVyQ2FsbChjYWxsZWUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTGl0ZXJhbE1lbWJlckNhbGwgPSAoY2FsbGVlOiBOb2RlKTogYm9vbGVhbiA9PlxuICBjYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgYXNOb2RlKGNhbGxlZVtcIm9iamVjdFwiXSk/LnR5cGUgPT09IFwiTGl0ZXJhbFwiO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBleGNlcHQgZGlyZWN0bHkgY2FsbCBhbm90aGVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIGZ1bmN0aW9uTm9kZSBGdW5jdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIERlY2xhcmVkIHdyYXBwZXIgZnVuY3Rpb24gbmFtZS5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIGFuIGV4YWN0IHN5bmNocm9ub3VzIGRlbGVnYXRpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaXNEZWxlZ2F0aW9uID0gaXNVc2VsZXNzRGVsZWdhdGlvbihmdW5jdGlvbk5vZGUsIFwicnVuXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVXNlbGVzc0RlbGVnYXRpb24gPSAoXG4gIGZ1bmN0aW9uTm9kZTogTm9kZSxcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FsbCA9IGdldERlbGVnYXRlZENhbGwoZnVuY3Rpb25Ob2RlKTtcbiAgY29uc3QgcGFyYW1ldGVycyA9IGdldFBhcmFtZXRlcnMoZnVuY3Rpb25Ob2RlKTtcbiAgY29uc3QgYXJndW1lbnRzXyA9IGFzTm9kZUFycmF5KGNhbGw/LltcImFyZ3VtZW50c1wiXSk7XG4gIGNvbnN0IGNhbGxlZSA9IGFzTm9kZShjYWxsPy5bXCJjYWxsZWVcIl0pO1xuXG4gIGlmIChcbiAgICBjYWxsPy50eXBlICE9PSBcIkNhbGxFeHByZXNzaW9uXCIgfHxcbiAgICBwYXJhbWV0ZXJzID09PSB2b2lkIDAgfHxcbiAgICBhcmd1bWVudHNfID09PSB2b2lkIDAgfHxcbiAgICBjYWxsZWUgPT09IHZvaWQgMCB8fFxuICAgIGlzTGl0ZXJhbE1lbWJlckNhbGwoY2FsbGVlKSB8fFxuICAgIGdldElkZW50aWZpZXJOYW1lKGNhbGxlZSkgPT09IGZ1bmN0aW9uTmFtZSB8fFxuICAgIGFyZ3VtZW50c18ubGVuZ3RoICE9PSBwYXJhbWV0ZXJzLmxlbmd0aFxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRzXy5ldmVyeSgoYXJndW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyID0gcGFyYW1ldGVyc1tpbmRleF07XG4gICAgcmV0dXJuIHBhcmFtZXRlciAhPT0gdm9pZCAwICYmIGZvcndhcmRzUGFyYW1ldGVyKGFyZ3VtZW50LCBwYXJhbWV0ZXIpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmVwb3J0cyBhIGZ1bmN0aW9uIHdoZW4gaXQgaXMgYSBuby1vcCBkZWxlZ2F0aW9uLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBmdW5jdGlvbk5vZGUgRnVuY3Rpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIG5hbWVOb2RlIERlY2xhcmVkIHdyYXBwZXIgbmFtZSBub2RlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydElmVXNlbGVzc0RlbGVnYXRpb24oY29udGV4dCwgZnVuY3Rpb25Ob2RlLCBuYW1lTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0SWZVc2VsZXNzRGVsZWdhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZnVuY3Rpb25Ob2RlOiBOb2RlLFxuICBuYW1lTm9kZTogTm9kZSB8IHVuZGVmaW5lZCxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBmdW5jdGlvbk5hbWUgPSBnZXRJZGVudGlmaWVyTmFtZShuYW1lTm9kZSk7XG4gIGlmIChcbiAgICBmdW5jdGlvbk5hbWUgPT09IHZvaWQgMCB8fFxuICAgICFpc1VzZWxlc3NEZWxlZ2F0aW9uKGZ1bmN0aW9uTm9kZSwgZnVuY3Rpb25OYW1lKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgbWVzc2FnZUlkOiBcInVzZWxlc3NEZWxlZ2F0aW9uXCIsXG4gICAgbm9kZTogbmFtZU5vZGUgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBvbmx5IGZvcndhcmQgdGhlaXIgYXJndW1lbnRzLiAqL1xuY29uc3Qgbm9Vc2VsZXNzRGVsZWdhdGlvblJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlOiAoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyID0+ICh7XG4gICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgZnVuY3Rpb25Ob2RlID0gbm9kZSBhcyB1bmtub3duIGFzIE5vZGU7XG4gICAgICByZXBvcnRJZlVzZWxlc3NEZWxlZ2F0aW9uKFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBmdW5jdGlvbk5vZGUsXG4gICAgICAgIGFzTm9kZShmdW5jdGlvbk5vZGVbXCJpZFwiXSksXG4gICAgICApO1xuICAgIH0sXG4gICAgVmFyaWFibGVEZWNsYXJhdG9yOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBkZWNsYXJhdG9yID0gbm9kZSBhcyB1bmtub3duIGFzIE5vZGU7XG4gICAgICBjb25zdCBpbml0aWFsaXplciA9IGFzTm9kZShkZWNsYXJhdG9yW1wiaW5pdFwiXSk7XG4gICAgICBpZiAoXG4gICAgICAgIGluaXRpYWxpemVyPy50eXBlICE9PSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCIgJiZcbiAgICAgICAgaW5pdGlhbGl6ZXI/LnR5cGUgIT09IFwiRnVuY3Rpb25FeHByZXNzaW9uXCJcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlcG9ydElmVXNlbGVzc0RlbGVnYXRpb24oY29udGV4dCwgaW5pdGlhbGl6ZXIsIGFzTm9kZShkZWNsYXJhdG9yW1wiaWRcIl0pKTtcbiAgICB9LFxuICB9KSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkRpc2FsbG93IG5hbWVkIGZ1bmN0aW9ucyB0aGF0IG9ubHkgZGVsZWdhdGUgZGlyZWN0bHkgdG8gYW5vdGhlciBjYWxsLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8tdXNlbGVzcy1kZWxlZ2F0aW9uLm1kXCIsXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgdXNlbGVzc0RlbGVnYXRpb246XG4gICAgICAgIFwiVGhpcyBmdW5jdGlvbiBvbmx5IGRlbGVnYXRlcyB0byBhbm90aGVyIGNhbGw7IHJlbW92ZSB0aGUgd3JhcHBlciBvciBjYWxsIHRoZSB0YXJnZXQgZGlyZWN0bHkuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgbm9Vc2VsZXNzRGVsZWdhdGlvblJ1bGUgfTtcbiJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby11c2VsZXNzLWRlbGVnYXRpb24vcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBb0IsRUFBRSxDQUNsRCxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksS0FBSztJQUM1RCxDQUFDLENBQUUsS0FBYztJQUNqQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFzQixFQUFFLENBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBRSxLQUFnQjtJQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFzQixFQUFzQixFQUFFLENBQ3ZFLElBQUksRUFBRSxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVE7SUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDZCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxZQUFrQixFQUFvQixFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxPQUFP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Q2YsK0ZBQStGO1NBQ2xHO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuLyoqIE9uZSBuYW1lZCBwYXJhbWV0ZXIgYW5kIHdoZXRoZXIgaXQgbXVzdCBiZSBzcHJlYWQgYXQgdGhlIGNhbGwgc2l0ZS4gKi9cbmludGVyZmFjZSBEZWxlZ2F0ZWRQYXJhbWV0ZXIge1xuICAvKiogV2hldGhlciB0aGlzIHBhcmFtZXRlciB1c2VzIHJlc3Qgc3ludGF4LiAqL1xuICBpc1Jlc3Q6IGJvb2xlYW47XG4gIC8qKiBQYXJhbWV0ZXIgaWRlbnRpZmllciBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBNaW5pbWFsIEVTVHJlZSBub2RlIHNoYXBlIHVzZWQgdG8gaW5zcGVjdCBwYXNzLXRocm91Z2ggZnVuY3Rpb25zLiAqL1xuaW50ZXJmYWNlIE5vZGUge1xuICAvKiogRHluYW1pY2FsbHkgcmVhZCBjaGlsZCBub2RlcyBhbmQgcGFyc2VyLXNwZWNpZmljIHByb3BlcnRpZXMuICovXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIC8qKiBXaGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBhc3luY2hyb25vdXMuICovXG4gIGFzeW5jPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIGEgZ2VuZXJhdG9yLiAqL1xuICBnZW5lcmF0b3I/OiBib29sZWFuO1xuICAvKiogRVNUcmVlIGRpc2NyaW1pbmF0b3IuICovXG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIG5vZGUgdmFsdWUgd2hlbiBpdCBpcyBhbiBFU1RyZWUgbm9kZS5cbiAqIEBwYXJhbSB2YWx1ZSBDYW5kaWRhdGUgQVNUIHZhbHVlLlxuICogQHJldHVybnMgVGhlIHZhbHVlIGFzIGFuIEVTVHJlZSBub2RlIHdoZW4gaXQgaGFzIGEgdHlwZSBkaXNjcmltaW5hdG9yLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5vZGUgPSBhc05vZGUoeyB0eXBlOiBcIklkZW50aWZpZXJcIiB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBhc05vZGUgPSAodmFsdWU6IHVua25vd24pOiBOb2RlIHwgdW5kZWZpbmVkID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiBcInR5cGVcIiBpbiB2YWx1ZVxuICAgID8gKHZhbHVlIGFzIE5vZGUpXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBub2RlIGFycmF5IHdoaWxlIHJlamVjdGluZyBtYWxmb3JtZWQgQVNUIGRhdGEuXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIEFTVCB2YWx1ZS5cbiAqIEByZXR1cm5zIEFTVCBub2RlcyB3aGVuIGV2ZXJ5IGFycmF5IGl0ZW0gaXMgYSBub2RlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5vZGVzID0gYXNOb2RlQXJyYXkoW3sgdHlwZTogXCJJZGVudGlmaWVyXCIgfV0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGFzTm9kZUFycmF5ID0gKHZhbHVlOiB1bmtub3duKTogTm9kZVtdIHwgdW5kZWZpbmVkID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiBhc05vZGUoaXRlbSkgIT09IHZvaWQgMClcbiAgICA/ICh2YWx1ZSBhcyBOb2RlW10pXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogUmVhZHMgYW4gaWRlbnRpZmllciBuYW1lIGZyb20gYSBub2RlLlxuICogQHBhcmFtIG5vZGUgQ2FuZGlkYXRlIGlkZW50aWZpZXIgbm9kZS5cbiAqIEByZXR1cm5zIElkZW50aWZpZXIgbmFtZSB3aGVuIHRoZSBub2RlIGlzIGFuIGlkZW50aWZpZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmFtZSA9IGdldElkZW50aWZpZXJOYW1lKHsgbmFtZTogXCJydW5cIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0SWRlbnRpZmllck5hbWUgPSAobm9kZTogTm9kZSB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICBub2RlPy50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiB0eXBlb2Ygbm9kZVtcIm5hbWVcIl0gPT09IFwic3RyaW5nXCJcbiAgICA/IG5vZGVbXCJuYW1lXCJdXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogR2V0cyB0aGUgY2FsbGVkIGV4cHJlc3Npb24gZnJvbSBhIGZ1bmN0aW9uIHdpdGggb25lIHJldHVybiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RseSByZXR1cm5lZCBjYWxsIGV4cHJlc3Npb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNhbGwgPSBnZXREZWxlZ2F0ZWRDYWxsKGZ1bmN0aW9uTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0RGVsZWdhdGVkQ2FsbCA9IChmdW5jdGlvbk5vZGU6IE5vZGUpOiBOb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGZ1bmN0aW9uTm9kZS5hc3luYyA9PT0gdHJ1ZSB8fCBmdW5jdGlvbk5vZGUuZ2VuZXJhdG9yID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGJvZHkgPSBhc05vZGUoZnVuY3Rpb25Ob2RlW1wiYm9keVwiXSk7XG4gIGlmIChib2R5ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgaWYgKGJvZHkudHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRzID0gYXNOb2RlQXJyYXkoYm9keVtcImJvZHlcIl0pO1xuICBpZiAoYm9keS50eXBlICE9PSBcIkJsb2NrU3RhdGVtZW50XCIgfHwgc3RhdGVtZW50cz8ubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IHN0YXRlbWVudHNbMF07XG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ/LnR5cGUgPT09IFwiUmV0dXJuU3RhdGVtZW50XCJcbiAgICA/IGFzTm9kZShyZXR1cm5TdGF0ZW1lbnRbXCJhcmd1bWVudFwiXSlcbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgbmFtZXMgYW5kIHdoZXRoZXIgZWFjaCBwYXJhbWV0ZXIgaXMgYSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSBmdW5jdGlvbk5vZGUgRnVuY3Rpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgTmFtZWQgcGFyYW1ldGVyIG1ldGFkYXRhIHdoZW4gZXZlcnkgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0UGFyYW1ldGVycyhmdW5jdGlvbk5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcnMgPSAoXG4gIGZ1bmN0aW9uTm9kZTogTm9kZSxcbik6IERlbGVnYXRlZFBhcmFtZXRlcltdIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcGFyYW1ldGVycyA9IGFzTm9kZUFycmF5KGZ1bmN0aW9uTm9kZVtcInBhcmFtc1wiXSk7XG4gIGlmIChwYXJhbWV0ZXJzID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBEZWxlZ2F0ZWRQYXJhbWV0ZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBwYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgaXNSZXN0ID0gcGFyYW1ldGVyLnR5cGUgPT09IFwiUmVzdEVsZW1lbnRcIjtcbiAgICBjb25zdCBuYW1lID0gZ2V0SWRlbnRpZmllck5hbWUoXG4gICAgICBpc1Jlc3QgPyBhc05vZGUocGFyYW1ldGVyW1wiYXJndW1lbnRcIl0pIDogcGFyYW1ldGVyLFxuICAgICk7XG4gICAgaWYgKG5hbWUgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICByZXN1bHQucHVzaCh7IGlzUmVzdCwgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBvbmUgY2FsbCBhcmd1bWVudCBmb3J3YXJkcyBpdHMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0gYXJndW1lbnQgQ2FsbCBhcmd1bWVudCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHBhcmFtZXRlciBDb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGFyZ3VtZW50IGZvcndhcmRzIHRoZSBwYXJhbWV0ZXIgd2l0aG91dCBjaGFuZ2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZm9yd2FyZHMgPSBmb3J3YXJkc1BhcmFtZXRlcihhcmd1bWVudCwgcGFyYW1ldGVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBmb3J3YXJkc1BhcmFtZXRlciA9IChcbiAgYXJndW1lbnQ6IE5vZGUsXG4gIHBhcmFtZXRlcjogRGVsZWdhdGVkUGFyYW1ldGVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChwYXJhbWV0ZXIuaXNSZXN0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFyZ3VtZW50LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiICYmXG4gICAgICBnZXRJZGVudGlmaWVyTmFtZShhc05vZGUoYXJndW1lbnRbXCJhcmd1bWVudFwiXSkpID09PSBwYXJhbWV0ZXIubmFtZVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ2V0SWRlbnRpZmllck5hbWUoYXJndW1lbnQpID09PSBwYXJhbWV0ZXIubmFtZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbm9kZSBpcyBhIHBsYWluIG5hbWVkIHJlZmVyZW5jZS5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSByZWNlaXZlciBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBub2RlIGlzIGEgcGxhaW4gaWRlbnRpZmllciByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaXNOYW1lZCA9IGlzTmFtZWRSZWNlaXZlcih7IHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTmFtZWRSZWNlaXZlciA9IChub2RlPzogTm9kZSk6IGJvb2xlYW4gPT4gbm9kZT8udHlwZSA9PT0gXCJJZGVudGlmaWVyXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGV4Y2VwdCBkaXJlY3RseSBjYWxsIGFub3RoZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgRGVjbGFyZWQgd3JhcHBlciBmdW5jdGlvbiBuYW1lLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZnVuY3Rpb24gaXMgYW4gZXhhY3Qgc3luY2hyb25vdXMgZGVsZWdhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpc0RlbGVnYXRpb24gPSBpc1VzZWxlc3NEZWxlZ2F0aW9uKGZ1bmN0aW9uTm9kZSwgXCJydW5cIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNVc2VsZXNzRGVsZWdhdGlvbiA9IChcbiAgZnVuY3Rpb25Ob2RlOiBOb2RlLFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjYWxsID0gZ2V0RGVsZWdhdGVkQ2FsbChmdW5jdGlvbk5vZGUpO1xuICBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0UGFyYW1ldGVycyhmdW5jdGlvbk5vZGUpO1xuICBjb25zdCBhcmd1bWVudHNfID0gYXNOb2RlQXJyYXkoY2FsbD8uW1wiYXJndW1lbnRzXCJdKTtcbiAgY29uc3QgY2FsbGVlID0gYXNOb2RlKGNhbGw/LltcImNhbGxlZVwiXSk7XG5cbiAgaWYgKFxuICAgIGNhbGw/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIiB8fFxuICAgIHBhcmFtZXRlcnMgPT09IHZvaWQgMCB8fFxuICAgIGFyZ3VtZW50c18gPT09IHZvaWQgMCB8fFxuICAgIGNhbGxlZSA9PT0gdm9pZCAwIHx8XG4gICAgLy8gQSBtZXRob2QgY2FsbCBpcyBvbmx5IGEgcmVwbGFjZWFibGUgZGVsZWdhdGlvbiB3aGVuIGl0cyByZWNlaXZlciBpcyBhXG4gICAgLy8gcGxhaW4gbmFtZWQgcmVmZXJlbmNlIChlLmcuIGBzZXJ2aWNlLnJ1bmApLiBFeHByZXNzaW9uIHJlY2VpdmVycyBzdWNoXG4gICAgLy8gYXMgdHlwZSBhc3NlcnRpb25zLCBjYWxscywgb3IgbGl0ZXJhbHMgY2Fubm90IGJlIGlubGluZWQgYXQgdGhlIGNhbGxcbiAgICAvLyBzaXRlLCBzbyB0aGUgd3JhcHBlciBpcyBub3QgdXNlbGVzcy5cbiAgICAoY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXG4gICAgICAhaXNOYW1lZFJlY2VpdmVyKGFzTm9kZShjYWxsZWVbXCJvYmplY3RcIl0pKSkgfHxcbiAgICBnZXRJZGVudGlmaWVyTmFtZShjYWxsZWUpID09PSBmdW5jdGlvbk5hbWUgfHxcbiAgICBhcmd1bWVudHNfLmxlbmd0aCAhPT0gcGFyYW1ldGVycy5sZW5ndGhcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50c18uZXZlcnkoKGFyZ3VtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbaW5kZXhdO1xuICAgIHJldHVybiBwYXJhbWV0ZXIgIT09IHZvaWQgMCAmJiBmb3J3YXJkc1BhcmFtZXRlcihhcmd1bWVudCwgcGFyYW1ldGVyKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgYSBmdW5jdGlvbiB3aGVuIGl0IGlzIGEgbm8tb3AgZGVsZWdhdGlvbi5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBuYW1lTm9kZSBEZWNsYXJlZCB3cmFwcGVyIG5hbWUgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRJZlVzZWxlc3NEZWxlZ2F0aW9uKGNvbnRleHQsIGZ1bmN0aW9uTm9kZSwgbmFtZU5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydElmVXNlbGVzc0RlbGVnYXRpb24gPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGZ1bmN0aW9uTm9kZTogTm9kZSxcbiAgbmFtZU5vZGU6IE5vZGUgfCB1bmRlZmluZWQsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgZnVuY3Rpb25OYW1lID0gZ2V0SWRlbnRpZmllck5hbWUobmFtZU5vZGUpO1xuICBpZiAoXG4gICAgZnVuY3Rpb25OYW1lID09PSB2b2lkIDAgfHxcbiAgICAhaXNVc2VsZXNzRGVsZWdhdGlvbihmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uTmFtZSlcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJ1c2VsZXNzRGVsZWdhdGlvblwiLFxuICAgIG5vZGU6IG5hbWVOb2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICB9KTtcbn07XG5cbi8qKiBFU0xpbnQgcnVsZSBpbXBsZW1lbnRhdGlvbiBmb3IgZnVuY3Rpb25zIHRoYXQgb25seSBmb3J3YXJkIHRoZWlyIGFyZ3VtZW50cy4gKi9cbmNvbnN0IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZTogKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiAoe1xuICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IChub2RlOiBSdWxlLk5vZGUpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgdW5rbm93biBhcyBOb2RlO1xuICAgICAgcmVwb3J0SWZVc2VsZXNzRGVsZWdhdGlvbihcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZnVuY3Rpb25Ob2RlLFxuICAgICAgICBhc05vZGUoZnVuY3Rpb25Ob2RlW1wiaWRcIl0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgZGVjbGFyYXRvciA9IG5vZGUgYXMgdW5rbm93biBhcyBOb2RlO1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZXIgPSBhc05vZGUoZGVjbGFyYXRvcltcImluaXRcIl0pO1xuICAgICAgaWYgKFxuICAgICAgICBpbml0aWFsaXplcj8udHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmXG4gICAgICAgIGluaXRpYWxpemVyPy50eXBlICE9PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXBvcnRJZlVzZWxlc3NEZWxlZ2F0aW9uKGNvbnRleHQsIGluaXRpYWxpemVyLCBhc05vZGUoZGVjbGFyYXRvcltcImlkXCJdKSk7XG4gICAgfSxcbiAgfSksXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJEaXNhbGxvdyBuYW1lZCBmdW5jdGlvbnMgdGhhdCBvbmx5IGRlbGVnYXRlIGRpcmVjdGx5IHRvIGFub3RoZXIgY2FsbC5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLXVzZWxlc3MtZGVsZWdhdGlvbi5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHVzZWxlc3NEZWxlZ2F0aW9uOlxuICAgICAgICBcIlRoaXMgZnVuY3Rpb24gb25seSBkZWxlZ2F0ZXMgdG8gYW5vdGhlciBjYWxsOyByZW1vdmUgdGhlIHdyYXBwZXIgb3IgY2FsbCB0aGUgdGFyZ2V0IGRpcmVjdGx5LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlIH07XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
import type { NamedInlineTypeMatch } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates the sole aggregate fix for all findings when every source range is safe.
|
|
5
|
+
* @param context Rule execution context.
|
|
6
|
+
* @param matches Named inline object type matches.
|
|
7
|
+
* @returns Aggregate fix callback, or undefined when source data is incomplete.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const fix = createAggregateFix(context, matches);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function createAggregateFix(context: Rule.RuleContext, matches: readonly NamedInlineTypeMatch[]): ((fixer: Rule.RuleFixer) => Rule.Fix[]) | undefined;
|
|
14
|
+
export { createAggregateFix };
|
|
15
|
+
//# sourceMappingURL=autofix.d.ts.map
|
|
@@ -0,0 +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;AAkDjB;;;;;;;;;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,CA6BrD;AAiLD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|