@christiango/unbarrel 0.10.3 → 0.10.4
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/lib/fixIssuesInBarrelFile.d.ts.map +1 -1
- package/lib/fixIssuesInBarrelFile.js +79 -3
- package/lib/fixIssuesInBarrelFile.js.map +1 -1
- package/lib/getIssuesInBarrelFile.d.ts +9 -0
- package/lib/getIssuesInBarrelFile.d.ts.map +1 -1
- package/lib/getIssuesInBarrelFile.js +30 -16
- package/lib/getIssuesInBarrelFile.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixIssuesInBarrelFile.d.ts","sourceRoot":"","sources":["../src/fixIssuesInBarrelFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixIssuesInBarrelFile.d.ts","sourceRoot":"","sources":["../src/fixIssuesInBarrelFile.ts"],"names":[],"mappings":"AA8HA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,QAyH7D"}
|
|
@@ -42,7 +42,10 @@ const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
|
42
42
|
const generator_1 = __importDefault(require("@babel/generator"));
|
|
43
43
|
const t = __importStar(require("@babel/types"));
|
|
44
44
|
const flattenExportStar_1 = require("./flattenExportStar");
|
|
45
|
+
const getExportDefinitionFromReExport_1 = require("./getExportDefinitionFromReExport");
|
|
45
46
|
const parseUtils_1 = require("./parseUtils");
|
|
47
|
+
const getIssuesInBarrelFile_1 = require("./getIssuesInBarrelFile");
|
|
48
|
+
const importUtils_1 = require("./importUtils");
|
|
46
49
|
/**
|
|
47
50
|
* Groups resolved exports by their import path
|
|
48
51
|
*/
|
|
@@ -79,35 +82,100 @@ function createExportSpecifier(exp) {
|
|
|
79
82
|
}
|
|
80
83
|
return specifier;
|
|
81
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Fixes barrel file references by resolving exports to their true source
|
|
87
|
+
*/
|
|
88
|
+
function fixBarrelFileReferences(absoluteFilePath, nodesToFix, barrelRefNames) {
|
|
89
|
+
for (const nodePath of nodesToFix) {
|
|
90
|
+
const sourcePath = nodePath.node.source.value;
|
|
91
|
+
const resolvedByPath = new Map();
|
|
92
|
+
const unchangedSpecifiers = [];
|
|
93
|
+
for (const specifier of nodePath.node.specifiers) {
|
|
94
|
+
if (specifier.type !== 'ExportSpecifier' || specifier.exported.type !== 'Identifier') {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const exportedName = specifier.exported.name;
|
|
98
|
+
const importedName = specifier.local.name;
|
|
99
|
+
const typeOnly = specifier.exportKind === 'type' || nodePath.node.exportKind === 'type';
|
|
100
|
+
if (!barrelRefNames.has(exportedName)) {
|
|
101
|
+
unchangedSpecifiers.push(specifier);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Resolve this export to its true source
|
|
105
|
+
const resolved = (0, getExportDefinitionFromReExport_1.getExportDefinitionFromReExport)(absoluteFilePath, {
|
|
106
|
+
type: importedName === 'default' ? 'defaultExport' : 'namedExport',
|
|
107
|
+
importedName,
|
|
108
|
+
exportedName,
|
|
109
|
+
importPath: sourcePath,
|
|
110
|
+
typeOnly,
|
|
111
|
+
});
|
|
112
|
+
const newSpecifier = t.exportSpecifier(t.identifier(resolved.importedName), t.identifier(resolved.exportedName));
|
|
113
|
+
if (resolved.typeOnly || typeOnly) {
|
|
114
|
+
newSpecifier.exportKind = 'type';
|
|
115
|
+
}
|
|
116
|
+
const list = resolvedByPath.get(resolved.importPath) || [];
|
|
117
|
+
list.push(newSpecifier);
|
|
118
|
+
resolvedByPath.set(resolved.importPath, list);
|
|
119
|
+
}
|
|
120
|
+
// Build replacement statements
|
|
121
|
+
const newStatements = [];
|
|
122
|
+
if (unchangedSpecifiers.length > 0) {
|
|
123
|
+
newStatements.push(t.exportNamedDeclaration(null, unchangedSpecifiers, t.stringLiteral(sourcePath)));
|
|
124
|
+
}
|
|
125
|
+
for (const [importPath, specifiers] of resolvedByPath) {
|
|
126
|
+
newStatements.push(t.exportNamedDeclaration(null, specifiers, t.stringLiteral(importPath)));
|
|
127
|
+
}
|
|
128
|
+
if (newStatements.length > 0) {
|
|
129
|
+
nodePath.replaceWithMultiple(newStatements);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
nodePath.remove();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
82
136
|
/**
|
|
83
137
|
* Fixes any issues in the referenced barrel file.
|
|
84
138
|
* @param absoluteFilePath - the absolute path of the barrel file to fix
|
|
85
139
|
*/
|
|
86
140
|
function fixIssuesInBarrelFile(absoluteFilePath) {
|
|
87
141
|
const ast = (0, parseUtils_1.parseTypescriptFile)(absoluteFilePath);
|
|
88
|
-
// Collect all exports in a single traverse pass
|
|
142
|
+
// Collect all exports and detect issues in a single traverse pass
|
|
89
143
|
const existingExportsByName = new Map();
|
|
90
144
|
const existingStatementsByPath = new Map();
|
|
91
145
|
const exportStarPaths = [];
|
|
92
146
|
const allFlattenedExports = [];
|
|
147
|
+
const barrelRefExportsToFix = [];
|
|
148
|
+
const barrelFileRefs = new Set();
|
|
93
149
|
(0, traverse_1.default)(ast, {
|
|
94
150
|
ExportNamedDeclaration(path) {
|
|
95
151
|
if (!path.node.source)
|
|
96
152
|
return;
|
|
153
|
+
const sourcePath = path.node.source.value;
|
|
97
154
|
const namedExport = {
|
|
98
155
|
path,
|
|
99
|
-
sourcePath
|
|
156
|
+
sourcePath,
|
|
100
157
|
};
|
|
101
158
|
existingStatementsByPath.set(namedExport.sourcePath, namedExport);
|
|
159
|
+
let hasBarrelRef = false;
|
|
102
160
|
path.node.specifiers.forEach((specifier, i) => {
|
|
103
161
|
if (specifier.type === 'ExportSpecifier' && specifier.exported.type === 'Identifier') {
|
|
104
|
-
|
|
162
|
+
const exportedName = specifier.exported.name;
|
|
163
|
+
const importedName = specifier.local.name;
|
|
164
|
+
existingExportsByName.set(exportedName, {
|
|
105
165
|
namedExport,
|
|
106
166
|
specifierIndex: i,
|
|
107
167
|
typeOnly: specifier.exportKind === 'type' || path.node.exportKind === 'type',
|
|
108
168
|
});
|
|
169
|
+
// Check if this specifier is a barrel file reference
|
|
170
|
+
if ((0, importUtils_1.isInternalModule)(sourcePath) && (0, getIssuesInBarrelFile_1.isBarrelFileReference)(absoluteFilePath, sourcePath, importedName)) {
|
|
171
|
+
barrelFileRefs.add(exportedName);
|
|
172
|
+
hasBarrelRef = true;
|
|
173
|
+
}
|
|
109
174
|
}
|
|
110
175
|
});
|
|
176
|
+
if (hasBarrelRef) {
|
|
177
|
+
barrelRefExportsToFix.push(path);
|
|
178
|
+
}
|
|
111
179
|
},
|
|
112
180
|
ExportAllDeclaration(path) {
|
|
113
181
|
const isExportTypeStar = path.node.exportKind === 'type';
|
|
@@ -116,7 +184,15 @@ function fixIssuesInBarrelFile(absoluteFilePath) {
|
|
|
116
184
|
allFlattenedExports.push(...flattened);
|
|
117
185
|
},
|
|
118
186
|
});
|
|
187
|
+
// Handle barrel file references
|
|
188
|
+
if (barrelRefExportsToFix.length > 0) {
|
|
189
|
+
fixBarrelFileReferences(absoluteFilePath, barrelRefExportsToFix, barrelFileRefs);
|
|
190
|
+
}
|
|
119
191
|
if (exportStarPaths.length === 0) {
|
|
192
|
+
if (barrelRefExportsToFix.length > 0) {
|
|
193
|
+
const output = (0, generator_1.default)(ast, { retainLines: false, comments: true });
|
|
194
|
+
fs.writeFileSync(absoluteFilePath, output.code, 'utf8');
|
|
195
|
+
}
|
|
120
196
|
return;
|
|
121
197
|
}
|
|
122
198
|
// Deduplicate and filter exports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixIssuesInBarrelFile.js","sourceRoot":"","sources":["../src/fixIssuesInBarrelFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"fixIssuesInBarrelFile.js","sourceRoot":"","sources":["../src/fixIssuesInBarrelFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,15 @@ export interface ExportAllError {
|
|
|
12
12
|
barrelFilePath: string;
|
|
13
13
|
}
|
|
14
14
|
export type BarrelFileIssue = BarrelFileReferenceError | ExportAllError;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a named re-export is a barrel file reference (i.e., re-exports from an intermediate barrel file
|
|
17
|
+
* rather than from the module that defines the export).
|
|
18
|
+
* @param absoluteFilePath - The absolute path of the module containing the re-export
|
|
19
|
+
* @param importPath - The import path of the re-export (must be an internal/relative path)
|
|
20
|
+
* @param importedName - The name being imported from the target module
|
|
21
|
+
* @returns true if this is a barrel file reference
|
|
22
|
+
*/
|
|
23
|
+
export declare function isBarrelFileReference(absoluteFilePath: string, importPath: string, importedName: string): boolean;
|
|
15
24
|
/**
|
|
16
25
|
* Analyzes the exports of the provided file and returns any references to barrel files within the current package. External packages are not included.
|
|
17
26
|
* @param absoluteFilePath The absolute path the the file we will analyze
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getIssuesInBarrelFile.d.ts","sourceRoot":"","sources":["../src/getIssuesInBarrelFile.ts"],"names":[],"mappings":"AAKA,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,qBAAqB,CAAC;IAE5B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAErB,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,cAAc,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"getIssuesInBarrelFile.d.ts","sourceRoot":"","sources":["../src/getIssuesInBarrelFile.ts"],"names":[],"mappings":"AAKA,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,qBAAqB,CAAC;IAE5B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAErB,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,cAAc,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAmBjH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,eAAe,EAAE,CAgCjF"}
|
|
@@ -3,11 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isBarrelFileReference = isBarrelFileReference;
|
|
6
7
|
exports.getIssuesInBarrelFile = getIssuesInBarrelFile;
|
|
7
8
|
const getExportsFromModule_1 = require("./getExportsFromModule");
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
const resolveModulePath_1 = require("./resolveModulePath");
|
|
10
11
|
const importUtils_1 = require("./importUtils");
|
|
12
|
+
/**
|
|
13
|
+
* Checks if a named re-export is a barrel file reference (i.e., re-exports from an intermediate barrel file
|
|
14
|
+
* rather than from the module that defines the export).
|
|
15
|
+
* @param absoluteFilePath - The absolute path of the module containing the re-export
|
|
16
|
+
* @param importPath - The import path of the re-export (must be an internal/relative path)
|
|
17
|
+
* @param importedName - The name being imported from the target module
|
|
18
|
+
* @returns true if this is a barrel file reference
|
|
19
|
+
*/
|
|
20
|
+
function isBarrelFileReference(absoluteFilePath, importPath, importedName) {
|
|
21
|
+
const targetFilePath = (0, resolveModulePath_1.resolveModulePath)(node_path_1.default.resolve(node_path_1.default.dirname(absoluteFilePath), importPath));
|
|
22
|
+
const targetExports = (0, getExportsFromModule_1.getExportsFromModule)(targetFilePath);
|
|
23
|
+
// Check if the name exists as a definition in the target module
|
|
24
|
+
const matchingExport = targetExports.definitions.find((definition) => definition.type === 'namedExport' && definition.name === importedName);
|
|
25
|
+
if (matchingExport) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// Check if it's a re-export from an internal module (barrel file reference)
|
|
29
|
+
const matchingReExport = targetExports.reExports.find((reExport) => reExport.type === 'namedExport' && reExport.exportedName === importedName);
|
|
30
|
+
return matchingReExport !== undefined && (0, importUtils_1.isInternalModule)(matchingReExport.importPath);
|
|
31
|
+
}
|
|
11
32
|
/**
|
|
12
33
|
* Analyzes the exports of the provided file and returns any references to barrel files within the current package. External packages are not included.
|
|
13
34
|
* @param absoluteFilePath The absolute path the the file we will analyze
|
|
@@ -24,22 +45,15 @@ function getIssuesInBarrelFile(absoluteFilePath) {
|
|
|
24
45
|
barrelFilePath: absoluteFilePath,
|
|
25
46
|
});
|
|
26
47
|
}
|
|
27
|
-
// Only consider internal modules (relative paths)
|
|
28
|
-
else if ((0, importUtils_1.isInternalModule)(reExportToVisit.importPath)) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (matchingReExport && (0, importUtils_1.isInternalModule)(matchingReExport.importPath)) {
|
|
37
|
-
result.push({
|
|
38
|
-
type: 'barrelFileReference',
|
|
39
|
-
exportedName: reExportToVisit.exportedName,
|
|
40
|
-
barrelFilePath: (0, importUtils_1.convertAbsolutePathToRelativeImportPath)(potentialBarrelFilePath, node_path_1.default.dirname(absoluteFilePath)),
|
|
41
|
-
});
|
|
42
|
-
}
|
|
48
|
+
// Only consider internal modules (relative paths) and named re-exports
|
|
49
|
+
else if (reExportToVisit.type === 'namedExport' && (0, importUtils_1.isInternalModule)(reExportToVisit.importPath)) {
|
|
50
|
+
if (isBarrelFileReference(absoluteFilePath, reExportToVisit.importPath, reExportToVisit.importedName)) {
|
|
51
|
+
const potentialBarrelFilePath = (0, resolveModulePath_1.resolveModulePath)(node_path_1.default.resolve(node_path_1.default.dirname(absoluteFilePath), reExportToVisit.importPath));
|
|
52
|
+
result.push({
|
|
53
|
+
type: 'barrelFileReference',
|
|
54
|
+
exportedName: reExportToVisit.exportedName,
|
|
55
|
+
barrelFilePath: (0, importUtils_1.convertAbsolutePathToRelativeImportPath)(potentialBarrelFilePath, node_path_1.default.dirname(absoluteFilePath)),
|
|
56
|
+
});
|
|
43
57
|
}
|
|
44
58
|
}
|
|
45
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getIssuesInBarrelFile.js","sourceRoot":"","sources":["../src/getIssuesInBarrelFile.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"getIssuesInBarrelFile.js","sourceRoot":"","sources":["../src/getIssuesInBarrelFile.ts"],"names":[],"mappings":";;;;;AAgCA,sDAmBC;AAOD,sDAgCC;AA1FD,iEAA8D;AAC9D,0DAA6B;AAC7B,2DAAwD;AACxD,+CAA0F;AAqB1F;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,gBAAwB,EAAE,UAAkB,EAAE,YAAoB;IACtG,MAAM,cAAc,GAAG,IAAA,qCAAiB,EAAC,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACnG,MAAM,aAAa,GAAG,IAAA,2CAAoB,EAAC,cAAc,CAAC,CAAC;IAE3D,gEAAgE;IAChE,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CACnD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CACtF,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CACxF,CAAC;IAEF,OAAO,gBAAgB,KAAK,SAAS,IAAI,IAAA,8BAAgB,EAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,gBAAwB;IAC5D,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,2CAAoB,EAAC,gBAAgB,CAAC,CAAC;IAEvD,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAChD,uDAAuD;QACvD,IAAI,eAAe,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,gBAAgB;aACjC,CAAC,CAAC;QACL,CAAC;QACD,uEAAuE;aAClE,IAAI,eAAe,CAAC,IAAI,KAAK,aAAa,IAAI,IAAA,8BAAgB,EAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YAChG,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtG,MAAM,uBAAuB,GAAG,IAAA,qCAAiB,EAC/C,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CACzE,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,YAAY,EAAE,eAAe,CAAC,YAAY;oBAC1C,cAAc,EAAE,IAAA,qDAAuC,EACrD,uBAAuB,EACvB,mBAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC/B;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|