@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.
Files changed (108) hide show
  1. package/README.md +3 -7
  2. package/dist/application/custom-rules.d.ts.map +1 -1
  3. package/dist/application/custom-rules.js +15 -57
  4. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  5. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +1 -1
  6. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +0 -1
  7. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  8. package/dist/domain/architecture/consistent-barrel-files/index.js +1 -2
  9. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
  10. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +3 -9
  11. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  12. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +3 -9
  13. package/dist/domain/architecture/index.d.ts +2 -1
  14. package/dist/domain/architecture/index.d.ts.map +1 -1
  15. package/dist/domain/architecture/index.js +3 -2
  16. package/dist/domain/architecture/no-import-export-extensions/index.d.ts +2 -0
  17. package/dist/domain/architecture/no-import-export-extensions/index.d.ts.map +1 -0
  18. package/dist/domain/architecture/no-import-export-extensions/index.js +2 -0
  19. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -0
  20. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +171 -0
  21. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  22. package/dist/domain/core/no-multiple-declarators/rule.js +6 -1
  23. package/dist/domain/core/no-multiple-declarators/types.js +1 -1
  24. package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -1
  25. package/dist/domain/core/no-useless-delegation/rule.js +12 -8
  26. package/dist/domain/core/prefer-interface-types/autofix.d.ts +15 -0
  27. package/dist/domain/core/prefer-interface-types/autofix.d.ts.map +1 -0
  28. package/dist/domain/core/prefer-interface-types/autofix.js +196 -0
  29. package/dist/domain/core/prefer-interface-types/declaration-names.d.ts +23 -0
  30. package/dist/domain/core/prefer-interface-types/declaration-names.d.ts.map +1 -0
  31. package/dist/domain/core/prefer-interface-types/declaration-names.js +139 -0
  32. package/dist/domain/core/prefer-interface-types/naming.d.ts +45 -0
  33. package/dist/domain/core/prefer-interface-types/naming.d.ts.map +1 -0
  34. package/dist/domain/core/prefer-interface-types/naming.js +179 -0
  35. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +2 -0
  36. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -1
  37. package/dist/domain/core/prefer-interface-types/rule-utilities.js +1 -1
  38. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  39. package/dist/domain/core/prefer-interface-types/rule.js +40 -16
  40. package/dist/domain/core/prefer-interface-types/types.d.ts +80 -0
  41. package/dist/domain/core/prefer-interface-types/types.d.ts.map +1 -0
  42. package/dist/domain/core/prefer-interface-types/types.js +2 -0
  43. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -1
  44. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +2 -7
  45. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  46. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -6
  47. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -1
  48. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -5
  49. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  50. package/dist/domain/docs/no-interface-member-docs/rule.js +6 -2
  51. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  52. package/dist/domain/docs/require-example-language/examples.js +2 -6
  53. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  54. package/dist/domain/docs/require-example-language/reporting.js +34 -7
  55. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  56. package/dist/domain/docs/require-example-language/rule.js +6 -1
  57. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  58. package/dist/domain/docs/single-line-jsdoc/rule.js +5 -3
  59. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
  60. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +4 -2
  61. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +1 -1
  62. package/dist/domain/testing/aaa/analyzer.analysis.js +1 -1
  63. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  64. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +27 -3
  65. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +1 -1
  66. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  67. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +29 -4
  68. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +1 -1
  69. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  70. package/dist/domain/testing/aaa/analyzer.super.helpers.js +1 -1
  71. package/dist/domain/testing/aaa/analyzer.super.js +10 -3
  72. package/dist/domain/testing/aaa/index.d.ts +1 -1
  73. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  74. package/dist/domain/testing/aaa/index.js +1 -1
  75. package/dist/domain/testing/aaa/types.d.ts +7 -9
  76. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  77. package/dist/domain/testing/aaa/types.js +1 -1
  78. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  79. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +2 -18
  80. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  81. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
  82. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +3 -2
  83. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -1
  84. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +44 -58
  85. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  86. package/dist/domain/testing/enforce-aaa-structure/rule.js +4 -1
  87. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
  88. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +10 -4
  89. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +1 -1
  90. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +1 -1
  91. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +1 -1
  92. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -1
  93. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +2 -6
  94. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  95. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +10 -4
  96. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  97. package/dist/domain/testing/require-act-result-capture/rule.js +10 -5
  98. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  99. package/dist/domain/testing/require-test-companion/rule.js +4 -13
  100. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
  101. package/dist/infrastructure/codeperfect-plugin.js +2 -4
  102. package/dist/infrastructure/index.js +1 -1
  103. package/dist/infrastructure/presets.d.ts.map +1 -1
  104. package/dist/infrastructure/presets.js +2 -4
  105. package/package.json +24 -23
  106. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +0 -1
  107. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +0 -134
  108. /package/dist/domain/architecture/{consistent-barrel-files → no-import-export-extensions}/no-import-export-extensions-rule.d.ts +0 -0
