@softarc/native-federation 3.3.6 → 3.4.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 -8
- package/package.json +3 -3
- package/src/build.d.ts +2 -0
- package/src/build.js +4 -1
- package/src/build.js.map +1 -1
- package/src/lib/config/share-utils.d.ts +1 -1
- package/src/lib/config/share-utils.js +31 -19
- package/src/lib/config/share-utils.js.map +1 -1
- package/src/lib/config/with-native-federation.js.map +1 -1
- package/src/lib/core/build-adapter.d.ts +1 -0
- package/src/lib/core/build-adapter.js.map +1 -1
- package/src/lib/core/build-for-federation.d.ts +1 -0
- package/src/lib/core/build-for-federation.js +57 -23
- package/src/lib/core/build-for-federation.js.map +1 -1
- package/src/lib/core/bundle-caching.d.ts +19 -0
- package/src/lib/core/bundle-caching.js +75 -0
- package/src/lib/core/bundle-caching.js.map +1 -0
- package/src/lib/core/bundle-exposed-and-mappings.d.ts +1 -1
- package/src/lib/core/bundle-exposed-and-mappings.js +12 -2
- package/src/lib/core/bundle-exposed-and-mappings.js.map +1 -1
- package/src/lib/core/bundle-shared.d.ts +4 -1
- package/src/lib/core/bundle-shared.js +28 -45
- package/src/lib/core/bundle-shared.js.map +1 -1
- package/src/lib/core/default-server-deps-list.js.map +1 -1
- package/src/lib/core/default-skip-list.d.ts +0 -1
- package/src/lib/core/default-skip-list.js +1 -2
- package/src/lib/core/default-skip-list.js.map +1 -1
- package/src/lib/core/federation-options.d.ts +1 -0
- package/src/lib/core/remove-unused-deps.js +3 -2
- package/src/lib/core/remove-unused-deps.js.map +1 -1
- package/src/lib/utils/errors.d.ts +3 -0
- package/src/lib/utils/errors.js +12 -0
- package/src/lib/utils/errors.js.map +1 -0
- package/src/lib/utils/logger.d.ts +1 -0
- package/src/lib/utils/logger.js +13 -0
- package/src/lib/utils/logger.js.map +1 -1
- package/src/lib/utils/normalize.d.ts +1 -0
- package/src/lib/utils/normalize.js +5 -0
- package/src/lib/utils/normalize.js.map +1 -1
- package/src/lib/utils/package-info.js +23 -13
- package/src/lib/utils/package-info.js.map +1 -1
- package/src/lib/utils/rebuild-queue.d.ts +6 -0
- package/src/lib/utils/rebuild-queue.js +53 -0
- package/src/lib/utils/rebuild-queue.js.map +1 -0
- package/src/lib/utils/resolve-wildcard-keys.js +17 -13
- package/src/lib/utils/resolve-wildcard-keys.js.map +1 -1
- package/src/lib/utils/copy-src-map-if-exists.d.ts +0 -1
- package/src/lib/utils/copy-src-map-if-exists.js +0 -13
- package/src/lib/utils/copy-src-map-if-exists.js.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RebuildQueue = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
class RebuildQueue {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.activeBuilds = new Map();
|
|
9
|
+
this.buildCounter = 0;
|
|
10
|
+
}
|
|
11
|
+
enqueue(rebuildFn) {
|
|
12
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
const buildId = ++this.buildCounter;
|
|
14
|
+
const pendingCancellations = Array.from(this.activeBuilds.values()).map((buildInfo) => {
|
|
15
|
+
buildInfo.controller.abort();
|
|
16
|
+
return buildInfo.buildFinished.promise;
|
|
17
|
+
});
|
|
18
|
+
if (pendingCancellations.length > 0) {
|
|
19
|
+
logger_1.logger.info(`Aborting ${pendingCancellations.length} bundling task(s)..`);
|
|
20
|
+
}
|
|
21
|
+
if (pendingCancellations.length > 0) {
|
|
22
|
+
yield Promise.all(pendingCancellations);
|
|
23
|
+
}
|
|
24
|
+
let buildFinished;
|
|
25
|
+
const completionPromise = new Promise((resolve) => {
|
|
26
|
+
buildFinished = resolve;
|
|
27
|
+
});
|
|
28
|
+
const control = {
|
|
29
|
+
controller: new AbortController(),
|
|
30
|
+
buildFinished: {
|
|
31
|
+
resolve: buildFinished,
|
|
32
|
+
promise: completionPromise,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
this.activeBuilds.set(buildId, control);
|
|
36
|
+
try {
|
|
37
|
+
yield rebuildFn(control.controller.signal);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
control.buildFinished.resolve();
|
|
41
|
+
this.activeBuilds.delete(buildId);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
dispose() {
|
|
46
|
+
for (const [_, buildInfo] of this.activeBuilds) {
|
|
47
|
+
buildInfo.controller.abort();
|
|
48
|
+
}
|
|
49
|
+
this.activeBuilds.clear();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.RebuildQueue = RebuildQueue;
|
|
53
|
+
//# sourceMappingURL=rebuild-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebuild-queue.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-core/src/lib/utils/rebuild-queue.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAOlC,MAAa,YAAY;IAAzB;QACU,iBAAY,GAA8B,IAAI,GAAG,EAAE,CAAC;QACpD,iBAAY,GAAG,CAAC,CAAC;IAkD3B,CAAC;IAhDO,OAAO,CACX,SAAiD;;YAEjD,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;YAEpC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CACrE,CAAC,SAAS,EAAE,EAAE;gBACZ,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;YACzC,CAAC,CACF,CAAC;YAEF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,eAAM,CAAC,IAAI,CAAC,YAAY,oBAAoB,CAAC,MAAM,qBAAqB,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,aAAyB,CAAC;YAC9B,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACtD,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAiB;gBAC5B,UAAU,EAAE,IAAI,eAAe,EAAE;gBACjC,aAAa,EAAE;oBACb,OAAO,EAAE,aAAc;oBACvB,OAAO,EAAE,iBAAiB;iBAC3B;aACF,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;KAAA;IAED,OAAO;QACL,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF;AApDD,oCAoDC"}
|
|
@@ -6,14 +6,17 @@ const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
|
|
|
6
6
|
function escapeRegex(str) {
|
|
7
7
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
8
8
|
}
|
|
9
|
+
// Convert package.json exports pattern to glob pattern
|
|
10
|
+
// * in exports means "one segment", but for glob we need ** for deep matching
|
|
11
|
+
// Src: https://hirok.io/posts/package-json-exports#exposing-all-package-files
|
|
12
|
+
function convertExportsToGlob(pattern) {
|
|
13
|
+
return pattern.replace(/(?<!\*)\*(?!\*)/g, '**');
|
|
14
|
+
}
|
|
9
15
|
function compilePattern(pattern) {
|
|
10
16
|
const tokens = pattern.split(/(\*\*|\*)/);
|
|
11
17
|
const regexParts = [];
|
|
12
18
|
for (const token of tokens) {
|
|
13
19
|
if (token === '*') {
|
|
14
|
-
regexParts.push('([^/]+)');
|
|
15
|
-
}
|
|
16
|
-
else if (token === '**') {
|
|
17
20
|
regexParts.push('(.*)');
|
|
18
21
|
}
|
|
19
22
|
else {
|
|
@@ -22,12 +25,12 @@ function compilePattern(pattern) {
|
|
|
22
25
|
}
|
|
23
26
|
return new RegExp(`^${regexParts.join('')}$`);
|
|
24
27
|
}
|
|
25
|
-
function
|
|
28
|
+
function withoutWildcard(template, wildcardValues) {
|
|
26
29
|
const tokens = template.split(/(\*\*|\*)/);
|
|
27
30
|
let result = '';
|
|
28
31
|
let i = 0;
|
|
29
32
|
for (const token of tokens) {
|
|
30
|
-
if (token === '*'
|
|
33
|
+
if (token === '*') {
|
|
31
34
|
result += wildcardValues[i++];
|
|
32
35
|
}
|
|
33
36
|
else {
|
|
@@ -38,22 +41,23 @@ function applyWildcards(template, wildcardValues) {
|
|
|
38
41
|
}
|
|
39
42
|
function resolveWildcardKeys(keyPattern, valuePattern, cwd) {
|
|
40
43
|
const normalizedPattern = valuePattern.replace(/^\.?\/+/, '');
|
|
44
|
+
const globPattern = convertExportsToGlob(normalizedPattern);
|
|
41
45
|
const regex = compilePattern(normalizedPattern);
|
|
42
|
-
const files = fast_glob_1.default.sync(
|
|
46
|
+
const files = fast_glob_1.default.sync(globPattern, {
|
|
43
47
|
cwd,
|
|
44
48
|
onlyFiles: true,
|
|
49
|
+
deep: Infinity,
|
|
45
50
|
});
|
|
46
51
|
const keys = [];
|
|
47
52
|
for (const file of files) {
|
|
48
53
|
const relPath = file.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
49
|
-
const
|
|
50
|
-
if (!
|
|
54
|
+
const wildcards = relPath.match(regex);
|
|
55
|
+
if (!wildcards)
|
|
51
56
|
continue;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
keys.push({ key, value: relPath });
|
|
57
|
+
keys.push({
|
|
58
|
+
key: withoutWildcard(keyPattern, wildcards.slice(1)),
|
|
59
|
+
value: relPath,
|
|
60
|
+
});
|
|
57
61
|
}
|
|
58
62
|
return keys;
|
|
59
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-wildcard-keys.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-core/src/lib/utils/resolve-wildcard-keys.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"resolve-wildcard-keys.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-core/src/lib/utils/resolve-wildcard-keys.ts"],"names":[],"mappings":";;AA+CA,kDAgCC;;AA/ED,kEAA2B;AAO3B,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,uDAAuD;AACvD,8EAA8E;AAC9E,8EAA8E;AAC9E,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,cAAwB;IACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,mBAAmB,CACjC,UAAkB,EAClB,YAAoB,EACpB,GAAW;IAEX,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,mBAAE,CAAC,IAAI,CAAC,WAAW,EAAE;QACjC,GAAG;QACH,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,MAAM,IAAI,GAAmB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAE9D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpD,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function copySrcMapIfExists(cachedFile: string, fullOutputPath: string): void;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.copySrcMapIfExists = copySrcMapIfExists;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const fs = tslib_1.__importStar(require("fs"));
|
|
6
|
-
function copySrcMapIfExists(cachedFile, fullOutputPath) {
|
|
7
|
-
const mapSrc = cachedFile + '.map';
|
|
8
|
-
const mapDest = fullOutputPath + '.map';
|
|
9
|
-
if (fs.existsSync(mapSrc)) {
|
|
10
|
-
fs.copyFileSync(mapSrc, mapDest);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=copy-src-map-if-exists.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy-src-map-if-exists.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-core/src/lib/utils/copy-src-map-if-exists.ts"],"names":[],"mappings":";;AAEA,gDAOC;;AATD,+CAAyB;AAEzB,SAAgB,kBAAkB,CAAC,UAAkB,EAAE,cAAsB;IAC3E,MAAM,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,cAAc,GAAG,MAAM,CAAC;IAExC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|