@softarc/native-federation-orchestrator 4.2.1 → 4.2.2
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 -2
- package/fesm2022/@softarc/native-federation-orchestrator.mjs +47 -44
- package/fesm2022/@softarc/native-federation-orchestrator.mjs.map +3 -3
- package/fesm2022/node.mjs +124 -53
- package/fesm2022/node.mjs.map +3 -3
- package/node-loader/loader.mjs +37 -0
- package/node-loader/loader.mjs.map +2 -2
- package/package.json +1 -1
- package/quickstart.mjs +7 -7
- package/types/lib/3.adapters/node/node-loader.client.d.ts +3 -0
- package/types/lib/4.config/import-map/resolve-host-instances.d.ts +50 -0
- package/types/lib/4.config/import-map/use-node.d.ts +4 -2
- package/types/lib/init-federation.node.d.ts +27 -1
package/fesm2022/node.mjs
CHANGED
|
@@ -24,9 +24,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
mod
|
|
25
25
|
));
|
|
26
26
|
|
|
27
|
-
// node_modules/.pnpm/semver@7.8.
|
|
27
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/debug.js
|
|
28
28
|
var require_debug = __commonJS({
|
|
29
|
-
"node_modules/.pnpm/semver@7.8.
|
|
29
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/debug.js"(exports, module) {
|
|
30
30
|
"use strict";
|
|
31
31
|
var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
|
|
32
32
|
};
|
|
@@ -34,9 +34,9 @@ var require_debug = __commonJS({
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
// node_modules/.pnpm/semver@7.8.
|
|
37
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/constants.js
|
|
38
38
|
var require_constants = __commonJS({
|
|
39
|
-
"node_modules/.pnpm/semver@7.8.
|
|
39
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/constants.js"(exports, module) {
|
|
40
40
|
"use strict";
|
|
41
41
|
var SEMVER_SPEC_VERSION = "2.0.0";
|
|
42
42
|
var MAX_LENGTH = 256;
|
|
@@ -66,9 +66,9 @@ var require_constants = __commonJS({
|
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
// node_modules/.pnpm/semver@7.8.
|
|
69
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/re.js
|
|
70
70
|
var require_re = __commonJS({
|
|
71
|
-
"node_modules/.pnpm/semver@7.8.
|
|
71
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/re.js"(exports, module) {
|
|
72
72
|
"use strict";
|
|
73
73
|
var {
|
|
74
74
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -154,9 +154,9 @@ var require_re = __commonJS({
|
|
|
154
154
|
}
|
|
155
155
|
});
|
|
156
156
|
|
|
157
|
-
// node_modules/.pnpm/semver@7.8.
|
|
157
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/parse-options.js
|
|
158
158
|
var require_parse_options = __commonJS({
|
|
159
|
-
"node_modules/.pnpm/semver@7.8.
|
|
159
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/parse-options.js"(exports, module) {
|
|
160
160
|
"use strict";
|
|
161
161
|
var looseOption = Object.freeze({ loose: true });
|
|
162
162
|
var emptyOpts = Object.freeze({});
|
|
@@ -173,9 +173,9 @@ var require_parse_options = __commonJS({
|
|
|
173
173
|
}
|
|
174
174
|
});
|
|
175
175
|
|
|
176
|
-
// node_modules/.pnpm/semver@7.8.
|
|
176
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/identifiers.js
|
|
177
177
|
var require_identifiers = __commonJS({
|
|
178
|
-
"node_modules/.pnpm/semver@7.8.
|
|
178
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/identifiers.js"(exports, module) {
|
|
179
179
|
"use strict";
|
|
180
180
|
var numeric = /^[0-9]+$/;
|
|
181
181
|
var compareIdentifiers = (a, b) => {
|
|
@@ -198,9 +198,9 @@ var require_identifiers = __commonJS({
|
|
|
198
198
|
}
|
|
199
199
|
});
|
|
200
200
|
|
|
201
|
-
// node_modules/.pnpm/semver@7.8.
|
|
201
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/semver.js
|
|
202
202
|
var require_semver = __commonJS({
|
|
203
|
-
"node_modules/.pnpm/semver@7.8.
|
|
203
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/semver.js"(exports, module) {
|
|
204
204
|
"use strict";
|
|
205
205
|
var debug = require_debug();
|
|
206
206
|
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
|
|
@@ -477,9 +477,9 @@ var require_semver = __commonJS({
|
|
|
477
477
|
}
|
|
478
478
|
});
|
|
479
479
|
|
|
480
|
-
// node_modules/.pnpm/semver@7.8.
|
|
480
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/parse.js
|
|
481
481
|
var require_parse = __commonJS({
|
|
482
|
-
"node_modules/.pnpm/semver@7.8.
|
|
482
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/parse.js"(exports, module) {
|
|
483
483
|
"use strict";
|
|
484
484
|
var SemVer = require_semver();
|
|
485
485
|
var parse = (version, options, throwErrors = false) => {
|
|
@@ -499,9 +499,9 @@ var require_parse = __commonJS({
|
|
|
499
499
|
}
|
|
500
500
|
});
|
|
501
501
|
|
|
502
|
-
// node_modules/.pnpm/semver@7.8.
|
|
502
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/valid.js
|
|
503
503
|
var require_valid = __commonJS({
|
|
504
|
-
"node_modules/.pnpm/semver@7.8.
|
|
504
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/valid.js"(exports, module) {
|
|
505
505
|
"use strict";
|
|
506
506
|
var parse = require_parse();
|
|
507
507
|
var valid = (version, options) => {
|
|
@@ -512,9 +512,9 @@ var require_valid = __commonJS({
|
|
|
512
512
|
}
|
|
513
513
|
});
|
|
514
514
|
|
|
515
|
-
// node_modules/.pnpm/semver@7.8.
|
|
515
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/lrucache.js
|
|
516
516
|
var require_lrucache = __commonJS({
|
|
517
|
-
"node_modules/.pnpm/semver@7.8.
|
|
517
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/internal/lrucache.js"(exports, module) {
|
|
518
518
|
"use strict";
|
|
519
519
|
var LRUCache = class {
|
|
520
520
|
constructor() {
|
|
@@ -550,9 +550,9 @@ var require_lrucache = __commonJS({
|
|
|
550
550
|
}
|
|
551
551
|
});
|
|
552
552
|
|
|
553
|
-
// node_modules/.pnpm/semver@7.8.
|
|
553
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/compare.js
|
|
554
554
|
var require_compare = __commonJS({
|
|
555
|
-
"node_modules/.pnpm/semver@7.8.
|
|
555
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/compare.js"(exports, module) {
|
|
556
556
|
"use strict";
|
|
557
557
|
var SemVer = require_semver();
|
|
558
558
|
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
@@ -560,9 +560,9 @@ var require_compare = __commonJS({
|
|
|
560
560
|
}
|
|
561
561
|
});
|
|
562
562
|
|
|
563
|
-
// node_modules/.pnpm/semver@7.8.
|
|
563
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/eq.js
|
|
564
564
|
var require_eq = __commonJS({
|
|
565
|
-
"node_modules/.pnpm/semver@7.8.
|
|
565
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/eq.js"(exports, module) {
|
|
566
566
|
"use strict";
|
|
567
567
|
var compare = require_compare();
|
|
568
568
|
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
|
@@ -570,9 +570,9 @@ var require_eq = __commonJS({
|
|
|
570
570
|
}
|
|
571
571
|
});
|
|
572
572
|
|
|
573
|
-
// node_modules/.pnpm/semver@7.8.
|
|
573
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/neq.js
|
|
574
574
|
var require_neq = __commonJS({
|
|
575
|
-
"node_modules/.pnpm/semver@7.8.
|
|
575
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/neq.js"(exports, module) {
|
|
576
576
|
"use strict";
|
|
577
577
|
var compare = require_compare();
|
|
578
578
|
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
|
@@ -580,9 +580,9 @@ var require_neq = __commonJS({
|
|
|
580
580
|
}
|
|
581
581
|
});
|
|
582
582
|
|
|
583
|
-
// node_modules/.pnpm/semver@7.8.
|
|
583
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gt.js
|
|
584
584
|
var require_gt = __commonJS({
|
|
585
|
-
"node_modules/.pnpm/semver@7.8.
|
|
585
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gt.js"(exports, module) {
|
|
586
586
|
"use strict";
|
|
587
587
|
var compare = require_compare();
|
|
588
588
|
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
|
@@ -590,9 +590,9 @@ var require_gt = __commonJS({
|
|
|
590
590
|
}
|
|
591
591
|
});
|
|
592
592
|
|
|
593
|
-
// node_modules/.pnpm/semver@7.8.
|
|
593
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gte.js
|
|
594
594
|
var require_gte = __commonJS({
|
|
595
|
-
"node_modules/.pnpm/semver@7.8.
|
|
595
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/gte.js"(exports, module) {
|
|
596
596
|
"use strict";
|
|
597
597
|
var compare = require_compare();
|
|
598
598
|
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
|
|
@@ -600,9 +600,9 @@ var require_gte = __commonJS({
|
|
|
600
600
|
}
|
|
601
601
|
});
|
|
602
602
|
|
|
603
|
-
// node_modules/.pnpm/semver@7.8.
|
|
603
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lt.js
|
|
604
604
|
var require_lt = __commonJS({
|
|
605
|
-
"node_modules/.pnpm/semver@7.8.
|
|
605
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lt.js"(exports, module) {
|
|
606
606
|
"use strict";
|
|
607
607
|
var compare = require_compare();
|
|
608
608
|
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
|
@@ -610,9 +610,9 @@ var require_lt = __commonJS({
|
|
|
610
610
|
}
|
|
611
611
|
});
|
|
612
612
|
|
|
613
|
-
// node_modules/.pnpm/semver@7.8.
|
|
613
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lte.js
|
|
614
614
|
var require_lte = __commonJS({
|
|
615
|
-
"node_modules/.pnpm/semver@7.8.
|
|
615
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/lte.js"(exports, module) {
|
|
616
616
|
"use strict";
|
|
617
617
|
var compare = require_compare();
|
|
618
618
|
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
|
@@ -620,9 +620,9 @@ var require_lte = __commonJS({
|
|
|
620
620
|
}
|
|
621
621
|
});
|
|
622
622
|
|
|
623
|
-
// node_modules/.pnpm/semver@7.8.
|
|
623
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/cmp.js
|
|
624
624
|
var require_cmp = __commonJS({
|
|
625
|
-
"node_modules/.pnpm/semver@7.8.
|
|
625
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/cmp.js"(exports, module) {
|
|
626
626
|
"use strict";
|
|
627
627
|
var eq = require_eq();
|
|
628
628
|
var neq = require_neq();
|
|
@@ -670,9 +670,9 @@ var require_cmp = __commonJS({
|
|
|
670
670
|
}
|
|
671
671
|
});
|
|
672
672
|
|
|
673
|
-
// node_modules/.pnpm/semver@7.8.
|
|
673
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/comparator.js
|
|
674
674
|
var require_comparator = __commonJS({
|
|
675
|
-
"node_modules/.pnpm/semver@7.8.
|
|
675
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/comparator.js"(exports, module) {
|
|
676
676
|
"use strict";
|
|
677
677
|
var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
|
|
678
678
|
var Comparator = class _Comparator {
|
|
@@ -783,9 +783,9 @@ var require_comparator = __commonJS({
|
|
|
783
783
|
}
|
|
784
784
|
});
|
|
785
785
|
|
|
786
|
-
// node_modules/.pnpm/semver@7.8.
|
|
786
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/range.js
|
|
787
787
|
var require_range = __commonJS({
|
|
788
|
-
"node_modules/.pnpm/semver@7.8.
|
|
788
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/classes/range.js"(exports, module) {
|
|
789
789
|
"use strict";
|
|
790
790
|
var SPACE_CHARACTERS = /\s+/g;
|
|
791
791
|
var Range = class _Range {
|
|
@@ -853,6 +853,7 @@ var require_range = __commonJS({
|
|
|
853
853
|
return this.range;
|
|
854
854
|
}
|
|
855
855
|
parseRange(range) {
|
|
856
|
+
range = range.replace(BUILDSTRIPRE, "");
|
|
856
857
|
const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
|
|
857
858
|
const memoKey = memoOpts + ":" + range;
|
|
858
859
|
const cached2 = cache.get(memoKey);
|
|
@@ -935,12 +936,14 @@ var require_range = __commonJS({
|
|
|
935
936
|
var SemVer = require_semver();
|
|
936
937
|
var {
|
|
937
938
|
safeRe: re,
|
|
939
|
+
src,
|
|
938
940
|
t,
|
|
939
941
|
comparatorTrimReplace,
|
|
940
942
|
tildeTrimReplace,
|
|
941
943
|
caretTrimReplace
|
|
942
944
|
} = require_re();
|
|
943
945
|
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
|
|
946
|
+
var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
|
|
944
947
|
var isNullSet = (c) => c.value === "<0.0.0-0";
|
|
945
948
|
var isAny = (c) => c.value === "";
|
|
946
949
|
var isSatisfiable = (comparators, options) => {
|
|
@@ -1160,9 +1163,9 @@ var require_range = __commonJS({
|
|
|
1160
1163
|
}
|
|
1161
1164
|
});
|
|
1162
1165
|
|
|
1163
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1166
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/satisfies.js
|
|
1164
1167
|
var require_satisfies = __commonJS({
|
|
1165
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1168
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/functions/satisfies.js"(exports, module) {
|
|
1166
1169
|
"use strict";
|
|
1167
1170
|
var Range = require_range();
|
|
1168
1171
|
var satisfies = (version, range, options) => {
|
|
@@ -1177,9 +1180,9 @@ var require_satisfies = __commonJS({
|
|
|
1177
1180
|
}
|
|
1178
1181
|
});
|
|
1179
1182
|
|
|
1180
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1183
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/min-version.js
|
|
1181
1184
|
var require_min_version = __commonJS({
|
|
1182
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1185
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/min-version.js"(exports, module) {
|
|
1183
1186
|
"use strict";
|
|
1184
1187
|
var SemVer = require_semver();
|
|
1185
1188
|
var Range = require_range();
|
|
@@ -1236,9 +1239,9 @@ var require_min_version = __commonJS({
|
|
|
1236
1239
|
}
|
|
1237
1240
|
});
|
|
1238
1241
|
|
|
1239
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1242
|
+
// node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/valid.js
|
|
1240
1243
|
var require_valid2 = __commonJS({
|
|
1241
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1244
|
+
"node_modules/.pnpm/semver@7.8.1/node_modules/semver/ranges/valid.js"(exports, module) {
|
|
1242
1245
|
"use strict";
|
|
1243
1246
|
var Range = require_range();
|
|
1244
1247
|
var validRange = (range, options) => {
|
|
@@ -2831,14 +2834,21 @@ var createClient = () => {
|
|
|
2831
2834
|
});
|
|
2832
2835
|
port1.unref();
|
|
2833
2836
|
let pending = Promise.resolve();
|
|
2834
|
-
const
|
|
2837
|
+
const bridged = /* @__PURE__ */ new Set();
|
|
2838
|
+
const omitBridged = (map) => {
|
|
2839
|
+
if (bridged.size === 0) return map;
|
|
2840
|
+
const drop = (imports) => Object.fromEntries(Object.entries(imports).filter(([specifier]) => !bridged.has(specifier)));
|
|
2841
|
+
const scopes = map.scopes ? Object.fromEntries(Object.entries(map.scopes).map(([scope, imports]) => [scope, drop(imports)])) : map.scopes;
|
|
2842
|
+
return { ...map, imports: drop(map.imports), ...scopes ? { scopes } : {} };
|
|
2843
|
+
};
|
|
2844
|
+
const postAndAwaitAck = (message, ackType) => new Promise((resolve, reject) => {
|
|
2835
2845
|
let timer = null;
|
|
2836
2846
|
const cleanup = () => {
|
|
2837
2847
|
port1.off("message", onMessage);
|
|
2838
2848
|
if (timer !== null) clearTimeout(timer);
|
|
2839
2849
|
};
|
|
2840
2850
|
const onMessage = (msg) => {
|
|
2841
|
-
if (msg?.type ===
|
|
2851
|
+
if (msg?.type === ackType) {
|
|
2842
2852
|
cleanup();
|
|
2843
2853
|
resolve();
|
|
2844
2854
|
}
|
|
@@ -2848,26 +2858,31 @@ var createClient = () => {
|
|
|
2848
2858
|
cleanup();
|
|
2849
2859
|
reject(
|
|
2850
2860
|
new Error(
|
|
2851
|
-
`node-loader.client: loader did not acknowledge
|
|
2861
|
+
`node-loader.client: loader did not acknowledge ${message.type} within ${NODE_LOADER_CLIENT_ACK_TIMEOUT_MS}ms`
|
|
2852
2862
|
)
|
|
2853
2863
|
);
|
|
2854
2864
|
}, NODE_LOADER_CLIENT_ACK_TIMEOUT_MS);
|
|
2855
2865
|
timer.unref?.();
|
|
2856
2866
|
try {
|
|
2857
|
-
|
|
2858
|
-
port1.postMessage(outgoing);
|
|
2867
|
+
port1.postMessage(message);
|
|
2859
2868
|
} catch (err) {
|
|
2860
2869
|
cleanup();
|
|
2861
2870
|
reject(err);
|
|
2862
2871
|
}
|
|
2863
2872
|
});
|
|
2864
|
-
const
|
|
2865
|
-
const next = pending.catch(() => void 0).then(() => postAndAwaitAck(
|
|
2873
|
+
const enqueue = (message, ackType) => {
|
|
2874
|
+
const next = pending.catch(() => void 0).then(() => postAndAwaitAck(message, ackType));
|
|
2866
2875
|
pending = next;
|
|
2867
2876
|
return next;
|
|
2868
2877
|
};
|
|
2878
|
+
const setMap = (map) => enqueue({ type: "set-import-map", map: omitBridged(map) }, "import-map-applied");
|
|
2879
|
+
const setHostInstances = (keys) => {
|
|
2880
|
+
Object.keys(keys).forEach((specifier) => bridged.add(specifier));
|
|
2881
|
+
return enqueue({ type: "set-host-instances", keys }, "host-instances-applied");
|
|
2882
|
+
};
|
|
2869
2883
|
return {
|
|
2870
2884
|
setMap,
|
|
2885
|
+
setHostInstances,
|
|
2871
2886
|
ready: () => pending
|
|
2872
2887
|
};
|
|
2873
2888
|
};
|
|
@@ -2886,11 +2901,48 @@ var useNodeImportMap = () => {
|
|
|
2886
2901
|
url
|
|
2887
2902
|
),
|
|
2888
2903
|
setImportMapFn: (importMap) => nodeLoader.setMap(importMap).then(() => importMap),
|
|
2904
|
+
setHostInstancesFn: (keys) => nodeLoader.setHostInstances(keys).then(() => keys),
|
|
2889
2905
|
reloadBrowserFn: () => {
|
|
2890
2906
|
}
|
|
2891
2907
|
};
|
|
2892
2908
|
};
|
|
2893
2909
|
|
|
2910
|
+
// src/lib/4.config/import-map/resolve-host-instances.ts
|
|
2911
|
+
var matches = (specifier, patterns) => patterns.some((p) => specifier === p || specifier.startsWith(p));
|
|
2912
|
+
var isAuto = (option) => option === "all" || typeof option === "object" && option !== null && ("include" in option || "exclude" in option || "load" in option);
|
|
2913
|
+
var resolveHostInstances = async (option, deps) => {
|
|
2914
|
+
if (!option) return void 0;
|
|
2915
|
+
if (!isAuto(option)) return option;
|
|
2916
|
+
const auto = option === "all" ? {} : option;
|
|
2917
|
+
const { hostRemoteEntry } = deps;
|
|
2918
|
+
if (!hostRemoteEntry) {
|
|
2919
|
+
deps.log.warn(
|
|
2920
|
+
0,
|
|
2921
|
+
"[native-federation] hostInstances auto mode needs a hostRemoteEntry to derive shared singletons from; skipping."
|
|
2922
|
+
);
|
|
2923
|
+
return void 0;
|
|
2924
|
+
}
|
|
2925
|
+
const url = typeof hostRemoteEntry === "string" ? hostRemoteEntry : hostRemoteEntry.url;
|
|
2926
|
+
const integrity = typeof hostRemoteEntry === "string" ? void 0 : hostRemoteEntry.integrity;
|
|
2927
|
+
const entry = await deps.remoteEntryProvider.provide(url, { integrity });
|
|
2928
|
+
const load = auto.load ?? ((specifier) => import(specifier));
|
|
2929
|
+
const specifiers = [...new Set((entry.shared ?? []).filter((s) => s.singleton).map((s) => s.packageName))].filter((s) => auto.include ? matches(s, auto.include) : true).filter((s) => auto.exclude ? !matches(s, auto.exclude) : true);
|
|
2930
|
+
const map = {};
|
|
2931
|
+
for (const specifier of specifiers) {
|
|
2932
|
+
try {
|
|
2933
|
+
map[specifier] = await load(specifier);
|
|
2934
|
+
} catch (err) {
|
|
2935
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
2936
|
+
deps.log.warn(
|
|
2937
|
+
0,
|
|
2938
|
+
`[native-federation] hostInstances: could not load '${specifier}' from the host realm; skipping (${msg})`
|
|
2939
|
+
);
|
|
2940
|
+
}
|
|
2941
|
+
}
|
|
2942
|
+
deps.log.debug(0, `[native-federation] hostInstances bridged: ${Object.keys(map).join(", ") || "(none)"}`);
|
|
2943
|
+
return map;
|
|
2944
|
+
};
|
|
2945
|
+
|
|
2894
2946
|
// src/lib/utils/node/to-url.ts
|
|
2895
2947
|
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
2896
2948
|
var URL_SCHEME = /^[a-z][a-z0-9+\-.]*:/i;
|
|
@@ -2902,6 +2954,7 @@ var normalizeHostRemoteEntry = (hostRemoteEntry) => {
|
|
|
2902
2954
|
};
|
|
2903
2955
|
|
|
2904
2956
|
// src/lib/init-federation.node.ts
|
|
2957
|
+
var HOST_INSTANCES_GLOBAL = "__NF_HOST_INSTANCES__";
|
|
2905
2958
|
var buildNodeAdapters = (config) => ({
|
|
2906
2959
|
versionCheck: createVersionCheck(),
|
|
2907
2960
|
manifestProvider: createFsManifestProvider(),
|
|
@@ -2915,15 +2968,33 @@ var buildNodeAdapters = (config) => ({
|
|
|
2915
2968
|
});
|
|
2916
2969
|
var initNodeFederation = (remotesOrManifestUrl, options = {}) => {
|
|
2917
2970
|
const nodeConfig = useNodeImportMap();
|
|
2971
|
+
const hostRemoteEntry = normalizeHostRemoteEntry(options.hostRemoteEntry);
|
|
2918
2972
|
const config = createConfigHandlers({
|
|
2919
2973
|
...options,
|
|
2920
|
-
hostRemoteEntry
|
|
2974
|
+
hostRemoteEntry,
|
|
2921
2975
|
loadModuleFn: options.loadModuleFn ?? nodeConfig.loadModuleFn,
|
|
2922
2976
|
setImportMapFn: options.setImportMapFn ?? nodeConfig.setImportMapFn,
|
|
2923
2977
|
reloadBrowserFn: options.reloadBrowserFn ?? nodeConfig.reloadBrowserFn,
|
|
2924
2978
|
sse: false
|
|
2925
2979
|
});
|
|
2926
2980
|
const adapters = buildNodeAdapters(config);
|
|
2981
|
+
const hostInstancesReady = (async () => {
|
|
2982
|
+
const instances = await resolveHostInstances(options.hostInstances, {
|
|
2983
|
+
remoteEntryProvider: adapters.remoteEntryProvider,
|
|
2984
|
+
hostRemoteEntry,
|
|
2985
|
+
log: config.log
|
|
2986
|
+
});
|
|
2987
|
+
if (!instances || Object.keys(instances).length === 0) return;
|
|
2988
|
+
const globals = globalThis;
|
|
2989
|
+
globals[HOST_INSTANCES_GLOBAL] = {
|
|
2990
|
+
...globals[HOST_INSTANCES_GLOBAL] ?? {},
|
|
2991
|
+
...instances
|
|
2992
|
+
};
|
|
2993
|
+
const keys = Object.fromEntries(
|
|
2994
|
+
Object.entries(instances).map(([specifier, ns]) => [specifier, Object.keys(ns)])
|
|
2995
|
+
);
|
|
2996
|
+
await nodeConfig.setHostInstancesFn(keys);
|
|
2997
|
+
})();
|
|
2927
2998
|
const stateDump = (msg) => config.log.debug(0, msg, {
|
|
2928
2999
|
remotes: { ...adapters.remoteInfoRepo.getAll() },
|
|
2929
3000
|
"shared-externals": adapters.sharedExternalsRepo.getScopes({ includeGlobal: true }).reduce(
|
|
@@ -2934,7 +3005,7 @@ var initNodeFederation = (remotesOrManifestUrl, options = {}) => {
|
|
|
2934
3005
|
});
|
|
2935
3006
|
const initFlow = createInitFlow(INIT_FLOW_FACTORY({ adapters, config }));
|
|
2936
3007
|
const dynamicInitFlow = createDynamicInitFlow(DYNAMIC_INIT_FLOW_FACTORY({ config, adapters }));
|
|
2937
|
-
return initFlow(remotesOrManifestUrl).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then((loadRemoteModule) => {
|
|
3008
|
+
return hostInstancesReady.then(() => initFlow(remotesOrManifestUrl)).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then((loadRemoteModule) => {
|
|
2938
3009
|
const output = {
|
|
2939
3010
|
config,
|
|
2940
3011
|
adapters,
|