@@ -0,0 +1,179 @@
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
2
+ import { collectTopLevelNames } from "./declaration-names.js";
3
+ /**
4
+ * Allocates unique PascalCase names for collected inline object types.
5
+ * @param matches Collected inline object types in report order.
6
+ * @param topLevelStatements Program statements used for collision detection.
7
+ * @param reservedNames Names declared in lexical scopes that could capture a generated reference.
8
+ * @returns Matches paired with collision-free names.
9
+ * @example
10
+ * ```typescript
11
+ * const namedMatches = allocateNames(matches, program.body);
12
+ * ```
13
+ */
14
+ function allocateNames(matches, topLevelStatements, reservedNames = new Set()) {
15
+ const usedNames = collectTopLevelNames(topLevelStatements);
16
+ for (const reservedName of reservedNames) {
17
+ usedNames.add(reservedName);
18
+ }
19
+ return matches.map((match) => {
20
+ const fallback = match.baseName === "Parameter" ? "Parameter" : "Type";
21
+ const preferredName = toPascalCase(match.baseName, fallback);
22
+ let name = preferredName;
23
+ let suffix = 1;
24
+ while (usedNames.has(name)) {
25
+ name = `${preferredName}${String(suffix)}`;
26
+ suffix += 1;
27
+ }
28
+ usedNames.add(name);
29
+ return { ...match, name };
30
+ });
31
+ }
32
+ /**
33
+ * Narrows an unknown value to the small naming node surface.
34
+ * @param value Candidate node value.
35
+ * @returns Naming node when the value is object-like.
36
+ * @example
37
+ * ```typescript
38
+ * const node = asNamingNode(value);
39
+ * ```
40
+ */
41
+ function asNamingNode(value) {
42
+ return value !== null && typeof value === "object" ? value : void 0;
43
+ }
44
+ /**
45
+ * Returns an identifier name when the supplied value is an identifier node.
46
+ * @param value Candidate identifier node.
47
+ * @returns Identifier name when present.
48
+ * @example
49
+ * ```typescript
50
+ * const name = getIdentifierName(node);
51
+ * ```
52
+ */
53
+ function getIdentifierName(value) {
54
+ const node = asNamingNode(value);
55
+ return node?.type === AST_NODE_TYPES.Identifier &&
56
+ typeof node.name === "string"
57
+ ? node.name
58
+ : void 0;
59
+ }
60
+ /**
61
+ * Gets an identifier name from a parameter, including supported wrappers.
62
+ * @param parameter Parameter node to inspect.
63
+ * @returns Parameter identifier or the required fallback.
64
+ * @example
65
+ * ```typescript
66
+ * const name = getParameterBaseName(parameter);
67
+ * ```
68
+ */
69
+ function getParameterBaseName(parameter) {
70
+ let node = asNamingNode(parameter);
71
+ while (node !== void 0) {
72
+ if (node.type === AST_NODE_TYPES.Identifier &&
73
+ typeof node.name === "string") {
74
+ return node.name;
75
+ }
76
+ if (node.type === AST_NODE_TYPES.RestElement) {
77
+ node = asNamingNode(node.argument);
78
+ continue;
79
+ }
80
+ if (node.type === AST_NODE_TYPES.AssignmentPattern) {
81
+ node = asNamingNode(node.left);
82
+ continue;
83
+ }
84
+ if (node.type === AST_NODE_TYPES.TSParameterProperty) {
85
+ node = asNamingNode(node.parameter);
86
+ continue;
87
+ }
88
+ break;
89
+ }
90
+ return "Parameter";
91
+ }
92
+ /**
93
+ * Returns a static identifier or string-literal property name.
94
+ * @param value Candidate property key.
95
+ * @returns Static property name when present.
96
+ * @example
97
+ * ```typescript
98
+ * const name = getPropertyName(node.key);
99
+ * ```
100
+ */
101
+ function getPropertyName(value) {
102
+ const node = asNamingNode(value);
103
+ if (node?.type === AST_NODE_TYPES.Identifier &&
104
+ typeof node.name === "string") {
105
+ return node.name;
106
+ }
107
+ if (node?.type === AST_NODE_TYPES.Literal) {
108
+ const literalValue = node.value;
109
+ return typeof literalValue === "string" ? literalValue : void 0;
110
+ }
111
+ return void 0;
112
+ }
113
+ /**
114
+ * Resolves the nearest declared name for a function-like return type.
115
+ * @param functionNode Function-like node owning the return annotation.
116
+ * @returns Nearby identifier or the anonymous-context fallback.
117
+ * @example
118
+ * ```typescript
119
+ * const name = getReturnBaseName(functionNode);
120
+ * ```
121
+ */
122
+ function getReturnBaseName(functionNode) {
123
+ const node = asNamingNode(functionNode);
124
+ if (node === void 0) {
125
+ return "Type";
126
+ }
127
+ const ownIdentifier = getIdentifierName(node.id) ?? getPropertyName(node.key);
128
+ if (ownIdentifier !== void 0) {
129
+ return ownIdentifier;
130
+ }
131
+ let current = node.parent;
132
+ while (current !== null && current !== void 0) {
133
+ if (current.type === AST_NODE_TYPES.VariableDeclarator) {
134
+ return getIdentifierName(current.id) ?? "Type";
135
+ }
136
+ const propertyName = getPropertyName(current.key);
137
+ if (propertyName !== void 0) {
138
+ return propertyName;
139
+ }
140
+ current = current.parent;
141
+ }
142
+ return "Type";
143
+ }
144
+ /**
145
+ * Gets the declared identifier for a variable annotation.
146
+ * @param variableNode Variable declarator node.
147
+ * @returns Variable identifier or the anonymous-context fallback.
148
+ * @example
149
+ * ```typescript
150
+ * const name = getVariableBaseName(variableNode);
151
+ * ```
152
+ */
153
+ function getVariableBaseName(variableNode) {
154
+ return getIdentifierName(asNamingNode(variableNode)?.id) ?? "Type";
155
+ }
156
+ /**
157
+ * Converts an identifier-like value to a small PascalCase name.
158
+ * @param value Identifier-like source value.
159
+ * @param fallback Name used when the value has no ASCII word characters.
160
+ * @returns PascalCase name suitable for a generated interface.
161
+ * @example
162
+ * ```typescript
163
+ * const name = toPascalCase("input_value", "Type");
164
+ * ```
165
+ */
166
+ function toPascalCase(value, fallback) {
167
+ const words = value
168
+ .replaceAll(/([a-z\d])([A-Z])/g, "$1 $2")
169
+ .replaceAll(/[^A-Za-z\d]+/g, " ")
170
+ .trim()
171
+ .split(/\s+/)
172
+ .filter((word) => word.length > 0);
173
+ const name = words
174
+ .map((word) => word.slice(0, 1).toUpperCase() + word.slice(1))
175
+ .join("");
176
+ return name.length > 0 && !/^\d/.test(name) ? name : fallback;
177
+ }
178
+ export { allocateNames, getParameterBaseName, getReturnBaseName, getVariableBaseName, };
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9jb3JlL3ByZWZlci1pbnRlcmZhY2UtdHlwZXMvbmFtaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVExRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLE9BQW1DLEVBQ25DLGtCQUFzQyxFQUN0QyxnQkFBcUMsSUFBSSxHQUFHLEVBQUU7SUFFOUMsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUUzRCxLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzNCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN2RSxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLElBQUksR0FBRyxhQUFhLENBQUM7UUFDekIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWYsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxHQUFHLEdBQUcsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDZCxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcs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LEVBQUU7U0FDTixLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ1osTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXJDLE1BQU0sSUFBSSxHQUFHLEtBQUs7U0FDZixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRVosT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ2hFLENBQUM7QUFFRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBU1RfTk9ERV9UWVBFUyB9IGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHNcIjtcblxuaW1wb3J0IHR5cGUge1xuICBJbmxpbmVUeXBlTWF0Y2gsXG4gIE5hbWVkSW5saW5lVHlwZU1hdGNoLFxuICBOYW1pbmdOb2RlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBjb2xsZWN0VG9wTGV2ZWxOYW1lcyB9IGZyb20gXCIuL2RlY2xhcmF0aW9uLW5hbWVzXCI7XG5cbi8qKlxuICogQWxsb2NhdGVzIHVuaXF1ZSBQYXNjYWxDYXNlIG5hbWVzIGZvciBjb2xsZWN0ZWQgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAqIEBwYXJhbSBtYXRjaGVzIENvbGxlY3RlZCBpbmxpbmUgb2JqZWN0IHR5cGVzIGluIHJlcG9ydCBvcmRlci5cbiAqIEBwYXJhbSB0b3BMZXZlbFN0YXRlbWVudHMgUHJvZ3JhbSBzdGF0ZW1lbnRzIHVzZWQgZm9yIGNvbGxpc2lvbiBkZXRlY3Rpb24uXG4gKiBAcGFyYW0gcmVzZXJ2ZWROYW1lcyBOYW1lcyBkZWNsYXJlZCBpbiBsZXhpY2FsIHNjb3BlcyB0aGF0IGNvdWxkIGNhcHR1cmUgYSBnZW5lcmF0ZWQgcmVmZXJlbmNlLlxuICogQHJldHVybnMgTWF0Y2hlcyBwYWlyZWQgd2l0aCBjb2xsaXNpb24tZnJlZSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lZE1hdGNoZXMgPSBhbGxvY2F0ZU5hbWVzKG1hdGNoZXMsIHByb2dyYW0uYm9keSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYWxsb2NhdGVOYW1lcyhcbiAgbWF0Y2hlczogcmVhZG9ubHkgSW5saW5lVHlwZU1hdGNoW10sXG4gIHRvcExldmVsU3RhdGVtZW50czogcmVhZG9ubHkgdW5rbm93bltdLFxuICByZXNlcnZlZE5hbWVzOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldCgpLFxuKTogTmFtZWRJbmxpbmVUeXBlTWF0Y2hbXSB7XG4gIGNvbnN0IHVzZWROYW1lcyA9IGNvbGxlY3RUb3BMZXZlbE5hbWVzKHRvcExldmVsU3RhdGVtZW50cyk7XG5cbiAgZm9yIChjb25zdCByZXNlcnZlZE5hbWUgb2YgcmVzZXJ2ZWROYW1lcykge1xuICAgIHVzZWROYW1lcy5hZGQocmVzZXJ2ZWROYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzLm1hcCgobWF0Y2gpID0+IHtcbiAgICBjb25zdCBmYWxsYmFjayA9IG1hdGNoLmJhc2VOYW1lID09PSBcIlBhcmFtZXRlclwiID8gXCJQYXJhbWV0ZXJcIiA6IFwiVHlwZVwiO1xuICAgIGNvbnN0IHByZWZlcnJlZE5hbWUgPSB0b1Bhc2NhbENhc2UobWF0Y2guYmFzZU5hbWUsIGZhbGxiYWNrKTtcbiAgICBsZXQgbmFtZSA9IHByZWZlcnJlZE5hbWU7XG4gICAgbGV0IHN1ZmZpeCA9IDE7XG5cbiAgICB3aGlsZSAodXNlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgbmFtZSA9IGAke3ByZWZlcnJlZE5hbWV9JHtTdHJpbmcoc3VmZml4KX1gO1xuICAgICAgc3VmZml4ICs9IDE7XG4gICAgfVxuXG4gICAgdXNlZE5hbWVzLmFkZChuYW1lKTtcblxuICAgIHJldHVybiB7IC4uLm1hdGNoLCBuYW1lIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIE5hcnJvd3MgYW4gdW5rbm93biB2YWx1ZSB0byB0aGUgc21hbGwgbmFtaW5nIG5vZGUgc3VyZmFjZS5cbiAqIEBwYXJhbSB2YWx1ZSBDYW5kaWRhdGUgbm9kZSB2YWx1ZS5cbiAqIEByZXR1cm5zIE5hbWluZyBub2RlIHdoZW4gdGhlIHZhbHVlIGlzIG9iamVjdC1saWtlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5vZGUgPSBhc05hbWluZ05vZGUodmFsdWUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGFzTmFtaW5nTm9kZSh2YWx1ZTogdW5rbm93bik6IE5hbWluZ05vZGUgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiID8gdmFsdWUgOiB2b2lkIDA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBpZGVudGlmaWVyIG5hbWUgd2hlbiB0aGUgc3VwcGxpZWQgdmFsdWUgaXMgYW4gaWRlbnRpZmllciBub2RlLlxuICogQHBhcmFtIHZhbHVlIENhbmRpZGF0ZSBpZGVudGlmaWVyIG5vZGUuXG4gKiBAcmV0dXJucyBJZGVudGlmaWVyIG5hbWUgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWUgPSBnZXRJZGVudGlmaWVyTmFtZShub2RlKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRJZGVudGlmaWVyTmFtZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vZGUgPSBhc05hbWluZ05vZGUodmFsdWUpO1xuXG4gIHJldHVybiBub2RlPy50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyICYmXG4gICAgdHlwZW9mIG5vZGUubmFtZSA9PT0gXCJzdHJpbmdcIlxuICAgID8gbm9kZS5uYW1lXG4gICAgOiB2b2lkIDA7XG59XG5cbi8qKlxuICogR2V0cyBhbiBpZGVudGlmaWVyIG5hbWUgZnJvbSBhIHBhcmFtZXRlciwgaW5jbHVkaW5nIHN1cHBvcnRlZCB3cmFwcGVycy5cbiAqIEBwYXJhbSBwYXJhbWV0ZXIgUGFyYW1ldGVyIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciBpZGVudGlmaWVyIG9yIHRoZSByZXF1aXJlZCBmYWxsYmFjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lID0gZ2V0UGFyYW1ldGVyQmFzZU5hbWUocGFyYW1ldGVyKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCYXNlTmFtZShwYXJhbWV0ZXI6IHVua25vd24pOiBzdHJpbmcge1xuICBsZXQgbm9kZSA9IGFzTmFtaW5nTm9kZShwYXJhbWV0ZXIpO1xuXG4gIHdoaWxlIChub2RlICE9PSB2b2lkIDApIHtcbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcbiAgICAgIHR5cGVvZiBub2RlLm5hbWUgPT09IFwic3RyaW5nXCJcbiAgICApIHtcbiAgICAgIHJldHVybiBub2RlLm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuUmVzdEVsZW1lbnQpIHtcbiAgICAgIG5vZGUgPSBhc05hbWluZ05vZGUoKG5vZGUgYXMgeyBhcmd1bWVudD86IHVua25vd24gfSkuYXJndW1lbnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuQXNzaWdubWVudFBhdHRlcm4pIHtcbiAgICAgIG5vZGUgPSBhc05hbWluZ05vZGUoKG5vZGUgYXMgeyBsZWZ0PzogdW5rbm93biB9KS5sZWZ0KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlRTUGFyYW1ldGVyUHJvcGVydHkpIHtcbiAgICAgIG5vZGUgPSBhc05hbWluZ05vZGUoKG5vZGUgYXMgeyBwYXJhbWV0ZXI/OiB1bmtub3duIH0pLnBhcmFtZXRlcik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBcIlBhcmFtZXRlclwiO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdGF0aWMgaWRlbnRpZmllciBvciBzdHJpbmctbGl0ZXJhbCBwcm9wZXJ0eSBuYW1lLlxuICogQHBhcmFtIHZhbHVlIENhbmRpZGF0ZSBwcm9wZXJ0eSBrZXkuXG4gKiBAcmV0dXJucyBTdGF0aWMgcHJvcGVydHkgbmFtZSB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmFtZSA9IGdldFByb3BlcnR5TmFtZShub2RlLmtleSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgbm9kZSA9IGFzTmFtaW5nTm9kZSh2YWx1ZSk7XG5cbiAgaWYgKFxuICAgIG5vZGU/LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIgJiZcbiAgICB0eXBlb2Ygbm9kZS5uYW1lID09PSBcInN0cmluZ1wiXG4gICkge1xuICAgIHJldHVybiBub2RlLm5hbWU7XG4gIH1cblxuICBpZiAobm9kZT8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCkge1xuICAgIGNvbnN0IGxpdGVyYWxWYWx1ZSA9IG5vZGUudmFsdWU7XG5cbiAgICByZXR1cm4gdHlwZW9mIGxpdGVyYWxWYWx1ZSA9PT0gXCJzdHJpbmdcIiA/IGxpdGVyYWxWYWx1ZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB2b2lkIDA7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIG5lYXJlc3QgZGVjbGFyZWQgbmFtZSBmb3IgYSBmdW5jdGlvbi1saWtlIHJldHVybiB0eXBlLlxuICogQHBhcmFtIGZ1bmN0aW9uTm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgb3duaW5nIHRoZSByZXR1cm4gYW5ub3RhdGlvbi5cbiAqIEByZXR1cm5zIE5lYXJieSBpZGVudGlmaWVyIG9yIHRoZSBhbm9ueW1vdXMtY29udGV4dCBmYWxsYmFjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lID0gZ2V0UmV0dXJuQmFzZU5hbWUoZnVuY3Rpb25Ob2RlKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRSZXR1cm5CYXNlTmFtZShmdW5jdGlvbk5vZGU6IHVua25vd24pOiBzdHJpbmcge1xuICBjb25zdCBub2RlID0gYXNOYW1pbmdOb2RlKGZ1bmN0aW9uTm9kZSk7XG5cbiAgaWYgKG5vZGUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBcIlR5cGVcIjtcbiAgfVxuXG4gIGNvbnN0IG93bklkZW50aWZpZXIgPSBnZXRJZGVudGlmaWVyTmFtZShub2RlLmlkKSA/PyBnZXRQcm9wZXJ0eU5hbWUobm9kZS5rZXkpO1xuXG4gIGlmIChvd25JZGVudGlmaWVyICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gb3duSWRlbnRpZmllcjtcbiAgfVxuXG4gIGxldCBjdXJyZW50ID0gbm9kZS5wYXJlbnQ7XG5cbiAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVmFyaWFibGVEZWNsYXJhdG9yKSB7XG4gICAgICByZXR1cm4gZ2V0SWRlbnRpZmllck5hbWUoY3VycmVudC5pZCkgPz8gXCJUeXBlXCI7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lKGN1cnJlbnQua2V5KTtcblxuICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIHByb3BlcnR5TmFtZTtcbiAgICB9XG5cbiAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gXCJUeXBlXCI7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZGVjbGFyZWQgaWRlbnRpZmllciBmb3IgYSB2YXJpYWJsZSBhbm5vdGF0aW9uLlxuICogQHBhcmFtIHZhcmlhYmxlTm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIG5vZGUuXG4gKiBAcmV0dXJucyBWYXJpYWJsZSBpZGVudGlmaWVyIG9yIHRoZSBhbm9ueW1vdXMtY29udGV4dCBmYWxsYmFjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lID0gZ2V0VmFyaWFibGVCYXNlTmFtZSh2YXJpYWJsZU5vZGUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldFZhcmlhYmxlQmFzZU5hbWUodmFyaWFibGVOb2RlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldElkZW50aWZpZXJOYW1lKGFzTmFtaW5nTm9kZSh2YXJpYWJsZU5vZGUpPy5pZCkgPz8gXCJUeXBlXCI7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gaWRlbnRpZmllci1saWtlIHZhbHVlIHRvIGEgc21hbGwgUGFzY2FsQ2FzZSBuYW1lLlxuICogQHBhcmFtIHZhbHVlIElkZW50aWZpZXItbGlrZSBzb3VyY2UgdmFsdWUuXG4gKiBAcGFyYW0gZmFsbGJhY2sgTmFtZSB1c2VkIHdoZW4gdGhlIHZhbHVlIGhhcyBubyBBU0NJSSB3b3JkIGNoYXJhY3RlcnMuXG4gKiBAcmV0dXJucyBQYXNjYWxDYXNlIG5hbWUgc3VpdGFibGUgZm9yIGEgZ2VuZXJhdGVkIGludGVyZmFjZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lID0gdG9QYXNjYWxDYXNlKFwiaW5wdXRfdmFsdWVcIiwgXCJUeXBlXCIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHRvUGFzY2FsQ2FzZSh2YWx1ZTogc3RyaW5nLCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd29yZHMgPSB2YWx1ZVxuICAgIC5yZXBsYWNlQWxsKC8oW2EtelxcZF0pKFtBLVpdKS9nLCBcIiQxICQyXCIpXG4gICAgLnJlcGxhY2VBbGwoL1teQS1aYS16XFxkXSsvZywgXCIgXCIpXG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgLmZpbHRlcigod29yZCkgPT4gd29yZC5sZW5ndGggPiAwKTtcblxuICBjb25zdCBuYW1lID0gd29yZHNcbiAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgIC5qb2luKFwiXCIpO1xuXG4gIHJldHVybiBuYW1lLmxlbmd0aCA+IDAgJiYgIS9eXFxkLy50ZXN0KG5hbWUpID8gbmFtZSA6IGZhbGxiYWNrO1xufVxuXG5leHBvcnQge1xuICBhbGxvY2F0ZU5hbWVzLFxuICBnZXRQYXJhbWV0ZXJCYXNlTmFtZSxcbiAgZ2V0UmV0dXJuQmFzZU5hbWUsXG4gIGdldFZhcmlhYmxlQmFzZU5hbWUsXG59O1xuIl19
@@ -1,5 +1,7 @@
1
1
  /** Type definition for type annotation nodes inspected by this rule. */
