@atlaskit/eslint-plugin-platform 2.8.0 → 2.9.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/CHANGELOG.md +9 -0
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/rules/ensure-use-sync-external-store-server-snapshot/index.js +41 -0
- package/dist/cjs/rules/import/no-barrel-entry-imports/index.js +475 -67
- package/dist/cjs/rules/import/no-barrel-entry-jest-mock/index.js +387 -112
- package/dist/cjs/rules/import/no-jest-mock-barrel-files/index.js +3 -2
- package/dist/cjs/rules/import/no-relative-barrel-file-imports/index.js +7 -3
- package/dist/cjs/rules/import/shared/jest-utils.js +62 -9
- package/dist/cjs/rules/import/shared/package-resolution.js +156 -23
- package/dist/cjs/rules/visit-example-type-import-required/index.js +409 -0
- package/dist/es2019/index.js +6 -1
- package/dist/es2019/rules/ensure-use-sync-external-store-server-snapshot/index.js +43 -0
- package/dist/es2019/rules/import/no-barrel-entry-imports/index.js +372 -15
- package/dist/es2019/rules/import/no-barrel-entry-jest-mock/index.js +245 -17
- package/dist/es2019/rules/import/no-jest-mock-barrel-files/index.js +3 -2
- package/dist/es2019/rules/import/no-relative-barrel-file-imports/index.js +7 -3
- package/dist/es2019/rules/import/shared/jest-utils.js +44 -0
- package/dist/es2019/rules/import/shared/package-resolution.js +97 -5
- package/dist/es2019/rules/visit-example-type-import-required/index.js +375 -0
- package/dist/esm/index.js +6 -1
- package/dist/esm/rules/ensure-use-sync-external-store-server-snapshot/index.js +35 -0
- package/dist/esm/rules/import/no-barrel-entry-imports/index.js +475 -67
- package/dist/esm/rules/import/no-barrel-entry-jest-mock/index.js +388 -113
- package/dist/esm/rules/import/no-jest-mock-barrel-files/index.js +3 -2
- package/dist/esm/rules/import/no-relative-barrel-file-imports/index.js +7 -3
- package/dist/esm/rules/import/shared/jest-utils.js +61 -9
- package/dist/esm/rules/import/shared/package-resolution.js +156 -25
- package/dist/esm/rules/visit-example-type-import-required/index.js +402 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/rules/ensure-use-sync-external-store-server-snapshot/index.d.ts +3 -0
- package/dist/types/rules/import/shared/jest-utils.d.ts +8 -0
- package/dist/types/rules/import/shared/package-resolution.d.ts +22 -2
- package/dist/types/rules/visit-example-type-import-required/index.d.ts +4 -0
- package/dist/types-ts4.5/index.d.ts +12 -0
- package/dist/types-ts4.5/rules/ensure-use-sync-external-store-server-snapshot/index.d.ts +3 -0
- package/dist/types-ts4.5/rules/import/shared/jest-utils.d.ts +8 -0
- package/dist/types-ts4.5/rules/import/shared/package-resolution.d.ts +22 -2
- package/dist/types-ts4.5/rules/visit-example-type-import-required/index.d.ts +4 -0
- package/package.json +3 -1
|
@@ -232,6 +232,7 @@ function getImportPathForSourceFile(_ref) {
|
|
|
232
232
|
fs = _ref.fs;
|
|
233
233
|
var crossPackageName = exportInfo === null || exportInfo === void 0 || (_exportInfo$crossPack = exportInfo.crossPackageSource) === null || _exportInfo$crossPack === void 0 ? void 0 : _exportInfo$crossPack.packageName;
|
|
234
234
|
if (crossPackageName) {
|
|
235
|
+
var _findExportForSourceF;
|
|
235
236
|
var sourcePackageExportsMaps = getSourcePackageExportsMaps(fs);
|
|
236
237
|
var exportsMap = sourcePackageExportsMaps.get(crossPackageName);
|
|
237
238
|
if (!exportsMap) {
|
|
@@ -248,10 +249,10 @@ function getImportPathForSourceFile(_ref) {
|
|
|
248
249
|
sourcePackageExportsMaps.set(crossPackageName, exportsMap);
|
|
249
250
|
}
|
|
250
251
|
}
|
|
251
|
-
var targetExportPath = exportsMap ? (0, _packageResolution.findExportForSourceFile)({
|
|
252
|
+
var targetExportPath = exportsMap ? (_findExportForSourceF = (0, _packageResolution.findExportForSourceFile)({
|
|
252
253
|
sourceFilePath: sourceFilePath,
|
|
253
254
|
exportsMap: exportsMap
|
|
254
|
-
}) : null;
|
|
255
|
+
})) === null || _findExportForSourceF === void 0 ? void 0 : _findExportForSourceF.exportPath : null;
|
|
255
256
|
return targetExportPath ? crossPackageName + targetExportPath.slice(1) : crossPackageName;
|
|
256
257
|
}
|
|
257
258
|
return getRelativeImportPath({
|
|
@@ -68,6 +68,7 @@ function getImportPathForSourceFile(_ref) {
|
|
|
68
68
|
fs = _ref.fs;
|
|
69
69
|
var crossPackageName = exportInfo === null || exportInfo === void 0 || (_exportInfo$crossPack = exportInfo.crossPackageSource) === null || _exportInfo$crossPack === void 0 ? void 0 : _exportInfo$crossPack.packageName;
|
|
70
70
|
if (crossPackageName) {
|
|
71
|
+
var _findExportForSourceF;
|
|
71
72
|
var sourcePackageExportsMaps = getSourcePackageExportsMaps(fs);
|
|
72
73
|
var exportsMap = sourcePackageExportsMaps.get(crossPackageName);
|
|
73
74
|
if (!exportsMap) {
|
|
@@ -84,10 +85,10 @@ function getImportPathForSourceFile(_ref) {
|
|
|
84
85
|
sourcePackageExportsMaps.set(crossPackageName, exportsMap);
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
|
-
var targetExportPath = exportsMap ? (0, _packageResolution.findExportForSourceFile)({
|
|
88
|
+
var targetExportPath = exportsMap ? (_findExportForSourceF = (0, _packageResolution.findExportForSourceFile)({
|
|
88
89
|
sourceFilePath: sourceFilePath,
|
|
89
90
|
exportsMap: exportsMap
|
|
90
|
-
}) : null;
|
|
91
|
+
})) === null || _findExportForSourceF === void 0 ? void 0 : _findExportForSourceF.exportPath : null;
|
|
91
92
|
return targetExportPath ? crossPackageName + targetExportPath.slice(1) : crossPackageName;
|
|
92
93
|
}
|
|
93
94
|
return getRelativeImportPath({
|
|
@@ -466,10 +467,13 @@ function transformExportSpecifiers(_ref1) {
|
|
|
466
467
|
var specsWithOriginal = _ref1.specsWithOriginal;
|
|
467
468
|
return specsWithOriginal.map(function (_ref10) {
|
|
468
469
|
var originalName = _ref10.originalName,
|
|
470
|
+
nameInSource = _ref10.nameInSource,
|
|
469
471
|
nameInLocal = _ref10.nameInLocal,
|
|
470
472
|
kind = _ref10.kind;
|
|
471
473
|
return {
|
|
472
|
-
|
|
474
|
+
// Use originalName if available (means there was an alias in the barrel),
|
|
475
|
+
// otherwise use nameInSource (the direct export name from the barrel)
|
|
476
|
+
nameInSource: originalName !== null && originalName !== void 0 ? originalName : nameInSource,
|
|
473
477
|
nameInLocal: nameInLocal,
|
|
474
478
|
kind: kind
|
|
475
479
|
};
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.extractImportPath = extractImportPath;
|
|
8
|
+
exports.findJestRequireActualCalls = findJestRequireActualCalls;
|
|
8
9
|
exports.findJestRequireMockCalls = findJestRequireMockCalls;
|
|
9
10
|
exports.isJestMockCall = isJestMockCall;
|
|
10
11
|
exports.isJestRequireActual = isJestRequireActual;
|
|
@@ -136,6 +137,58 @@ function findJestRequireMockCalls(_ref) {
|
|
|
136
137
|
return results;
|
|
137
138
|
}
|
|
138
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Find all jest.requireActual() calls in the AST whose import path matches a given target.
|
|
142
|
+
* Works identically to findJestRequireMockCalls but for requireActual.
|
|
143
|
+
*/
|
|
144
|
+
function findJestRequireActualCalls(_ref2) {
|
|
145
|
+
var ast = _ref2.ast,
|
|
146
|
+
matchPath = _ref2.matchPath;
|
|
147
|
+
var results = [];
|
|
148
|
+
var visited = new WeakSet();
|
|
149
|
+
var skipKeys = new Set(['parent', 'loc', 'range', 'tokens', 'comments']);
|
|
150
|
+
function visit(node) {
|
|
151
|
+
if (visited.has(node)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
visited.add(node);
|
|
155
|
+
if (node.type === 'CallExpression' && isJestRequireActual(node)) {
|
|
156
|
+
var path = extractImportPath(node);
|
|
157
|
+
if (path && matchPath(path)) {
|
|
158
|
+
results.push(node);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
for (var key in node) {
|
|
162
|
+
if (skipKeys.has(key)) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
var value = node[key];
|
|
166
|
+
if (value && (0, _typeof2.default)(value) === 'object') {
|
|
167
|
+
if (Array.isArray(value)) {
|
|
168
|
+
var _iterator2 = _createForOfIteratorHelper(value),
|
|
169
|
+
_step2;
|
|
170
|
+
try {
|
|
171
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
172
|
+
var child = _step2.value;
|
|
173
|
+
if (child && (0, _typeof2.default)(child) === 'object' && 'type' in child) {
|
|
174
|
+
visit(child);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
} catch (err) {
|
|
178
|
+
_iterator2.e(err);
|
|
179
|
+
} finally {
|
|
180
|
+
_iterator2.f();
|
|
181
|
+
}
|
|
182
|
+
} else if ('type' in value) {
|
|
183
|
+
visit(value);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
visit(ast);
|
|
189
|
+
return results;
|
|
190
|
+
}
|
|
191
|
+
|
|
139
192
|
/**
|
|
140
193
|
* Determine the best new import path for a jest.requireMock() call by inspecting
|
|
141
194
|
* the destructured symbols or property access at the call site.
|
|
@@ -144,20 +197,20 @@ function findJestRequireMockCalls(_ref) {
|
|
|
144
197
|
* @param symbolToNewPath - Map from symbol name to the new mock path that provides it
|
|
145
198
|
* @returns The resolved new path, or null if it cannot be determined
|
|
146
199
|
*/
|
|
147
|
-
function resolveNewPathForRequireMock(
|
|
148
|
-
var requireMockNode =
|
|
149
|
-
symbolToNewPath =
|
|
200
|
+
function resolveNewPathForRequireMock(_ref3) {
|
|
201
|
+
var requireMockNode = _ref3.requireMockNode,
|
|
202
|
+
symbolToNewPath = _ref3.symbolToNewPath;
|
|
150
203
|
var parent = requireMockNode.parent;
|
|
151
204
|
if (parent) {
|
|
152
205
|
var _parent;
|
|
153
206
|
// Check for destructuring pattern: const { foo } = jest.requireMock('...')
|
|
154
207
|
var declarator = parent.type === 'VariableDeclarator' ? parent : ((_parent = parent.parent) === null || _parent === void 0 ? void 0 : _parent.type) === 'VariableDeclarator' ? parent.parent : null;
|
|
155
208
|
if (declarator && declarator.type === 'VariableDeclarator' && declarator.id.type === 'ObjectPattern') {
|
|
156
|
-
var
|
|
157
|
-
|
|
209
|
+
var _iterator3 = _createForOfIteratorHelper(declarator.id.properties),
|
|
210
|
+
_step3;
|
|
158
211
|
try {
|
|
159
|
-
for (
|
|
160
|
-
var prop =
|
|
212
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
213
|
+
var prop = _step3.value;
|
|
161
214
|
if (prop.type === 'Property' && prop.key.type === 'Identifier') {
|
|
162
215
|
var matchedPath = symbolToNewPath.get(prop.key.name);
|
|
163
216
|
if (matchedPath) {
|
|
@@ -166,9 +219,9 @@ function resolveNewPathForRequireMock(_ref2) {
|
|
|
166
219
|
}
|
|
167
220
|
}
|
|
168
221
|
} catch (err) {
|
|
169
|
-
|
|
222
|
+
_iterator3.e(err);
|
|
170
223
|
} finally {
|
|
171
|
-
|
|
224
|
+
_iterator3.f();
|
|
172
225
|
}
|
|
173
226
|
}
|
|
174
227
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -11,17 +12,96 @@ exports.resolveCrossPackageImport = resolveCrossPackageImport;
|
|
|
11
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
13
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
14
|
var _path = require("path");
|
|
15
|
+
var ts = _interopRequireWildcard(require("typescript"));
|
|
14
16
|
var _fileSystem = require("./file-system");
|
|
15
17
|
var _packageRegistry = require("./package-registry");
|
|
18
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
16
19
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
17
20
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
18
21
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
22
|
+
var ENTRY_POINT_FOLDER_NAMES = new Set(['entry-points', 'entrypoints', 'entrypoint', 'entry-point']);
|
|
23
|
+
function isInEntryPointsFolder(filePath) {
|
|
24
|
+
var parts = filePath.split(/[/\\]/);
|
|
25
|
+
return parts.some(function (part) {
|
|
26
|
+
return ENTRY_POINT_FOLDER_NAMES.has(part);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
19
29
|
/**
|
|
20
|
-
* Parse
|
|
30
|
+
* Parse an entry-point wrapper file and resolve the source files it re-exports from,
|
|
31
|
+
* along with name mappings (source export name → entry-point export name).
|
|
21
32
|
*/
|
|
22
|
-
function
|
|
23
|
-
var
|
|
33
|
+
function resolveEntryPointReExports(_ref) {
|
|
34
|
+
var entryPointFilePath = _ref.entryPointFilePath,
|
|
24
35
|
fs = _ref.fs;
|
|
36
|
+
var content = (0, _fileSystem.readFileContent)({
|
|
37
|
+
filePath: entryPointFilePath,
|
|
38
|
+
fs: fs
|
|
39
|
+
});
|
|
40
|
+
if (!content) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
var sourceFile = ts.createSourceFile(entryPointFilePath, content, ts.ScriptTarget.Latest, true);
|
|
45
|
+
var basedir = (0, _path.dirname)(entryPointFilePath);
|
|
46
|
+
var results = [];
|
|
47
|
+
var _iterator = _createForOfIteratorHelper(sourceFile.statements),
|
|
48
|
+
_step;
|
|
49
|
+
try {
|
|
50
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
51
|
+
var statement = _step.value;
|
|
52
|
+
if (ts.isExportDeclaration(statement) && statement.moduleSpecifier && ts.isStringLiteral(statement.moduleSpecifier)) {
|
|
53
|
+
var modulePath = statement.moduleSpecifier.text;
|
|
54
|
+
if (!(0, _fileSystem.isRelativeImport)(modulePath)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
var resolved = (0, _fileSystem.resolveImportPath)({
|
|
58
|
+
basedir: basedir,
|
|
59
|
+
importPath: modulePath,
|
|
60
|
+
fs: fs
|
|
61
|
+
});
|
|
62
|
+
if (!resolved) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
var nameMap = new Map();
|
|
66
|
+
if (statement.exportClause && ts.isNamedExports(statement.exportClause)) {
|
|
67
|
+
var _iterator2 = _createForOfIteratorHelper(statement.exportClause.elements),
|
|
68
|
+
_step2;
|
|
69
|
+
try {
|
|
70
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
71
|
+
var element = _step2.value;
|
|
72
|
+
var exportedName = element.name.text;
|
|
73
|
+
var sourceName = element.propertyName ? element.propertyName.text : exportedName;
|
|
74
|
+
nameMap.set(sourceName, exportedName);
|
|
75
|
+
}
|
|
76
|
+
} catch (err) {
|
|
77
|
+
_iterator2.e(err);
|
|
78
|
+
} finally {
|
|
79
|
+
_iterator2.f();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
results.push({
|
|
83
|
+
sourcePath: resolved,
|
|
84
|
+
nameMap: nameMap
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch (err) {
|
|
89
|
+
_iterator.e(err);
|
|
90
|
+
} finally {
|
|
91
|
+
_iterator.f();
|
|
92
|
+
}
|
|
93
|
+
return results;
|
|
94
|
+
} catch (_unused) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Parse the package.json exports field and return a map of export paths to resolved file paths.
|
|
101
|
+
*/
|
|
102
|
+
function parsePackageExports(_ref2) {
|
|
103
|
+
var packageDir = _ref2.packageDir,
|
|
104
|
+
fs = _ref2.fs;
|
|
25
105
|
// Memoize per-package to avoid repeated reads/parses during IDE lint runs.
|
|
26
106
|
// Additionally, invalidate per-package if the package.json mtime changes
|
|
27
107
|
// (covers unstaged local edits in IDE).
|
|
@@ -33,7 +113,7 @@ function parsePackageExports(_ref) {
|
|
|
33
113
|
try {
|
|
34
114
|
var _fs$statSync$mtimeMs;
|
|
35
115
|
currentMtimeMs = (_fs$statSync$mtimeMs = fs.statSync(packageJsonPath).mtimeMs) !== null && _fs$statSync$mtimeMs !== void 0 ? _fs$statSync$mtimeMs : null;
|
|
36
|
-
} catch (
|
|
116
|
+
} catch (_unused2) {
|
|
37
117
|
// If package.json can't be stat'ed (missing/inaccessible), use null to force re-read
|
|
38
118
|
currentMtimeMs = null;
|
|
39
119
|
}
|
|
@@ -82,7 +162,7 @@ function parsePackageExports(_ref) {
|
|
|
82
162
|
}
|
|
83
163
|
}
|
|
84
164
|
}
|
|
85
|
-
} catch (
|
|
165
|
+
} catch (_unused3) {
|
|
86
166
|
// Ignore parsing errors
|
|
87
167
|
}
|
|
88
168
|
|
|
@@ -93,29 +173,82 @@ function parsePackageExports(_ref) {
|
|
|
93
173
|
});
|
|
94
174
|
return exportsMap;
|
|
95
175
|
}
|
|
96
|
-
|
|
97
176
|
/**
|
|
98
177
|
* Find a matching export entry for a given source file path.
|
|
99
178
|
* Returns the export path (e.g., "./controllers/analytics") or null if not found.
|
|
179
|
+
*
|
|
180
|
+
* When `fs` is provided, also checks entry-point wrapper files. If an export resolves
|
|
181
|
+
* to a file inside a recognized entry-points folder (entry-points, entrypoints, etc.),
|
|
182
|
+
* the wrapper is parsed to see if it re-exports from `sourceFilePath`.
|
|
183
|
+
*
|
|
184
|
+
* `sourceExportName` is the name under which the symbol is exported from the source file
|
|
185
|
+
* (e.g. `'default'`). Used to look up the corresponding entry-point export name so the
|
|
186
|
+
* caller can generate the correct import style.
|
|
100
187
|
*/
|
|
101
|
-
function findExportForSourceFile(
|
|
102
|
-
var sourceFilePath =
|
|
103
|
-
exportsMap =
|
|
104
|
-
|
|
105
|
-
|
|
188
|
+
function findExportForSourceFile(_ref3) {
|
|
189
|
+
var sourceFilePath = _ref3.sourceFilePath,
|
|
190
|
+
exportsMap = _ref3.exportsMap,
|
|
191
|
+
fs = _ref3.fs,
|
|
192
|
+
sourceExportName = _ref3.sourceExportName;
|
|
193
|
+
var _iterator3 = _createForOfIteratorHelper(exportsMap),
|
|
194
|
+
_step3;
|
|
106
195
|
try {
|
|
107
|
-
for (
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (
|
|
112
|
-
return
|
|
196
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
197
|
+
var _step3$value = (0, _slicedToArray2.default)(_step3.value, 2),
|
|
198
|
+
_exportPath = _step3$value[0],
|
|
199
|
+
_resolvedPath = _step3$value[1];
|
|
200
|
+
if (_resolvedPath === sourceFilePath) {
|
|
201
|
+
return {
|
|
202
|
+
exportPath: _exportPath
|
|
203
|
+
};
|
|
113
204
|
}
|
|
114
205
|
}
|
|
115
206
|
} catch (err) {
|
|
116
|
-
|
|
207
|
+
_iterator3.e(err);
|
|
117
208
|
} finally {
|
|
118
|
-
|
|
209
|
+
_iterator3.f();
|
|
210
|
+
}
|
|
211
|
+
if (fs) {
|
|
212
|
+
var _iterator4 = _createForOfIteratorHelper(exportsMap),
|
|
213
|
+
_step4;
|
|
214
|
+
try {
|
|
215
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
216
|
+
var _step4$value = (0, _slicedToArray2.default)(_step4.value, 2),
|
|
217
|
+
exportPath = _step4$value[0],
|
|
218
|
+
resolvedPath = _step4$value[1];
|
|
219
|
+
if (isInEntryPointsFolder(resolvedPath)) {
|
|
220
|
+
var reExports = resolveEntryPointReExports({
|
|
221
|
+
entryPointFilePath: resolvedPath,
|
|
222
|
+
fs: fs
|
|
223
|
+
});
|
|
224
|
+
var _iterator5 = _createForOfIteratorHelper(reExports),
|
|
225
|
+
_step5;
|
|
226
|
+
try {
|
|
227
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
228
|
+
var reExport = _step5.value;
|
|
229
|
+
if (reExport.sourcePath === sourceFilePath) {
|
|
230
|
+
var entryPointExportName = void 0;
|
|
231
|
+
if (sourceExportName !== undefined && reExport.nameMap.has(sourceExportName)) {
|
|
232
|
+
entryPointExportName = reExport.nameMap.get(sourceExportName);
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
exportPath: exportPath,
|
|
236
|
+
entryPointExportName: entryPointExportName
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
} catch (err) {
|
|
241
|
+
_iterator5.e(err);
|
|
242
|
+
} finally {
|
|
243
|
+
_iterator5.f();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
} catch (err) {
|
|
248
|
+
_iterator4.e(err);
|
|
249
|
+
} finally {
|
|
250
|
+
_iterator4.f();
|
|
251
|
+
}
|
|
119
252
|
}
|
|
120
253
|
return null;
|
|
121
254
|
}
|
|
@@ -139,10 +272,10 @@ function extractPackageNameFromImport(moduleSpecifier) {
|
|
|
139
272
|
* Resolve a cross-package import to its package directory and export info.
|
|
140
273
|
* Returns null if the package is not in the target folder or cannot be resolved.
|
|
141
274
|
*/
|
|
142
|
-
function resolveCrossPackageImport(
|
|
143
|
-
var moduleSpecifier =
|
|
144
|
-
workspaceRoot =
|
|
145
|
-
fs =
|
|
275
|
+
function resolveCrossPackageImport(_ref4) {
|
|
276
|
+
var moduleSpecifier = _ref4.moduleSpecifier,
|
|
277
|
+
workspaceRoot = _ref4.workspaceRoot,
|
|
278
|
+
fs = _ref4.fs;
|
|
146
279
|
// Only handle @atlassian/* scoped packages
|
|
147
280
|
var parsed = extractPackageNameFromImport(moduleSpecifier);
|
|
148
281
|
if (!parsed) {
|