@codeperfect/eslint-plugin 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/application/custom-rules.d.ts +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -1
- package/dist/application/custom-rules.js +6 -2
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -2
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +1 -11
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +6 -14
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +2 -4
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +4 -134
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts +14 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.js +154 -0
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +10 -12
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +4 -11
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +2 -12
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +4 -3
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts +14 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +187 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts +26 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +95 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts +32 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +78 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts +18 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +45 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts +34 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.js +44 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts +59 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +133 -0
- package/dist/domain/architecture/no-unused-exports/{no-unused-exports-utilities.d.ts → no-unused-exports-usage-utilities.d.ts} +2 -23
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.js +106 -0
- package/dist/domain/architecture/no-unused-exports/rule.js +4 -2
- package/dist/domain/core/index.d.ts +1 -0
- package/dist/domain/core/index.d.ts.map +1 -1
- package/dist/domain/core/index.js +2 -1
- package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts +58 -0
- package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -0
- package/dist/domain/core/no-multiple-declarators/rule-utilities.js +204 -0
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +9 -211
- package/dist/domain/core/no-multiple-declarators/types.js +2 -2
- package/dist/domain/core/no-useless-delegation/index.d.ts +2 -0
- package/dist/domain/core/no-useless-delegation/index.d.ts.map +1 -0
- package/dist/domain/core/no-useless-delegation/index.js +2 -0
- package/dist/domain/core/no-useless-delegation/rule.d.ts +5 -0
- package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -0
- package/dist/domain/core/no-useless-delegation/rule.js +200 -0
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +57 -0
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -0
- package/dist/domain/core/prefer-interface-types/rule-utilities.js +105 -0
- package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule.js +2 -104
- package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts +25 -0
- package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -0
- package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +64 -0
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts +2 -24
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +3 -65
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -2
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -2
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.js +3 -2
- package/dist/domain/docs/require-example-language/examples-collect.d.ts +15 -0
- package/dist/domain/docs/require-example-language/examples-collect.d.ts.map +1 -0
- package/dist/domain/docs/require-example-language/examples-collect.js +113 -0
- package/dist/domain/docs/require-example-language/examples.d.ts +24 -13
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +2 -111
- package/dist/domain/docs/require-example-language/fixes.js +4 -4
- package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/rule.js +9 -8
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/types.js +1 -1
- package/dist/domain/index.d.ts +1 -1
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +2 -2
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +8 -8
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +10 -9
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +2 -5
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +14 -16
- package/dist/domain/testing/aaa/analyzer.classification.traversal.js +6 -4
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.js +10 -8
- package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
- package/dist/domain/testing/assert-actual-expected-names/rule.js +21 -23
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +2 -160
- package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts +41 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.js +161 -0
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +2 -2
- package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts +81 -0
- package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -0
- package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +181 -0
- package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/rule.js +28 -217
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +29 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +1 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +200 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +12 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +1 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +151 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +16 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +1 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +109 -0
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +18 -450
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +7 -4
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +7 -4
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +2 -2
- package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts +18 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +162 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +5 -4
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts +29 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +100 -0
- package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match.js +5 -246
- package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/rule.js +18 -20
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +47 -21
- package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/rule.js +2 -4
- package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
- package/dist/domain/testing/single-act-statement/rule.js +20 -22
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/infrastructure/codeperfect-plugin.d.ts +2 -0
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
- package/dist/infrastructure/codeperfect-plugin.js +3 -2
- package/dist/infrastructure/presets.d.ts.map +1 -1
- package/dist/infrastructure/presets.js +3 -1
- package/package.json +60 -69
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +0 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +0 -612
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { collectPatternIdentifierNames, getExportSpecifierLocalName, getExportSpecifierName, } from "./no-unused-exports-pattern-utilities.js";
|
|
2
|
+
import { asRecord, readArrayProperty, readStringProperty, } from "./no-unused-exports-record-utilities.js";
|
|
3
|
+
/** Declaration statement types that own one named `id` property. */
|
|
4
|
+
const NAMED_DECLARATION_TYPES = new Set([
|
|
5
|
+
"ClassDeclaration",
|
|
6
|
+
"FunctionDeclaration",
|
|
7
|
+
"TSEnumDeclaration",
|
|
8
|
+
"TSInterfaceDeclaration",
|
|
9
|
+
"TSTypeAliasDeclaration",
|
|
10
|
+
]);
|
|
11
|
+
/**
|
|
12
|
+
* Records variable declarator names as value declarations.
|
|
13
|
+
* @param declarationNames Map from declared name to declaration metadata.
|
|
14
|
+
* @param declarations Variable declarator candidates.
|
|
15
|
+
* @param statement Owning statement used for diagnostics.
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* addVariableDeclaratorNames(declarationNames, declarations, statement);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const addVariableDeclaratorNames = (declarationNames, declarations, statement) => {
|
|
22
|
+
for (const declaration of declarations) {
|
|
23
|
+
const declarationRecord = asRecord(declaration);
|
|
24
|
+
if (declarationRecord === void 0) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const patternNames = collectPatternIdentifierNames(declarationRecord["id"]);
|
|
28
|
+
for (const name of patternNames) {
|
|
29
|
+
declarationNames.set(name, { kind: "value", node: statement });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Collects top-level declaration names owned by the current module.
|
|
35
|
+
* @param body Program body statements.
|
|
36
|
+
* @returns Map from locally declared name to its declaration metadata.
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const declarations = collectLocalDeclarationNames(program.body);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
const collectLocalDeclarationNames = (body) => {
|
|
43
|
+
const declarationNames = new Map();
|
|
44
|
+
for (const statement of body) {
|
|
45
|
+
const declarationCandidate = statement.type === "ExportNamedDeclaration" &&
|
|
46
|
+
statement.declaration !== null &&
|
|
47
|
+
statement.declaration !== void 0
|
|
48
|
+
? statement.declaration
|
|
49
|
+
: statement;
|
|
50
|
+
const declarationCandidateRecord = asRecord(declarationCandidate);
|
|
51
|
+
const declarationCandidateType = readStringProperty(declarationCandidate, "type");
|
|
52
|
+
if (declarationCandidateRecord === void 0 ||
|
|
53
|
+
declarationCandidateType === void 0) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (NAMED_DECLARATION_TYPES.has(declarationCandidateType)) {
|
|
57
|
+
const declarationName = readStringProperty(declarationCandidateRecord["id"], "name");
|
|
58
|
+
if (declarationName !== void 0) {
|
|
59
|
+
declarationNames.set(declarationName, {
|
|
60
|
+
kind: declarationCandidateType === "TSInterfaceDeclaration" ||
|
|
61
|
+
declarationCandidateType === "TSTypeAliasDeclaration"
|
|
62
|
+
? "type"
|
|
63
|
+
: "value",
|
|
64
|
+
node: statement,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (declarationCandidateType !== "VariableDeclaration") {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const declarations = readArrayProperty(declarationCandidateRecord, "declarations");
|
|
73
|
+
if (declarations === void 0) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
addVariableDeclaratorNames(declarationNames, declarations, statement);
|
|
77
|
+
}
|
|
78
|
+
return declarationNames;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Adds exported elements described by one export declaration site.
|
|
82
|
+
* @param exportedElements Mutable exported-element accumulator.
|
|
83
|
+
* @param statement Named export statement being inspected.
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* addDeclarationExportElements(exportedElements, statement);
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
const addDeclarationExportElements = (exportedElements, statement) => {
|
|
90
|
+
const declaration = asRecord(statement.declaration);
|
|
91
|
+
if (readStringProperty(declaration, "type") === "VariableDeclaration") {
|
|
92
|
+
const variableDeclarations = readArrayProperty(declaration, "declarations");
|
|
93
|
+
if (variableDeclarations !== void 0) {
|
|
94
|
+
for (const variable of variableDeclarations) {
|
|
95
|
+
const patternNames = collectPatternIdentifierNames(asRecord(variable)?.["id"]);
|
|
96
|
+
for (const name of patternNames) {
|
|
97
|
+
exportedElements.push({
|
|
98
|
+
exportedName: name,
|
|
99
|
+
exportKind: "value",
|
|
100
|
+
node: statement,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const declarationName = readStringProperty(declaration?.["id"], "name");
|
|
108
|
+
const declarationType = readStringProperty(declaration, "type");
|
|
109
|
+
const exportKind = declarationType === "TSInterfaceDeclaration" ||
|
|
110
|
+
declarationType === "TSTypeAliasDeclaration"
|
|
111
|
+
? "type"
|
|
112
|
+
: "value";
|
|
113
|
+
if (typeof declarationName === "string") {
|
|
114
|
+
exportedElements.push({
|
|
115
|
+
exportedName: declarationName,
|
|
116
|
+
exportKind,
|
|
117
|
+
node: statement,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Adds exported elements for the specifiers of one named export statement.
|
|
123
|
+
* @param exportedElements Mutable exported-element accumulator.
|
|
124
|
+
* @param localDeclarationNames Locally declared names for specifier lookup.
|
|
125
|
+
* @param statement Named export statement being inspected.
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* addSpecifierExportElements(exportedElements, localDeclarationNames, statement);
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
const addSpecifierExportElements = (exportedElements, localDeclarationNames, statement) => {
|
|
132
|
+
for (const specifier of statement.specifiers) {
|
|
133
|
+
const localName = getExportSpecifierLocalName(specifier);
|
|
134
|
+
const localDeclaration = localName === void 0 ? void 0 : localDeclarationNames.get(localName);
|
|
135
|
+
if (localDeclaration === void 0) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const exportedName = getExportSpecifierName(specifier);
|
|
139
|
+
if (exportedName !== void 0) {
|
|
140
|
+
const statementExportKind = readStringProperty(statement, "exportKind");
|
|
141
|
+
const specifierExportKind = readStringProperty(specifier, "exportKind");
|
|
142
|
+
const isTypeOnlyExport = statementExportKind === "type" || specifierExportKind === "type";
|
|
143
|
+
exportedElements.push({
|
|
144
|
+
exportedName,
|
|
145
|
+
exportKind: isTypeOnlyExport ? "type" : localDeclaration.kind,
|
|
146
|
+
node: localDeclaration.node,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Collects exported elements from one program body.
|
|
153
|
+
* @param body Program body statements.
|
|
154
|
+
* @returns Exported elements in declaration order.
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const exported = collectExportedElements(program.body);
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
const collectExportedElements = (body) => {
|
|
161
|
+
const exportedElements = [];
|
|
162
|
+
const localDeclarationNames = collectLocalDeclarationNames(body);
|
|
163
|
+
for (const statement of body) {
|
|
164
|
+
if (statement.type === "ExportDefaultDeclaration") {
|
|
165
|
+
exportedElements.push({
|
|
166
|
+
exportedName: "default",
|
|
167
|
+
exportKind: "value",
|
|
168
|
+
node: statement,
|
|
169
|
+
});
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (statement.type !== "ExportNamedDeclaration") {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (statement.source !== null && statement.source !== void 0) {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (statement.declaration !== null && statement.declaration !== void 0) {
|
|
179
|
+
addDeclarationExportElements(exportedElements, statement);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
addSpecifierExportElements(exportedElements, localDeclarationNames, statement);
|
|
183
|
+
}
|
|
184
|
+
return exportedElements;
|
|
185
|
+
};
|
|
186
|
+
export { collectExportedElements };
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtZGVjbGFyYXRpb24tdXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvbm8tdW51c2VkLWV4cG9ydHMvbm8tdW51c2VkLWV4cG9ydHMtZGVjbGFyYXRpb24tdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN2QixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUNuQixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLG9FQUFvRTtBQUNwRSxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3RDLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHdCQUF3QjtJQUN4Qix3QkFBd0I7Q0FDekIsQ0FBQyxDQUFDO0FBV0g7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxnQkFBK0MsRUFDL0MsWUFBZ0MsRUFDaEMsU0FBc0MsRUFDaEMsRUFBRTtJQUNSLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEQsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RSxLQUFLLE1BQU0sSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2hDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUks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QUFJLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsNEJBQTRCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFMUQsU0FBUztRQUNYLENBQUM7UUFFRCwwQkFBMEIsQ0FDeEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBU1QgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB0eXBlIHsgRXhwb3J0ZWRFbGVtZW50LCBFeHBvcnRLaW5kIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMsXG4gIGdldEV4cG9ydFNwZWNpZmllckxvY2FsTmFtZSxcbiAgZ2V0RXhwb3J0U3BlY2lmaWVyTmFtZSxcbn0gZnJvbSBcIi4vbm8tdW51c2VkLWV4cG9ydHMtcGF0dGVybi11dGlsaXRpZXNcIjtcbmltcG9ydCB7XG4gIGFzUmVjb3JkLFxuICByZWFkQXJyYXlQcm9wZXJ0eSxcbiAgcmVhZFN0cmluZ1Byb3BlcnR5LFxufSBmcm9tIFwiLi9uby11bnVzZWQtZXhwb3J0cy1yZWNvcmQtdXRpbGl0aWVzXCI7XG5cbi8qKiBEZWNsYXJhdGlvbiBzdGF0ZW1lbnQgdHlwZXMgdGhhdCBvd24gb25lIG5hbWVkIGBpZGAgcHJvcGVydHkuICovXG5jb25zdCBOQU1FRF9ERUNMQVJBVElPTl9UWVBFUyA9IG5ldyBTZXQoW1xuICBcIkNsYXNzRGVjbGFyYXRpb25cIixcbiAgXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIsXG4gIFwiVFNFbnVtRGVjbGFyYXRpb25cIixcbiAgXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCIsXG4gIFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiLFxuXSk7XG5cbi8qKiBMb2NhbCB0b3AtbGV2ZWwgZGVjbGFyYXRpb24gZGlzY292ZXJlZCB3aGVuIGNvbGxlY3RpbmcgZXhwb3J0IHNvdXJjZXMuICovXG5pbnRlcmZhY2UgTG9jYWxEZWNsYXJhdGlvbiB7XG4gIC8qKiBFeHBvcnQga2luZCBpbXBsaWVkIGJ5IHRoZSBkZWNsYXJhdGlvbi4gKi9cbiAga2luZDogRXhwb3J0S2luZDtcblxuICAvKiogRGVjbGFyYXRpb24gc3RhdGVtZW50IHVzZWQgZm9yIGRpYWdub3N0aWNzLiAqL1xuICBub2RlOiBBU1QuUHJvZ3JhbVtcImJvZHlcIl1bbnVtYmVyXTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHZhcmlhYmxlIGRlY2xhcmF0b3IgbmFtZXMgYXMgdmFsdWUgZGVjbGFyYXRpb25zLlxuICogQHBhcmFtIGRlY2xhcmF0aW9uTmFtZXMgTWFwIGZyb20gZGVjbGFyZWQgbmFtZSB0byBkZWNsYXJhdGlvbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgVmFyaWFibGUgZGVjbGFyYXRvciBjYW5kaWRhdGVzLlxuICogQHBhcmFtIHN0YXRlbWVudCBPd25pbmcgc3RhdGVtZW50IHVzZWQgZm9yIGRpYWdub3N0aWNzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFkZFZhcmlhYmxlRGVjbGFyYXRvck5hbWVzKGRlY2xhcmF0aW9uTmFtZXMsIGRlY2xhcmF0aW9ucywgc3RhdGVtZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBhZGRWYXJpYWJsZURlY2xhcmF0b3JOYW1lcyA9IChcbiAgZGVjbGFyYXRpb25OYW1lczogTWFwPHN0cmluZywgTG9jYWxEZWNsYXJhdGlvbj4sXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgdW5rbm93bltdLFxuICBzdGF0ZW1lbnQ6IEFTVC5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgZGVjbGFyYXRpb24gb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25SZWNvcmQgPSBhc1JlY29yZChkZWNsYXJhdGlvbik7XG5cbiAgICBpZiAoZGVjbGFyYXRpb25SZWNvcmQgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybk5hbWVzID0gY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMoZGVjbGFyYXRpb25SZWNvcmRbXCJpZFwiXSk7XG5cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGF0dGVybk5hbWVzKSB7XG4gICAgICBkZWNsYXJhdGlvbk5hbWVzLnNldChuYW1lLCB7IGtpbmQ6IFwidmFsdWVcIiwgbm9kZTogc3RhdGVtZW50IH0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDb2xsZWN0cyB0b3AtbGV2ZWwgZGVjbGFyYXRpb24gbmFtZXMgb3duZWQgYnkgdGhlIGN1cnJlbnQgbW9kdWxlLlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBNYXAgZnJvbSBsb2NhbGx5IGRlY2xhcmVkIG5hbWUgdG8gaXRzIGRlY2xhcmF0aW9uIG1ldGFkYXRhLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRlY2xhcmF0aW9ucyA9IGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZXMocHJvZ3JhbS5ib2R5KTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0TG9jYWxEZWNsYXJhdGlvbk5hbWVzID0gKFxuICBib2R5OiBBU1QuUHJvZ3JhbVtcImJvZHlcIl0sXG4pOiBNYXA8c3RyaW5nLCBMb2NhbERlY2xhcmF0aW9uPiA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgTG9jYWxEZWNsYXJhdGlvbj4oKTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25DYW5kaWRhdGUgPVxuICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiICYmXG4gICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24gIT09IG51bGwgJiZcbiAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwXG4gICAgICAgID8gc3RhdGVtZW50LmRlY2xhcmF0aW9uXG4gICAgICAgIDogc3RhdGVtZW50O1xuICAgIGNvbnN0IGRlY2xhcmF0aW9uQ2FuZGlkYXRlUmVjb3JkID0gYXNSZWNvcmQoZGVjbGFyYXRpb25DYW5kaWRhdGUpO1xuICAgIGNvbnN0IGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9IHJlYWRTdHJpbmdQcm9wZXJ0eShcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlLFxuICAgICAgXCJ0eXBlXCIsXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlUmVjb3JkID09PSB2b2lkIDAgfHxcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gdm9pZCAwXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoTkFNRURfREVDTEFSQVRJT05fVFlQRVMuaGFzKGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSkpIHtcbiAgICAgIGNvbnN0IGRlY2xhcmF0aW9uTmFtZSA9IHJlYWRTdHJpbmdQcm9wZXJ0eShcbiAgICAgICAgZGVjbGFyYXRpb25DYW5kaWRhdGVSZWNvcmRbXCJpZFwiXSxcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICApO1xuXG4gICAgICBpZiAoZGVjbGFyYXRpb25OYW1lICE9PSB2b2lkIDApIHtcbiAgICAgICAgZGVjbGFyYXRpb25OYW1lcy5zZXQoZGVjbGFyYXRpb25OYW1lLCB7XG4gICAgICAgICAga2luZDpcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCIgfHxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgPyBcInR5cGVcIlxuICAgICAgICAgICAgICA6IFwidmFsdWVcIixcbiAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVjbGFyYXRpb25DYW5kaWRhdGVUeXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcmVhZEFycmF5UHJvcGVydHkoXG4gICAgICBkZWNsYXJhdGlvbkNhbmRpZGF0ZVJlY29yZCxcbiAgICAgIFwiZGVjbGFyYXRpb25zXCIsXG4gICAgKTtcblxuICAgIGlmIChkZWNsYXJhdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYWRkVmFyaWFibGVEZWNsYXJhdG9yTmFtZXMoZGVjbGFyYXRpb25OYW1lcywgZGVjbGFyYXRpb25zLCBzdGF0ZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGRlY2xhcmF0aW9uTmFtZXM7XG59O1xuXG4vKipcbiAqIEFkZHMgZXhwb3J0ZWQgZWxlbWVudHMgZGVzY3JpYmVkIGJ5IG9uZSBleHBvcnQgZGVjbGFyYXRpb24gc2l0ZS5cbiAqIEBwYXJhbSBleHBvcnRlZEVsZW1lbnRzIE11dGFibGUgZXhwb3J0ZWQtZWxlbWVudCBhY2N1bXVsYXRvci5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgTmFtZWQgZXhwb3J0IHN0YXRlbWVudCBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYWRkRGVjbGFyYXRpb25FeHBvcnRFbGVtZW50cyhleHBvcnRlZEVsZW1lbnRzLCBzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZERlY2xhcmF0aW9uRXhwb3J0RWxlbWVudHMgPSAoXG4gIGV4cG9ydGVkRWxlbWVudHM6IEV4cG9ydGVkRWxlbWVudFtdLFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gYXNSZWNvcmQoc3RhdGVtZW50LmRlY2xhcmF0aW9uKTtcblxuICBpZiAocmVhZFN0cmluZ1Byb3BlcnR5KGRlY2xhcmF0aW9uLCBcInR5cGVcIikgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbnMgPSByZWFkQXJyYXlQcm9wZXJ0eShkZWNsYXJhdGlvbiwgXCJkZWNsYXJhdGlvbnNcIik7XG5cbiAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbnMgIT09IHZvaWQgMCkge1xuICAgICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiB2YXJpYWJsZURlY2xhcmF0aW9ucykge1xuICAgICAgICBjb25zdCBwYXR0ZXJuTmFtZXMgPSBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyhcbiAgICAgICAgICBhc1JlY29yZCh2YXJpYWJsZSk/LltcImlkXCJdLFxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBwYXR0ZXJuTmFtZXMpIHtcbiAgICAgICAgICBleHBvcnRlZEVsZW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgZXhwb3J0ZWROYW1lOiBuYW1lLFxuICAgICAgICAgICAgZXhwb3J0S2luZDogXCJ2YWx1ZVwiLFxuICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVjbGFyYXRpb25OYW1lID0gcmVhZFN0cmluZ1Byb3BlcnR5KGRlY2xhcmF0aW9uPy5bXCJpZFwiXSwgXCJuYW1lXCIpO1xuICBjb25zdCBkZWNsYXJhdGlvblR5cGUgPSByZWFkU3RyaW5nUHJvcGVydHkoZGVjbGFyYXRpb24sIFwidHlwZVwiKTtcbiAgY29uc3QgZXhwb3J0S2luZDogRXhwb3J0S2luZCA9XG4gICAgZGVjbGFyYXRpb25UeXBlID09PSBcIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cIiB8fFxuICAgIGRlY2xhcmF0aW9uVHlwZSA9PT0gXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJcbiAgICAgID8gXCJ0eXBlXCJcbiAgICAgIDogXCJ2YWx1ZVwiO1xuXG4gIGlmICh0eXBlb2YgZGVjbGFyYXRpb25OYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgZXhwb3J0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgIGV4cG9ydGVkTmFtZTogZGVjbGFyYXRpb25OYW1lLFxuICAgICAgZXhwb3J0S2luZCxcbiAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBBZGRzIGV4cG9ydGVkIGVsZW1lbnRzIGZvciB0aGUgc3BlY2lmaWVycyBvZiBvbmUgbmFtZWQgZXhwb3J0IHN0YXRlbWVudC5cbiAqIEBwYXJhbSBleHBvcnRlZEVsZW1lbnRzIE11dGFibGUgZXhwb3J0ZWQtZWxlbWVudCBhY2N1bXVsYXRvci5cbiAqIEBwYXJhbSBsb2NhbERlY2xhcmF0aW9uTmFtZXMgTG9jYWxseSBkZWNsYXJlZCBuYW1lcyBmb3Igc3BlY2lmaWVyIGxvb2t1cC5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgTmFtZWQgZXhwb3J0IHN0YXRlbWVudCBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYWRkU3BlY2lmaWVyRXhwb3J0RWxlbWVudHMoZXhwb3J0ZWRFbGVtZW50cywgbG9jYWxEZWNsYXJhdGlvbk5hbWVzLCBzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZFNwZWNpZmllckV4cG9ydEVsZW1lbnRzID0gKFxuICBleHBvcnRlZEVsZW1lbnRzOiBFeHBvcnRlZEVsZW1lbnRbXSxcbiAgbG9jYWxEZWNsYXJhdGlvbk5hbWVzOiBSZWFkb25seU1hcDxzdHJpbmcsIExvY2FsRGVjbGFyYXRpb24+LFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIHN0YXRlbWVudC5zcGVjaWZpZXJzKSB7XG4gICAgY29uc3QgbG9jYWxOYW1lID0gZ2V0RXhwb3J0U3BlY2lmaWVyTG9jYWxOYW1lKHNwZWNpZmllcik7XG4gICAgY29uc3QgbG9jYWxEZWNsYXJhdGlvbiA9XG4gICAgICBsb2NhbE5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxvY2FsRGVjbGFyYXRpb25OYW1lcy5nZXQobG9jYWxOYW1lKTtcblxuICAgIGlmIChsb2NhbERlY2xhcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydGVkTmFtZSA9IGdldEV4cG9ydFNwZWNpZmllck5hbWUoc3BlY2lmaWVyKTtcblxuICAgIGlmIChleHBvcnRlZE5hbWUgIT09IHZvaWQgMCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50RXhwb3J0S2luZCA9IHJlYWRTdHJpbmdQcm9wZXJ0eShzdGF0ZW1lbnQsIFwiZXhwb3J0S2luZFwiKTtcbiAgICAgIGNvbnN0IHNwZWNpZmllckV4cG9ydEtpbmQgPSByZWFkU3RyaW5nUHJvcGVydHkoc3BlY2lmaWVyLCBcImV4cG9ydEtpbmRcIik7XG4gICAgICBjb25zdCBpc1R5cGVPbmx5RXhwb3J0ID1cbiAgICAgICAgc3RhdGVtZW50RXhwb3J0S2luZCA9PT0gXCJ0eXBlXCIgfHwgc3BlY2lmaWVyRXhwb3J0S2luZCA9PT0gXCJ0eXBlXCI7XG5cbiAgICAgIGV4cG9ydGVkRWxlbWVudHMucHVzaCh7XG4gICAgICAgIGV4cG9ydGVkTmFtZSxcbiAgICAgICAgZXhwb3J0S2luZDogaXNUeXBlT25seUV4cG9ydCA/IFwidHlwZVwiIDogbG9jYWxEZWNsYXJhdGlvbi5raW5kLFxuICAgICAgICBub2RlOiBsb2NhbERlY2xhcmF0aW9uLm5vZGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgZXhwb3J0ZWQgZWxlbWVudHMgZnJvbSBvbmUgcHJvZ3JhbSBib2R5LlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBFeHBvcnRlZCBlbGVtZW50cyBpbiBkZWNsYXJhdGlvbiBvcmRlci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleHBvcnRlZCA9IGNvbGxlY3RFeHBvcnRlZEVsZW1lbnRzKHByb2dyYW0uYm9keSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdEV4cG9ydGVkRWxlbWVudHMgPSAoXG4gIGJvZHk6IEFTVC5Qcm9ncmFtW1wiYm9keVwiXSxcbik6IEV4cG9ydGVkRWxlbWVudFtdID0+IHtcbiAgY29uc3QgZXhwb3J0ZWRFbGVtZW50czogRXhwb3J0ZWRFbGVtZW50W10gPSBbXTtcbiAgY29uc3QgbG9jYWxEZWNsYXJhdGlvbk5hbWVzID0gY29sbGVjdExvY2FsRGVjbGFyYXRpb25OYW1lcyhib2R5KTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiKSB7XG4gICAgICBleHBvcnRlZEVsZW1lbnRzLnB1c2goe1xuICAgICAgICBleHBvcnRlZE5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBleHBvcnRLaW5kOiBcInZhbHVlXCIsXG4gICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudC5zb3VyY2UgIT09IG51bGwgJiYgc3RhdGVtZW50LnNvdXJjZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSBudWxsICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbkV4cG9ydEVsZW1lbnRzKGV4cG9ydGVkRWxlbWVudHMsIHN0YXRlbWVudCk7XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGFkZFNwZWNpZmllckV4cG9ydEVsZW1lbnRzKFxuICAgICAgZXhwb3J0ZWRFbGVtZW50cyxcbiAgICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lcyxcbiAgICAgIHN0YXRlbWVudCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGV4cG9ydGVkRWxlbWVudHM7XG59O1xuXG5leHBvcnQgeyBjb2xsZWN0RXhwb3J0ZWRFbGVtZW50cyB9O1xuIl19
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
import type { ExportKind } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Resolves TypeScript parser services program when available.
|
|
6
|
+
* @param context Rule context.
|
|
7
|
+
* @returns TypeScript program when available.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const program = getTypeScriptProgram(context);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare const getTypeScriptProgram: (context: Rule.RuleContext) => ts.Program | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether one identifier is one concrete usage candidate for the export kind.
|
|
16
|
+
* @param identifier Identifier node.
|
|
17
|
+
* @param exportKind Whether type-only or value usage is required.
|
|
18
|
+
* @returns True when the identifier can satisfy usage.
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const concrete = isConcreteUsageIdentifier(identifier, "value");
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
declare const isConcreteUsageIdentifier: (identifier: ts.Identifier, exportKind: ExportKind) => boolean;
|
|
25
|
+
export { getTypeScriptProgram, isConcreteUsageIdentifier };
|
|
26
|
+
//# sourceMappingURL=no-unused-exports-identifier-utilities.d.ts.map
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-exports-identifier-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;GAQG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,IAAI,CAAC,WAAW,KACxB,EAAE,CAAC,OAAO,GAAG,SAOf,CAAC;AAsEF;;;;;;;;;GASG;AACH,QAAA,MAAM,yBAAyB,GAC7B,YAAY,EAAE,CAAC,UAAU,EACzB,YAAY,UAAU,KACrB,OAQF,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* Resolves TypeScript parser services program when available.
|
|
5
|
+
* @param context Rule context.
|
|
6
|
+
* @returns TypeScript program when available.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const program = getTypeScriptProgram(context);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
const getTypeScriptProgram = (context) => {
|
|
13
|
+
try {
|
|
14
|
+
const services = ESLintUtils.getParserServices(context);
|
|
15
|
+
return services.program;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Checks whether an identifier participates in one declaration/import/export site.
|
|
23
|
+
* @param identifier Identifier node to evaluate.
|
|
24
|
+
* @returns True when the identifier is declaration-only syntax.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const declaration = isDeclarationOnlyIdentifier(identifier);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
const isDeclarationOnlyIdentifier = (identifier) => {
|
|
31
|
+
const parent = identifier.parent;
|
|
32
|
+
return (ts.isImportSpecifier(parent) ||
|
|
33
|
+
ts.isImportClause(parent) ||
|
|
34
|
+
ts.isNamespaceImport(parent) ||
|
|
35
|
+
ts.isImportEqualsDeclaration(parent) ||
|
|
36
|
+
ts.isExportSpecifier(parent) ||
|
|
37
|
+
ts.isTypeAliasDeclaration(parent) ||
|
|
38
|
+
ts.isInterfaceDeclaration(parent) ||
|
|
39
|
+
ts.isTypeParameterDeclaration(parent) ||
|
|
40
|
+
(ts.isVariableDeclaration(parent) && parent.name === identifier) ||
|
|
41
|
+
(ts.isFunctionDeclaration(parent) && parent.name === identifier) ||
|
|
42
|
+
(ts.isClassDeclaration(parent) && parent.name === identifier) ||
|
|
43
|
+
(ts.isParameter(parent) && parent.name === identifier));
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Checks whether one identifier node appears under a type node.
|
|
47
|
+
* @param identifier Candidate identifier.
|
|
48
|
+
* @returns True when the identifier is inside type-only syntax.
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const typePosition = isTypePositionIdentifier(identifier);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
const isTypePositionIdentifier = (identifier) => {
|
|
55
|
+
const visitNode = (current) => {
|
|
56
|
+
if (ts.isTypeQueryNode(current)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (ts.isTypeNode(current)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (ts.isExpressionStatement(current) ||
|
|
63
|
+
ts.isCallExpression(current) ||
|
|
64
|
+
ts.isPropertyAccessExpression(current) ||
|
|
65
|
+
ts.isElementAccessExpression(current) ||
|
|
66
|
+
ts.isVariableDeclaration(current) ||
|
|
67
|
+
ts.isReturnStatement(current)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (ts.isSourceFile(current)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return visitNode(current.parent);
|
|
74
|
+
};
|
|
75
|
+
return visitNode(identifier);
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Checks whether one identifier is one concrete usage candidate for the export kind.
|
|
79
|
+
* @param identifier Identifier node.
|
|
80
|
+
* @param exportKind Whether type-only or value usage is required.
|
|
81
|
+
* @returns True when the identifier can satisfy usage.
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const concrete = isConcreteUsageIdentifier(identifier, "value");
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
const isConcreteUsageIdentifier = (identifier, exportKind) => {
|
|
88
|
+
if (isDeclarationOnlyIdentifier(identifier)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
const isInTypePosition = isTypePositionIdentifier(identifier);
|
|
92
|
+
return exportKind === "type" ? isInTypePosition : !isInTypePosition;
|
|
93
|
+
};
|
|
94
|
+
export { getTypeScriptProgram, isConcreteUsageIdentifier };
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtaWRlbnRpZmllci11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1pZGVudGlmaWVyLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLE9BQXlCLEVBQ0QsRUFBRTtJQUMxQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBeUIsRUFBVyxFQUFFO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyxDQUNMLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDNUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDekIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUM1QixFQUFFLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDNUIsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztRQUNqQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDaEUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDaEUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDN0QsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxVQUF5QixFQUFXLEVBQUU7SUFDdEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUU7UUFDOUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFDRSxFQUFFLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDNUIsRUFBRSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztZQUN0QyxFQUFFLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7WUFDakMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUM3QixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsVUFBeUIsRUFDekIsVUFBc0IsRUFDYixFQUFFO0lBQ1gsSUFBSSwyQkFBMkIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFOUQsT0FBTyxVQUFVLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgRVNMaW50VXRpbHMgfSBmcm9tIFwiQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEV4cG9ydEtpbmQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIFR5cGVTY3JpcHQgcGFyc2VyIHNlcnZpY2VzIHByb2dyYW0gd2hlbiBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUeXBlU2NyaXB0IHByb2dyYW0gd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcHJvZ3JhbSA9IGdldFR5cGVTY3JpcHRQcm9ncmFtKGNvbnRleHQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFR5cGVTY3JpcHRQcm9ncmFtID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuKTogdHMuUHJvZ3JhbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBFU0xpbnRVdGlscy5nZXRQYXJzZXJTZXJ2aWNlcyhjb250ZXh0IGFzIG5ldmVyKTtcbiAgICByZXR1cm4gc2VydmljZXMucHJvZ3JhbTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBpZGVudGlmaWVyIHBhcnRpY2lwYXRlcyBpbiBvbmUgZGVjbGFyYXRpb24vaW1wb3J0L2V4cG9ydCBzaXRlLlxuICogQHBhcmFtIGlkZW50aWZpZXIgSWRlbnRpZmllciBub2RlIHRvIGV2YWx1YXRlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBpZGVudGlmaWVyIGlzIGRlY2xhcmF0aW9uLW9ubHkgc3ludGF4LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRlY2xhcmF0aW9uID0gaXNEZWNsYXJhdGlvbk9ubHlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRGVjbGFyYXRpb25Pbmx5SWRlbnRpZmllciA9IChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IGlkZW50aWZpZXIucGFyZW50O1xuXG4gIHJldHVybiAoXG4gICAgdHMuaXNJbXBvcnRTcGVjaWZpZXIocGFyZW50KSB8fFxuICAgIHRzLmlzSW1wb3J0Q2xhdXNlKHBhcmVudCkgfHxcbiAgICB0cy5pc05hbWVzcGFjZUltcG9ydChwYXJlbnQpIHx8XG4gICAgdHMuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgdHMuaXNFeHBvcnRTcGVjaWZpZXIocGFyZW50KSB8fFxuICAgIHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgIHRzLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgIHRzLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAodHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHBhcmVudCkgJiYgcGFyZW50Lm5hbWUgPT09IGlkZW50aWZpZXIpIHx8XG4gICAgKHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihwYXJlbnQpICYmIHBhcmVudC5uYW1lID09PSBpZGVudGlmaWVyKSB8fFxuICAgICh0cy5pc0NsYXNzRGVjbGFyYXRpb24ocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gaWRlbnRpZmllcikgfHxcbiAgICAodHMuaXNQYXJhbWV0ZXIocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gaWRlbnRpZmllcilcbiAgKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgb25lIGlkZW50aWZpZXIgbm9kZSBhcHBlYXJzIHVuZGVyIGEgdHlwZSBub2RlLlxuICogQHBhcmFtIGlkZW50aWZpZXIgQ2FuZGlkYXRlIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGlkZW50aWZpZXIgaXMgaW5zaWRlIHR5cGUtb25seSBzeW50YXguXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdHlwZVBvc2l0aW9uID0gaXNUeXBlUG9zaXRpb25JZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZVBvc2l0aW9uSWRlbnRpZmllciA9IChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHZpc2l0Tm9kZSA9IChjdXJyZW50OiB0cy5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHRzLmlzVHlwZVF1ZXJ5Tm9kZShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0cy5pc1R5cGVOb2RlKGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoY3VycmVudCkgfHxcbiAgICAgIHRzLmlzQ2FsbEV4cHJlc3Npb24oY3VycmVudCkgfHxcbiAgICAgIHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGN1cnJlbnQpIHx8XG4gICAgICB0cy5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGN1cnJlbnQpIHx8XG4gICAgICB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oY3VycmVudCkgfHxcbiAgICAgIHRzLmlzUmV0dXJuU3RhdGVtZW50KGN1cnJlbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRzLmlzU291cmNlRmlsZShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdE5vZGUoY3VycmVudC5wYXJlbnQpO1xuICB9O1xuXG4gIHJldHVybiB2aXNpdE5vZGUoaWRlbnRpZmllcik7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIG9uZSBpZGVudGlmaWVyIGlzIG9uZSBjb25jcmV0ZSB1c2FnZSBjYW5kaWRhdGUgZm9yIHRoZSBleHBvcnQga2luZC5cbiAqIEBwYXJhbSBpZGVudGlmaWVyIElkZW50aWZpZXIgbm9kZS5cbiAqIEBwYXJhbSBleHBvcnRLaW5kIFdoZXRoZXIgdHlwZS1vbmx5IG9yIHZhbHVlIHVzYWdlIGlzIHJlcXVpcmVkLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBpZGVudGlmaWVyIGNhbiBzYXRpc2Z5IHVzYWdlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbmNyZXRlID0gaXNDb25jcmV0ZVVzYWdlSWRlbnRpZmllcihpZGVudGlmaWVyLCBcInZhbHVlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzQ29uY3JldGVVc2FnZUlkZW50aWZpZXIgPSAoXG4gIGlkZW50aWZpZXI6IHRzLklkZW50aWZpZXIsXG4gIGV4cG9ydEtpbmQ6IEV4cG9ydEtpbmQsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKGlzRGVjbGFyYXRpb25Pbmx5SWRlbnRpZmllcihpZGVudGlmaWVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlzSW5UeXBlUG9zaXRpb24gPSBpc1R5cGVQb3NpdGlvbklkZW50aWZpZXIoaWRlbnRpZmllcik7XG5cbiAgcmV0dXJuIGV4cG9ydEtpbmQgPT09IFwidHlwZVwiID8gaXNJblR5cGVQb3NpdGlvbiA6ICFpc0luVHlwZVBvc2l0aW9uO1xufTtcblxuZXhwb3J0IHsgZ2V0VHlwZVNjcmlwdFByb2dyYW0sIGlzQ29uY3JldGVVc2FnZUlkZW50aWZpZXIgfTtcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collects identifier names from one variable pattern.
|
|
3
|
+
* @param node Variable pattern candidate.
|
|
4
|
+
* @returns Identifier names declared by the pattern.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const names = collectPatternIdentifierNames(pattern);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
declare const collectPatternIdentifierNames: (node: unknown) => string[];
|
|
11
|
+
/**
|
|
12
|
+
* Reads one export specifier name.
|
|
13
|
+
* @param specifier Export specifier candidate.
|
|
14
|
+
* @returns Exported name when available.
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const name = getExportSpecifierName(specifier);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare const getExportSpecifierName: (specifier: unknown) => string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Reads one local export specifier name.
|
|
23
|
+
* @param specifier Export specifier candidate.
|
|
24
|
+
* @returns Local specifier name when available.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const name = getExportSpecifierLocalName(specifier);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare const getExportSpecifierLocalName: (specifier: unknown) => string | undefined;
|
|
31
|
+
export { collectPatternIdentifierNames, getExportSpecifierLocalName, getExportSpecifierName, };
|
|
32
|
+
//# sourceMappingURL=no-unused-exports-pattern-utilities.d.ts.map
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-exports-pattern-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,QAAA,MAAM,6BAA6B,GAAI,MAAM,OAAO,KAAG,MAAM,EA+C5D,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,sBAAsB,GAAI,WAAW,OAAO,KAAG,MAAM,GAAG,SAW7D,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,2BAA2B,GAC/B,WAAW,OAAO,KACjB,MAAM,GAAG,SAIX,CAAC;AAEF,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,sBAAsB,GACvB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { asRecord, readArrayProperty, readStringProperty, } from "./no-unused-exports-record-utilities.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collects identifier names from one variable pattern.
|
|
4
|
+
* @param node Variable pattern candidate.
|
|
5
|
+
* @returns Identifier names declared by the pattern.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const names = collectPatternIdentifierNames(pattern);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
const collectPatternIdentifierNames = (node) => {
|
|
12
|
+
const pattern = asRecord(node);
|
|
13
|
+
if (pattern === void 0) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const patternType = readStringProperty(pattern, "type");
|
|
17
|
+
if (patternType === "Identifier") {
|
|
18
|
+
const name = readStringProperty(pattern, "name");
|
|
19
|
+
return name === void 0 ? [] : [name];
|
|
20
|
+
}
|
|
21
|
+
if (patternType === "RestElement") {
|
|
22
|
+
return collectPatternIdentifierNames(pattern["argument"]);
|
|
23
|
+
}
|
|
24
|
+
if (patternType === "AssignmentPattern") {
|
|
25
|
+
return collectPatternIdentifierNames(pattern["left"]);
|
|
26
|
+
}
|
|
27
|
+
if (patternType === "ArrayPattern") {
|
|
28
|
+
const elements = readArrayProperty(pattern, "elements");
|
|
29
|
+
return elements === void 0
|
|
30
|
+
? []
|
|
31
|
+
: elements.flatMap((element) => collectPatternIdentifierNames(element));
|
|
32
|
+
}
|
|
33
|
+
if (patternType === "ObjectPattern") {
|
|
34
|
+
const properties = readArrayProperty(pattern, "properties");
|
|
35
|
+
return properties === void 0
|
|
36
|
+
? []
|
|
37
|
+
: properties.flatMap((property) => {
|
|
38
|
+
if (readStringProperty(property, "type") === "RestElement") {
|
|
39
|
+
return collectPatternIdentifierNames(asRecord(property)?.["argument"]);
|
|
40
|
+
}
|
|
41
|
+
return collectPatternIdentifierNames(asRecord(property)?.["value"]);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return [];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Reads one export specifier name.
|
|
48
|
+
* @param specifier Export specifier candidate.
|
|
49
|
+
* @returns Exported name when available.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const name = getExportSpecifierName(specifier);
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
const getExportSpecifierName = (specifier) => {
|
|
56
|
+
const candidate = asRecord(specifier);
|
|
57
|
+
const exportedName = readStringProperty(candidate?.["exported"], "name");
|
|
58
|
+
if (typeof exportedName === "string") {
|
|
59
|
+
return exportedName;
|
|
60
|
+
}
|
|
61
|
+
const localName = readStringProperty(candidate?.["local"], "name");
|
|
62
|
+
return typeof localName === "string" ? localName : void 0;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Reads one local export specifier name.
|
|
66
|
+
* @param specifier Export specifier candidate.
|
|
67
|
+
* @returns Local specifier name when available.
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const name = getExportSpecifierLocalName(specifier);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
const getExportSpecifierLocalName = (specifier) => {
|
|
74
|
+
const candidate = asRecord(specifier);
|
|
75
|
+
return readStringProperty(candidate?.["local"], "name");
|
|
76
|
+
};
|
|
77
|
+
export { collectPatternIdentifierNames, getExportSpecifierLocalName, getExportSpecifierName, };
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtcGF0dGVybi11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1wYXR0ZXJuLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixrQkFBa0IsR0FDbkIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxJQUFhLEVBQVksRUFBRTtJQUNoRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFL0IsSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEQsSUFBSSxXQUFXLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLGFBQWEsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sNkJBQTZCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLG1CQUFtQixFQUFFLENBQUM7UUFDeEMsT0FBTyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxXQUFXLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLFdBQVcsS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFNUQsT0FBTyxVQUFVLEtBQUssS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssYUFBYSxFQUFFLENBQUM7b0JBQzNELE9BQU8sNkJBQTZCLENBQ2xDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUNqQyxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsT0FBTyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBa0IsRUFBc0IsRUFBRTtJQUN4RSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFekUsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFbkUsT0FBTyxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLFNBQWtCLEVBQ0UsRUFBRTtJQUN0QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEMsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQixzQkFBc0IsR0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFzUmVjb3JkLFxuICByZWFkQXJyYXlQcm9wZXJ0eSxcbiAgcmVhZFN0cmluZ1Byb3BlcnR5LFxufSBmcm9tIFwiLi9uby11bnVzZWQtZXhwb3J0cy1yZWNvcmQtdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogQ29sbGVjdHMgaWRlbnRpZmllciBuYW1lcyBmcm9tIG9uZSB2YXJpYWJsZSBwYXR0ZXJuLlxuICogQHBhcmFtIG5vZGUgVmFyaWFibGUgcGF0dGVybiBjYW5kaWRhdGUuXG4gKiBAcmV0dXJucyBJZGVudGlmaWVyIG5hbWVzIGRlY2xhcmVkIGJ5IHRoZSBwYXR0ZXJuLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWVzID0gY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMocGF0dGVybik7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMgPSAobm9kZTogdW5rbm93bik6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgcGF0dGVybiA9IGFzUmVjb3JkKG5vZGUpO1xuXG4gIGlmIChwYXR0ZXJuID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwYXR0ZXJuVHlwZSA9IHJlYWRTdHJpbmdQcm9wZXJ0eShwYXR0ZXJuLCBcInR5cGVcIik7XG5cbiAgaWYgKHBhdHRlcm5UeXBlID09PSBcIklkZW50aWZpZXJcIikge1xuICAgIGNvbnN0IG5hbWUgPSByZWFkU3RyaW5nUHJvcGVydHkocGF0dGVybiwgXCJuYW1lXCIpO1xuICAgIHJldHVybiBuYW1lID09PSB2b2lkIDAgPyBbXSA6IFtuYW1lXTtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuVHlwZSA9PT0gXCJSZXN0RWxlbWVudFwiKSB7XG4gICAgcmV0dXJuIGNvbGxlY3RQYXR0ZXJuSWRlbnRpZmllck5hbWVzKHBhdHRlcm5bXCJhcmd1bWVudFwiXSk7XG4gIH1cblxuICBpZiAocGF0dGVyblR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIikge1xuICAgIHJldHVybiBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyhwYXR0ZXJuW1wibGVmdFwiXSk7XG4gIH1cblxuICBpZiAocGF0dGVyblR5cGUgPT09IFwiQXJyYXlQYXR0ZXJuXCIpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHJlYWRBcnJheVByb3BlcnR5KHBhdHRlcm4sIFwiZWxlbWVudHNcIik7XG5cbiAgICByZXR1cm4gZWxlbWVudHMgPT09IHZvaWQgMFxuICAgICAgPyBbXVxuICAgICAgOiBlbGVtZW50cy5mbGF0TWFwKChlbGVtZW50KSA9PiBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyhlbGVtZW50KSk7XG4gIH1cblxuICBpZiAocGF0dGVyblR5cGUgPT09IFwiT2JqZWN0UGF0dGVyblwiKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHJlYWRBcnJheVByb3BlcnR5KHBhdHRlcm4sIFwicHJvcGVydGllc1wiKTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzID09PSB2b2lkIDBcbiAgICAgID8gW11cbiAgICAgIDogcHJvcGVydGllcy5mbGF0TWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgIGlmIChyZWFkU3RyaW5nUHJvcGVydHkocHJvcGVydHksIFwidHlwZVwiKSA9PT0gXCJSZXN0RWxlbWVudFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMoXG4gICAgICAgICAgICAgIGFzUmVjb3JkKHByb3BlcnR5KT8uW1wiYXJndW1lbnRcIl0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyhhc1JlY29yZChwcm9wZXJ0eSk/LltcInZhbHVlXCJdKTtcbiAgICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gW107XG59O1xuXG4vKipcbiAqIFJlYWRzIG9uZSBleHBvcnQgc3BlY2lmaWVyIG5hbWUuXG4gKiBAcGFyYW0gc3BlY2lmaWVyIEV4cG9ydCBzcGVjaWZpZXIgY2FuZGlkYXRlLlxuICogQHJldHVybnMgRXhwb3J0ZWQgbmFtZSB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lID0gZ2V0RXhwb3J0U3BlY2lmaWVyTmFtZShzcGVjaWZpZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldEV4cG9ydFNwZWNpZmllck5hbWUgPSAoc3BlY2lmaWVyOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY2FuZGlkYXRlID0gYXNSZWNvcmQoc3BlY2lmaWVyKTtcbiAgY29uc3QgZXhwb3J0ZWROYW1lID0gcmVhZFN0cmluZ1Byb3BlcnR5KGNhbmRpZGF0ZT8uW1wiZXhwb3J0ZWRcIl0sIFwibmFtZVwiKTtcblxuICBpZiAodHlwZW9mIGV4cG9ydGVkTmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBleHBvcnRlZE5hbWU7XG4gIH1cblxuICBjb25zdCBsb2NhbE5hbWUgPSByZWFkU3RyaW5nUHJvcGVydHkoY2FuZGlkYXRlPy5bXCJsb2NhbFwiXSwgXCJuYW1lXCIpO1xuXG4gIHJldHVybiB0eXBlb2YgbG9jYWxOYW1lID09PSBcInN0cmluZ1wiID8gbG9jYWxOYW1lIDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBSZWFkcyBvbmUgbG9jYWwgZXhwb3J0IHNwZWNpZmllciBuYW1lLlxuICogQHBhcmFtIHNwZWNpZmllciBFeHBvcnQgc3BlY2lmaWVyIGNhbmRpZGF0ZS5cbiAqIEByZXR1cm5zIExvY2FsIHNwZWNpZmllciBuYW1lIHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWUgPSBnZXRFeHBvcnRTcGVjaWZpZXJMb2NhbE5hbWUoc3BlY2lmaWVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRFeHBvcnRTcGVjaWZpZXJMb2NhbE5hbWUgPSAoXG4gIHNwZWNpZmllcjogdW5rbm93bixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGFzUmVjb3JkKHNwZWNpZmllcik7XG5cbiAgcmV0dXJuIHJlYWRTdHJpbmdQcm9wZXJ0eShjYW5kaWRhdGU/LltcImxvY2FsXCJdLCBcIm5hbWVcIik7XG59O1xuXG5leHBvcnQge1xuICBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyxcbiAgZ2V0RXhwb3J0U3BlY2lmaWVyTG9jYWxOYW1lLFxuICBnZXRFeHBvcnRTcGVjaWZpZXJOYW1lLFxufTtcbiJdfQ==
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import type { ExportUsage, NoUnusedExportsState } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Collects public API exposure usages for one exported symbol.
|
|
5
|
+
* @param program TypeScript program.
|
|
6
|
+
* @param sourceFilename Source filename where export is defined.
|
|
7
|
+
* @param state Normalized rule options.
|
|
8
|
+
* @param repoRoot Absolute repository root used for file classification.
|
|
9
|
+
* @param targetSymbol Export symbol being classified.
|
|
10
|
+
* @returns Public API exposure usages for the exported symbol.
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const usages = collectPublicApiExposureUsages(program, sourceFilename, state, repoRoot, targetSymbol);
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const collectPublicApiExposureUsages: (program: ts.Program, sourceFilename: string, state: NoUnusedExportsState, repoRoot: string, targetSymbol: ts.Symbol) => ExportUsage[];
|
|
17
|
+
export { collectPublicApiExposureUsages };
|
|
18
|
+
//# sourceMappingURL=no-unused-exports-public-api-usage-utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-exports-public-api-usage-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQjE;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,8BAA8B,GAClC,SAAS,EAAE,CAAC,OAAO,EACnB,gBAAgB,MAAM,EACtB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,cAAc,EAAE,CAAC,MAAM,KACtB,WAAW,EAiCb,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
import { isPublicApiFile, isTestFile } from "./no-unused-exports-options.js";
|
|
4
|
+
import { sourceFileExportsSymbol, toComparableAbsolutePath, } from "./no-unused-exports-symbol-utilities.js";
|
|
5
|
+
/**
|
|
6
|
+
* Collects public API exposure usages for one exported symbol.
|
|
7
|
+
* @param program TypeScript program.
|
|
8
|
+
* @param sourceFilename Source filename where export is defined.
|
|
9
|
+
* @param state Normalized rule options.
|
|
10
|
+
* @param repoRoot Absolute repository root used for file classification.
|
|
11
|
+
* @param targetSymbol Export symbol being classified.
|
|
12
|
+
* @returns Public API exposure usages for the exported symbol.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const usages = collectPublicApiExposureUsages(program, sourceFilename, state, repoRoot, targetSymbol);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const collectPublicApiExposureUsages = (program, sourceFilename, state, repoRoot, targetSymbol) => {
|
|
19
|
+
const checker = program.getTypeChecker();
|
|
20
|
+
const normalizedSourceFilename = toComparableAbsolutePath(sourceFilename);
|
|
21
|
+
const normalizedRepoRoot = path.resolve(repoRoot);
|
|
22
|
+
const usages = [];
|
|
23
|
+
for (const sourceFile of program.getSourceFiles()) {
|
|
24
|
+
if (sourceFile.isDeclarationFile) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const publicApiFilename = path.resolve(sourceFile.fileName);
|
|
28
|
+
const normalizedPublicApiFilename = toComparableAbsolutePath(publicApiFilename);
|
|
29
|
+
if (normalizedPublicApiFilename === normalizedSourceFilename) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (!isPublicApiFile(publicApiFilename, state, normalizedRepoRoot)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (!sourceFileExportsSymbol(sourceFile, checker, targetSymbol)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
usages.push({
|
|
39
|
+
isTestFile: isTestFile(publicApiFilename, state, normalizedRepoRoot),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return usages;
|
|
43
|
+
};
|
|
44
|
+
export { collectPublicApiExposureUsages };
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtcHVibGljLWFwaS11c2FnZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1wdWJsaWMtYXBpLXVzYWdlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUN6QixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sOEJBQThCLEdBQUcsQ0FDckMsT0FBbUIsRUFDbkIsY0FBc0IsRUFDdEIsS0FBMkIsRUFDM0IsUUFBZ0IsRUFDaEIsWUFBdUIsRUFDUixFQUFFO0lBQ2pCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QyxNQUFNLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBRWpDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDbEQsSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqQyxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSwyQkFBMkIsR0FDL0Isd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU5QyxJQUFJLDJCQUEyQixLQUFLLHdCQUF3QixFQUFFLENBQUM7WUFDN0QsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDbkUsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hFLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLFVBQVUsRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCAqIGFzIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmltcG9ydCB0eXBlIHsgRXhwb3J0VXNhZ2UsIE5vVW51c2VkRXhwb3J0c1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgaXNQdWJsaWNBcGlGaWxlLCBpc1Rlc3RGaWxlIH0gZnJvbSBcIi4vbm8tdW51c2VkLWV4cG9ydHMtb3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgc291cmNlRmlsZUV4cG9ydHNTeW1ib2wsXG4gIHRvQ29tcGFyYWJsZUFic29sdXRlUGF0aCxcbn0gZnJvbSBcIi4vbm8tdW51c2VkLWV4cG9ydHMtc3ltYm9sLXV0aWxpdGllc1wiO1xuXG4vKipcbiAqIENvbGxlY3RzIHB1YmxpYyBBUEkgZXhwb3N1cmUgdXNhZ2VzIGZvciBvbmUgZXhwb3J0ZWQgc3ltYm9sLlxuICogQHBhcmFtIHByb2dyYW0gVHlwZVNjcmlwdCBwcm9ncmFtLlxuICogQHBhcmFtIHNvdXJjZUZpbGVuYW1lIFNvdXJjZSBmaWxlbmFtZSB3aGVyZSBleHBvcnQgaXMgZGVmaW5lZC5cbiAqIEBwYXJhbSBzdGF0ZSBOb3JtYWxpemVkIHJ1bGUgb3B0aW9ucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBBYnNvbHV0ZSByZXBvc2l0b3J5IHJvb3QgdXNlZCBmb3IgZmlsZSBjbGFzc2lmaWNhdGlvbi5cbiAqIEBwYXJhbSB0YXJnZXRTeW1ib2wgRXhwb3J0IHN5bWJvbCBiZWluZyBjbGFzc2lmaWVkLlxuICogQHJldHVybnMgUHVibGljIEFQSSBleHBvc3VyZSB1c2FnZXMgZm9yIHRoZSBleHBvcnRlZCBzeW1ib2wuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdXNhZ2VzID0gY29sbGVjdFB1YmxpY0FwaUV4cG9zdXJlVXNhZ2VzKHByb2dyYW0sIHNvdXJjZUZpbGVuYW1lLCBzdGF0ZSwgcmVwb1Jvb3QsIHRhcmdldFN5bWJvbCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdFB1YmxpY0FwaUV4cG9zdXJlVXNhZ2VzID0gKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBzb3VyY2VGaWxlbmFtZTogc3RyaW5nLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4gIHRhcmdldFN5bWJvbDogdHMuU3ltYm9sLFxuKTogRXhwb3J0VXNhZ2VbXSA9PiB7XG4gIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRTb3VyY2VGaWxlbmFtZSA9IHRvQ29tcGFyYWJsZUFic29sdXRlUGF0aChzb3VyY2VGaWxlbmFtZSk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRSZXBvUm9vdCA9IHBhdGgucmVzb2x2ZShyZXBvUm9vdCk7XG4gIGNvbnN0IHVzYWdlczogRXhwb3J0VXNhZ2VbXSA9IFtdO1xuXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBpZiAoc291cmNlRmlsZS5pc0RlY2xhcmF0aW9uRmlsZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGljQXBpRmlsZW5hbWUgPSBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFB1YmxpY0FwaUZpbGVuYW1lID1cbiAgICAgIHRvQ29tcGFyYWJsZUFic29sdXRlUGF0aChwdWJsaWNBcGlGaWxlbmFtZSk7XG5cbiAgICBpZiAobm9ybWFsaXplZFB1YmxpY0FwaUZpbGVuYW1lID09PSBub3JtYWxpemVkU291cmNlRmlsZW5hbWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghaXNQdWJsaWNBcGlGaWxlKHB1YmxpY0FwaUZpbGVuYW1lLCBzdGF0ZSwgbm9ybWFsaXplZFJlcG9Sb290KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFzb3VyY2VGaWxlRXhwb3J0c1N5bWJvbChzb3VyY2VGaWxlLCBjaGVja2VyLCB0YXJnZXRTeW1ib2wpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB1c2FnZXMucHVzaCh7XG4gICAgICBpc1Rlc3RGaWxlOiBpc1Rlc3RGaWxlKHB1YmxpY0FwaUZpbGVuYW1lLCBzdGF0ZSwgbm9ybWFsaXplZFJlcG9Sb290KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB1c2FnZXM7XG59O1xuXG5leHBvcnQgeyBjb2xsZWN0UHVibGljQXBpRXhwb3N1cmVVc2FnZXMgfTtcbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts one unknown value into an indexable record.
|
|
3
|
+
* @param value Candidate value.
|
|
4
|
+
* @returns Record view when the value is object-like.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const record = asRecord({ type: "Identifier" });
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
declare const asRecord: (value: unknown) => Record<string, unknown> | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Reads one array property from an object-like value.
|
|
13
|
+
* @param value Candidate object.
|
|
14
|
+
* @param key Lookup key used to read the property.
|
|
15
|
+
* @returns Array value when present.
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const items = readArrayProperty({ elements: [1, 2] }, "elements");
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare const readArrayProperty: (value: unknown, key: string) => undefined | unknown[];
|
|
22
|
+
/**
|
|
23
|
+
* Reads one string property from an object-like value.
|
|
24
|
+
* @param value Candidate object.
|
|
25
|
+
* @param key Lookup key used to read the property.
|
|
26
|
+
* @returns String value when present.
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const name = readStringProperty({ name: "feature" }, "name");
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
declare const readStringProperty: (value: unknown, key: string) => string | undefined;
|
|
33
|
+
export { asRecord, readArrayProperty, readStringProperty };
|
|
34
|
+
//# sourceMappingURL=no-unused-exports-record-utilities.d.ts.map
|
package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-unused-exports-record-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,QAAA,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAGjD,CAAC;AAEb;;;;;;;;;GASG;AACH,QAAA,MAAM,iBAAiB,GACrB,OAAO,OAAO,EACd,KAAK,MAAM,KACV,SAAS,GAAG,OAAO,EAIrB,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,kBAAkB,GACtB,OAAO,OAAO,EACd,KAAK,MAAM,KACV,MAAM,GAAG,SAIX,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC"}
|