2
2
  interface TypeAnnotationNode {
3
+ /** Source range used for safe autofix replacement. */
4
+ range?: [number, number];
3
5
  /** Type field value. */
4
6
  type: string;
5
7
  /** Nested annotation for parenthesized types. */
@@ -1 +1 @@
1
- {"version":3,"file":"rule-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule-utilities.ts"],"names":[],"mappings":"AAiCA,wEAAwE;AACxE,UAAU,kBAAkB;IAC1B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,+EAA+E;AAC/E,UAAU,sBAAsB;IAC9B,iEAAiE;IACjE,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AA6BD;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAavB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAQvB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,MAAM,OAAO,KAAG,OAAO,EAQ7C,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,GAAG,SAAS,KACnC,kBAAkB,GAAG,SA8BvB,CAAC;AAEF,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,qBAAqB,GACtB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule-utilities.ts"],"names":[],"mappings":"AAiCA,wEAAwE;AACxE,UAAU,kBAAkB;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,+EAA+E;AAC/E,UAAU,sBAAsB;IAC9B,iEAAiE;IACjE,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AA6BD;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAavB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAQvB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,MAAM,OAAO,KAAG,OAAO,EAQ7C,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,GAAG,SAAS,KACnC,kBAAkB,GAAG,SA8BvB,CAAC;AAEF,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,qBAAqB,GACtB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -102,4 +102,4 @@ const getInlineObjectTypeLiteral = (node) => {
102
102
  return void 0;
103
103
  };
