@softarc/native-federation-orchestrator 4.2.2 → 4.3.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/fesm2022/@softarc/native-federation-orchestrator.mjs +884 -917
- package/fesm2022/@softarc/native-federation-orchestrator.mjs.map +4 -4
- package/fesm2022/audit.mjs +2 -2
- package/fesm2022/audit.mjs.map +2 -2
- package/fesm2022/node.mjs +424 -444
- package/fesm2022/node.mjs.map +4 -4
- package/fesm2022/options.mjs +13 -13
- package/fesm2022/options.mjs.map +3 -3
- package/fesm2022/registry.mjs +2 -2
- package/fesm2022/registry.mjs.map +3 -3
- package/fesm2022/sdk.mjs +2 -2
- package/fesm2022/sdk.mjs.map +2 -2
- package/init-registry.mjs +1 -1
- package/node-loader/loader.mjs +1 -1
- package/node-loader/loader.mjs.map +1 -1
- package/package.json +2 -5
- package/quickstart.mjs +13 -13
- package/types/lib/audit/externals-audit.d.ts +4 -0
- package/types/lib/{2.app/driver-ports/audit → audit}/for-auditing-externals.port.d.ts +1 -1
- package/types/lib/audit.index.d.ts +2 -2
- package/types/lib/{2.app → core/2.app}/driver-ports/init/drivers.contract.d.ts +6 -0
- package/types/lib/core/2.app/driver-ports/init/flow.contract.d.ts +14 -0
- package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-getting-remote-entry.port.d.ts +1 -1
- package/types/lib/{2.app → core/2.app}/driver-ports/init/index.d.ts +3 -0
- package/types/lib/{2.app → core/2.app}/driving-ports/for-remote-info-storage.port.d.ts +1 -1
- package/types/lib/{2.app → core/2.app}/driving-ports/for-scoped-externals-storage.port.d.ts +1 -1
- package/types/lib/{2.app → core/2.app}/driving-ports/for-shared-chunks-storage.port.d.ts +1 -1
- package/types/lib/{2.app → core/2.app}/driving-ports/for-shared-externals-storage.port.d.ts +1 -1
- package/types/lib/core/2.app/flows/init-remote-entry.flow.d.ts +4 -0
- package/types/lib/core/2.app/flows/init.flow.d.ts +4 -0
- package/types/lib/core/2.app/steps/commit-changes.d.ts +4 -0
- package/types/lib/core/2.app/steps/convert-to-import-map.d.ts +4 -0
- package/types/lib/core/2.app/steps/determine-shared-externals.d.ts +5 -0
- package/types/lib/core/2.app/steps/expose-module-loader.d.ts +4 -0
- package/types/lib/core/2.app/steps/generate-import-map.d.ts +5 -0
- package/types/lib/core/2.app/steps/get-remote-entries.d.ts +6 -0
- package/types/lib/core/2.app/steps/get-remote-entry.d.ts +5 -0
- package/types/lib/core/2.app/steps/process-remote-entries.d.ts +5 -0
- package/types/lib/core/2.app/steps/store-remote-entry.d.ts +23 -0
- package/types/lib/core/2.app/steps/update-cache.d.ts +5 -0
- package/types/lib/{3.adapters → core/3.adapters}/browser/sse-handler.d.ts +1 -1
- package/types/lib/core/5.di/federation-result.factory.d.ts +12 -0
- package/types/lib/core/5.di/init.factory.d.ts +12 -0
- package/types/lib/{init-federation.contract.d.ts → core/init-federation.contract.d.ts} +1 -1
- package/types/lib/index.d.ts +10 -8
- package/types/lib/{3.adapters/node → node/adapters}/fs-manifest-provider.d.ts +1 -1
- package/types/lib/{3.adapters/node → node/adapters}/fs-remote-entry-provider.d.ts +1 -1
- package/types/lib/{3.adapters/node → node/adapters}/node-loader.client.d.ts +1 -1
- package/types/lib/node/adapters/noop-sse.d.ts +3 -0
- package/types/lib/{init-federation.node.d.ts → node/init-federation.node.d.ts} +5 -5
- package/types/lib/{4.config/import-map → node}/resolve-host-instances.d.ts +3 -3
- package/types/lib/{4.config/import-map → node}/use-node.d.ts +2 -2
- package/types/lib/{utils/node → node/utils}/to-url.d.ts +1 -1
- package/types/lib/node.index.d.ts +5 -5
- package/types/lib/options.index.d.ts +5 -5
- package/types/lib/registry/for-managing-events.port.d.ts +2 -0
- package/types/lib/registry/setup-registry.d.ts +3 -0
- package/types/lib/registry.index.d.ts +5 -4
- package/types/lib/sdk.index.d.ts +4 -5
- package/types/lib/testing/handlers/log.handler.d.ts +3 -0
- package/types/lib/utils/clone-entry.d.ts +1 -1
- package/types/{init-registry.d.ts → scripts/init-registry.d.ts} +1 -1
- package/types/lib/1.domain/registry/index.d.ts +0 -2
- package/types/lib/2.app/driver-ports/audit/index.d.ts +0 -1
- package/types/lib/2.app/driver-ports/dynamic-init/drivers.contract.d.ts +0 -13
- package/types/lib/2.app/driver-ports/dynamic-init/flow.contract.d.ts +0 -8
- package/types/lib/2.app/driver-ports/dynamic-init/index.d.ts +0 -5
- package/types/lib/2.app/driver-ports/init/flow.contract.d.ts +0 -6
- package/types/lib/2.app/driver-ports/registry/for-managing-events.port.d.ts +0 -2
- package/types/lib/2.app/flows/audit/externals-audit.d.ts +0 -4
- package/types/lib/2.app/flows/dynamic-init/convert-to-import-map.d.ts +0 -4
- package/types/lib/2.app/flows/dynamic-init/get-remote-entry.d.ts +0 -5
- package/types/lib/2.app/flows/dynamic-init/update-cache.d.ts +0 -5
- package/types/lib/2.app/flows/init/commit-changes.d.ts +0 -4
- package/types/lib/2.app/flows/init/determine-shared-externals.d.ts +0 -5
- package/types/lib/2.app/flows/init/expose-module-loader.d.ts +0 -4
- package/types/lib/2.app/flows/init/generate-import-map.d.ts +0 -5
- package/types/lib/2.app/flows/init/get-remote-entries.d.ts +0 -6
- package/types/lib/2.app/flows/init/process-remote-entries.d.ts +0 -5
- package/types/lib/2.app/flows/registry/setup-registry.d.ts +0 -3
- package/types/lib/3.adapters/node/noop-sse.d.ts +0 -3
- package/types/lib/5.di/flows/dynamic-init.factory.d.ts +0 -14
- package/types/lib/5.di/flows/init.factory.d.ts +0 -14
- package/types/lib/6.mocks/handlers/log.handler.d.ts +0 -2
- /package/types/lib/{1.domain → core/1.domain}/externals/chunks.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/externals/external.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/externals/version.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/import-map/import-map.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/index.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/remote/remote-info.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/remote/remote-module.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/remote-entry/manifest.contract.d.ts +0 -0
- /package/types/lib/{1.domain → core/1.domain}/remote-entry/remote-entry.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/config.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/host.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/import-map.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/index.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/log.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/mode.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/config/storage.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/flow-factory.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-committing-changes.port.d.ts +0 -0
- /package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-converting-to-import-map.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-determining-shared-externals.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-exposing-module-loader.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-generating-import-map.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-getting-remote-entries.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driver-ports/init/for-processing-remote-entries.port.d.ts +0 -0
- /package/types/lib/{2.app/driver-ports/dynamic-init → core/2.app/driver-ports/init}/for-updating-cache.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/driving.contract.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/for-browser-tasks.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/for-providing-manifest.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/for-providing-remote-entries.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/for-sse.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/for-version-checking.port.d.ts +0 -0
- /package/types/lib/{2.app → core/2.app}/driving-ports/index.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/browser/browser.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/checks/version.check.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/http/manifest-provider.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/http/remote-entry-provider.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/storage/chunk.repository.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/storage/remote-info.repository.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/storage/scoped-externals.repository.d.ts +0 -0
- /package/types/lib/{3.adapters → core/3.adapters}/storage/shared-externals.repository.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/host/host.config.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/import-map.config.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/index.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/replace-in-dom.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/trusted-types.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/use-default.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/import-map/use-import-shim.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/logging/console.logger.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/logging/index.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/logging/log.config.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/logging/log.handler.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/logging/noop.logger.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/mode/caching.profile.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/mode/default.profile.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/mode/index.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/mode/mode.config.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/storage/global-this.storage.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/storage/index.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/storage/local.storage.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/storage/session.storage.d.ts +0 -0
- /package/types/lib/{4.config → core/4.config}/storage/storage.config.d.ts +0 -0
- /package/types/lib/{5.di → core/5.di}/config.factory.d.ts +0 -0
- /package/types/lib/{5.di → core/5.di}/driving.factory.d.ts +0 -0
- /package/types/lib/{init-federation.d.ts → core/init-federation.d.ts} +0 -0
- /package/types/lib/{native-federation.error.d.ts → core/native-federation.error.d.ts} +0 -0
- /package/types/lib/{3.adapters/node → node/adapters}/loader-url.d.ts +0 -0
- /package/types/lib/{utils/node → node/utils}/read-source.d.ts +0 -0
- /package/types/lib/{1.domain/registry → registry}/event-registry.contract.d.ts +0 -0
- /package/types/lib/{1.domain/registry → registry}/event.contract.d.ts +0 -0
- /package/types/lib/{2.app/config → registry}/registry.contract.d.ts +0 -0
- /package/types/{node-loader.d.ts → scripts/node-loader.d.ts} +0 -0
- /package/types/{quickstart.d.ts → scripts/quickstart.d.ts} +0 -0
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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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,15 +198,27 @@ var require_identifiers = __commonJS({
|
|
|
198
198
|
}
|
|
199
199
|
});
|
|
200
200
|
|
|
201
|
-
// node_modules/.pnpm/semver@7.8.
|
|
201
|
+
// node_modules/.pnpm/semver@7.8.3/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.3/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();
|
|
207
207
|
var { safeRe: re, t } = require_re();
|
|
208
208
|
var parseOptions = require_parse_options();
|
|
209
209
|
var { compareIdentifiers } = require_identifiers();
|
|
210
|
+
var isPrereleaseIdentifier = (prerelease, identifier) => {
|
|
211
|
+
const identifiers = identifier.split(".");
|
|
212
|
+
if (identifiers.length > prerelease.length) {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
for (let i = 0; i < identifiers.length; i++) {
|
|
216
|
+
if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return true;
|
|
221
|
+
};
|
|
210
222
|
var SemVer = class _SemVer {
|
|
211
223
|
constructor(version, options) {
|
|
212
224
|
options = parseOptions(options);
|
|
@@ -453,8 +465,9 @@ var require_semver = __commonJS({
|
|
|
453
465
|
if (identifierBase === false) {
|
|
454
466
|
prerelease = [identifier];
|
|
455
467
|
}
|
|
456
|
-
if (
|
|
457
|
-
|
|
468
|
+
if (isPrereleaseIdentifier(this.prerelease, identifier)) {
|
|
469
|
+
const prereleaseBase = this.prerelease[identifier.split(".").length];
|
|
470
|
+
if (isNaN(prereleaseBase)) {
|
|
458
471
|
this.prerelease = prerelease;
|
|
459
472
|
}
|
|
460
473
|
} else {
|
|
@@ -477,9 +490,9 @@ var require_semver = __commonJS({
|
|
|
477
490
|
}
|
|
478
491
|
});
|
|
479
492
|
|
|
480
|
-
// node_modules/.pnpm/semver@7.8.
|
|
493
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/parse.js
|
|
481
494
|
var require_parse = __commonJS({
|
|
482
|
-
"node_modules/.pnpm/semver@7.8.
|
|
495
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/parse.js"(exports, module) {
|
|
483
496
|
"use strict";
|
|
484
497
|
var SemVer = require_semver();
|
|
485
498
|
var parse = (version, options, throwErrors = false) => {
|
|
@@ -499,9 +512,9 @@ var require_parse = __commonJS({
|
|
|
499
512
|
}
|
|
500
513
|
});
|
|
501
514
|
|
|
502
|
-
// node_modules/.pnpm/semver@7.8.
|
|
515
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/valid.js
|
|
503
516
|
var require_valid = __commonJS({
|
|
504
|
-
"node_modules/.pnpm/semver@7.8.
|
|
517
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/valid.js"(exports, module) {
|
|
505
518
|
"use strict";
|
|
506
519
|
var parse = require_parse();
|
|
507
520
|
var valid = (version, options) => {
|
|
@@ -512,9 +525,9 @@ var require_valid = __commonJS({
|
|
|
512
525
|
}
|
|
513
526
|
});
|
|
514
527
|
|
|
515
|
-
// node_modules/.pnpm/semver@7.8.
|
|
528
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/internal/lrucache.js
|
|
516
529
|
var require_lrucache = __commonJS({
|
|
517
|
-
"node_modules/.pnpm/semver@7.8.
|
|
530
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/internal/lrucache.js"(exports, module) {
|
|
518
531
|
"use strict";
|
|
519
532
|
var LRUCache = class {
|
|
520
533
|
constructor() {
|
|
@@ -550,9 +563,9 @@ var require_lrucache = __commonJS({
|
|
|
550
563
|
}
|
|
551
564
|
});
|
|
552
565
|
|
|
553
|
-
// node_modules/.pnpm/semver@7.8.
|
|
566
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/compare.js
|
|
554
567
|
var require_compare = __commonJS({
|
|
555
|
-
"node_modules/.pnpm/semver@7.8.
|
|
568
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/compare.js"(exports, module) {
|
|
556
569
|
"use strict";
|
|
557
570
|
var SemVer = require_semver();
|
|
558
571
|
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
@@ -560,9 +573,9 @@ var require_compare = __commonJS({
|
|
|
560
573
|
}
|
|
561
574
|
});
|
|
562
575
|
|
|
563
|
-
// node_modules/.pnpm/semver@7.8.
|
|
576
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/eq.js
|
|
564
577
|
var require_eq = __commonJS({
|
|
565
|
-
"node_modules/.pnpm/semver@7.8.
|
|
578
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/eq.js"(exports, module) {
|
|
566
579
|
"use strict";
|
|
567
580
|
var compare = require_compare();
|
|
568
581
|
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
|
@@ -570,9 +583,9 @@ var require_eq = __commonJS({
|
|
|
570
583
|
}
|
|
571
584
|
});
|
|
572
585
|
|
|
573
|
-
// node_modules/.pnpm/semver@7.8.
|
|
586
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/neq.js
|
|
574
587
|
var require_neq = __commonJS({
|
|
575
|
-
"node_modules/.pnpm/semver@7.8.
|
|
588
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/neq.js"(exports, module) {
|
|
576
589
|
"use strict";
|
|
577
590
|
var compare = require_compare();
|
|
578
591
|
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
|
@@ -580,9 +593,9 @@ var require_neq = __commonJS({
|
|
|
580
593
|
}
|
|
581
594
|
});
|
|
582
595
|
|
|
583
|
-
// node_modules/.pnpm/semver@7.8.
|
|
596
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/gt.js
|
|
584
597
|
var require_gt = __commonJS({
|
|
585
|
-
"node_modules/.pnpm/semver@7.8.
|
|
598
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/gt.js"(exports, module) {
|
|
586
599
|
"use strict";
|
|
587
600
|
var compare = require_compare();
|
|
588
601
|
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
|
@@ -590,9 +603,9 @@ var require_gt = __commonJS({
|
|
|
590
603
|
}
|
|
591
604
|
});
|
|
592
605
|
|
|
593
|
-
// node_modules/.pnpm/semver@7.8.
|
|
606
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/gte.js
|
|
594
607
|
var require_gte = __commonJS({
|
|
595
|
-
"node_modules/.pnpm/semver@7.8.
|
|
608
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/gte.js"(exports, module) {
|
|
596
609
|
"use strict";
|
|
597
610
|
var compare = require_compare();
|
|
598
611
|
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
|
|
@@ -600,9 +613,9 @@ var require_gte = __commonJS({
|
|
|
600
613
|
}
|
|
601
614
|
});
|
|
602
615
|
|
|
603
|
-
// node_modules/.pnpm/semver@7.8.
|
|
616
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/lt.js
|
|
604
617
|
var require_lt = __commonJS({
|
|
605
|
-
"node_modules/.pnpm/semver@7.8.
|
|
618
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/lt.js"(exports, module) {
|
|
606
619
|
"use strict";
|
|
607
620
|
var compare = require_compare();
|
|
608
621
|
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
|
@@ -610,9 +623,9 @@ var require_lt = __commonJS({
|
|
|
610
623
|
}
|
|
611
624
|
});
|
|
612
625
|
|
|
613
|
-
// node_modules/.pnpm/semver@7.8.
|
|
626
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/lte.js
|
|
614
627
|
var require_lte = __commonJS({
|
|
615
|
-
"node_modules/.pnpm/semver@7.8.
|
|
628
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/lte.js"(exports, module) {
|
|
616
629
|
"use strict";
|
|
617
630
|
var compare = require_compare();
|
|
618
631
|
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
|
@@ -620,9 +633,9 @@ var require_lte = __commonJS({
|
|
|
620
633
|
}
|
|
621
634
|
});
|
|
622
635
|
|
|
623
|
-
// node_modules/.pnpm/semver@7.8.
|
|
636
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/cmp.js
|
|
624
637
|
var require_cmp = __commonJS({
|
|
625
|
-
"node_modules/.pnpm/semver@7.8.
|
|
638
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/cmp.js"(exports, module) {
|
|
626
639
|
"use strict";
|
|
627
640
|
var eq = require_eq();
|
|
628
641
|
var neq = require_neq();
|
|
@@ -670,9 +683,9 @@ var require_cmp = __commonJS({
|
|
|
670
683
|
}
|
|
671
684
|
});
|
|
672
685
|
|
|
673
|
-
// node_modules/.pnpm/semver@7.8.
|
|
686
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/classes/comparator.js
|
|
674
687
|
var require_comparator = __commonJS({
|
|
675
|
-
"node_modules/.pnpm/semver@7.8.
|
|
688
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/classes/comparator.js"(exports, module) {
|
|
676
689
|
"use strict";
|
|
677
690
|
var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
|
|
678
691
|
var Comparator = class _Comparator {
|
|
@@ -783,9 +796,9 @@ var require_comparator = __commonJS({
|
|
|
783
796
|
}
|
|
784
797
|
});
|
|
785
798
|
|
|
786
|
-
// node_modules/.pnpm/semver@7.8.
|
|
799
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/classes/range.js
|
|
787
800
|
var require_range = __commonJS({
|
|
788
|
-
"node_modules/.pnpm/semver@7.8.
|
|
801
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/classes/range.js"(exports, module) {
|
|
789
802
|
"use strict";
|
|
790
803
|
var SPACE_CHARACTERS = /\s+/g;
|
|
791
804
|
var Range = class _Range {
|
|
@@ -1031,9 +1044,9 @@ var require_range = __commonJS({
|
|
|
1031
1044
|
debug("no pr");
|
|
1032
1045
|
if (M === "0") {
|
|
1033
1046
|
if (m === "0") {
|
|
1034
|
-
ret = `>=${M}.${m}.${p}
|
|
1047
|
+
ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
|
|
1035
1048
|
} else {
|
|
1036
|
-
ret = `>=${M}.${m}.${p}
|
|
1049
|
+
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
|
|
1037
1050
|
}
|
|
1038
1051
|
} else {
|
|
1039
1052
|
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
|
|
@@ -1163,9 +1176,9 @@ var require_range = __commonJS({
|
|
|
1163
1176
|
}
|
|
1164
1177
|
});
|
|
1165
1178
|
|
|
1166
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1179
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/satisfies.js
|
|
1167
1180
|
var require_satisfies = __commonJS({
|
|
1168
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1181
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/functions/satisfies.js"(exports, module) {
|
|
1169
1182
|
"use strict";
|
|
1170
1183
|
var Range = require_range();
|
|
1171
1184
|
var satisfies = (version, range, options) => {
|
|
@@ -1180,9 +1193,9 @@ var require_satisfies = __commonJS({
|
|
|
1180
1193
|
}
|
|
1181
1194
|
});
|
|
1182
1195
|
|
|
1183
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1196
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/ranges/min-version.js
|
|
1184
1197
|
var require_min_version = __commonJS({
|
|
1185
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1198
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/ranges/min-version.js"(exports, module) {
|
|
1186
1199
|
"use strict";
|
|
1187
1200
|
var SemVer = require_semver();
|
|
1188
1201
|
var Range = require_range();
|
|
@@ -1239,9 +1252,9 @@ var require_min_version = __commonJS({
|
|
|
1239
1252
|
}
|
|
1240
1253
|
});
|
|
1241
1254
|
|
|
1242
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1255
|
+
// node_modules/.pnpm/semver@7.8.3/node_modules/semver/ranges/valid.js
|
|
1243
1256
|
var require_valid2 = __commonJS({
|
|
1244
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1257
|
+
"node_modules/.pnpm/semver@7.8.3/node_modules/semver/ranges/valid.js"(exports, module) {
|
|
1245
1258
|
"use strict";
|
|
1246
1259
|
var Range = require_range();
|
|
1247
1260
|
var validRange = (range, options) => {
|
|
@@ -1255,7 +1268,7 @@ var require_valid2 = __commonJS({
|
|
|
1255
1268
|
}
|
|
1256
1269
|
});
|
|
1257
1270
|
|
|
1258
|
-
// src/lib/3.adapters/browser/browser.ts
|
|
1271
|
+
// src/lib/core/3.adapters/browser/browser.ts
|
|
1259
1272
|
var createBrowser = (config) => {
|
|
1260
1273
|
return {
|
|
1261
1274
|
setImportMapFn: config.setImportMapFn,
|
|
@@ -1263,7 +1276,7 @@ var createBrowser = (config) => {
|
|
|
1263
1276
|
};
|
|
1264
1277
|
};
|
|
1265
1278
|
|
|
1266
|
-
// src/lib/3.adapters/checks/version.check.ts
|
|
1279
|
+
// src/lib/core/3.adapters/checks/version.check.ts
|
|
1267
1280
|
var import_valid = __toESM(require_valid());
|
|
1268
1281
|
var import_satisfies = __toESM(require_satisfies());
|
|
1269
1282
|
var import_compare = __toESM(require_compare());
|
|
@@ -1288,7 +1301,7 @@ var createVersionCheck = () => {
|
|
|
1288
1301
|
};
|
|
1289
1302
|
};
|
|
1290
1303
|
|
|
1291
|
-
// src/lib/native-federation.error.ts
|
|
1304
|
+
// src/lib/core/native-federation.error.ts
|
|
1292
1305
|
var NFError = class extends Error {
|
|
1293
1306
|
constructor(message, cause) {
|
|
1294
1307
|
super(message, cause);
|
|
@@ -1334,7 +1347,7 @@ var verifyIntegrity = async (bytes, integrity) => {
|
|
|
1334
1347
|
}
|
|
1335
1348
|
};
|
|
1336
1349
|
|
|
1337
|
-
// src/lib/utils/
|
|
1350
|
+
// src/lib/node/utils/read-source.ts
|
|
1338
1351
|
import * as fs from "node:fs/promises";
|
|
1339
1352
|
import { fileURLToPath } from "node:url";
|
|
1340
1353
|
var isHttpUrl = (input) => input.startsWith("http://") || input.startsWith("https://");
|
|
@@ -1352,7 +1365,7 @@ var readSourceBytes = async (input) => {
|
|
|
1352
1365
|
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
1353
1366
|
};
|
|
1354
1367
|
|
|
1355
|
-
// src/lib/
|
|
1368
|
+
// src/lib/node/adapters/fs-manifest-provider.ts
|
|
1356
1369
|
var createFsManifestProvider = () => {
|
|
1357
1370
|
const formatError = (manifestUrl) => (err) => {
|
|
1358
1371
|
if (err instanceof NFError) throw err;
|
|
@@ -1373,7 +1386,7 @@ var createFsManifestProvider = () => {
|
|
|
1373
1386
|
};
|
|
1374
1387
|
};
|
|
1375
1388
|
|
|
1376
|
-
// src/lib/
|
|
1389
|
+
// src/lib/node/adapters/fs-remote-entry-provider.ts
|
|
1377
1390
|
var createFsRemoteEntryProvider = () => {
|
|
1378
1391
|
const fillEmptyFields = (remoteEntryUrl) => (remoteEntry) => {
|
|
1379
1392
|
if (!remoteEntry.exposes) remoteEntry.exposes = [];
|
|
@@ -1400,7 +1413,7 @@ var createFsRemoteEntryProvider = () => {
|
|
|
1400
1413
|
};
|
|
1401
1414
|
};
|
|
1402
1415
|
|
|
1403
|
-
// src/lib/
|
|
1416
|
+
// src/lib/node/adapters/noop-sse.ts
|
|
1404
1417
|
var createNoopSSE = () => ({
|
|
1405
1418
|
watchRemoteBuilds: () => {
|
|
1406
1419
|
},
|
|
@@ -1463,7 +1476,7 @@ var Optional = class _Optional {
|
|
|
1463
1476
|
}
|
|
1464
1477
|
};
|
|
1465
1478
|
|
|
1466
|
-
// src/lib/3.adapters/storage/remote-info.repository.ts
|
|
1479
|
+
// src/lib/core/3.adapters/storage/remote-info.repository.ts
|
|
1467
1480
|
var createRemoteInfoRepository = (config) => {
|
|
1468
1481
|
const STORAGE = config.storage("remotes", {});
|
|
1469
1482
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1498,7 +1511,7 @@ var createRemoteInfoRepository = (config) => {
|
|
|
1498
1511
|
};
|
|
1499
1512
|
};
|
|
1500
1513
|
|
|
1501
|
-
// src/lib/3.adapters/storage/scoped-externals.repository.ts
|
|
1514
|
+
// src/lib/core/3.adapters/storage/scoped-externals.repository.ts
|
|
1502
1515
|
var createScopedExternalsRepository = (config) => {
|
|
1503
1516
|
const STORAGE = config.storage("scoped-externals", {});
|
|
1504
1517
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1526,11 +1539,11 @@ var createScopedExternalsRepository = (config) => {
|
|
|
1526
1539
|
};
|
|
1527
1540
|
};
|
|
1528
1541
|
|
|
1529
|
-
// src/lib/1.domain/externals/external.contract.ts
|
|
1542
|
+
// src/lib/core/1.domain/externals/external.contract.ts
|
|
1530
1543
|
var GLOBAL_SCOPE = "__GLOBAL__";
|
|
1531
1544
|
var STRICT_SCOPE = "strict";
|
|
1532
1545
|
|
|
1533
|
-
// src/lib/3.adapters/storage/shared-externals.repository.ts
|
|
1546
|
+
// src/lib/core/3.adapters/storage/shared-externals.repository.ts
|
|
1534
1547
|
var createSharedExternalsRepository = (config) => {
|
|
1535
1548
|
const STORAGE = config.storage(
|
|
1536
1549
|
"shared-externals",
|
|
@@ -1596,22 +1609,7 @@ var createSharedExternalsRepository = (config) => {
|
|
|
1596
1609
|
};
|
|
1597
1610
|
};
|
|
1598
1611
|
|
|
1599
|
-
// src/lib/
|
|
1600
|
-
var cloneEntry = (name, raw) => {
|
|
1601
|
-
try {
|
|
1602
|
-
if (typeof structuredClone === "function") {
|
|
1603
|
-
return structuredClone(raw);
|
|
1604
|
-
}
|
|
1605
|
-
} catch {
|
|
1606
|
-
}
|
|
1607
|
-
try {
|
|
1608
|
-
return JSON.parse(JSON.stringify(raw));
|
|
1609
|
-
} catch {
|
|
1610
|
-
}
|
|
1611
|
-
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
1612
|
-
};
|
|
1613
|
-
|
|
1614
|
-
// src/lib/3.adapters/storage/chunk.repository.ts
|
|
1612
|
+
// src/lib/core/3.adapters/storage/chunk.repository.ts
|
|
1615
1613
|
var createChunkRepository = (config) => {
|
|
1616
1614
|
const STORAGE = config.storage("shared-chunks", {});
|
|
1617
1615
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1632,7 +1630,7 @@ var createChunkRepository = (config) => {
|
|
|
1632
1630
|
};
|
|
1633
1631
|
};
|
|
1634
1632
|
|
|
1635
|
-
// src/lib/4.config/import-map/trusted-types.ts
|
|
1633
|
+
// src/lib/core/4.config/import-map/trusted-types.ts
|
|
1636
1634
|
var IMPORT_MAP_KEYS = /* @__PURE__ */ new Set(["imports", "scopes", "integrity"]);
|
|
1637
1635
|
var validateImportMapJSON = (input) => {
|
|
1638
1636
|
let parsed;
|
|
@@ -1690,7 +1688,7 @@ var getTrustedTypesPolicy = (name = "nfo") => {
|
|
|
1690
1688
|
return cachedPolicy;
|
|
1691
1689
|
};
|
|
1692
1690
|
|
|
1693
|
-
// src/lib/4.config/import-map/replace-in-dom.ts
|
|
1691
|
+
// src/lib/core/4.config/import-map/replace-in-dom.ts
|
|
1694
1692
|
var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts = {}) => {
|
|
1695
1693
|
if (opts?.override) {
|
|
1696
1694
|
document.head.querySelectorAll(`script[type="${mapType}"]`).forEach((importMap2) => importMap2.remove());
|
|
@@ -1705,7 +1703,7 @@ var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts
|
|
|
1705
1703
|
return Promise.resolve(importMap);
|
|
1706
1704
|
};
|
|
1707
1705
|
|
|
1708
|
-
// src/lib/4.config/import-map/use-default.ts
|
|
1706
|
+
// src/lib/core/4.config/import-map/use-default.ts
|
|
1709
1707
|
var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
1710
1708
|
loadModuleFn: (url) => {
|
|
1711
1709
|
const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);
|
|
@@ -1720,7 +1718,7 @@ var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
|
1720
1718
|
}
|
|
1721
1719
|
});
|
|
1722
1720
|
|
|
1723
|
-
// src/lib/4.config/import-map/import-map.config.ts
|
|
1721
|
+
// src/lib/core/4.config/import-map/import-map.config.ts
|
|
1724
1722
|
var createImportMapConfig = (o) => {
|
|
1725
1723
|
const fallback = useDefaultImportMap(o.trustedTypesPolicyName);
|
|
1726
1724
|
return {
|
|
@@ -1730,7 +1728,7 @@ var createImportMapConfig = (o) => {
|
|
|
1730
1728
|
};
|
|
1731
1729
|
};
|
|
1732
1730
|
|
|
1733
|
-
// src/lib/4.config/host/host.config.ts
|
|
1731
|
+
// src/lib/core/4.config/host/host.config.ts
|
|
1734
1732
|
var createHostConfig = (override) => {
|
|
1735
1733
|
const extras = override?.manifestIntegrity ? { manifestIntegrity: override.manifestIntegrity } : {};
|
|
1736
1734
|
if (!override?.hostRemoteEntry) {
|
|
@@ -1754,7 +1752,7 @@ var createHostConfig = (override) => {
|
|
|
1754
1752
|
};
|
|
1755
1753
|
};
|
|
1756
1754
|
|
|
1757
|
-
// src/lib/4.config/logging/noop.logger.ts
|
|
1755
|
+
// src/lib/core/4.config/logging/noop.logger.ts
|
|
1758
1756
|
var noopLogger = {
|
|
1759
1757
|
debug: () => {
|
|
1760
1758
|
},
|
|
@@ -1764,14 +1762,14 @@ var noopLogger = {
|
|
|
1764
1762
|
}
|
|
1765
1763
|
};
|
|
1766
1764
|
|
|
1767
|
-
// src/lib/2.app/config/log.contract.ts
|
|
1765
|
+
// src/lib/core/2.app/config/log.contract.ts
|
|
1768
1766
|
var LogLevel = {
|
|
1769
1767
|
debug: 0,
|
|
1770
1768
|
warn: 1,
|
|
1771
1769
|
error: 2
|
|
1772
1770
|
};
|
|
1773
1771
|
|
|
1774
|
-
// src/lib/4.config/logging/log.handler.ts
|
|
1772
|
+
// src/lib/core/4.config/logging/log.handler.ts
|
|
1775
1773
|
var createLogHandler = (logger, logLevel) => {
|
|
1776
1774
|
const logTypes = Object.keys(LogLevel).filter((key) => isNaN(Number(key)));
|
|
1777
1775
|
return logTypes.reduce(
|
|
@@ -1789,13 +1787,28 @@ var createLogHandler = (logger, logLevel) => {
|
|
|
1789
1787
|
);
|
|
1790
1788
|
};
|
|
1791
1789
|
|
|
1792
|
-
// src/lib/4.config/logging/log.config.ts
|
|
1790
|
+
// src/lib/core/4.config/logging/log.config.ts
|
|
1793
1791
|
var createLogConfig = ({ logger, logLevel, sse }) => ({
|
|
1794
1792
|
log: createLogHandler(logger ?? noopLogger, logLevel ?? "error"),
|
|
1795
1793
|
sse: !!sse
|
|
1796
1794
|
});
|
|
1797
1795
|
|
|
1798
|
-
// src/lib/
|
|
1796
|
+
// src/lib/utils/clone-entry.ts
|
|
1797
|
+
var cloneEntry = (name, raw) => {
|
|
1798
|
+
try {
|
|
1799
|
+
if (typeof structuredClone === "function") {
|
|
1800
|
+
return structuredClone(raw);
|
|
1801
|
+
}
|
|
1802
|
+
} catch {
|
|
1803
|
+
}
|
|
1804
|
+
try {
|
|
1805
|
+
return JSON.parse(JSON.stringify(raw));
|
|
1806
|
+
} catch {
|
|
1807
|
+
}
|
|
1808
|
+
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
1809
|
+
};
|
|
1810
|
+
|
|
1811
|
+
// src/lib/core/4.config/storage/global-this.storage.ts
|
|
1799
1812
|
var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
1800
1813
|
if (!globalThis[namespace]) {
|
|
1801
1814
|
globalThis[namespace] = {};
|
|
@@ -1818,20 +1831,20 @@ var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
|
1818
1831
|
return entry;
|
|
1819
1832
|
};
|
|
1820
1833
|
|
|
1821
|
-
// src/lib/4.config/storage/storage.config.ts
|
|
1834
|
+
// src/lib/core/4.config/storage/storage.config.ts
|
|
1822
1835
|
var createStorageConfig = (override) => ({
|
|
1823
1836
|
storage: override.storage ? override.storage(override.storageNamespace ?? "__NATIVE_FEDERATION__") : globalThisStorageEntry(override.storageNamespace ?? "__NATIVE_FEDERATION__"),
|
|
1824
1837
|
clearStorage: override.clearStorage ?? false
|
|
1825
1838
|
});
|
|
1826
1839
|
|
|
1827
|
-
// src/lib/4.config/mode/default.profile.ts
|
|
1840
|
+
// src/lib/core/4.config/mode/default.profile.ts
|
|
1828
1841
|
var defaultProfile = {
|
|
1829
1842
|
latestSharedExternal: false,
|
|
1830
1843
|
overrideCachedRemotes: "init-only",
|
|
1831
1844
|
overrideCachedRemotesIfURLMatches: false
|
|
1832
1845
|
};
|
|
1833
1846
|
|
|
1834
|
-
// src/lib/4.config/mode/mode.config.ts
|
|
1847
|
+
// src/lib/core/4.config/mode/mode.config.ts
|
|
1835
1848
|
var createModeConfig = (override) => {
|
|
1836
1849
|
const strictnessConfig = typeof override.strict === "boolean" ? {
|
|
1837
1850
|
strictRemoteEntry: override.strict,
|
|
@@ -1852,7 +1865,7 @@ var createModeConfig = (override) => {
|
|
|
1852
1865
|
};
|
|
1853
1866
|
};
|
|
1854
1867
|
|
|
1855
|
-
// src/lib/5.di/config.factory.ts
|
|
1868
|
+
// src/lib/core/5.di/config.factory.ts
|
|
1856
1869
|
var createConfigHandlers = (overrides) => ({
|
|
1857
1870
|
...createImportMapConfig(overrides),
|
|
1858
1871
|
...createHostConfig(overrides),
|
|
@@ -1861,7 +1874,28 @@ var createConfigHandlers = (overrides) => ({
|
|
|
1861
1874
|
...createModeConfig(overrides)
|
|
1862
1875
|
});
|
|
1863
1876
|
|
|
1864
|
-
// src/lib/2.app/flows/init
|
|
1877
|
+
// src/lib/core/2.app/flows/init.flow.ts
|
|
1878
|
+
var createInitFlow = ({
|
|
1879
|
+
flow,
|
|
1880
|
+
adapters,
|
|
1881
|
+
config
|
|
1882
|
+
}) => {
|
|
1883
|
+
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
1884
|
+
config,
|
|
1885
|
+
adapters,
|
|
1886
|
+
loadRemoteModule
|
|
1887
|
+
}));
|
|
1888
|
+
};
|
|
1889
|
+
|
|
1890
|
+
// src/lib/core/2.app/flows/init-remote-entry.flow.ts
|
|
1891
|
+
var createInitRemoteEntryFlow = ({
|
|
1892
|
+
flow
|
|
1893
|
+
}) => {
|
|
1894
|
+
const processDynamicRemoteEntry = (remoteEntry) => flow.updateCache(remoteEntry).then(flow.convertToImportMap).then(flow.commitChanges);
|
|
1895
|
+
return (remoteEntryUrl, remote) => flow.getRemoteEntry(remoteEntryUrl, remote).then((entry) => entry.map(processDynamicRemoteEntry).orElse(Promise.resolve())).then(() => void 0);
|
|
1896
|
+
};
|
|
1897
|
+
|
|
1898
|
+
// src/lib/core/2.app/steps/get-remote-entries.ts
|
|
1865
1899
|
function createGetRemoteEntries(config, ports) {
|
|
1866
1900
|
return (remotesOrManifestUrl = {}) => {
|
|
1867
1901
|
const manifestPromise = config.manifestIntegrity ? ports.manifestProvider.provide(remotesOrManifestUrl, {
|
|
@@ -1955,20 +1989,13 @@ function createGetRemoteEntries(config, ports) {
|
|
|
1955
1989
|
}
|
|
1956
1990
|
}
|
|
1957
1991
|
|
|
1958
|
-
// src/lib/2.app/
|
|
1959
|
-
function
|
|
1960
|
-
return (
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
addExternalsToStorage(remoteEntry);
|
|
1966
|
-
addSharedChunksToStorage(remoteEntry);
|
|
1967
|
-
});
|
|
1968
|
-
return Promise.resolve(remoteEntries);
|
|
1969
|
-
} catch (e) {
|
|
1970
|
-
return Promise.reject(e);
|
|
1971
|
-
}
|
|
1992
|
+
// src/lib/core/2.app/steps/store-remote-entry.ts
|
|
1993
|
+
function createStoreRemoteEntry(config, ports, logStep) {
|
|
1994
|
+
return (remoteEntry, onSharedExternal) => {
|
|
1995
|
+
if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);
|
|
1996
|
+
addRemoteInfoToStorage(remoteEntry);
|
|
1997
|
+
addExternalsToStorage(remoteEntry, onSharedExternal);
|
|
1998
|
+
addSharedChunksToStorage(remoteEntry);
|
|
1972
1999
|
};
|
|
1973
2000
|
function removeCachedRemoteEntry(remoteEntry) {
|
|
1974
2001
|
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
@@ -1985,88 +2012,124 @@ function createProcessRemoteEntries(config, ports) {
|
|
|
1985
2012
|
...integrity ? { integrity } : {}
|
|
1986
2013
|
});
|
|
1987
2014
|
}
|
|
1988
|
-
function addExternalsToStorage(remoteEntry) {
|
|
2015
|
+
function addExternalsToStorage(remoteEntry, onSharedExternal) {
|
|
1989
2016
|
remoteEntry.shared.forEach((external) => {
|
|
1990
|
-
|
|
1991
|
-
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
1992
|
-
if (config.strict.strictExternalVersion) {
|
|
1993
|
-
config.log.error(2, errorMsg);
|
|
1994
|
-
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
1995
|
-
}
|
|
1996
|
-
config.log.warn(2, errorMsg);
|
|
1997
|
-
}
|
|
2017
|
+
validateExternalVersion(remoteEntry, external);
|
|
1998
2018
|
if (external.singleton) {
|
|
1999
|
-
|
|
2019
|
+
onSharedExternal(remoteEntry, external, sharedExternalContext(remoteEntry, external));
|
|
2000
2020
|
} else {
|
|
2001
|
-
addScopedExternal(remoteEntry
|
|
2021
|
+
addScopedExternal(remoteEntry, external);
|
|
2002
2022
|
}
|
|
2003
2023
|
});
|
|
2004
2024
|
}
|
|
2005
2025
|
function addSharedChunksToStorage(remoteEntry) {
|
|
2006
2026
|
if (!remoteEntry.chunks) return;
|
|
2007
2027
|
config.log.debug(
|
|
2008
|
-
|
|
2028
|
+
logStep,
|
|
2009
2029
|
`Adding chunks for remote "${remoteEntry.name}", bundles: [${Object.keys(remoteEntry.chunks).join(", ")}]`
|
|
2010
2030
|
);
|
|
2011
2031
|
Object.entries(remoteEntry.chunks).forEach(([bundleName, chunks]) => {
|
|
2012
2032
|
ports.sharedChunksRepo.addOrReplace(remoteEntry.name, bundleName, chunks);
|
|
2013
2033
|
});
|
|
2014
2034
|
}
|
|
2015
|
-
function
|
|
2016
|
-
|
|
2035
|
+
function addScopedExternal(remoteEntry, sharedInfo) {
|
|
2036
|
+
ports.scopedExternalsRepo.addExternal(remoteEntry.name, sharedInfo.packageName, {
|
|
2037
|
+
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
2038
|
+
file: sharedInfo.outFileName,
|
|
2039
|
+
bundle: sharedInfo.bundle
|
|
2040
|
+
});
|
|
2041
|
+
}
|
|
2042
|
+
function validateExternalVersion(remoteEntry, external) {
|
|
2043
|
+
if (!external.version || !ports.versionCheck.isValidSemver(external.version)) {
|
|
2044
|
+
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
2045
|
+
if (config.strict.strictExternalVersion) {
|
|
2046
|
+
config.log.error(logStep, errorMsg);
|
|
2047
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2048
|
+
}
|
|
2049
|
+
config.log.warn(logStep, errorMsg);
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
function sharedExternalContext(remoteEntry, sharedInfo) {
|
|
2017
2053
|
const tag = sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion);
|
|
2054
|
+
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2018
2055
|
const remote = {
|
|
2019
2056
|
file: sharedInfo.outFileName,
|
|
2020
|
-
name:
|
|
2057
|
+
name: remoteEntry.name,
|
|
2021
2058
|
bundle: sharedInfo.bundle,
|
|
2022
2059
|
strictVersion: sharedInfo.strictVersion,
|
|
2023
2060
|
cached: false,
|
|
2024
|
-
requiredVersion: sharedInfo.requiredVersion || tag
|
|
2061
|
+
requiredVersion: scopeType === "strict" ? tag : sharedInfo.requiredVersion || tag
|
|
2025
2062
|
};
|
|
2026
|
-
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2027
|
-
if (scopeType === "strict") {
|
|
2028
|
-
action = "share";
|
|
2029
|
-
remote.requiredVersion = tag;
|
|
2030
|
-
}
|
|
2031
2063
|
const cached2 = ports.sharedExternalsRepo.tryGet(sharedInfo.packageName, sharedInfo.shareScope).orElse({ dirty: false, versions: [] });
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2064
|
+
return {
|
|
2065
|
+
tag,
|
|
2066
|
+
remote,
|
|
2067
|
+
cached: cached2,
|
|
2068
|
+
scopeType,
|
|
2069
|
+
assertSameVersionCompatibility(matchingVersion) {
|
|
2070
|
+
if (!remote.strictVersion) return;
|
|
2071
|
+
if (matchingVersion.remotes[0].requiredVersion === remote.requiredVersion) return;
|
|
2072
|
+
const errorMsg = `[${remoteEntry.name}][${sharedInfo.packageName}@${sharedInfo.version}] Required version-range '${remote.requiredVersion}' does not match cached version-range '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
2037
2073
|
if (config.strict.strictExternalSameVersionCompatibility) {
|
|
2038
|
-
config.log.error(
|
|
2074
|
+
config.log.error(logStep, errorMsg);
|
|
2039
2075
|
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2040
2076
|
}
|
|
2041
|
-
config.log.warn(
|
|
2077
|
+
config.log.warn(logStep, errorMsg);
|
|
2078
|
+
},
|
|
2079
|
+
commit() {
|
|
2080
|
+
ports.sharedExternalsRepo.addOrUpdate(
|
|
2081
|
+
sharedInfo.packageName,
|
|
2082
|
+
{
|
|
2083
|
+
dirty: cached2.dirty,
|
|
2084
|
+
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2085
|
+
},
|
|
2086
|
+
sharedInfo.shareScope
|
|
2087
|
+
);
|
|
2042
2088
|
}
|
|
2089
|
+
};
|
|
2090
|
+
}
|
|
2091
|
+
}
|
|
2092
|
+
|
|
2093
|
+
// src/lib/core/2.app/steps/process-remote-entries.ts
|
|
2094
|
+
function createProcessRemoteEntries(config, ports) {
|
|
2095
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 2);
|
|
2096
|
+
return (remoteEntries) => {
|
|
2097
|
+
try {
|
|
2098
|
+
remoteEntries.forEach((remoteEntry) => storeRemoteEntry(remoteEntry, addSharedExternal));
|
|
2099
|
+
return Promise.resolve(remoteEntries);
|
|
2100
|
+
} catch (e) {
|
|
2101
|
+
return Promise.reject(e);
|
|
2102
|
+
}
|
|
2103
|
+
};
|
|
2104
|
+
function addSharedExternal(remoteEntry, _sharedInfo, {
|
|
2105
|
+
tag,
|
|
2106
|
+
remote,
|
|
2107
|
+
cached: cached2,
|
|
2108
|
+
scopeType,
|
|
2109
|
+
assertSameVersionCompatibility,
|
|
2110
|
+
commit
|
|
2111
|
+
}) {
|
|
2112
|
+
const matchingVersion = cached2.versions.find((version) => version.tag === tag);
|
|
2113
|
+
if (matchingVersion) {
|
|
2114
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
2043
2115
|
if (!matchingVersion.host && !!remoteEntry?.host) {
|
|
2044
2116
|
matchingVersion.host = true;
|
|
2045
2117
|
matchingVersion.remotes.unshift(remote);
|
|
2046
2118
|
} else matchingVersion.remotes.push(remote);
|
|
2047
2119
|
} else {
|
|
2048
|
-
if (scopeType !== "strict") dirty = true;
|
|
2049
|
-
cached2.versions.push({
|
|
2120
|
+
if (scopeType !== "strict") cached2.dirty = true;
|
|
2121
|
+
cached2.versions.push({
|
|
2122
|
+
tag,
|
|
2123
|
+
action: scopeType === "strict" ? "share" : "skip",
|
|
2124
|
+
host: !!remoteEntry?.host,
|
|
2125
|
+
remotes: [remote]
|
|
2126
|
+
});
|
|
2050
2127
|
}
|
|
2051
|
-
|
|
2052
|
-
sharedInfo.packageName,
|
|
2053
|
-
{
|
|
2054
|
-
dirty,
|
|
2055
|
-
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2056
|
-
},
|
|
2057
|
-
sharedInfo.shareScope
|
|
2058
|
-
);
|
|
2059
|
-
}
|
|
2060
|
-
function addScopedExternal(scope, sharedInfo) {
|
|
2061
|
-
ports.scopedExternalsRepo.addExternal(scope, sharedInfo.packageName, {
|
|
2062
|
-
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
2063
|
-
file: sharedInfo.outFileName,
|
|
2064
|
-
bundle: sharedInfo.bundle
|
|
2065
|
-
});
|
|
2128
|
+
commit();
|
|
2066
2129
|
}
|
|
2067
2130
|
}
|
|
2068
2131
|
|
|
2069
|
-
// src/lib/2.app/
|
|
2132
|
+
// src/lib/core/2.app/steps/determine-shared-externals.ts
|
|
2070
2133
|
function createDetermineSharedExternals(config, ports) {
|
|
2071
2134
|
return () => {
|
|
2072
2135
|
for (const shareScope of ports.sharedExternalsRepo.getScopes()) {
|
|
@@ -2143,7 +2206,7 @@ function createDetermineSharedExternals(config, ports) {
|
|
|
2143
2206
|
}
|
|
2144
2207
|
}
|
|
2145
2208
|
|
|
2146
|
-
// node_modules/.pnpm/@softarc+native-federation@4.1.3_typescript@
|
|
2209
|
+
// node_modules/.pnpm/@softarc+native-federation@4.1.3_typescript@6.0.3/node_modules/@softarc/native-federation/src/lib/domain/core/build-notification-options.contract.js
|
|
2147
2210
|
var BuildNotificationType;
|
|
2148
2211
|
(function(BuildNotificationType2) {
|
|
2149
2212
|
BuildNotificationType2["COMPLETED"] = "federation-rebuild-complete";
|
|
@@ -2151,7 +2214,7 @@ var BuildNotificationType;
|
|
|
2151
2214
|
BuildNotificationType2["CANCELLED"] = "federation-rebuild-cancelled";
|
|
2152
2215
|
})(BuildNotificationType || (BuildNotificationType = {}));
|
|
2153
2216
|
|
|
2154
|
-
// node_modules/.pnpm/@softarc+native-federation@4.1.3_typescript@
|
|
2217
|
+
// node_modules/.pnpm/@softarc+native-federation@4.1.3_typescript@6.0.3/node_modules/@softarc/native-federation/src/lib/domain/core/chunk.js
|
|
2155
2218
|
var CHUNK_PREFIX = "@nf-internal";
|
|
2156
2219
|
function toChunkImport(fileName) {
|
|
2157
2220
|
if (fileName.startsWith("./")) {
|
|
@@ -2161,7 +2224,7 @@ function toChunkImport(fileName) {
|
|
|
2161
2224
|
return CHUNK_PREFIX + "/" + packageName;
|
|
2162
2225
|
}
|
|
2163
2226
|
|
|
2164
|
-
// src/lib/2.app/
|
|
2227
|
+
// src/lib/core/2.app/steps/generate-import-map.ts
|
|
2165
2228
|
function createGenerateImportMap(config, ports) {
|
|
2166
2229
|
return () => {
|
|
2167
2230
|
const importMap = { imports: {} };
|
|
@@ -2186,7 +2249,12 @@ function createGenerateImportMap(config, ports) {
|
|
|
2186
2249
|
});
|
|
2187
2250
|
addToScope(importMap, remote.scopeUrl, createScopeModules(externals, remote.scopeUrl));
|
|
2188
2251
|
for (const version of Object.values(externals)) {
|
|
2189
|
-
addIntegrity(
|
|
2252
|
+
addIntegrity(
|
|
2253
|
+
importMap,
|
|
2254
|
+
join(remote.scopeUrl, version.file),
|
|
2255
|
+
remoteName,
|
|
2256
|
+
version.file
|
|
2257
|
+
);
|
|
2190
2258
|
}
|
|
2191
2259
|
Object.values(externals).filter((e) => !!e.bundle).forEach((e) => registerBundleChunks(chunkBundles, remoteName, e.bundle));
|
|
2192
2260
|
}
|
|
@@ -2395,7 +2463,7 @@ function createGenerateImportMap(config, ports) {
|
|
|
2395
2463
|
}
|
|
2396
2464
|
}
|
|
2397
2465
|
|
|
2398
|
-
// src/lib/2.app/
|
|
2466
|
+
// src/lib/core/2.app/steps/commit-changes.ts
|
|
2399
2467
|
function createCommitChanges(config, ports) {
|
|
2400
2468
|
return (importMap) => Promise.resolve(importMap).then(addToBrowser).then(persistRepositoryChanges);
|
|
2401
2469
|
function addToBrowser(importMap) {
|
|
@@ -2412,7 +2480,7 @@ function createCommitChanges(config, ports) {
|
|
|
2412
2480
|
}
|
|
2413
2481
|
}
|
|
2414
2482
|
|
|
2415
|
-
// src/lib/2.app/
|
|
2483
|
+
// src/lib/core/2.app/steps/expose-module-loader.ts
|
|
2416
2484
|
function createExposeModuleLoader(config, ports) {
|
|
2417
2485
|
const loadRemoteModule = (remoteName, exposedModule) => {
|
|
2418
2486
|
try {
|
|
@@ -2438,42 +2506,137 @@ function createExposeModuleLoader(config, ports) {
|
|
|
2438
2506
|
return () => Promise.resolve(loadRemoteModule);
|
|
2439
2507
|
}
|
|
2440
2508
|
|
|
2441
|
-
// src/lib/
|
|
2442
|
-
var
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
2447
|
-
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
2448
|
-
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
2449
|
-
generateImportMap: createGenerateImportMap(config, adapters),
|
|
2450
|
-
commitChanges: createCommitChanges(config, adapters),
|
|
2451
|
-
exposeModuleLoader: createExposeModuleLoader(config, adapters)
|
|
2452
|
-
});
|
|
2453
|
-
var INIT_FLOW_FACTORY = ({
|
|
2454
|
-
config,
|
|
2455
|
-
adapters
|
|
2456
|
-
}) => {
|
|
2457
|
-
const flow = createInitDrivers({ config, adapters });
|
|
2458
|
-
return {
|
|
2459
|
-
flow,
|
|
2460
|
-
adapters,
|
|
2461
|
-
config
|
|
2462
|
-
};
|
|
2463
|
-
};
|
|
2464
|
-
var createInitFlow = ({
|
|
2465
|
-
flow,
|
|
2466
|
-
adapters,
|
|
2467
|
-
config
|
|
2468
|
-
}) => {
|
|
2469
|
-
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
2470
|
-
config,
|
|
2471
|
-
adapters,
|
|
2472
|
-
loadRemoteModule
|
|
2473
|
-
}));
|
|
2509
|
+
// src/lib/core/2.app/steps/get-remote-entry.ts
|
|
2510
|
+
var normalizeRemoteRef = (remote) => {
|
|
2511
|
+
if (!remote) return {};
|
|
2512
|
+
if (typeof remote === "string") return { name: remote };
|
|
2513
|
+
return remote;
|
|
2474
2514
|
};
|
|
2515
|
+
function createGetRemoteEntry(config, ports) {
|
|
2516
|
+
return async (remoteEntryUrl, remote) => {
|
|
2517
|
+
const { name: remoteName, integrity } = normalizeRemoteRef(remote);
|
|
2518
|
+
if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {
|
|
2519
|
+
config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);
|
|
2520
|
+
return Optional.empty();
|
|
2521
|
+
}
|
|
2522
|
+
try {
|
|
2523
|
+
const remoteEntry = integrity ? await ports.remoteEntryProvider.provide(remoteEntryUrl, { integrity }) : await ports.remoteEntryProvider.provide(remoteEntryUrl);
|
|
2524
|
+
config.log.debug(
|
|
2525
|
+
7,
|
|
2526
|
+
`[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`
|
|
2527
|
+
);
|
|
2528
|
+
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2529
|
+
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2530
|
+
if (config.strict.strictRemoteEntry) {
|
|
2531
|
+
config.log.error(7, errorMsg);
|
|
2532
|
+
throw new NFError("Could not fetch remote entry");
|
|
2533
|
+
}
|
|
2534
|
+
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2535
|
+
}
|
|
2536
|
+
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2537
|
+
remoteEntry.override = true;
|
|
2538
|
+
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2539
|
+
}
|
|
2540
|
+
return Optional.of(checkForSSE(remoteEntry));
|
|
2541
|
+
} catch (error) {
|
|
2542
|
+
config.log.error(
|
|
2543
|
+
7,
|
|
2544
|
+
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2545
|
+
error
|
|
2546
|
+
);
|
|
2547
|
+
return Promise.reject(
|
|
2548
|
+
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2549
|
+
);
|
|
2550
|
+
}
|
|
2551
|
+
};
|
|
2552
|
+
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2553
|
+
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2554
|
+
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2555
|
+
).orElse(false);
|
|
2556
|
+
}
|
|
2557
|
+
function checkForSSE(entry) {
|
|
2558
|
+
if (config.sse) {
|
|
2559
|
+
if (entry.buildNotificationsEndpoint) {
|
|
2560
|
+
ports.sse.watchRemoteBuilds(
|
|
2561
|
+
join(getScope(entry.url), entry.buildNotificationsEndpoint)
|
|
2562
|
+
);
|
|
2563
|
+
config.log.debug(7, `Registered SSE endpoint of remote '${entry.name}' `);
|
|
2564
|
+
} else {
|
|
2565
|
+
config.log.debug(7, `Remote ${entry.name} has no defined 'buildNotificationsEndpoint'`);
|
|
2566
|
+
}
|
|
2567
|
+
}
|
|
2568
|
+
return entry;
|
|
2569
|
+
}
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
// src/lib/core/2.app/steps/update-cache.ts
|
|
2573
|
+
function createUpdateCache(config, ports) {
|
|
2574
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 8);
|
|
2575
|
+
return (remoteEntry) => {
|
|
2576
|
+
try {
|
|
2577
|
+
const actions = {};
|
|
2578
|
+
storeRemoteEntry(remoteEntry, (entry, external, ctx) => {
|
|
2579
|
+
const { action, sharedVersion } = resolveSharedExternal(entry, external, ctx);
|
|
2580
|
+
actions[external.packageName] = { action };
|
|
2581
|
+
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2582
|
+
actions[external.packageName].override = resolveOverrideUrl(
|
|
2583
|
+
entry,
|
|
2584
|
+
external,
|
|
2585
|
+
sharedVersion
|
|
2586
|
+
);
|
|
2587
|
+
}
|
|
2588
|
+
});
|
|
2589
|
+
return Promise.resolve({ entry: remoteEntry, actions });
|
|
2590
|
+
} catch (error) {
|
|
2591
|
+
return Promise.reject(error);
|
|
2592
|
+
}
|
|
2593
|
+
};
|
|
2594
|
+
function resolveSharedExternal(remoteEntry, sharedInfo, {
|
|
2595
|
+
tag,
|
|
2596
|
+
remote,
|
|
2597
|
+
cached: cached2,
|
|
2598
|
+
scopeType,
|
|
2599
|
+
assertSameVersionCompatibility,
|
|
2600
|
+
commit
|
|
2601
|
+
}) {
|
|
2602
|
+
let action = scopeType === "strict" ? "share" : "skip";
|
|
2603
|
+
const sharedVersion = cached2.versions.find((c) => c.action === "share");
|
|
2604
|
+
const isCompatible = !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);
|
|
2605
|
+
if (action === "skip" && !isCompatible && remote.strictVersion) {
|
|
2606
|
+
action = "scope";
|
|
2607
|
+
const errorMsg = `[${sharedInfo.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}] ${sharedInfo.packageName}@${sharedInfo.version} Is not compatible with existing ${sharedInfo.packageName}@${sharedVersion.tag} requiredRange '${sharedVersion.remotes[0]?.requiredVersion}'`;
|
|
2608
|
+
if (config.strict.strictExternalCompatibility) {
|
|
2609
|
+
config.log.error(8, errorMsg);
|
|
2610
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2611
|
+
}
|
|
2612
|
+
config.log.warn(8, errorMsg);
|
|
2613
|
+
}
|
|
2614
|
+
const matchingVersion = cached2.versions.find((cached3) => cached3.tag === tag);
|
|
2615
|
+
if (matchingVersion) {
|
|
2616
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
2617
|
+
matchingVersion.remotes.push(remote);
|
|
2618
|
+
} else {
|
|
2619
|
+
if (!sharedVersion) action = "share";
|
|
2620
|
+
remote.cached = action !== "skip";
|
|
2621
|
+
cached2.versions.push({ tag, action, host: false, remotes: [remote] });
|
|
2622
|
+
}
|
|
2623
|
+
commit();
|
|
2624
|
+
return { action, sharedVersion };
|
|
2625
|
+
}
|
|
2626
|
+
function resolveOverrideUrl(remoteEntry, external, sharedVersion) {
|
|
2627
|
+
return ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2628
|
+
config.log.error(
|
|
2629
|
+
8,
|
|
2630
|
+
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2631
|
+
);
|
|
2632
|
+
return new NFError(
|
|
2633
|
+
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2634
|
+
);
|
|
2635
|
+
});
|
|
2636
|
+
}
|
|
2637
|
+
}
|
|
2475
2638
|
|
|
2476
|
-
// src/lib/2.app/
|
|
2639
|
+
// src/lib/core/2.app/steps/convert-to-import-map.ts
|
|
2477
2640
|
function createConvertToImportMap({ log }, ports) {
|
|
2478
2641
|
return ({ entry, actions }) => {
|
|
2479
2642
|
const importMap = { imports: {} };
|
|
@@ -2570,242 +2733,78 @@ function createConvertToImportMap({ log }, ports) {
|
|
|
2570
2733
|
}
|
|
2571
2734
|
}
|
|
2572
2735
|
|
|
2573
|
-
// src/lib/
|
|
2574
|
-
var
|
|
2575
|
-
if (!remote) return {};
|
|
2576
|
-
if (typeof remote === "string") return { name: remote };
|
|
2577
|
-
return remote;
|
|
2578
|
-
};
|
|
2579
|
-
function createGetRemoteEntry(config, ports) {
|
|
2580
|
-
return async (remoteEntryUrl, remote) => {
|
|
2581
|
-
const { name: remoteName, integrity } = normalizeRemoteRef(remote);
|
|
2582
|
-
if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {
|
|
2583
|
-
config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);
|
|
2584
|
-
return Optional.empty();
|
|
2585
|
-
}
|
|
2586
|
-
try {
|
|
2587
|
-
const remoteEntry = integrity ? await ports.remoteEntryProvider.provide(remoteEntryUrl, { integrity }) : await ports.remoteEntryProvider.provide(remoteEntryUrl);
|
|
2588
|
-
config.log.debug(
|
|
2589
|
-
7,
|
|
2590
|
-
`[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`
|
|
2591
|
-
);
|
|
2592
|
-
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2593
|
-
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2594
|
-
if (config.strict.strictRemoteEntry) {
|
|
2595
|
-
config.log.error(7, errorMsg);
|
|
2596
|
-
throw new NFError("Could not fetch remote entry");
|
|
2597
|
-
}
|
|
2598
|
-
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2599
|
-
}
|
|
2600
|
-
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2601
|
-
remoteEntry.override = true;
|
|
2602
|
-
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2603
|
-
}
|
|
2604
|
-
return Optional.of(checkForSSE(remoteEntry));
|
|
2605
|
-
} catch (error) {
|
|
2606
|
-
config.log.error(
|
|
2607
|
-
7,
|
|
2608
|
-
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2609
|
-
error
|
|
2610
|
-
);
|
|
2611
|
-
return Promise.reject(
|
|
2612
|
-
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2613
|
-
);
|
|
2614
|
-
}
|
|
2615
|
-
};
|
|
2616
|
-
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2617
|
-
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2618
|
-
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2619
|
-
).orElse(false);
|
|
2620
|
-
}
|
|
2621
|
-
function checkForSSE(entry) {
|
|
2622
|
-
if (config.sse) {
|
|
2623
|
-
if (entry.buildNotificationsEndpoint) {
|
|
2624
|
-
ports.sse.watchRemoteBuilds(
|
|
2625
|
-
join(getScope(entry.url), entry.buildNotificationsEndpoint)
|
|
2626
|
-
);
|
|
2627
|
-
config.log.debug(7, `Registered SSE endpoint of remote '${entry.name}' `);
|
|
2628
|
-
} else {
|
|
2629
|
-
config.log.debug(7, `Remote ${entry.name} has no defined 'buildNotificationsEndpoint'`);
|
|
2630
|
-
}
|
|
2631
|
-
}
|
|
2632
|
-
return entry;
|
|
2633
|
-
}
|
|
2634
|
-
}
|
|
2635
|
-
|
|
2636
|
-
// src/lib/2.app/flows/dynamic-init/update-cache.ts
|
|
2637
|
-
function createUpdateCache(config, ports) {
|
|
2638
|
-
return (remoteEntry) => {
|
|
2639
|
-
try {
|
|
2640
|
-
if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);
|
|
2641
|
-
addRemoteInfoToStorage(remoteEntry);
|
|
2642
|
-
const actions = mergeExternalsIntoStorage(remoteEntry);
|
|
2643
|
-
addSharedChunksToStorage(remoteEntry);
|
|
2644
|
-
return Promise.resolve({ entry: remoteEntry, actions });
|
|
2645
|
-
} catch (error) {
|
|
2646
|
-
return Promise.reject(error);
|
|
2647
|
-
}
|
|
2648
|
-
};
|
|
2649
|
-
function removeCachedRemoteEntry(remoteEntry) {
|
|
2650
|
-
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
2651
|
-
ports.scopedExternalsRepo.remove(remoteEntry.name);
|
|
2652
|
-
ports.sharedExternalsRepo.removeFromAllScopes(remoteEntry.name);
|
|
2653
|
-
}
|
|
2654
|
-
function addRemoteInfoToStorage({ name, url, exposes }) {
|
|
2655
|
-
ports.remoteInfoRepo.addOrUpdate(name, {
|
|
2656
|
-
scopeUrl: getScope(url),
|
|
2657
|
-
exposes: Object.values(exposes ?? []).map((m) => ({
|
|
2658
|
-
moduleName: m.key,
|
|
2659
|
-
file: m.outFileName
|
|
2660
|
-
}))
|
|
2661
|
-
});
|
|
2662
|
-
}
|
|
2663
|
-
function mergeExternalsIntoStorage(remoteEntry) {
|
|
2664
|
-
const actions = {};
|
|
2665
|
-
remoteEntry.shared.forEach((external) => {
|
|
2666
|
-
if (!external.version || !ports.versionCheck.isValidSemver(external.version)) {
|
|
2667
|
-
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
2668
|
-
if (config.strict.strictExternalVersion) {
|
|
2669
|
-
config.log.error(8, errorMsg);
|
|
2670
|
-
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2671
|
-
}
|
|
2672
|
-
config.log.warn(8, errorMsg);
|
|
2673
|
-
}
|
|
2674
|
-
if (external.singleton) {
|
|
2675
|
-
const { action, sharedVersion } = addSharedExternal(remoteEntry.name, external);
|
|
2676
|
-
actions[external.packageName] = { action };
|
|
2677
|
-
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2678
|
-
actions[external.packageName].override = ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2679
|
-
config.log.error(
|
|
2680
|
-
8,
|
|
2681
|
-
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2682
|
-
);
|
|
2683
|
-
return new NFError(
|
|
2684
|
-
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2685
|
-
);
|
|
2686
|
-
});
|
|
2687
|
-
}
|
|
2688
|
-
} else {
|
|
2689
|
-
addScopedExternal(remoteEntry.name, external);
|
|
2690
|
-
}
|
|
2691
|
-
});
|
|
2692
|
-
return actions;
|
|
2693
|
-
}
|
|
2694
|
-
function addSharedChunksToStorage(remoteEntry) {
|
|
2695
|
-
if (!remoteEntry.chunks) return;
|
|
2696
|
-
config.log.debug(
|
|
2697
|
-
8,
|
|
2698
|
-
`Adding chunks for remote "${remoteEntry.name}", bundles: [${Object.keys(remoteEntry.chunks).join(", ")}]`
|
|
2699
|
-
);
|
|
2700
|
-
Object.entries(remoteEntry.chunks).forEach(([bundleName, chunks]) => {
|
|
2701
|
-
ports.sharedChunksRepo.addOrReplace(remoteEntry.name, bundleName, chunks);
|
|
2702
|
-
});
|
|
2703
|
-
}
|
|
2704
|
-
function addSharedExternal(remoteName, sharedInfo) {
|
|
2705
|
-
const cached2 = ports.sharedExternalsRepo.tryGet(sharedInfo.packageName, sharedInfo.shareScope).orElse({ dirty: false, versions: [] });
|
|
2706
|
-
let action = "skip";
|
|
2707
|
-
const tag = sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion);
|
|
2708
|
-
const remote = {
|
|
2709
|
-
file: sharedInfo.outFileName,
|
|
2710
|
-
strictVersion: sharedInfo.strictVersion,
|
|
2711
|
-
requiredVersion: sharedInfo.requiredVersion || tag,
|
|
2712
|
-
name: remoteName,
|
|
2713
|
-
bundle: sharedInfo.bundle,
|
|
2714
|
-
cached: false
|
|
2715
|
-
};
|
|
2716
|
-
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2717
|
-
if (scopeType === "strict") {
|
|
2718
|
-
remote.requiredVersion = tag;
|
|
2719
|
-
action = "share";
|
|
2720
|
-
}
|
|
2721
|
-
const sharedVersion = cached2.versions.find((c) => c.action === "share");
|
|
2722
|
-
const isCompatible = !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);
|
|
2723
|
-
if (action === "skip" && !isCompatible && remote.strictVersion) {
|
|
2724
|
-
action = "scope";
|
|
2725
|
-
const errorMsg = `[${sharedInfo.shareScope ?? GLOBAL_SCOPE}][${remoteName}] ${sharedInfo.packageName}@${sharedInfo.version} Is not compatible with existing ${sharedInfo.packageName}@${sharedVersion.tag} requiredRange '${sharedVersion.remotes[0]?.requiredVersion}'`;
|
|
2726
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2727
|
-
config.log.error(8, errorMsg);
|
|
2728
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2729
|
-
}
|
|
2730
|
-
config.log.warn(8, errorMsg);
|
|
2731
|
-
}
|
|
2732
|
-
const matchingVersion = cached2.versions.find((cached3) => cached3.tag === tag);
|
|
2733
|
-
if (!!matchingVersion) {
|
|
2734
|
-
if (remote.strictVersion && matchingVersion.remotes[0].requiredVersion !== remote.requiredVersion) {
|
|
2735
|
-
const errorMsg = `[${remoteName}][${sharedInfo.packageName}@${sharedInfo.version}] Required version '${remote.requiredVersion}' does not match existing '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
2736
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2737
|
-
config.log.error(8, errorMsg);
|
|
2738
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2739
|
-
}
|
|
2740
|
-
config.log.warn(8, errorMsg);
|
|
2741
|
-
}
|
|
2742
|
-
matchingVersion.remotes.push(remote);
|
|
2743
|
-
} else {
|
|
2744
|
-
if (!sharedVersion) action = "share";
|
|
2745
|
-
remote.cached = action !== "skip";
|
|
2746
|
-
cached2.versions.push({ tag, action, host: false, remotes: [remote] });
|
|
2747
|
-
}
|
|
2748
|
-
ports.sharedExternalsRepo.addOrUpdate(
|
|
2749
|
-
sharedInfo.packageName,
|
|
2750
|
-
{
|
|
2751
|
-
dirty: cached2.dirty,
|
|
2752
|
-
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2753
|
-
},
|
|
2754
|
-
sharedInfo.shareScope
|
|
2755
|
-
);
|
|
2756
|
-
return { action, sharedVersion };
|
|
2757
|
-
}
|
|
2758
|
-
function addScopedExternal(remoteName, sharedInfo) {
|
|
2759
|
-
ports.scopedExternalsRepo.addExternal(remoteName, sharedInfo.packageName, {
|
|
2760
|
-
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
2761
|
-
file: sharedInfo.outFileName,
|
|
2762
|
-
bundle: sharedInfo.bundle
|
|
2763
|
-
});
|
|
2764
|
-
}
|
|
2765
|
-
}
|
|
2766
|
-
|
|
2767
|
-
// src/lib/5.di/flows/dynamic-init.factory.ts
|
|
2768
|
-
var createDynamicInitDrivers = ({
|
|
2736
|
+
// src/lib/core/5.di/init.factory.ts
|
|
2737
|
+
var createInitDrivers = ({
|
|
2769
2738
|
config,
|
|
2770
2739
|
adapters
|
|
2771
2740
|
}) => ({
|
|
2741
|
+
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
2742
|
+
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
2743
|
+
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
2744
|
+
generateImportMap: createGenerateImportMap(config, adapters),
|
|
2745
|
+
commitChanges: createCommitChanges(config, adapters),
|
|
2746
|
+
exposeModuleLoader: createExposeModuleLoader(config, adapters),
|
|
2772
2747
|
getRemoteEntry: createGetRemoteEntry(config, adapters),
|
|
2773
2748
|
updateCache: createUpdateCache(config, adapters),
|
|
2774
|
-
convertToImportMap: createConvertToImportMap(config, adapters)
|
|
2775
|
-
commitChanges: createCommitChanges(config, adapters)
|
|
2749
|
+
convertToImportMap: createConvertToImportMap(config, adapters)
|
|
2776
2750
|
});
|
|
2777
|
-
var
|
|
2751
|
+
var INIT_FLOW_FACTORY = ({
|
|
2778
2752
|
config,
|
|
2779
2753
|
adapters
|
|
2780
2754
|
}) => {
|
|
2781
|
-
const flow =
|
|
2755
|
+
const flow = createInitDrivers({ config, adapters });
|
|
2782
2756
|
return {
|
|
2783
2757
|
flow,
|
|
2784
2758
|
adapters,
|
|
2785
2759
|
config
|
|
2786
2760
|
};
|
|
2787
2761
|
};
|
|
2788
|
-
|
|
2789
|
-
|
|
2762
|
+
|
|
2763
|
+
// src/lib/core/5.di/federation-result.factory.ts
|
|
2764
|
+
var createStateDump = (config, adapters) => (msg) => config.log.debug(0, msg, {
|
|
2765
|
+
remotes: { ...adapters.remoteInfoRepo.getAll() },
|
|
2766
|
+
"shared-externals": adapters.sharedExternalsRepo.getScopes({ includeGlobal: true }).reduce(
|
|
2767
|
+
(acc, scope) => ({ ...acc, [scope]: adapters.sharedExternalsRepo.getFromScope(scope) }),
|
|
2768
|
+
{}
|
|
2769
|
+
),
|
|
2770
|
+
"scoped-externals": adapters.scopedExternalsRepo.getAll()
|
|
2771
|
+
});
|
|
2772
|
+
var createFederationResult = ({
|
|
2773
|
+
config,
|
|
2790
2774
|
adapters,
|
|
2791
|
-
|
|
2775
|
+
loadRemoteModule,
|
|
2776
|
+
initRemoteEntryFlow,
|
|
2777
|
+
afterInitRemoteEntry
|
|
2792
2778
|
}) => {
|
|
2793
|
-
const
|
|
2794
|
-
|
|
2779
|
+
const stateDump = createStateDump(config, adapters);
|
|
2780
|
+
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
2781
|
+
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
2782
|
+
return initRemoteEntryFlow(remoteEntryUrl, remote).catch((e) => {
|
|
2783
|
+
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
2784
|
+
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
2785
|
+
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
2786
|
+
return Promise.resolve();
|
|
2787
|
+
}).then(() => afterInitRemoteEntry?.()).then(() => result);
|
|
2795
2788
|
};
|
|
2796
|
-
const
|
|
2789
|
+
const result = {
|
|
2797
2790
|
config,
|
|
2798
2791
|
adapters,
|
|
2792
|
+
loadRemoteModule,
|
|
2793
|
+
load: loadRemoteModule,
|
|
2794
|
+
as: () => ({
|
|
2795
|
+
loadRemoteModule,
|
|
2796
|
+
load: loadRemoteModule
|
|
2797
|
+
}),
|
|
2799
2798
|
initRemoteEntry
|
|
2800
|
-
}
|
|
2801
|
-
return
|
|
2799
|
+
};
|
|
2800
|
+
return result;
|
|
2802
2801
|
};
|
|
2803
2802
|
|
|
2804
|
-
// src/lib/
|
|
2803
|
+
// src/lib/node/adapters/node-loader.client.ts
|
|
2805
2804
|
import { register } from "node:module";
|
|
2806
2805
|
import { MessageChannel } from "node:worker_threads";
|
|
2807
2806
|
|
|
2808
|
-
// src/lib/
|
|
2807
|
+
// src/lib/node/adapters/loader-url.ts
|
|
2809
2808
|
import { createRequire } from "node:module";
|
|
2810
2809
|
import { pathToFileURL } from "node:url";
|
|
2811
2810
|
var getLoaderUrl = () => {
|
|
@@ -2823,7 +2822,7 @@ var getLoaderUrl = () => {
|
|
|
2823
2822
|
}
|
|
2824
2823
|
};
|
|
2825
2824
|
|
|
2826
|
-
// src/lib/
|
|
2825
|
+
// src/lib/node/adapters/node-loader.client.ts
|
|
2827
2826
|
var NODE_LOADER_CLIENT_ACK_TIMEOUT_MS = 1e4;
|
|
2828
2827
|
var cached = null;
|
|
2829
2828
|
var createClient = () => {
|
|
@@ -2838,7 +2837,9 @@ var createClient = () => {
|
|
|
2838
2837
|
const omitBridged = (map) => {
|
|
2839
2838
|
if (bridged.size === 0) return map;
|
|
2840
2839
|
const drop = (imports) => Object.fromEntries(Object.entries(imports).filter(([specifier]) => !bridged.has(specifier)));
|
|
2841
|
-
const scopes = map.scopes ? Object.fromEntries(
|
|
2840
|
+
const scopes = map.scopes ? Object.fromEntries(
|
|
2841
|
+
Object.entries(map.scopes).map(([scope, imports]) => [scope, drop(imports)])
|
|
2842
|
+
) : map.scopes;
|
|
2842
2843
|
return { ...map, imports: drop(map.imports), ...scopes ? { scopes } : {} };
|
|
2843
2844
|
};
|
|
2844
2845
|
const postAndAwaitAck = (message, ackType) => new Promise((resolve, reject) => {
|
|
@@ -2891,7 +2892,7 @@ var getNodeLoaderClient = () => {
|
|
|
2891
2892
|
return cached;
|
|
2892
2893
|
};
|
|
2893
2894
|
|
|
2894
|
-
// src/lib/
|
|
2895
|
+
// src/lib/node/use-node.ts
|
|
2895
2896
|
var useNodeImportMap = () => {
|
|
2896
2897
|
const nodeLoader = getNodeLoaderClient();
|
|
2897
2898
|
return {
|
|
@@ -2907,7 +2908,7 @@ var useNodeImportMap = () => {
|
|
|
2907
2908
|
};
|
|
2908
2909
|
};
|
|
2909
2910
|
|
|
2910
|
-
// src/lib/
|
|
2911
|
+
// src/lib/node/resolve-host-instances.ts
|
|
2911
2912
|
var matches = (specifier, patterns) => patterns.some((p) => specifier === p || specifier.startsWith(p));
|
|
2912
2913
|
var isAuto = (option) => option === "all" || typeof option === "object" && option !== null && ("include" in option || "exclude" in option || "load" in option);
|
|
2913
2914
|
var resolveHostInstances = async (option, deps) => {
|
|
@@ -2926,7 +2927,9 @@ var resolveHostInstances = async (option, deps) => {
|
|
|
2926
2927
|
const integrity = typeof hostRemoteEntry === "string" ? void 0 : hostRemoteEntry.integrity;
|
|
2927
2928
|
const entry = await deps.remoteEntryProvider.provide(url, { integrity });
|
|
2928
2929
|
const load = auto.load ?? ((specifier) => import(specifier));
|
|
2929
|
-
const specifiers = [
|
|
2930
|
+
const specifiers = [
|
|
2931
|
+
...new Set((entry.shared ?? []).filter((s) => s.singleton).map((s) => s.packageName))
|
|
2932
|
+
].filter((s) => auto.include ? matches(s, auto.include) : true).filter((s) => auto.exclude ? !matches(s, auto.exclude) : true);
|
|
2930
2933
|
const map = {};
|
|
2931
2934
|
for (const specifier of specifiers) {
|
|
2932
2935
|
try {
|
|
@@ -2939,11 +2942,14 @@ var resolveHostInstances = async (option, deps) => {
|
|
|
2939
2942
|
);
|
|
2940
2943
|
}
|
|
2941
2944
|
}
|
|
2942
|
-
deps.log.debug(
|
|
2945
|
+
deps.log.debug(
|
|
2946
|
+
0,
|
|
2947
|
+
`[native-federation] hostInstances bridged: ${Object.keys(map).join(", ") || "(none)"}`
|
|
2948
|
+
);
|
|
2943
2949
|
return map;
|
|
2944
2950
|
};
|
|
2945
2951
|
|
|
2946
|
-
// src/lib/utils/
|
|
2952
|
+
// src/lib/node/utils/to-url.ts
|
|
2947
2953
|
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
2948
2954
|
var URL_SCHEME = /^[a-z][a-z0-9+\-.]*:/i;
|
|
2949
2955
|
var toUrl = (pathOrUrl) => URL_SCHEME.test(pathOrUrl) ? pathOrUrl : pathToFileURL2(pathOrUrl).href;
|
|
@@ -2953,7 +2959,7 @@ var normalizeHostRemoteEntry = (hostRemoteEntry) => {
|
|
|
2953
2959
|
return { ...hostRemoteEntry, url: toUrl(hostRemoteEntry.url) };
|
|
2954
2960
|
};
|
|
2955
2961
|
|
|
2956
|
-
// src/lib/init-federation.node.ts
|
|
2962
|
+
// src/lib/node/init-federation.node.ts
|
|
2957
2963
|
var HOST_INSTANCES_GLOBAL = "__NF_HOST_INSTANCES__";
|
|
2958
2964
|
var buildNodeAdapters = (config) => ({
|
|
2959
2965
|
versionCheck: createVersionCheck(),
|
|
@@ -2995,45 +3001,19 @@ var initNodeFederation = (remotesOrManifestUrl, options = {}) => {
|
|
|
2995
3001
|
);
|
|
2996
3002
|
await nodeConfig.setHostInstancesFn(keys);
|
|
2997
3003
|
})();
|
|
2998
|
-
const
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
),
|
|
3004
|
-
"scoped-externals": adapters.scopedExternalsRepo.getAll()
|
|
3005
|
-
});
|
|
3006
|
-
const initFlow = createInitFlow(INIT_FLOW_FACTORY({ adapters, config }));
|
|
3007
|
-
const dynamicInitFlow = createDynamicInitFlow(DYNAMIC_INIT_FLOW_FACTORY({ config, adapters }));
|
|
3008
|
-
return hostInstancesReady.then(() => initFlow(remotesOrManifestUrl)).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then((loadRemoteModule) => {
|
|
3009
|
-
const output = {
|
|
3004
|
+
const factory = INIT_FLOW_FACTORY({ adapters, config });
|
|
3005
|
+
const initFlow = createInitFlow(factory);
|
|
3006
|
+
const initRemoteEntryFlow = createInitRemoteEntryFlow(factory);
|
|
3007
|
+
return hostInstancesReady.then(() => initFlow(remotesOrManifestUrl)).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then(
|
|
3008
|
+
(loadRemoteModule) => createFederationResult({
|
|
3010
3009
|
config,
|
|
3011
3010
|
adapters,
|
|
3012
3011
|
loadRemoteModule,
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
};
|
|
3019
|
-
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
3020
|
-
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
3021
|
-
return dynamicInitFlow(remoteEntryUrl, remote).catch((e) => {
|
|
3022
|
-
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
3023
|
-
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
3024
|
-
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
3025
|
-
return Promise.resolve();
|
|
3026
|
-
}).then(() => nodeConfig.nodeLoader.ready()).then(() => ({
|
|
3027
|
-
...output,
|
|
3028
|
-
initRemoteEntry
|
|
3029
|
-
}));
|
|
3030
|
-
};
|
|
3031
|
-
return {
|
|
3032
|
-
...output,
|
|
3033
|
-
initRemoteEntry
|
|
3034
|
-
};
|
|
3035
|
-
}).catch((e) => {
|
|
3036
|
-
stateDump(`[init] STATE DUMP`);
|
|
3012
|
+
initRemoteEntryFlow,
|
|
3013
|
+
afterInitRemoteEntry: () => nodeConfig.nodeLoader.ready()
|
|
3014
|
+
})
|
|
3015
|
+
).catch((e) => {
|
|
3016
|
+
createStateDump(config, adapters)(`[init] STATE DUMP`);
|
|
3037
3017
|
return Promise.reject(e);
|
|
3038
3018
|
});
|
|
3039
3019
|
};
|