104
104
  export { getInlineObjectTypeLiteral, getParameters, getReturnTypeAnnotation, getTypeAnnotationNode, };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvcHJlZmVyLWludGVyZmFjZS10eXBlcy9ydWxlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtREE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLElBQXdCLEVBQ1EsRUFBRTtJQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUksSUFBZ0MsQ0FBQyxjQUFjO1FBQzNFLEVBQUUsY0FBYyxDQUFDO0lBRW5CLElBQUksb0JBQW9CLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxTQUFTLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFhLEVBQUU7SUFDakQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxJQUFvQyxFQUNKLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTywwQkFBMEIsQ0FDL0IsSUFBSSxDQUFDLGNBQWdELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUM7UUFDdEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVoRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQ3ZELFVBQTRDLENBQzdDLENBQUM7WUFFRixJQUFJLHNCQUFzQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sc0JBQXNCLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHlwZSBkZWZpbml0aW9uIGZvciBmdW5jdGlvbi1saWtlIG5vZGVzIGNhcnJ5aW5nIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcy4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcblxuICAvKiogUmV0dXJuVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHJldHVyblR5cGU/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgdGhhdCBjYW4gd3JhcCBhIHNpbmdsZSBwYXJhbWV0ZXItbGlrZSBjaGlsZC4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQtc2lkZSBoZWxwZXIgdmFsdWUgdXNlZCBieSBhc3NpZ25tZW50IHBhdHRlcm5zLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgZXhwb3NpbmcgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdyYXBwZXIuICovXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25Db250YWluZXIge1xuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHtcbiAgICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICAgIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xuICB9O1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciB0eXBlIGFubm90YXRpb24gbm9kZXMgaW5zcGVjdGVkIGJ5IHRoaXMgcnVsZS4gKi9cbmludGVyZmFjZSBUeXBlQW5ub3RhdGlvbk5vZGUge1xuICAvKiogVHlwZSBmaWVsZCB2YWx1ZS4gKi9cbiAgdHlwZTogc3RyaW5nO1xuXG4gIC8qKiBOZXN0ZWQgYW5ub3RhdGlvbiBmb3IgcGFyZW50aGVzaXplZCB0eXBlcy4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB1bmtub3duO1xuXG4gIC8qKiBOZXN0ZWQgbWVtYmVyIGFubm90YXRpb25zIGZvciB1bmlvbi9pbnRlcnNlY3Rpb24gdHlwZXMuICovXG4gIHR5cGVzPzogdW5rbm93bltdO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciB2YXJpYWJsZSBkZWNsYXJhdG9yIG5vZGVzIHdpdGggb3B0aW9uYWwgaWRlbnRpZmllcnMuICovXG5pbnRlcmZhY2UgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSB7XG4gIC8qKiBJZGVudGlmaWVyIG9yIGJpbmRpbmcgcGF0dGVybiBmb3IgdGhlIHZhcmlhYmxlIGRlY2xhcmF0b3IuICovXG4gIGlkPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbmVzdGVkIHR5cGUgYW5ub3RhdGlvbiBmcm9tIHBhcmFtZXRlciB3cmFwcGVycy5cbiAqIEBwYXJhbSBub2RlIFBhcmFtZXRlciB3cmFwcGVyIG5vZGUuXG4gKiBAcmV0dXJucyBUaGUgbmVzdGVkIHR5cGUgYW5ub3RhdGlvbiB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYW5ub3RhdGlvbiA9IGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uKHsgYXJndW1lbnQ6IG5vZGUgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0TmVzdGVkVHlwZUFubm90YXRpb24gPSAoXG4gIG5vZGU6IFBhcmFtZXRlckNvbnRhaW5lcixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmFyZ3VtZW50ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUuYXJndW1lbnQpO1xuICB9XG5cbiAgaWYgKG5vZGUubGVmdCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldFR5cGVBbm5vdGF0aW9uTm9kZShub2RlLmxlZnQpO1xuICB9XG5cbiAgaWYgKG5vZGUucGFyYW1ldGVyICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUucGFyYW1ldGVyKTtcbiAgfVxuXG4gIHJldHVybiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSB0eXBlIGFubm90YXRpb24gZnJvbSBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRoYXQgbWF5IGNvbnRhaW4gYSB0eXBlIGFubm90YXRpb24uXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFR5cGVBbm5vdGF0aW9uTm9kZSA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdFR5cGVBbm5vdGF0aW9uID0gKG5vZGUgYXMgVHlwZUFubm90YXRpb25Db250YWluZXIpLnR5cGVBbm5vdGF0aW9uXG4gICAgPy50eXBlQW5ub3RhdGlvbjtcblxuICBpZiAoZGlyZWN0VHlwZUFubm90YXRpb24gIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkaXJlY3RUeXBlQW5ub3RhdGlvbjtcbiAgfVxuXG4gIHJldHVybiBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbihub2RlKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbiBmb3IgYSBmdW5jdGlvbi1saWtlIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRoYXQgbWF5IGNvbnRhaW4gYSByZXR1cm4gdHlwZS5cbiAqIEByZXR1cm5zIFRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0UmV0dXJuVHlwZUFubm90YXRpb24obm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UmV0dXJuVHlwZUFubm90YXRpb24gPSAoXG4gIG5vZGU6IHVua25vd24sXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gbnVsbCB8fCB0eXBlb2Ygbm9kZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIHR5cGVkTm9kZS5yZXR1cm5UeXBlPy50eXBlQW5ub3RhdGlvbjtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRQYXJhbWV0ZXJzLlxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0UGFyYW1ldGVycygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcnMgPSAobm9kZTogdW5rbm93bik6IHVua25vd25bXSA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgdHlwZWROb2RlID0gbm9kZSBhcyBGdW5jdGlvbkxpa2VOb2RlO1xuXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHR5cGVkTm9kZS5wYXJhbXMpID8gdHlwZWROb2RlLnBhcmFtcyA6IFtdO1xufTtcblxuLyoqXG4gKiBGaW5kcyBhbiBpbmxpbmUgb2JqZWN0IHR5cGUgbGl0ZXJhbCB3aXRoaW4gYSB0eXBlIGFubm90YXRpb24gbm9kZS5cbiAqIEBwYXJhbSBub2RlIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgaW5saW5lIG9iamVjdCB0eXBlIGxpdGVyYWwgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChhbm5vdGF0aW9uKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbCA9IChcbiAgbm9kZTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTVHlwZUxpdGVyYWxcIikge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU1BhcmVudGhlc2l6ZWRUeXBlXCIpIHtcbiAgICByZXR1cm4gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICBub2RlLnR5cGVBbm5vdGF0aW9uIGFzIFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbiAgICApO1xuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU1VuaW9uVHlwZVwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU0ludGVyc2VjdGlvblR5cGVcIikge1xuICAgIGNvbnN0IG5lc3RlZFR5cGVzID0gQXJyYXkuaXNBcnJheShub2RlLnR5cGVzKSA/IG5vZGUudHlwZXMgOiBbXTtcblxuICAgIGZvciAoY29uc3QgbmVzdGVkVHlwZSBvZiBuZXN0ZWRUeXBlcykge1xuICAgICAgY29uc3QgbmVzdGVkSW5saW5lT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKFxuICAgICAgICBuZXN0ZWRUeXBlIGFzIFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXN0ZWRJbmxpbmVPYmplY3RUeXBlICE9PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuIG5lc3RlZElubGluZU9iamVjdFR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbmV4cG9ydCB7XG4gIGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsLFxuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbixcbiAgZ2V0VHlwZUFubm90YXRpb25Ob2RlLFxufTtcbmV4cG9ydCB0eXBlIHsgVHlwZUFubm90YXRpb25Ob2RlLCBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIH07XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvcHJlZmVyLWludGVyZmFjZS10eXBlcy9ydWxlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzREE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLElBQXdCLEVBQ1EsRUFBRTtJQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUksSUFBZ0MsQ0FBQyxjQUFjO1FBQzNFLEVBQUUsY0FBYyxDQUFDO0lBRW5CLElBQUksb0JBQW9CLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxTQUFTLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFhLEVBQUU7SUFDakQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxJQUFvQyxFQUNKLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTywwQkFBMEIsQ0FDL0IsSUFBSSxDQUFDLGNBQWdELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUM7UUFDdEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVoRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQ3ZELFVBQTRDLENBQzdDLENBQUM7WUFFRixJQUFJLHNCQUFzQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sc0JBQXNCLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHlwZSBkZWZpbml0aW9uIGZvciBmdW5jdGlvbi1saWtlIG5vZGVzIGNhcnJ5aW5nIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcy4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcblxuICAvKiogUmV0dXJuVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHJldHVyblR5cGU/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgdGhhdCBjYW4gd3JhcCBhIHNpbmdsZSBwYXJhbWV0ZXItbGlrZSBjaGlsZC4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQtc2lkZSBoZWxwZXIgdmFsdWUgdXNlZCBieSBhc3NpZ25tZW50IHBhdHRlcm5zLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgZXhwb3NpbmcgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdyYXBwZXIuICovXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25Db250YWluZXIge1xuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHtcbiAgICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICAgIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xuICB9O1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciB0eXBlIGFubm90YXRpb24gbm9kZXMgaW5zcGVjdGVkIGJ5IHRoaXMgcnVsZS4gKi9cbmludGVyZmFjZSBUeXBlQW5ub3RhdGlvbk5vZGUge1xuICAvKiogU291cmNlIHJhbmdlIHVzZWQgZm9yIHNhZmUgYXV0b2ZpeCByZXBsYWNlbWVudC4gKi9cbiAgcmFuZ2U/OiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIC8qKiBUeXBlIGZpZWxkIHZhbHVlLiAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqIE5lc3RlZCBhbm5vdGF0aW9uIGZvciBwYXJlbnRoZXNpemVkIHR5cGVzLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHVua25vd247XG5cbiAgLyoqIE5lc3RlZCBtZW1iZXIgYW5ub3RhdGlvbnMgZm9yIHVuaW9uL2ludGVyc2VjdGlvbiB0eXBlcy4gKi9cbiAgdHlwZXM/OiB1bmtub3duW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHZhcmlhYmxlIGRlY2xhcmF0b3Igbm9kZXMgd2l0aCBvcHRpb25hbCBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIHtcbiAgLyoqIElkZW50aWZpZXIgb3IgYmluZGluZyBwYXR0ZXJuIGZvciB0aGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cbiAgaWQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEdldHMgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIGZyb20gcGFyYW1ldGVyIHdyYXBwZXJzLlxuICogQHBhcmFtIG5vZGUgUGFyYW1ldGVyIHdyYXBwZXIgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0TmVzdGVkVHlwZUFubm90YXRpb24oeyBhcmd1bWVudDogbm9kZSB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogUGFyYW1ldGVyQ29udGFpbmVyLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuYXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5hcmd1bWVudCk7XG4gIH1cblxuICBpZiAobm9kZS5sZWZ0ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUubGVmdCk7XG4gIH1cblxuICBpZiAobm9kZS5wYXJhbWV0ZXIgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5wYXJhbWV0ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHR5cGUgYW5ub3RhdGlvbiBmcm9tIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHR5cGUgYW5ub3RhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VHlwZUFubm90YXRpb25Ob2RlID0gKFxuICBub2RlOiB1bmtub3duLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0VHlwZUFubm90YXRpb24gPSAobm9kZSBhcyBUeXBlQW5ub3RhdGlvbkNvbnRhaW5lcikudHlwZUFubm90YXRpb25cbiAgICA/LnR5cGVBbm5vdGF0aW9uO1xuXG4gIGlmIChkaXJlY3RUeXBlQW5ub3RhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGRpcmVjdFR5cGVBbm5vdGF0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uKG5vZGUpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIGZvciBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHJldHVybiB0eXBlLlxuICogQHJldHVybnMgVGhlIHJldHVybiB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gdHlwZWROb2RlLnJldHVyblR5cGU/LnR5cGVBbm5vdGF0aW9uO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldFBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRQYXJhbWV0ZXJzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVycyA9IChub2RlOiB1bmtub3duKTogdW5rbm93bltdID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZWROb2RlLnBhcmFtcykgPyB0eXBlZE5vZGUucGFyYW1zIDogW107XG59O1xuXG4vKipcbiAqIEZpbmRzIGFuIGlubGluZSBvYmplY3QgdHlwZSBsaXRlcmFsIHdpdGhpbiBhIHR5cGUgYW5ub3RhdGlvbiBub2RlLlxuICogQHBhcmFtIG5vZGUgVHlwZSBhbm5vdGF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBpbmxpbmUgb2JqZWN0IHR5cGUgbGl0ZXJhbCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaW5saW5lT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKGFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsID0gKFxuICBub2RlOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQsXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTUGFyZW50aGVzaXplZFR5cGVcIikge1xuICAgIHJldHVybiBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIG5vZGUudHlwZUFubm90YXRpb24gYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICk7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTSW50ZXJzZWN0aW9uVHlwZVwiKSB7XG4gICAgY29uc3QgbmVzdGVkVHlwZXMgPSBBcnJheS5pc0FycmF5KG5vZGUudHlwZXMpID8gbm9kZS50eXBlcyA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBuZXN0ZWRUeXBlIG9mIG5lc3RlZFR5cGVzKSB7XG4gICAgICBjb25zdCBuZXN0ZWRJbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICAgIG5lc3RlZFR5cGUgYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICAgKTtcblxuICAgICAgaWYgKG5lc3RlZElubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gbmVzdGVkSW5saW5lT2JqZWN0VHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufTtcblxuZXhwb3J0IHtcbiAgZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwsXG4gIGdldFBhcmFtZXRlcnMsXG4gIGdldFJldHVyblR5cGVBbm5vdGF0aW9uLFxuICBnZXRUeXBlQW5ub3RhdGlvbk5vZGUsXG59O1xuZXhwb3J0IHR5cGUgeyBUeXBlQW5ub3RhdGlvbk5vZGUsIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUgfTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAyFnC,2EAA2E;AAC3E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UA6DpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAyGnC,2EAA2E;AAC3E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UA4FpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,54 +1,55 @@
1
+ import { createAggregateFix } from "./autofix.js";
2
+ import { collectScopeNames } from "./declaration-names.js";
3
+ import { allocateNames, getParameterBaseName, getReturnBaseName, getVariableBaseName, } from "./naming.js";
1
4
  import { getInlineObjectTypeLiteral, getParameters, getReturnTypeAnnotation, getTypeAnnotationNode, } from "./rule-utilities.js";
2
5
  /**
3
6
  * Reports an inline object type annotation.
4
- * @param context Rule execution context.
7
+ * @param matches Deferred match collection.
5
8
  * @param typeAnnotation Type annotation node to report.
9
+ * @param baseName Preferred generated name before normalization.
6
10
  * @example
7
11
  * ```typescript
8
12
  * reportTypeLiteral(context, typeAnnotation);
9
13
  * ```
10
14
  */
11
- const reportTypeLiteral = (context, typeAnnotation) => {
12
- context.report({
13
- messageId: "preferNamedObject",
14
- node: typeAnnotation,
15
- });
15
+ const collectTypeLiteral = (matches, typeAnnotation, baseName) => {
16
+ matches.push({ baseName, node: typeAnnotation });
16
17
  };
17
18
  /**
18
19
  * Checks function-like nodes for inline object types.
19
- * @param context Rule execution context.
20
+ * @param matches Deferred match collection.
20
21
  * @param node Function-like node to check.
21
22
  * @example
22
23
  * ```typescript
23
24
  * checkFunctionLike(context, node);
24
25
  * ```
25
26
  */
26
- const checkFunctionLike = (context, node) => {
27
+ const checkFunctionLike = (matches, node) => {
27
28
  for (const parameter of getParameters(node)) {
28
29
  const inlineObjectType = getInlineObjectTypeLiteral(getTypeAnnotationNode(parameter));
29
30
  if (inlineObjectType !== void 0) {
30
- reportTypeLiteral(context, inlineObjectType);
31
+ collectTypeLiteral(matches, inlineObjectType, getParameterBaseName(parameter));
31
32
  }
32
33
  }
33
34
  const inlineReturnObjectType = getInlineObjectTypeLiteral(getReturnTypeAnnotation(node));
34
35
  if (inlineReturnObjectType !== void 0) {
35
- reportTypeLiteral(context, inlineReturnObjectType);
36
+ collectTypeLiteral(matches, inlineReturnObjectType, getReturnBaseName(node));
36
37
  }
37
38
  };
38
39
  /**
39
40
  * Checks variable declarators for inline object types.
40
- * @param context Rule execution context.
41
+ * @param matches Deferred match collection.
41
42
  * @param node Variable declarator to check.
42
43
  * @example
43
44
  * ```typescript
44
45
  * checkVariableDeclarator(context, node);
45
46
  * ```
46
47
  */
47
- const checkVariableDeclarator = (context, node) => {
48
+ const checkVariableDeclarator = (matches, node) => {
48
49
  const typedNode = node;
49
50
  const inlineObjectType = getInlineObjectTypeLiteral(getTypeAnnotationNode(typedNode.id));
50
51
  if (inlineObjectType !== void 0) {
51
- reportTypeLiteral(context, inlineObjectType);
52
+ collectTypeLiteral(matches, inlineObjectType, getVariableBaseName(node));
52
53
  }
53
54
  };
54
55
  /** ESLint rule requiring named interface/type aliases for object types. */
@@ -63,6 +64,7 @@ const preferInterfaceTypesRule = {
63
64
  * ```
64
65
  */
65
66
  create(context) {
67
+ const matches = [];
66
68
  /**
67
69
  * Checks function-like nodes for inline object types.
68
70
  * @param node Function-like node to inspect.
@@ -72,7 +74,7 @@ const preferInterfaceTypesRule = {
72
74
  * ```
73
75
  */
74
76
  const functionLikeListener = (node) => {
75
- checkFunctionLike(context, node);
77
+ checkFunctionLike(matches, node);
76
78
  };
77
79
  /**
78
80
  * Checks variable declarators for inline object types.
@@ -83,12 +85,33 @@ const preferInterfaceTypesRule = {
83
85
  * ```
84
86
  */
85
87
  const variableDeclaratorListener = (node) => {
86
- checkVariableDeclarator(context, node);
88
+ checkVariableDeclarator(matches, node);
89
+ };
90
+ /**
91
+ * Reports all collected findings and owns the single aggregate fix.
92
+ * @example
93
+ * ```typescript
94
+ * programExitListener();
95
+ * ```
96
+ */
97
+ const programExitListener = () => {
98
+ const statements = context.sourceCode.ast.body;
99
+ const scopeManager = context.sourceCode.scopeManager;
100
+ const namedMatches = allocateNames(matches, statements, collectScopeNames(scopeManager));
101
+ const aggregateFix = createAggregateFix(context, namedMatches);
102
+ for (const [index, match] of namedMatches.entries()) {
103
+ context.report({
104
+ ...(index === 0 && aggregateFix !== void 0 && { fix: aggregateFix }),
105
+ messageId: "preferNamedObject",
106
+ node: match.node,
107
+ });
108
+ }
87
109
  };
88
110
  return {
89
111
  ArrowFunctionExpression: functionLikeListener,
90
112
  FunctionDeclaration: functionLikeListener,
91
113
  FunctionExpression: functionLikeListener,
114
+ "Program:exit": programExitListener,
92
115
  TSCallSignatureDeclaration: functionLikeListener,
93
116
  TSConstructSignatureDeclaration: functionLikeListener,
94
117
  TSDeclareFunction: functionLikeListener,
@@ -103,6 +126,7 @@ const preferInterfaceTypesRule = {
103
126
  recommended: false,
104
127
  url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/prefer-interface-types.md",
105
128
  },
129
+ fixable: "code",
106
130
  messages: {
107
131
  preferNamedObject: "Use a named interface or type alias instead of an inline object type.",
108
132
  },
@@ -111,4 +135,4 @@ const preferInterfaceTypesRule = {
111
135
  },
112
136
  };
113
137
  export { preferInterfaceTypesRule };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUN0QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUF5QixFQUN6QixjQUFrQyxFQUM1QixFQUFFO0lBQ1IsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNiLFNBQVMsRUFBRSxtQkFBbUI7UUFDOUIsSUFBSSxFQUFFLGNBQXNDO0tBQzdDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUF5QixFQUN6QixJQUFlLEVBQ1QsRUFBRTtJQUNSLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRywwQkFBMEIsQ0FDakQscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQ2pDLENBQUM7UUFFRixJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLHNCQUFzQixHQUFHLDBCQUEwQixDQUN2RCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztJQUVGLElBQUksc0JBQXNCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLE9BQXlCLEVBQ3pCLElBQWUsRUFDVCxFQUFFO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBOEIsQ0FBQztJQUVqRCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUNqRCxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQ3BDLENBQUM7SUFFRixJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDJFQUEyRTtBQUMzRSxNQUFNLHdCQUF3QixHQUFvQjtJQUNoRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxPQUF5QjtRQUM5Qjs7Ozs7OztXQU9HO1FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQWUsRUFBUSxFQUFFO1lBQ3JELGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFRjs7Ozs7OztXQU9HO1FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLElBQWUsRUFBUSxFQUFFO1lBQzNELHVCQUF1QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsdUJBQXVCLEVBQUUsb0JBQW9CO1lBQzdDLG1CQUFtQixFQUFFLG9CQUFvQjtZQUN6QyxrQkFBa0IsRUFBRSxvQkFBb0I7WUFDeEMsMEJBQTBCLEVBQUUsb0JBQW9CO1lBQ2hELCtCQUErQixFQUFFLG9CQUFvQjtZQUNyRCxpQkFBaUIsRUFBRSxvQkFBb0I7WUFDdkMsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxpQkFBaUIsRUFBRSxvQkFBb0I7WUFDdkMsa0JBQWtCLEVBQUUsMEJBQTBCO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGtIQUFrSDtZQUNwSCxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUseUZBQXlGO1NBQy9GO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsaUJBQWlCLEVBQ2YsdUVBQXVFO1NBQzFFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBUeXBlQW5ub3RhdGlvbk5vZGUsXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG59IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7XG4gIGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsLFxuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbixcbiAgZ2V0VHlwZUFubm90YXRpb25Ob2RlLFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuXG4vKipcbiAqIFJlcG9ydHMgYW4gaW5saW5lIG9iamVjdCB0eXBlIGFubm90YXRpb24uXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIHJlcG9ydC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCB0eXBlQW5ub3RhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VHlwZUxpdGVyYWwgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJwcmVmZXJOYW1lZE9iamVjdFwiLFxuICAgIG5vZGU6IHR5cGVBbm5vdGF0aW9uIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRnVuY3Rpb24tbGlrZSBub2RlIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrRnVuY3Rpb25MaWtlID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZ2V0UGFyYW1ldGVycyhub2RlKSkge1xuICAgIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIGdldFR5cGVBbm5vdGF0aW9uTm9kZShwYXJhbWV0ZXIpLFxuICAgICk7XG5cbiAgICBpZiAoaW5saW5lT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgICByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCBpbmxpbmVPYmplY3RUeXBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBpbmxpbmVSZXR1cm5PYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgZ2V0UmV0dXJuVHlwZUFubm90YXRpb24obm9kZSksXG4gICk7XG5cbiAgaWYgKGlubGluZVJldHVybk9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIGlubGluZVJldHVybk9iamVjdFR5cGUpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgdHlwZWROb2RlID0gbm9kZSBhcyBWYXJpYWJsZURlY2xhcmF0b3JOb2RlO1xuXG4gIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICBnZXRUeXBlQW5ub3RhdGlvbk5vZGUodHlwZWROb2RlLmlkKSxcbiAgKTtcblxuICBpZiAoaW5saW5lT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgaW5saW5lT2JqZWN0VHlwZSk7XG4gIH1cbn07XG5cbi8qKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgbmFtZWQgaW50ZXJmYWNlL3R5cGUgYWxpYXNlcyBmb3Igb2JqZWN0IHR5cGVzLiAqL1xuY29uc3QgcHJlZmVySW50ZXJmYWNlVHlwZXNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGxpc3RlbmVycyB0aGF0IHZhbGlkYXRlIGZ1bmN0aW9uLWxpa2UgYW5kIHZhcmlhYmxlIGFubm90YXRpb25zLlxuICAgKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBSdWxlIGxpc3RlbmVyIG1hcC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaXN0ZW5lcnMgPSBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUuY3JlYXRlKGNvbnRleHQpO1xuICAgKiBgYGBcbiAgICovXG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciBpbmxpbmUgb2JqZWN0IHR5cGVzLlxuICAgICAqIEBwYXJhbSBub2RlIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0byBpbnNwZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGZ1bmN0aW9uTGlrZUxpc3RlbmVyKG5vZGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbnN0IGZ1bmN0aW9uTGlrZUxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY2hlY2tGdW5jdGlvbkxpa2UoY29udGV4dCwgbm9kZSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGluc3BlY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIobm9kZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIgPSAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvcihjb250ZXh0LCBub2RlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNEZWNsYXJlRnVuY3Rpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNGdW5jdGlvblR5cGU6IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNNZXRob2RTaWduYXR1cmU6IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiB2YXJpYWJsZURlY2xhcmF0b3JMaXN0ZW5lcixcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBuYW1lZCBpbnRlcmZhY2VzIG9yIHR5cGUgYWxpYXNlcyBmb3Igb2JqZWN0IHR5cGVzIGluIHBhcmFtZXRlcnMsIHJldHVybiB0eXBlcywgYW5kIHZhcmlhYmxlIGFubm90YXRpb25zLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvcHJlZmVyLWludGVyZmFjZS10eXBlcy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHByZWZlck5hbWVkT2JqZWN0OlxuICAgICAgICBcIlVzZSBhIG5hbWVkIGludGVyZmFjZSBvciB0eXBlIGFsaWFzIGluc3RlYWQgb2YgYW4gaW5saW5lIG9iamVjdCB0eXBlLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHByZWZlckludGVyZmFjZVR5cGVzUnVsZSB9O1xuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUN0QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsT0FBMEIsRUFDMUIsY0FBa0MsRUFDbEMsUUFBZ0IsRUFDVixFQUFFO0lBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBMEIsRUFDMUIsSUFBZSxFQUNULEVBQUU7SUFDUixLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsMEJBQTBCLENBQ2pELHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUNqQyxDQUFDO1FBRUYsSUFBSSxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLGtCQUFrQixDQUNoQixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUNoQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFF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QUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUseUZBQXlGO1NBQy9GO1FBQ0QsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUU7WUFDUixpQkFBaUIsRUFDZix1RUFBdUU7U0FDMUU7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFR5cGVBbm5vdGF0aW9uTm9kZSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcbn0gZnJvbSBcIi4vcnVsZS11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSW5saW5lVHlwZU1hdGNoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY3JlYXRlQWdncmVnYXRlRml4IH0gZnJvbSBcIi4vYXV0b2ZpeFwiO1xuaW1wb3J0IHsgY29sbGVjdFNjb3BlTmFtZXMgfSBmcm9tIFwiLi9kZWNsYXJhdGlvbi1uYW1lc1wiO1xuaW1wb3J0IHtcbiAgYWxsb2NhdGVOYW1lcyxcbiAgZ2V0UGFyYW1ldGVyQmFzZU5hbWUsXG4gIGdldFJldHVybkJhc2VOYW1lLFxuICBnZXRWYXJpYWJsZUJhc2VOYW1lLFxufSBmcm9tIFwiLi9uYW1pbmdcIjtcbmltcG9ydCB7XG4gIGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsLFxuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbixcbiAgZ2V0VHlwZUFubm90YXRpb25Ob2RlLFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuXG4vKipcbiAqIFJlcG9ydHMgYW4gaW5saW5lIG9iamVjdCB0eXBlIGFubm90YXRpb24uXG4gKiBAcGFyYW0gbWF0Y2hlcyBEZWZlcnJlZCBtYXRjaCBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIHJlcG9ydC5cbiAqIEBwYXJhbSBiYXNlTmFtZSBQcmVmZXJyZWQgZ2VuZXJhdGVkIG5hbWUgYmVmb3JlIG5vcm1hbGl6YXRpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgdHlwZUFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGNvbGxlY3RUeXBlTGl0ZXJhbCA9IChcbiAgbWF0Y2hlczogSW5saW5lVHlwZU1hdGNoW10sXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUsXG4gIGJhc2VOYW1lOiBzdHJpbmcsXG4pOiB2b2lkID0+IHtcbiAgbWF0Y2hlcy5wdXNoKHsgYmFzZU5hbWUsIG5vZGU6IHR5cGVBbm5vdGF0aW9uIH0pO1xufTtcblxuLyoqXG4gKiBDaGVja3MgZnVuY3Rpb24tbGlrZSBub2RlcyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAqIEBwYXJhbSBtYXRjaGVzIERlZmVycmVkIG1hdGNoIGNvbGxlY3Rpb24uXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gY2hlY2suXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2hlY2tGdW5jdGlvbkxpa2UoY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY2hlY2tGdW5jdGlvbkxpa2UgPSAoXG4gIG1hdGNoZXM6IElubGluZVR5cGVNYXRjaFtdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZ2V0UGFyYW1ldGVycyhub2RlKSkge1xuICAgIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIGdldFR5cGVBbm5vdGF0aW9uTm9kZShwYXJhbWV0ZXIpLFxuICAgICk7XG5cbiAgICBpZiAoaW5saW5lT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb2xsZWN0VHlwZUxpdGVyYWwoXG4gICAgICAgIG1hdGNoZXMsXG4gICAgICAgIGlubGluZU9iamVjdFR5cGUsXG4gICAgICAgIGdldFBhcmFtZXRlckJhc2VOYW1lKHBhcmFtZXRlciksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlubGluZVJldHVybk9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbihub2RlKSxcbiAgKTtcblxuICBpZiAoaW5saW5lUmV0dXJuT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgY29sbGVjdFR5cGVMaXRlcmFsKFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGlubGluZVJldHVybk9iamVjdFR5cGUsXG4gICAgICBnZXRSZXR1cm5CYXNlTmFtZShub2RlKSxcbiAgICApO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAqIEBwYXJhbSBtYXRjaGVzIERlZmVycmVkIG1hdGNoIGNvbGxlY3Rpb24uXG4gKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yID0gKFxuICBtYXRjaGVzOiBJbmxpbmVUeXBlTWF0Y2hbXSxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdG9yTm9kZTtcblxuICBjb25zdCBpbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgZ2V0VHlwZUFubm90YXRpb25Ob2RlKHR5cGVkTm9kZS5pZCksXG4gICk7XG5cbiAgaWYgKGlubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgIGNvbGxlY3RUeXBlTGl0ZXJhbChtYXRjaGVzLCBpbmxpbmVPYmplY3RUeXBlLCBnZXRWYXJpYWJsZUJhc2VOYW1lKG5vZGUpKTtcbiAgfVxufTtcblxuLyoqIEVTTGludCBydWxlIHJlcXVpcmluZyBuYW1lZCBpbnRlcmZhY2UvdHlwZSBhbGlhc2VzIGZvciBvYmplY3QgdHlwZXMuICovXG5jb25zdCBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgbGlzdGVuZXJzIHRoYXQgdmFsaWRhdGUgZnVuY3Rpb24tbGlrZSBhbmQgdmFyaWFibGUgYW5ub3RhdGlvbnMuXG4gICAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIFJ1bGUgbGlzdGVuZXIgbWFwLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGxpc3RlbmVycyA9IHByZWZlckludGVyZmFjZVR5cGVzUnVsZS5jcmVhdGUoY29udGV4dCk7XG4gICAqIGBgYFxuICAgKi9cbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgY29uc3QgbWF0Y2hlczogSW5saW5lVHlwZU1hdGNoW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciBpbmxpbmUgb2JqZWN0IHR5cGVzLlxuICAgICAqIEBwYXJhbSBub2RlIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0byBpbnNwZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGZ1bmN0aW9uTGlrZUxpc3RlbmVyKG5vZGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbnN0IGZ1bmN0aW9uTGlrZUxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY2hlY2tGdW5jdGlvbkxpa2UobWF0Y2hlcywgbm9kZSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGluc3BlY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIobm9kZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIgPSAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvcihtYXRjaGVzLCBub2RlKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVwb3J0cyBhbGwgY29sbGVjdGVkIGZpbmRpbmdzIGFuZCBvd25zIHRoZSBzaW5nbGUgYWdncmVnYXRlIGZpeC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwcm9ncmFtRXhpdExpc3RlbmVyKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY29uc3QgcHJvZ3JhbUV4aXRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudHMgPSBjb250ZXh0LnNvdXJjZUNvZGUuYXN0LmJvZHk7XG4gICAgICBjb25zdCBzY29wZU1hbmFnZXIgPSBjb250ZXh0LnNvdXJjZUNvZGUuc2NvcGVNYW5hZ2VyIGFzXG4gICAgICAgIGltcG9ydChcIi4vdHlwZXNcIikuU2NvcGVNYW5hZ2VyIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgbmFtZWRNYXRjaGVzID0gYWxsb2NhdGVOYW1lcyhcbiAgICAgICAgbWF0Y2hlcyxcbiAgICAgICAgc3RhdGVtZW50cyxcbiAgICAgICAgY29sbGVjdFNjb3BlTmFtZXMoc2NvcGVNYW5hZ2VyKSxcbiAgICAgICk7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVGaXggPSBjcmVhdGVBZ2dyZWdhdGVGaXgoY29udGV4dCwgbmFtZWRNYXRjaGVzKTtcblxuICAgICAgZm9yIChjb25zdCBbaW5kZXgsIG1hdGNoXSBvZiBuYW1lZE1hdGNoZXMuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAuLi4oaW5kZXggPT09IDAgJiYgYWdncmVnYXRlRml4ICE9PSB2b2lkIDAgJiYgeyBmaXg6IGFnZ3JlZ2F0ZUZpeCB9KSxcbiAgICAgICAgICBtZXNzYWdlSWQ6IFwicHJlZmVyTmFtZWRPYmplY3RcIixcbiAgICAgICAgICBub2RlOiBtYXRjaC5ub2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFwiUHJvZ3JhbTpleGl0XCI6IHByb2dyYW1FeGl0TGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIsXG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJlcXVpcmUgbmFtZWQgaW50ZXJmYWNlcyBvciB0eXBlIGFsaWFzZXMgZm9yIG9iamVjdCB0eXBlcyBpbiBwYXJhbWV0ZXJzLCByZXR1cm4gdHlwZXMsIGFuZCB2YXJpYWJsZSBhbm5vdGF0aW9ucy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3ByZWZlci1pbnRlcmZhY2UtdHlwZXMubWRcIixcbiAgICB9LFxuICAgIGZpeGFibGU6IFwiY29kZVwiLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBwcmVmZXJOYW1lZE9iamVjdDpcbiAgICAgICAgXCJVc2UgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcyBpbnN0ZWFkIG9mIGFuIGlubGluZSBvYmplY3QgdHlwZS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUgfTtcbiJdfQ==
@@ -0,0 +1,80 @@
1
+ import type { Rule } from "eslint";
2
+ import type { TypeAnnotationNode } from "./rule-utilities.js";
3
+ /** Source-code surface required to build the aggregate autofix. */
4
+ type FixSourceCode = Pick<Rule.RuleContext["sourceCode"], "ast" | "getText" | "text"> & {
5
+ /** Scope information used to preserve lexical type bindings. */
6
+ scopeManager?: ScopeManager;
7
+ };
8
+ /** One inline object type collected for deferred reporting and fixing. */
9
+ interface InlineTypeMatch {
10
+ /** Preferred base name before PascalCase conversion and collision handling. */
11
+ baseName: string;
12
+ /** Inline object type reported by the rule. */
13
+ node: TypeAnnotationNode;
14
+ }
15
+ /** One collected inline object type with its allocated interface name. */
16
+ interface NamedInlineTypeMatch extends InlineTypeMatch {
17
+ /** Collision-free generated interface name. */
18
+ name: string;
19
+ }
20
+ /** Node shape used to resolve nearby declaration names. */
21
+ interface NamingNode {
22
+ /** Optional declaration identifier. */
23
+ id?: unknown;
24
+ /** Optional property or method key. */
25
+ key?: unknown;
26
+ /** Optional identifier name. */
27
+ name?: unknown;
28
+ /** Parent node supplied by the parser. */
29
+ parent?: NamingNode | null;
30
+ /** Node type discriminator. */
31
+ type?: unknown;
32
+ /** Optional literal value. */
33
+ value?: unknown;
34
+ }
35
+ /** Named match whose source range has been validated for replacement. */
36
+ interface RangedNamedInlineTypeMatch extends NamedInlineTypeMatch {
37
+ /** Inline object type with a required source range. */
38
+ node: TypeAnnotationNode & {
39
+ range: [number, number];
40
+ };
41
+ }
42
+ /** Minimal lexical scope surface required by autofix safety checks. */
43
+ interface Scope {
44
+ /** AST node that owns the scope. */
45
+ block?: {
46
+ range?: [number, number];
47
+ };
48
+ /** References originating from the scope. */
49
+ references?: ScopeReference[];
50
+ /** Scope category reported by the TypeScript ESLint parser. */
51
+ type?: string;
52
+ /** Declarations visible through the scope. */
53
+ variables?: ScopeVariable[];
54
+ }
55
+ /** Minimal identifier surface exposed by scope references. */
56
+ interface ScopeIdentifier {
57
+ /** Source range for the referenced identifier. */
58
+ range?: [number, number];
59
+ }
60
+ /** Scope manager surface exposed by the TypeScript ESLint parser. */
61
+ interface ScopeManager {
62
+ /** Lexical scopes discovered in the source file. */
63
+ scopes: Scope[];
64
+ }
65
+ /** One identifier reference and its resolved declaration scope. */
66
+ interface ScopeReference {
67
+ /** Referenced identifier node. */
68
+ identifier?: ScopeIdentifier;
69
+ /** Resolved declaration when the reference is locally bound. */
70
+ resolved?: null | {
71
+ scope?: Scope;
72
+ };
73
+ }
74
+ /** One declaration recorded by the scope manager. */
75
+ interface ScopeVariable {
76
+ /** Declared identifier name. */
77
+ name?: string;
78
+ }
79
+ export type { FixSourceCode, InlineTypeMatch, NamedInlineTypeMatch, NamingNode, RangedNamedInlineTypeMatch, Scope, ScopeManager, };
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,mEAAmE;AACnE,KAAK,aAAa,GAAG,IAAI,CACvB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC9B,KAAK,GAAG,SAAS,GAAG,MAAM,CAC3B,GAAG;IACF,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,0EAA0E;AAC1E,UAAU,eAAe;IACvB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,0EAA0E;AAC1E,UAAU,oBAAqB,SAAQ,eAAe;IACpD,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2DAA2D;AAC3D,UAAU,UAAU;IAClB,uCAAuC;IACvC,EAAE,CAAC,EAAE,OAAO,CAAC;IAEb,uCAAuC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAE3B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,UAAU,0BAA2B,SAAQ,oBAAoB;IAC/D,uDAAuD;IACvD,IAAI,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACxD;AAED,uEAAuE;AACvE,UAAU,KAAK;IACb,oCAAoC;IACpC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAErC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,8DAA8D;AAC9D,UAAU,eAAe;IACvB,kDAAkD;IAClD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AAED,qEAAqE;AACrE,UAAU,YAAY;IACpB,oDAAoD;IACpD,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,mEAAmE;AACnE,UAAU,cAAc;IACtB,kCAAkC;IAClC,UAAU,CAAC,EAAE,eAAe,CAAC;IAE7B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,IAAI,GAAG;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;CACrC;AAED,qDAAqD;AACrD,UAAU,aAAa;IACrB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,0BAA0B,EAC1B,KAAK,EACL,YAAY,GACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvcHJlZmVyLWludGVyZmFjZS10eXBlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IFR5cGVBbm5vdGF0aW9uTm9kZSB9IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5cbi8qKiBTb3VyY2UtY29kZSBzdXJmYWNlIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBhZ2dyZWdhdGUgYXV0b2ZpeC4gKi9cbnR5cGUgRml4U291cmNlQ29kZSA9IFBpY2s8XG4gIFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBcImFzdFwiIHwgXCJnZXRUZXh0XCIgfCBcInRleHRcIlxuPiAmIHtcbiAgLyoqIFNjb3BlIGluZm9ybWF0aW9uIHVzZWQgdG8gcHJlc2VydmUgbGV4aWNhbCB0eXBlIGJpbmRpbmdzLiAqL1xuICBzY29wZU1hbmFnZXI/OiBTY29wZU1hbmFnZXI7XG59O1xuXG4vKiogT25lIGlubGluZSBvYmplY3QgdHlwZSBjb2xsZWN0ZWQgZm9yIGRlZmVycmVkIHJlcG9ydGluZyBhbmQgZml4aW5nLiAqL1xuaW50ZXJmYWNlIElubGluZVR5cGVNYXRjaCB7XG4gIC8qKiBQcmVmZXJyZWQgYmFzZSBuYW1lIGJlZm9yZSBQYXNjYWxDYXNlIGNvbnZlcnNpb24gYW5kIGNvbGxpc2lvbiBoYW5kbGluZy4gKi9cbiAgYmFzZU5hbWU6IHN0cmluZztcblxuICAvKiogSW5saW5lIG9iamVjdCB0eXBlIHJlcG9ydGVkIGJ5IHRoZSBydWxlLiAqL1xuICBub2RlOiBUeXBlQW5ub3RhdGlvbk5vZGU7XG59XG5cbi8qKiBPbmUgY29sbGVjdGVkIGlubGluZSBvYmplY3QgdHlwZSB3aXRoIGl0cyBhbGxvY2F0ZWQgaW50ZXJmYWNlIG5hbWUuICovXG5pbnRlcmZhY2UgTmFtZWRJbmxpbmVUeXBlTWF0Y2ggZXh0ZW5kcyBJbmxpbmVUeXBlTWF0Y2gge1xuICAvKiogQ29sbGlzaW9uLWZyZWUgZ2VuZXJhdGVkIGludGVyZmFjZSBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBOb2RlIHNoYXBlIHVzZWQgdG8gcmVzb2x2ZSBuZWFyYnkgZGVjbGFyYXRpb24gbmFtZXMuICovXG5pbnRlcmZhY2UgTmFtaW5nTm9kZSB7XG4gIC8qKiBPcHRpb25hbCBkZWNsYXJhdGlvbiBpZGVudGlmaWVyLiAqL1xuICBpZD86IHVua25vd247XG5cbiAgLyoqIE9wdGlvbmFsIHByb3BlcnR5IG9yIG1ldGhvZCBrZXkuICovXG4gIGtleT86IHVua25vd247XG5cbiAgLyoqIE9wdGlvbmFsIGlkZW50aWZpZXIgbmFtZS4gKi9cbiAgbmFtZT86IHVua25vd247XG5cbiAgLyoqIFBhcmVudCBub2RlIHN1cHBsaWVkIGJ5IHRoZSBwYXJzZXIuICovXG4gIHBhcmVudD86IE5hbWluZ05vZGUgfCBudWxsO1xuXG4gIC8qKiBOb2RlIHR5cGUgZGlzY3JpbWluYXRvci4gKi9cbiAgdHlwZT86IHVua25vd247XG5cbiAgLyoqIE9wdGlvbmFsIGxpdGVyYWwgdmFsdWUuICovXG4gIHZhbHVlPzogdW5rbm93bjtcbn1cblxuLyoqIE5hbWVkIG1hdGNoIHdob3NlIHNvdXJjZSByYW5nZSBoYXMgYmVlbiB2YWxpZGF0ZWQgZm9yIHJlcGxhY2VtZW50LiAqL1xuaW50ZXJmYWNlIFJhbmdlZE5hbWVkSW5saW5lVHlwZU1hdGNoIGV4dGVuZHMgTmFtZWRJbmxpbmVUeXBlTWF0Y2gge1xuICAvKiogSW5saW5lIG9iamVjdCB0eXBlIHdpdGggYSByZXF1aXJlZCBzb3VyY2UgcmFuZ2UuICovXG4gIG5vZGU6IFR5cGVBbm5vdGF0aW9uTm9kZSAmIHsgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl0gfTtcbn1cblxuLyoqIE1pbmltYWwgbGV4aWNhbCBzY29wZSBzdXJmYWNlIHJlcXVpcmVkIGJ5IGF1dG9maXggc2FmZXR5IGNoZWNrcy4gKi9cbmludGVyZmFjZSBTY29wZSB7XG4gIC8qKiBBU1Qgbm9kZSB0aGF0IG93bnMgdGhlIHNjb3BlLiAqL1xuICBibG9jaz86IHsgcmFuZ2U/OiBbbnVtYmVyLCBudW1iZXJdIH07XG5cbiAgLyoqIFJlZmVyZW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgc2NvcGUuICovXG4gIHJlZmVyZW5jZXM/OiBTY29wZVJlZmVyZW5jZVtdO1xuXG4gIC8qKiBTY29wZSBjYXRlZ29yeSByZXBvcnRlZCBieSB0aGUgVHlwZVNjcmlwdCBFU0xpbnQgcGFyc2VyLiAqL1xuICB0eXBlPzogc3RyaW5nO1xuXG4gIC8qKiBEZWNsYXJhdGlvbnMgdmlzaWJsZSB0aHJvdWdoIHRoZSBzY29wZS4gKi9cbiAgdmFyaWFibGVzPzogU2NvcGVWYXJpYWJsZVtdO1xufVxuXG4vKiogTWluaW1hbCBpZGVudGlmaWVyIHN1cmZhY2UgZXhwb3NlZCBieSBzY29wZSByZWZlcmVuY2VzLiAqL1xuaW50ZXJmYWNlIFNjb3BlSWRlbnRpZmllciB7XG4gIC8qKiBTb3VyY2UgcmFuZ2UgZm9yIHRoZSByZWZlcmVuY2VkIGlkZW50aWZpZXIuICovXG4gIHJhbmdlPzogW251bWJlciwgbnVtYmVyXTtcbn1cblxuLyoqIFNjb3BlIG1hbmFnZXIgc3VyZmFjZSBleHBvc2VkIGJ5IHRoZSBUeXBlU2NyaXB0IEVTTGludCBwYXJzZXIuICovXG5pbnRlcmZhY2UgU2NvcGVNYW5hZ2VyIHtcbiAgLyoqIExleGljYWwgc2NvcGVzIGRpc2NvdmVyZWQgaW4gdGhlIHNvdXJjZSBmaWxlLiAqL1xuICBzY29wZXM6IFNjb3BlW107XG59XG5cbi8qKiBPbmUgaWRlbnRpZmllciByZWZlcmVuY2UgYW5kIGl0cyByZXNvbHZlZCBkZWNsYXJhdGlvbiBzY29wZS4gKi9cbmludGVyZmFjZSBTY29wZVJlZmVyZW5jZSB7XG4gIC8qKiBSZWZlcmVuY2VkIGlkZW50aWZpZXIgbm9kZS4gKi9cbiAgaWRlbnRpZmllcj86IFNjb3BlSWRlbnRpZmllcjtcblxuICAvKiogUmVzb2x2ZWQgZGVjbGFyYXRpb24gd2hlbiB0aGUgcmVmZXJlbmNlIGlzIGxvY2FsbHkgYm91bmQuICovXG4gIHJlc29sdmVkPzogbnVsbCB8IHsgc2NvcGU/OiBTY29wZSB9O1xufVxuXG4vKiogT25lIGRlY2xhcmF0aW9uIHJlY29yZGVkIGJ5IHRoZSBzY29wZSBtYW5hZ2VyLiAqL1xuaW50ZXJmYWNlIFNjb3BlVmFyaWFibGUge1xuICAvKiogRGVjbGFyZWQgaWRlbnRpZmllciBuYW1lLiAqL1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSB7XG4gIEZpeFNvdXJjZUNvZGUsXG4gIElubGluZVR5cGVNYXRjaCxcbiAgTmFtZWRJbmxpbmVUeXBlTWF0Y2gsXG4gIE5hbWluZ05vZGUsXG4gIFJhbmdlZE5hbWVkSW5saW5lVHlwZU1hdGNoLFxuICBTY29wZSxcbiAgU2NvcGVNYW5hZ2VyLFxufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"comment-removal-ranges.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-removal-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAyBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"comment-removal-ranges.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-removal-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAoBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
@@ -19,12 +19,7 @@ const getCommentLines = (commentText) => {
19
19
  : nextSlice.startsWith("\n")
20
20
  ? 1
21
21
  : 0;
22
- results.push({
23
- end: lineEnd,
24
- lineBreakLength,
25
- start: offset,
26
- text: line,
27
- });
22
+ results.push({ end: lineEnd, lineBreakLength, start: offset, text: line });
28
23
  offset = lineEnd + lineBreakLength;
29
24
  }
30
25
  return results;
@@ -61,4 +56,4 @@ const buildRemovalRange = (commentStart, commentText, line) => {
61
56
  return [commentStart + line.start, commentStart + line.end];
62
57
  };
63
58
  export { buildRemovalRange, getCommentLines };
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1yZW1vdmFsLXJhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvY29tbWVudC1yZW1vdmFsLXJhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBbUIsRUFBaUIsRUFBRTtJQUM3RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsR0FBRyxFQUFFLE9BQU87WUFDWixlQUFlO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFvQixFQUNwQixXQUFtQixFQUNuQixJQUFpQixFQUNDLEVBQUU7SUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDekIsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWU7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLEtBQUssSUFBSSxDQUFDO1FBRWxELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPO2dCQUNMLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWU7Z0JBQzNDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRzthQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1lbnRMaW5lIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRMaW5lcy5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBJbnB1dCBjb21tZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudExpbmVzID0gKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBDb21tZW50TGluZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgY29uc3QgcmVzdWx0czogQ29tbWVudExpbmVbXSA9IFtdO1xuICBsZXQgb2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb2Zmc2V0ICsgbGluZS5sZW5ndGg7XG4gICAgY29uc3QgbmV4dFNsaWNlID0gY29tbWVudFRleHQuc2xpY2UobGluZUVuZCwgbGluZUVuZCArIDIpO1xuICAgIGNvbnN0IGxpbmVCcmVha0xlbmd0aCA9IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxyXFxuXCIpXG4gICAgICA/IDJcbiAgICAgIDogbmV4dFNsaWNlLnN0YXJ0c1dpdGgoXCJcXG5cIilcbiAgICAgICAgPyAxXG4gICAgICAgIDogMDtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICBlbmQ6IGxpbmVFbmQsXG4gICAgICBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdGV4dDogbGluZSxcbiAgICB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgaXNQcmV2aW91c0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChpc1ByZXZpb3VzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMgfTtcbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1yZW1vdmFsLXJhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvY29tbWVudC1yZW1vdmFsLXJhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBbUIsRUFBaUIsRUFBRTtJQUM3RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUzRSxNQUFNLEdBQUcsT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsWUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsSUFBaUIsRUFDQyxFQUFFO0lBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO1lBQ0wsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxLQUFLLElBQUksQ0FBQztRQUVsRCxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTztnQkFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlO2dCQUMzQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUc7YUFDeEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tZW50TGluZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogR2V0cyBnZXRDb21tZW50TGluZXMuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgSW5wdXQgY29tbWVudFRleHQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldENvbW1lbnRMaW5lcygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRMaW5lcyA9IChjb21tZW50VGV4dDogc3RyaW5nKTogQ29tbWVudExpbmVbXSA9PiB7XG4gIGNvbnN0IGxpbmVzID0gY29tbWVudFRleHQuc3BsaXQoL1xccj9cXG4vdSk7XG4gIGNvbnN0IHJlc3VsdHM6IENvbW1lbnRMaW5lW10gPSBbXTtcbiAgbGV0IG9mZnNldCA9IDA7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgbGluZUVuZCA9IG9mZnNldCArIGxpbmUubGVuZ3RoO1xuICAgIGNvbnN0IG5leHRTbGljZSA9IGNvbW1lbnRUZXh0LnNsaWNlKGxpbmVFbmQsIGxpbmVFbmQgKyAyKTtcbiAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPSBuZXh0U2xpY2Uuc3RhcnRzV2l0aChcIlxcclxcblwiKVxuICAgICAgPyAyXG4gICAgICA6IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxuXCIpXG4gICAgICAgID8gMVxuICAgICAgICA6IDA7XG5cbiAgICByZXN1bHRzLnB1c2goeyBlbmQ6IGxpbmVFbmQsIGxpbmVCcmVha0xlbmd0aCwgc3RhcnQ6IG9mZnNldCwgdGV4dDogbGluZSB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgaXNQcmV2aW91c0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChpc1ByZXZpb3VzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMgfTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-tags.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/parameter-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmG/D;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,WAAW,KAChB,kBAAkB,GAAG,SAmBvB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"parameter-tags.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/parameter-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmG/D;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,WAAW,KAChB,kBAAkB,GAAG,SAevB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}