@softarc/native-federation-orchestrator 4.2.2 → 4.3.1
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 +905 -922
- 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 +444 -456
- package/fesm2022/node.mjs.map +4 -4
- package/fesm2022/options.mjs +17 -15
- 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}/config/mode.contract.d.ts +1 -0
- 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/{4.config → core/4.config}/import-map/trusted-types.d.ts +5 -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/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/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
|
@@ -5,7 +5,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
-
|
|
8
|
+
try {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
} catch (e) {
|
|
11
|
+
throw mod = 0, e;
|
|
12
|
+
}
|
|
9
13
|
};
|
|
10
14
|
var __copyProps = (to, from, except, desc) => {
|
|
11
15
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -24,9 +28,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
28
|
mod
|
|
25
29
|
));
|
|
26
30
|
|
|
27
|
-
// node_modules/.pnpm/semver@7.8.
|
|
31
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js
|
|
28
32
|
var require_debug = __commonJS({
|
|
29
|
-
"node_modules/.pnpm/semver@7.8.
|
|
33
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) {
|
|
30
34
|
"use strict";
|
|
31
35
|
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
36
|
};
|
|
@@ -34,9 +38,9 @@ var require_debug = __commonJS({
|
|
|
34
38
|
}
|
|
35
39
|
});
|
|
36
40
|
|
|
37
|
-
// node_modules/.pnpm/semver@7.8.
|
|
41
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js
|
|
38
42
|
var require_constants = __commonJS({
|
|
39
|
-
"node_modules/.pnpm/semver@7.8.
|
|
43
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) {
|
|
40
44
|
"use strict";
|
|
41
45
|
var SEMVER_SPEC_VERSION = "2.0.0";
|
|
42
46
|
var MAX_LENGTH = 256;
|
|
@@ -66,9 +70,9 @@ var require_constants = __commonJS({
|
|
|
66
70
|
}
|
|
67
71
|
});
|
|
68
72
|
|
|
69
|
-
// node_modules/.pnpm/semver@7.8.
|
|
73
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js
|
|
70
74
|
var require_re = __commonJS({
|
|
71
|
-
"node_modules/.pnpm/semver@7.8.
|
|
75
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) {
|
|
72
76
|
"use strict";
|
|
73
77
|
var {
|
|
74
78
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -154,9 +158,9 @@ var require_re = __commonJS({
|
|
|
154
158
|
}
|
|
155
159
|
});
|
|
156
160
|
|
|
157
|
-
// node_modules/.pnpm/semver@7.8.
|
|
161
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js
|
|
158
162
|
var require_parse_options = __commonJS({
|
|
159
|
-
"node_modules/.pnpm/semver@7.8.
|
|
163
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) {
|
|
160
164
|
"use strict";
|
|
161
165
|
var looseOption = Object.freeze({ loose: true });
|
|
162
166
|
var emptyOpts = Object.freeze({});
|
|
@@ -173,9 +177,9 @@ var require_parse_options = __commonJS({
|
|
|
173
177
|
}
|
|
174
178
|
});
|
|
175
179
|
|
|
176
|
-
// node_modules/.pnpm/semver@7.8.
|
|
180
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js
|
|
177
181
|
var require_identifiers = __commonJS({
|
|
178
|
-
"node_modules/.pnpm/semver@7.8.
|
|
182
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) {
|
|
179
183
|
"use strict";
|
|
180
184
|
var numeric = /^[0-9]+$/;
|
|
181
185
|
var compareIdentifiers = (a, b) => {
|
|
@@ -198,15 +202,27 @@ var require_identifiers = __commonJS({
|
|
|
198
202
|
}
|
|
199
203
|
});
|
|
200
204
|
|
|
201
|
-
// node_modules/.pnpm/semver@7.8.
|
|
205
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js
|
|
202
206
|
var require_semver = __commonJS({
|
|
203
|
-
"node_modules/.pnpm/semver@7.8.
|
|
207
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) {
|
|
204
208
|
"use strict";
|
|
205
209
|
var debug = require_debug();
|
|
206
210
|
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
|
|
207
211
|
var { safeRe: re, t } = require_re();
|
|
208
212
|
var parseOptions = require_parse_options();
|
|
209
213
|
var { compareIdentifiers } = require_identifiers();
|
|
214
|
+
var isPrereleaseIdentifier = (prerelease, identifier) => {
|
|
215
|
+
const identifiers = identifier.split(".");
|
|
216
|
+
if (identifiers.length > prerelease.length) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
for (let i = 0; i < identifiers.length; i++) {
|
|
220
|
+
if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
225
|
+
};
|
|
210
226
|
var SemVer = class _SemVer {
|
|
211
227
|
constructor(version, options) {
|
|
212
228
|
options = parseOptions(options);
|
|
@@ -453,8 +469,9 @@ var require_semver = __commonJS({
|
|
|
453
469
|
if (identifierBase === false) {
|
|
454
470
|
prerelease = [identifier];
|
|
455
471
|
}
|
|
456
|
-
if (
|
|
457
|
-
|
|
472
|
+
if (isPrereleaseIdentifier(this.prerelease, identifier)) {
|
|
473
|
+
const prereleaseBase = this.prerelease[identifier.split(".").length];
|
|
474
|
+
if (isNaN(prereleaseBase)) {
|
|
458
475
|
this.prerelease = prerelease;
|
|
459
476
|
}
|
|
460
477
|
} else {
|
|
@@ -477,9 +494,9 @@ var require_semver = __commonJS({
|
|
|
477
494
|
}
|
|
478
495
|
});
|
|
479
496
|
|
|
480
|
-
// node_modules/.pnpm/semver@7.8.
|
|
497
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js
|
|
481
498
|
var require_parse = __commonJS({
|
|
482
|
-
"node_modules/.pnpm/semver@7.8.
|
|
499
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) {
|
|
483
500
|
"use strict";
|
|
484
501
|
var SemVer = require_semver();
|
|
485
502
|
var parse = (version, options, throwErrors = false) => {
|
|
@@ -499,9 +516,9 @@ var require_parse = __commonJS({
|
|
|
499
516
|
}
|
|
500
517
|
});
|
|
501
518
|
|
|
502
|
-
// node_modules/.pnpm/semver@7.8.
|
|
519
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js
|
|
503
520
|
var require_valid = __commonJS({
|
|
504
|
-
"node_modules/.pnpm/semver@7.8.
|
|
521
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) {
|
|
505
522
|
"use strict";
|
|
506
523
|
var parse = require_parse();
|
|
507
524
|
var valid = (version, options) => {
|
|
@@ -512,9 +529,9 @@ var require_valid = __commonJS({
|
|
|
512
529
|
}
|
|
513
530
|
});
|
|
514
531
|
|
|
515
|
-
// node_modules/.pnpm/semver@7.8.
|
|
532
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js
|
|
516
533
|
var require_lrucache = __commonJS({
|
|
517
|
-
"node_modules/.pnpm/semver@7.8.
|
|
534
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) {
|
|
518
535
|
"use strict";
|
|
519
536
|
var LRUCache = class {
|
|
520
537
|
constructor() {
|
|
@@ -550,9 +567,9 @@ var require_lrucache = __commonJS({
|
|
|
550
567
|
}
|
|
551
568
|
});
|
|
552
569
|
|
|
553
|
-
// node_modules/.pnpm/semver@7.8.
|
|
570
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js
|
|
554
571
|
var require_compare = __commonJS({
|
|
555
|
-
"node_modules/.pnpm/semver@7.8.
|
|
572
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) {
|
|
556
573
|
"use strict";
|
|
557
574
|
var SemVer = require_semver();
|
|
558
575
|
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
@@ -560,9 +577,9 @@ var require_compare = __commonJS({
|
|
|
560
577
|
}
|
|
561
578
|
});
|
|
562
579
|
|
|
563
|
-
// node_modules/.pnpm/semver@7.8.
|
|
580
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js
|
|
564
581
|
var require_eq = __commonJS({
|
|
565
|
-
"node_modules/.pnpm/semver@7.8.
|
|
582
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) {
|
|
566
583
|
"use strict";
|
|
567
584
|
var compare = require_compare();
|
|
568
585
|
var eq = (a, b, loose) => compare(a, b, loose) === 0;
|
|
@@ -570,9 +587,9 @@ var require_eq = __commonJS({
|
|
|
570
587
|
}
|
|
571
588
|
});
|
|
572
589
|
|
|
573
|
-
// node_modules/.pnpm/semver@7.8.
|
|
590
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js
|
|
574
591
|
var require_neq = __commonJS({
|
|
575
|
-
"node_modules/.pnpm/semver@7.8.
|
|
592
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) {
|
|
576
593
|
"use strict";
|
|
577
594
|
var compare = require_compare();
|
|
578
595
|
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
|
|
@@ -580,9 +597,9 @@ var require_neq = __commonJS({
|
|
|
580
597
|
}
|
|
581
598
|
});
|
|
582
599
|
|
|
583
|
-
// node_modules/.pnpm/semver@7.8.
|
|
600
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js
|
|
584
601
|
var require_gt = __commonJS({
|
|
585
|
-
"node_modules/.pnpm/semver@7.8.
|
|
602
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) {
|
|
586
603
|
"use strict";
|
|
587
604
|
var compare = require_compare();
|
|
588
605
|
var gt = (a, b, loose) => compare(a, b, loose) > 0;
|
|
@@ -590,9 +607,9 @@ var require_gt = __commonJS({
|
|
|
590
607
|
}
|
|
591
608
|
});
|
|
592
609
|
|
|
593
|
-
// node_modules/.pnpm/semver@7.8.
|
|
610
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js
|
|
594
611
|
var require_gte = __commonJS({
|
|
595
|
-
"node_modules/.pnpm/semver@7.8.
|
|
612
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) {
|
|
596
613
|
"use strict";
|
|
597
614
|
var compare = require_compare();
|
|
598
615
|
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
|
|
@@ -600,9 +617,9 @@ var require_gte = __commonJS({
|
|
|
600
617
|
}
|
|
601
618
|
});
|
|
602
619
|
|
|
603
|
-
// node_modules/.pnpm/semver@7.8.
|
|
620
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js
|
|
604
621
|
var require_lt = __commonJS({
|
|
605
|
-
"node_modules/.pnpm/semver@7.8.
|
|
622
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) {
|
|
606
623
|
"use strict";
|
|
607
624
|
var compare = require_compare();
|
|
608
625
|
var lt = (a, b, loose) => compare(a, b, loose) < 0;
|
|
@@ -610,9 +627,9 @@ var require_lt = __commonJS({
|
|
|
610
627
|
}
|
|
611
628
|
});
|
|
612
629
|
|
|
613
|
-
// node_modules/.pnpm/semver@7.8.
|
|
630
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js
|
|
614
631
|
var require_lte = __commonJS({
|
|
615
|
-
"node_modules/.pnpm/semver@7.8.
|
|
632
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) {
|
|
616
633
|
"use strict";
|
|
617
634
|
var compare = require_compare();
|
|
618
635
|
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
|
|
@@ -620,9 +637,9 @@ var require_lte = __commonJS({
|
|
|
620
637
|
}
|
|
621
638
|
});
|
|
622
639
|
|
|
623
|
-
// node_modules/.pnpm/semver@7.8.
|
|
640
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js
|
|
624
641
|
var require_cmp = __commonJS({
|
|
625
|
-
"node_modules/.pnpm/semver@7.8.
|
|
642
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) {
|
|
626
643
|
"use strict";
|
|
627
644
|
var eq = require_eq();
|
|
628
645
|
var neq = require_neq();
|
|
@@ -670,9 +687,9 @@ var require_cmp = __commonJS({
|
|
|
670
687
|
}
|
|
671
688
|
});
|
|
672
689
|
|
|
673
|
-
// node_modules/.pnpm/semver@7.8.
|
|
690
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js
|
|
674
691
|
var require_comparator = __commonJS({
|
|
675
|
-
"node_modules/.pnpm/semver@7.8.
|
|
692
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) {
|
|
676
693
|
"use strict";
|
|
677
694
|
var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
|
|
678
695
|
var Comparator = class _Comparator {
|
|
@@ -783,9 +800,9 @@ var require_comparator = __commonJS({
|
|
|
783
800
|
}
|
|
784
801
|
});
|
|
785
802
|
|
|
786
|
-
// node_modules/.pnpm/semver@7.8.
|
|
803
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js
|
|
787
804
|
var require_range = __commonJS({
|
|
788
|
-
"node_modules/.pnpm/semver@7.8.
|
|
805
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) {
|
|
789
806
|
"use strict";
|
|
790
807
|
var SPACE_CHARACTERS = /\s+/g;
|
|
791
808
|
var Range = class _Range {
|
|
@@ -972,20 +989,22 @@ var require_range = __commonJS({
|
|
|
972
989
|
return comp;
|
|
973
990
|
};
|
|
974
991
|
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
|
|
992
|
+
var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
|
|
975
993
|
var replaceTildes = (comp, options) => {
|
|
976
994
|
return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
|
|
977
995
|
};
|
|
978
996
|
var replaceTilde = (comp, options) => {
|
|
979
997
|
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
|
|
998
|
+
const z = options.includePrerelease ? "-0" : "";
|
|
980
999
|
return comp.replace(r, (_, M, m, p, pr) => {
|
|
981
1000
|
debug("tilde", comp, _, M, m, p, pr);
|
|
982
1001
|
let ret;
|
|
983
1002
|
if (isX(M)) {
|
|
984
1003
|
ret = "";
|
|
985
1004
|
} else if (isX(m)) {
|
|
986
|
-
ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
|
|
1005
|
+
ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
|
|
987
1006
|
} else if (isX(p)) {
|
|
988
|
-
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
|
|
1007
|
+
ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
|
|
989
1008
|
} else if (pr) {
|
|
990
1009
|
debug("replaceTilde pr", pr);
|
|
991
1010
|
ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
|
|
@@ -1031,9 +1050,9 @@ var require_range = __commonJS({
|
|
|
1031
1050
|
debug("no pr");
|
|
1032
1051
|
if (M === "0") {
|
|
1033
1052
|
if (m === "0") {
|
|
1034
|
-
ret = `>=${M}.${m}.${p}
|
|
1053
|
+
ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
|
|
1035
1054
|
} else {
|
|
1036
|
-
ret = `>=${M}.${m}.${p}
|
|
1055
|
+
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
|
|
1037
1056
|
}
|
|
1038
1057
|
} else {
|
|
1039
1058
|
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
|
|
@@ -1052,6 +1071,9 @@ var require_range = __commonJS({
|
|
|
1052
1071
|
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
|
|
1053
1072
|
return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
|
|
1054
1073
|
debug("xRange", comp, ret, gtlt, M, m, p, pr);
|
|
1074
|
+
if (invalidXRangeOrder(M, m, p)) {
|
|
1075
|
+
return comp;
|
|
1076
|
+
}
|
|
1055
1077
|
const xM = isX(M);
|
|
1056
1078
|
const xm = xM || isX(m);
|
|
1057
1079
|
const xp = xm || isX(p);
|
|
@@ -1163,9 +1185,9 @@ var require_range = __commonJS({
|
|
|
1163
1185
|
}
|
|
1164
1186
|
});
|
|
1165
1187
|
|
|
1166
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1188
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js
|
|
1167
1189
|
var require_satisfies = __commonJS({
|
|
1168
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1190
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) {
|
|
1169
1191
|
"use strict";
|
|
1170
1192
|
var Range = require_range();
|
|
1171
1193
|
var satisfies = (version, range, options) => {
|
|
@@ -1180,9 +1202,9 @@ var require_satisfies = __commonJS({
|
|
|
1180
1202
|
}
|
|
1181
1203
|
});
|
|
1182
1204
|
|
|
1183
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1205
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js
|
|
1184
1206
|
var require_min_version = __commonJS({
|
|
1185
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1207
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) {
|
|
1186
1208
|
"use strict";
|
|
1187
1209
|
var SemVer = require_semver();
|
|
1188
1210
|
var Range = require_range();
|
|
@@ -1239,9 +1261,9 @@ var require_min_version = __commonJS({
|
|
|
1239
1261
|
}
|
|
1240
1262
|
});
|
|
1241
1263
|
|
|
1242
|
-
// node_modules/.pnpm/semver@7.8.
|
|
1264
|
+
// node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js
|
|
1243
1265
|
var require_valid2 = __commonJS({
|
|
1244
|
-
"node_modules/.pnpm/semver@7.8.
|
|
1266
|
+
"node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) {
|
|
1245
1267
|
"use strict";
|
|
1246
1268
|
var Range = require_range();
|
|
1247
1269
|
var validRange = (range, options) => {
|
|
@@ -1255,7 +1277,28 @@ var require_valid2 = __commonJS({
|
|
|
1255
1277
|
}
|
|
1256
1278
|
});
|
|
1257
1279
|
|
|
1258
|
-
// src/lib/
|
|
1280
|
+
// src/lib/core/2.app/flows/init.flow.ts
|
|
1281
|
+
var createInitFlow = ({
|
|
1282
|
+
flow,
|
|
1283
|
+
adapters,
|
|
1284
|
+
config
|
|
1285
|
+
}) => {
|
|
1286
|
+
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
1287
|
+
config,
|
|
1288
|
+
adapters,
|
|
1289
|
+
loadRemoteModule
|
|
1290
|
+
}));
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
// src/lib/core/2.app/flows/init-remote-entry.flow.ts
|
|
1294
|
+
var createInitRemoteEntryFlow = ({
|
|
1295
|
+
flow
|
|
1296
|
+
}) => {
|
|
1297
|
+
const processDynamicRemoteEntry = (remoteEntry) => flow.updateCache(remoteEntry).then(flow.convertToImportMap).then(flow.commitChanges);
|
|
1298
|
+
return (remoteEntryUrl, remote) => flow.getRemoteEntry(remoteEntryUrl, remote).then((entry) => entry.map(processDynamicRemoteEntry).orElse(Promise.resolve())).then(() => void 0);
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
// src/lib/core/native-federation.error.ts
|
|
1259
1302
|
var NFError = class extends Error {
|
|
1260
1303
|
constructor(message, cause) {
|
|
1261
1304
|
super(message, cause);
|
|
@@ -1279,7 +1322,7 @@ function getScope(path) {
|
|
|
1279
1322
|
return `${parts.join("/")}/`;
|
|
1280
1323
|
}
|
|
1281
1324
|
|
|
1282
|
-
// src/lib/2.app/
|
|
1325
|
+
// src/lib/core/2.app/steps/get-remote-entries.ts
|
|
1283
1326
|
function createGetRemoteEntries(config, ports) {
|
|
1284
1327
|
return (remotesOrManifestUrl = {}) => {
|
|
1285
1328
|
const manifestPromise = config.manifestIntegrity ? ports.manifestProvider.provide(remotesOrManifestUrl, {
|
|
@@ -1373,20 +1416,13 @@ function createGetRemoteEntries(config, ports) {
|
|
|
1373
1416
|
}
|
|
1374
1417
|
}
|
|
1375
1418
|
|
|
1376
|
-
// src/lib/2.app/
|
|
1377
|
-
function
|
|
1378
|
-
return (
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
addExternalsToStorage(remoteEntry);
|
|
1384
|
-
addSharedChunksToStorage(remoteEntry);
|
|
1385
|
-
});
|
|
1386
|
-
return Promise.resolve(remoteEntries);
|
|
1387
|
-
} catch (e) {
|
|
1388
|
-
return Promise.reject(e);
|
|
1389
|
-
}
|
|
1419
|
+
// src/lib/core/2.app/steps/store-remote-entry.ts
|
|
1420
|
+
function createStoreRemoteEntry(config, ports, logStep) {
|
|
1421
|
+
return (remoteEntry, onSharedExternal) => {
|
|
1422
|
+
if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);
|
|
1423
|
+
addRemoteInfoToStorage(remoteEntry);
|
|
1424
|
+
addExternalsToStorage(remoteEntry, onSharedExternal);
|
|
1425
|
+
addSharedChunksToStorage(remoteEntry);
|
|
1390
1426
|
};
|
|
1391
1427
|
function removeCachedRemoteEntry(remoteEntry) {
|
|
1392
1428
|
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
@@ -1403,92 +1439,134 @@ function createProcessRemoteEntries(config, ports) {
|
|
|
1403
1439
|
...integrity ? { integrity } : {}
|
|
1404
1440
|
});
|
|
1405
1441
|
}
|
|
1406
|
-
function addExternalsToStorage(remoteEntry) {
|
|
1442
|
+
function addExternalsToStorage(remoteEntry, onSharedExternal) {
|
|
1407
1443
|
remoteEntry.shared.forEach((external) => {
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
if (config.strict.strictExternalVersion) {
|
|
1411
|
-
config.log.error(2, errorMsg);
|
|
1412
|
-
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
1413
|
-
}
|
|
1414
|
-
config.log.warn(2, errorMsg);
|
|
1415
|
-
}
|
|
1444
|
+
const tag = resolveVersion(remoteEntry, external);
|
|
1445
|
+
if (tag === null) return;
|
|
1416
1446
|
if (external.singleton) {
|
|
1417
|
-
|
|
1447
|
+
onSharedExternal(remoteEntry, external, sharedExternalContext(remoteEntry, external, tag));
|
|
1418
1448
|
} else {
|
|
1419
|
-
addScopedExternal(remoteEntry
|
|
1449
|
+
addScopedExternal(remoteEntry, external, tag);
|
|
1420
1450
|
}
|
|
1421
1451
|
});
|
|
1422
1452
|
}
|
|
1423
1453
|
function addSharedChunksToStorage(remoteEntry) {
|
|
1424
1454
|
if (!remoteEntry.chunks) return;
|
|
1425
1455
|
config.log.debug(
|
|
1426
|
-
|
|
1456
|
+
logStep,
|
|
1427
1457
|
`Adding chunks for remote "${remoteEntry.name}", bundles: [${Object.keys(remoteEntry.chunks).join(", ")}]`
|
|
1428
1458
|
);
|
|
1429
1459
|
Object.entries(remoteEntry.chunks).forEach(([bundleName, chunks]) => {
|
|
1430
1460
|
ports.sharedChunksRepo.addOrReplace(remoteEntry.name, bundleName, chunks);
|
|
1431
1461
|
});
|
|
1432
1462
|
}
|
|
1433
|
-
function
|
|
1434
|
-
|
|
1435
|
-
|
|
1463
|
+
function addScopedExternal(remoteEntry, sharedInfo, tag) {
|
|
1464
|
+
ports.scopedExternalsRepo.addExternal(remoteEntry.name, sharedInfo.packageName, {
|
|
1465
|
+
tag,
|
|
1466
|
+
file: sharedInfo.outFileName,
|
|
1467
|
+
bundle: sharedInfo.bundle
|
|
1468
|
+
});
|
|
1469
|
+
}
|
|
1470
|
+
function resolveVersion(remoteEntry, external) {
|
|
1471
|
+
if (external.version && ports.versionCheck.isValidSemver(external.version)) {
|
|
1472
|
+
return external.version;
|
|
1473
|
+
}
|
|
1474
|
+
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
1475
|
+
if (config.strict.strictExternalVersion) {
|
|
1476
|
+
config.log.error(logStep, errorMsg);
|
|
1477
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
1478
|
+
}
|
|
1479
|
+
if (config.profile.skipInvalidExternalVersions) {
|
|
1480
|
+
config.log.warn(logStep, `${errorMsg} Skipping external.`);
|
|
1481
|
+
return null;
|
|
1482
|
+
}
|
|
1483
|
+
config.log.warn(logStep, errorMsg);
|
|
1484
|
+
return ports.versionCheck.smallestVersion(external.requiredVersion);
|
|
1485
|
+
}
|
|
1486
|
+
function sharedExternalContext(remoteEntry, sharedInfo, tag) {
|
|
1487
|
+
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
1436
1488
|
const remote = {
|
|
1437
1489
|
file: sharedInfo.outFileName,
|
|
1438
|
-
name:
|
|
1490
|
+
name: remoteEntry.name,
|
|
1439
1491
|
bundle: sharedInfo.bundle,
|
|
1440
1492
|
strictVersion: sharedInfo.strictVersion,
|
|
1441
1493
|
cached: false,
|
|
1442
|
-
requiredVersion: sharedInfo.requiredVersion || tag
|
|
1494
|
+
requiredVersion: scopeType === "strict" ? tag : sharedInfo.requiredVersion || tag
|
|
1443
1495
|
};
|
|
1444
|
-
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
1445
|
-
if (scopeType === "strict") {
|
|
1446
|
-
action = "share";
|
|
1447
|
-
remote.requiredVersion = tag;
|
|
1448
|
-
}
|
|
1449
1496
|
const cached = ports.sharedExternalsRepo.tryGet(sharedInfo.packageName, sharedInfo.shareScope).orElse({ dirty: false, versions: [] });
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1497
|
+
return {
|
|
1498
|
+
tag,
|
|
1499
|
+
remote,
|
|
1500
|
+
cached,
|
|
1501
|
+
scopeType,
|
|
1502
|
+
assertSameVersionCompatibility(matchingVersion) {
|
|
1503
|
+
if (!remote.strictVersion) return;
|
|
1504
|
+
if (matchingVersion.remotes[0].requiredVersion === remote.requiredVersion) return;
|
|
1505
|
+
const errorMsg = `[${remoteEntry.name}][${sharedInfo.packageName}@${sharedInfo.version}] Required version-range '${remote.requiredVersion}' does not match cached version-range '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
1455
1506
|
if (config.strict.strictExternalSameVersionCompatibility) {
|
|
1456
|
-
config.log.error(
|
|
1507
|
+
config.log.error(logStep, errorMsg);
|
|
1457
1508
|
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
1458
1509
|
}
|
|
1459
|
-
config.log.warn(
|
|
1510
|
+
config.log.warn(logStep, errorMsg);
|
|
1511
|
+
},
|
|
1512
|
+
commit() {
|
|
1513
|
+
ports.sharedExternalsRepo.addOrUpdate(
|
|
1514
|
+
sharedInfo.packageName,
|
|
1515
|
+
{
|
|
1516
|
+
dirty: cached.dirty,
|
|
1517
|
+
versions: cached.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
1518
|
+
},
|
|
1519
|
+
sharedInfo.shareScope
|
|
1520
|
+
);
|
|
1460
1521
|
}
|
|
1522
|
+
};
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
|
|
1526
|
+
// src/lib/core/2.app/steps/process-remote-entries.ts
|
|
1527
|
+
function createProcessRemoteEntries(config, ports) {
|
|
1528
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 2);
|
|
1529
|
+
return (remoteEntries) => {
|
|
1530
|
+
try {
|
|
1531
|
+
remoteEntries.forEach((remoteEntry) => storeRemoteEntry(remoteEntry, addSharedExternal));
|
|
1532
|
+
return Promise.resolve(remoteEntries);
|
|
1533
|
+
} catch (e) {
|
|
1534
|
+
return Promise.reject(e);
|
|
1535
|
+
}
|
|
1536
|
+
};
|
|
1537
|
+
function addSharedExternal(remoteEntry, _sharedInfo, {
|
|
1538
|
+
tag,
|
|
1539
|
+
remote,
|
|
1540
|
+
cached,
|
|
1541
|
+
scopeType,
|
|
1542
|
+
assertSameVersionCompatibility,
|
|
1543
|
+
commit
|
|
1544
|
+
}) {
|
|
1545
|
+
const matchingVersion = cached.versions.find((version) => version.tag === tag);
|
|
1546
|
+
if (matchingVersion) {
|
|
1547
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
1461
1548
|
if (!matchingVersion.host && !!remoteEntry?.host) {
|
|
1462
1549
|
matchingVersion.host = true;
|
|
1463
1550
|
matchingVersion.remotes.unshift(remote);
|
|
1464
1551
|
} else matchingVersion.remotes.push(remote);
|
|
1465
1552
|
} else {
|
|
1466
|
-
if (scopeType !== "strict") dirty = true;
|
|
1467
|
-
cached.versions.push({
|
|
1553
|
+
if (scopeType !== "strict") cached.dirty = true;
|
|
1554
|
+
cached.versions.push({
|
|
1555
|
+
tag,
|
|
1556
|
+
action: scopeType === "strict" ? "share" : "skip",
|
|
1557
|
+
host: !!remoteEntry?.host,
|
|
1558
|
+
remotes: [remote]
|
|
1559
|
+
});
|
|
1468
1560
|
}
|
|
1469
|
-
|
|
1470
|
-
sharedInfo.packageName,
|
|
1471
|
-
{
|
|
1472
|
-
dirty,
|
|
1473
|
-
versions: cached.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
1474
|
-
},
|
|
1475
|
-
sharedInfo.shareScope
|
|
1476
|
-
);
|
|
1477
|
-
}
|
|
1478
|
-
function addScopedExternal(scope, sharedInfo) {
|
|
1479
|
-
ports.scopedExternalsRepo.addExternal(scope, sharedInfo.packageName, {
|
|
1480
|
-
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
1481
|
-
file: sharedInfo.outFileName,
|
|
1482
|
-
bundle: sharedInfo.bundle
|
|
1483
|
-
});
|
|
1561
|
+
commit();
|
|
1484
1562
|
}
|
|
1485
1563
|
}
|
|
1486
1564
|
|
|
1487
|
-
// src/lib/1.domain/externals/external.contract.ts
|
|
1565
|
+
// src/lib/core/1.domain/externals/external.contract.ts
|
|
1488
1566
|
var GLOBAL_SCOPE = "__GLOBAL__";
|
|
1489
1567
|
var STRICT_SCOPE = "strict";
|
|
1490
1568
|
|
|
1491
|
-
// src/lib/2.app/
|
|
1569
|
+
// src/lib/core/2.app/steps/determine-shared-externals.ts
|
|
1492
1570
|
function createDetermineSharedExternals(config, ports) {
|
|
1493
1571
|
return () => {
|
|
1494
1572
|
for (const shareScope of ports.sharedExternalsRepo.getScopes()) {
|
|
@@ -1565,15 +1643,15 @@ function createDetermineSharedExternals(config, ports) {
|
|
|
1565
1643
|
}
|
|
1566
1644
|
}
|
|
1567
1645
|
|
|
1568
|
-
// node_modules/.pnpm/@softarc+native-federation@4.
|
|
1569
|
-
var BuildNotificationType
|
|
1570
|
-
(function(BuildNotificationType2) {
|
|
1646
|
+
// node_modules/.pnpm/@softarc+native-federation@4.2.0_typescript@6.0.3/node_modules/@softarc/native-federation/dist/lib/domain/core/build-notification-options.contract.js
|
|
1647
|
+
var BuildNotificationType = /* @__PURE__ */ ((BuildNotificationType2) => {
|
|
1571
1648
|
BuildNotificationType2["COMPLETED"] = "federation-rebuild-complete";
|
|
1572
1649
|
BuildNotificationType2["ERROR"] = "federation-rebuild-error";
|
|
1573
1650
|
BuildNotificationType2["CANCELLED"] = "federation-rebuild-cancelled";
|
|
1574
|
-
|
|
1651
|
+
return BuildNotificationType2;
|
|
1652
|
+
})(BuildNotificationType || {});
|
|
1575
1653
|
|
|
1576
|
-
// node_modules/.pnpm/@softarc+native-federation@4.
|
|
1654
|
+
// node_modules/.pnpm/@softarc+native-federation@4.2.0_typescript@6.0.3/node_modules/@softarc/native-federation/dist/lib/domain/core/chunk.js
|
|
1577
1655
|
var CHUNK_PREFIX = "@nf-internal";
|
|
1578
1656
|
function toChunkImport(fileName) {
|
|
1579
1657
|
if (fileName.startsWith("./")) {
|
|
@@ -1583,7 +1661,7 @@ function toChunkImport(fileName) {
|
|
|
1583
1661
|
return CHUNK_PREFIX + "/" + packageName;
|
|
1584
1662
|
}
|
|
1585
1663
|
|
|
1586
|
-
// src/lib/2.app/
|
|
1664
|
+
// src/lib/core/2.app/steps/generate-import-map.ts
|
|
1587
1665
|
function createGenerateImportMap(config, ports) {
|
|
1588
1666
|
return () => {
|
|
1589
1667
|
const importMap = { imports: {} };
|
|
@@ -1608,7 +1686,12 @@ function createGenerateImportMap(config, ports) {
|
|
|
1608
1686
|
});
|
|
1609
1687
|
addToScope(importMap, remote.scopeUrl, createScopeModules(externals, remote.scopeUrl));
|
|
1610
1688
|
for (const version of Object.values(externals)) {
|
|
1611
|
-
addIntegrity(
|
|
1689
|
+
addIntegrity(
|
|
1690
|
+
importMap,
|
|
1691
|
+
join(remote.scopeUrl, version.file),
|
|
1692
|
+
remoteName,
|
|
1693
|
+
version.file
|
|
1694
|
+
);
|
|
1612
1695
|
}
|
|
1613
1696
|
Object.values(externals).filter((e) => !!e.bundle).forEach((e) => registerBundleChunks(chunkBundles, remoteName, e.bundle));
|
|
1614
1697
|
}
|
|
@@ -1817,7 +1900,7 @@ function createGenerateImportMap(config, ports) {
|
|
|
1817
1900
|
}
|
|
1818
1901
|
}
|
|
1819
1902
|
|
|
1820
|
-
// src/lib/2.app/
|
|
1903
|
+
// src/lib/core/2.app/steps/commit-changes.ts
|
|
1821
1904
|
function createCommitChanges(config, ports) {
|
|
1822
1905
|
return (importMap) => Promise.resolve(importMap).then(addToBrowser).then(persistRepositoryChanges);
|
|
1823
1906
|
function addToBrowser(importMap) {
|
|
@@ -1834,7 +1917,7 @@ function createCommitChanges(config, ports) {
|
|
|
1834
1917
|
}
|
|
1835
1918
|
}
|
|
1836
1919
|
|
|
1837
|
-
// src/lib/2.app/
|
|
1920
|
+
// src/lib/core/2.app/steps/expose-module-loader.ts
|
|
1838
1921
|
function createExposeModuleLoader(config, ports) {
|
|
1839
1922
|
const loadRemoteModule = (remoteName, exposedModule) => {
|
|
1840
1923
|
try {
|
|
@@ -1860,167 +1943,6 @@ function createExposeModuleLoader(config, ports) {
|
|
|
1860
1943
|
return () => Promise.resolve(loadRemoteModule);
|
|
1861
1944
|
}
|
|
1862
1945
|
|
|
1863
|
-
// src/lib/5.di/flows/init.factory.ts
|
|
1864
|
-
var createInitDrivers = ({
|
|
1865
|
-
config,
|
|
1866
|
-
adapters
|
|
1867
|
-
}) => ({
|
|
1868
|
-
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
1869
|
-
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
1870
|
-
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
1871
|
-
generateImportMap: createGenerateImportMap(config, adapters),
|
|
1872
|
-
commitChanges: createCommitChanges(config, adapters),
|
|
1873
|
-
exposeModuleLoader: createExposeModuleLoader(config, adapters)
|
|
1874
|
-
});
|
|
1875
|
-
var INIT_FLOW_FACTORY = ({
|
|
1876
|
-
config,
|
|
1877
|
-
adapters
|
|
1878
|
-
}) => {
|
|
1879
|
-
const flow = createInitDrivers({ config, adapters });
|
|
1880
|
-
return {
|
|
1881
|
-
flow,
|
|
1882
|
-
adapters,
|
|
1883
|
-
config
|
|
1884
|
-
};
|
|
1885
|
-
};
|
|
1886
|
-
var createInitFlow = ({
|
|
1887
|
-
flow,
|
|
1888
|
-
adapters,
|
|
1889
|
-
config
|
|
1890
|
-
}) => {
|
|
1891
|
-
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
1892
|
-
config,
|
|
1893
|
-
adapters,
|
|
1894
|
-
loadRemoteModule
|
|
1895
|
-
}));
|
|
1896
|
-
};
|
|
1897
|
-
|
|
1898
|
-
// src/lib/3.adapters/browser/browser.ts
|
|
1899
|
-
var createBrowser = (config) => {
|
|
1900
|
-
return {
|
|
1901
|
-
setImportMapFn: config.setImportMapFn,
|
|
1902
|
-
importModule: config.loadModuleFn
|
|
1903
|
-
};
|
|
1904
|
-
};
|
|
1905
|
-
|
|
1906
|
-
// src/lib/3.adapters/checks/version.check.ts
|
|
1907
|
-
var import_valid = __toESM(require_valid());
|
|
1908
|
-
var import_satisfies = __toESM(require_satisfies());
|
|
1909
|
-
var import_compare = __toESM(require_compare());
|
|
1910
|
-
var import_min_version = __toESM(require_min_version());
|
|
1911
|
-
var import_valid2 = __toESM(require_valid2());
|
|
1912
|
-
var createVersionCheck = () => {
|
|
1913
|
-
return {
|
|
1914
|
-
isValidSemver: function(version) {
|
|
1915
|
-
return (0, import_valid.default)(version) !== null;
|
|
1916
|
-
},
|
|
1917
|
-
isCompatible: function(version, range) {
|
|
1918
|
-
return (0, import_satisfies.default)(version, range);
|
|
1919
|
-
},
|
|
1920
|
-
compare: function(versionA, versionB) {
|
|
1921
|
-
return (0, import_compare.default)(versionA, versionB, true);
|
|
1922
|
-
},
|
|
1923
|
-
smallestVersion: function(versionRange) {
|
|
1924
|
-
if (!(0, import_valid2.default)(versionRange)) return "0.0.0";
|
|
1925
|
-
const minVersion = (0, import_min_version.default)(versionRange);
|
|
1926
|
-
return minVersion?.raw ?? "0.0.0";
|
|
1927
|
-
}
|
|
1928
|
-
};
|
|
1929
|
-
};
|
|
1930
|
-
|
|
1931
|
-
// src/lib/utils/integrity.ts
|
|
1932
|
-
var SUPPORTED_ALGORITHMS = {
|
|
1933
|
-
"sha256-": "SHA-256",
|
|
1934
|
-
"sha384-": "SHA-384",
|
|
1935
|
-
"sha512-": "SHA-512"
|
|
1936
|
-
};
|
|
1937
|
-
var parseIntegrity = (integrity) => {
|
|
1938
|
-
for (const prefix of Object.keys(SUPPORTED_ALGORITHMS)) {
|
|
1939
|
-
if (integrity.startsWith(prefix)) {
|
|
1940
|
-
return { algorithm: SUPPORTED_ALGORITHMS[prefix], expected: integrity };
|
|
1941
|
-
}
|
|
1942
|
-
}
|
|
1943
|
-
return null;
|
|
1944
|
-
};
|
|
1945
|
-
var toBase64 = (bytes) => {
|
|
1946
|
-
const view = new Uint8Array(bytes);
|
|
1947
|
-
let bin = "";
|
|
1948
|
-
for (let i = 0; i < view.length; i++) bin += String.fromCharCode(view[i]);
|
|
1949
|
-
return btoa(bin);
|
|
1950
|
-
};
|
|
1951
|
-
var verifyIntegrity = async (bytes, integrity) => {
|
|
1952
|
-
const parsed = parseIntegrity(integrity);
|
|
1953
|
-
if (!parsed) {
|
|
1954
|
-
throw new TypeError(
|
|
1955
|
-
`Unsupported integrity prefix in '${integrity}'. Expected sha256-, sha384-, or sha512-.`
|
|
1956
|
-
);
|
|
1957
|
-
}
|
|
1958
|
-
const subtle = typeof crypto !== "undefined" && crypto.subtle ? crypto.subtle : void 0;
|
|
1959
|
-
if (!subtle) {
|
|
1960
|
-
throw new Error("SubtleCrypto is not available in this environment.");
|
|
1961
|
-
}
|
|
1962
|
-
const digest = await subtle.digest(parsed.algorithm, bytes);
|
|
1963
|
-
const actual = integrity.substring(0, integrity.indexOf("-") + 1) + toBase64(digest);
|
|
1964
|
-
if (actual !== parsed.expected) {
|
|
1965
|
-
throw new Error(`Integrity mismatch: expected ${parsed.expected}, got ${actual}`);
|
|
1966
|
-
}
|
|
1967
|
-
};
|
|
1968
|
-
|
|
1969
|
-
// src/lib/3.adapters/http/manifest-provider.ts
|
|
1970
|
-
var createManifestProvider = () => {
|
|
1971
|
-
const ensureOk = (response) => {
|
|
1972
|
-
if (!response.ok)
|
|
1973
|
-
return Promise.reject(new NFError(`${response.status} - ${response.statusText}`));
|
|
1974
|
-
return response;
|
|
1975
|
-
};
|
|
1976
|
-
const formatError = (manifestUrl) => (err) => {
|
|
1977
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
1978
|
-
throw new NFError(`Fetch of '${manifestUrl}' returned ${msg}`);
|
|
1979
|
-
};
|
|
1980
|
-
return {
|
|
1981
|
-
provide: async function(remotesOrManifestUrl, opts = {}) {
|
|
1982
|
-
if (typeof remotesOrManifestUrl !== "string") return Promise.resolve(remotesOrManifestUrl);
|
|
1983
|
-
const parse = async (response) => {
|
|
1984
|
-
if (!opts.integrity) return response.json();
|
|
1985
|
-
const bytes = await response.arrayBuffer();
|
|
1986
|
-
await verifyIntegrity(bytes, opts.integrity);
|
|
1987
|
-
return JSON.parse(new TextDecoder().decode(bytes));
|
|
1988
|
-
};
|
|
1989
|
-
return fetch(remotesOrManifestUrl).then(ensureOk).then(parse).catch(formatError(remotesOrManifestUrl));
|
|
1990
|
-
}
|
|
1991
|
-
};
|
|
1992
|
-
};
|
|
1993
|
-
|
|
1994
|
-
// src/lib/3.adapters/http/remote-entry-provider.ts
|
|
1995
|
-
var createRemoteEntryProvider = () => {
|
|
1996
|
-
const ensureOk = (response) => {
|
|
1997
|
-
if (!response.ok)
|
|
1998
|
-
return Promise.reject(new Error(`${response.status} - ${response.statusText}`));
|
|
1999
|
-
return response;
|
|
2000
|
-
};
|
|
2001
|
-
const fillEmptyFields = (remoteEntryUrl) => (remoteEntry) => {
|
|
2002
|
-
if (!remoteEntry.exposes) remoteEntry.exposes = [];
|
|
2003
|
-
if (!remoteEntry.shared) remoteEntry.shared = [];
|
|
2004
|
-
if (!remoteEntry.url) remoteEntry.url = remoteEntryUrl;
|
|
2005
|
-
return remoteEntry;
|
|
2006
|
-
};
|
|
2007
|
-
const formatError = (remoteEntryUrl) => (err) => {
|
|
2008
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
2009
|
-
throw new NFError(`Fetch of '${remoteEntryUrl}' returned ${msg}`);
|
|
2010
|
-
};
|
|
2011
|
-
return {
|
|
2012
|
-
provide: async function(remoteEntryUrl, opts = {}) {
|
|
2013
|
-
const parse = async (response) => {
|
|
2014
|
-
if (!opts.integrity) return response.json();
|
|
2015
|
-
const bytes = await response.arrayBuffer();
|
|
2016
|
-
await verifyIntegrity(bytes, opts.integrity);
|
|
2017
|
-
return JSON.parse(new TextDecoder().decode(bytes));
|
|
2018
|
-
};
|
|
2019
|
-
return fetch(remoteEntryUrl).then(ensureOk).then(parse).then(fillEmptyFields(remoteEntryUrl)).catch(formatError(remoteEntryUrl));
|
|
2020
|
-
}
|
|
2021
|
-
};
|
|
2022
|
-
};
|
|
2023
|
-
|
|
2024
1946
|
// src/lib/utils/optional.ts
|
|
2025
1947
|
var Optional = class _Optional {
|
|
2026
1948
|
constructor(item) {
|
|
@@ -2060,34 +1982,414 @@ var Optional = class _Optional {
|
|
|
2060
1982
|
}
|
|
2061
1983
|
};
|
|
2062
1984
|
|
|
2063
|
-
// src/lib/
|
|
2064
|
-
var
|
|
2065
|
-
|
|
2066
|
-
if (
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
}
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
return
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
1985
|
+
// src/lib/core/2.app/steps/get-remote-entry.ts
|
|
1986
|
+
var normalizeRemoteRef = (remote) => {
|
|
1987
|
+
if (!remote) return {};
|
|
1988
|
+
if (typeof remote === "string") return { name: remote };
|
|
1989
|
+
return remote;
|
|
1990
|
+
};
|
|
1991
|
+
function createGetRemoteEntry(config, ports) {
|
|
1992
|
+
return async (remoteEntryUrl, remote) => {
|
|
1993
|
+
const { name: remoteName, integrity } = normalizeRemoteRef(remote);
|
|
1994
|
+
if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {
|
|
1995
|
+
config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);
|
|
1996
|
+
return Optional.empty();
|
|
1997
|
+
}
|
|
1998
|
+
try {
|
|
1999
|
+
const remoteEntry = integrity ? await ports.remoteEntryProvider.provide(remoteEntryUrl, { integrity }) : await ports.remoteEntryProvider.provide(remoteEntryUrl);
|
|
2000
|
+
config.log.debug(
|
|
2001
|
+
7,
|
|
2002
|
+
`[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`
|
|
2003
|
+
);
|
|
2004
|
+
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2005
|
+
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2006
|
+
if (config.strict.strictRemoteEntry) {
|
|
2007
|
+
config.log.error(7, errorMsg);
|
|
2008
|
+
throw new NFError("Could not fetch remote entry");
|
|
2009
|
+
}
|
|
2010
|
+
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2011
|
+
}
|
|
2012
|
+
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2013
|
+
remoteEntry.override = true;
|
|
2014
|
+
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2015
|
+
}
|
|
2016
|
+
return Optional.of(checkForSSE(remoteEntry));
|
|
2017
|
+
} catch (error) {
|
|
2018
|
+
config.log.error(
|
|
2019
|
+
7,
|
|
2020
|
+
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2021
|
+
error
|
|
2022
|
+
);
|
|
2023
|
+
return Promise.reject(
|
|
2024
|
+
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2025
|
+
);
|
|
2026
|
+
}
|
|
2027
|
+
};
|
|
2028
|
+
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2029
|
+
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2030
|
+
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2031
|
+
).orElse(false);
|
|
2032
|
+
}
|
|
2033
|
+
function checkForSSE(entry) {
|
|
2034
|
+
if (config.sse) {
|
|
2035
|
+
if (entry.buildNotificationsEndpoint) {
|
|
2036
|
+
ports.sse.watchRemoteBuilds(
|
|
2037
|
+
join(getScope(entry.url), entry.buildNotificationsEndpoint)
|
|
2038
|
+
);
|
|
2039
|
+
config.log.debug(7, `Registered SSE endpoint of remote '${entry.name}' `);
|
|
2040
|
+
} else {
|
|
2041
|
+
config.log.debug(7, `Remote ${entry.name} has no defined 'buildNotificationsEndpoint'`);
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
return entry;
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
// src/lib/core/2.app/steps/update-cache.ts
|
|
2049
|
+
function createUpdateCache(config, ports) {
|
|
2050
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 8);
|
|
2051
|
+
return (remoteEntry) => {
|
|
2052
|
+
try {
|
|
2053
|
+
const actions = {};
|
|
2054
|
+
storeRemoteEntry(remoteEntry, (entry, external, ctx) => {
|
|
2055
|
+
const { action, sharedVersion } = resolveSharedExternal(entry, external, ctx);
|
|
2056
|
+
actions[external.packageName] = { action };
|
|
2057
|
+
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2058
|
+
actions[external.packageName].override = resolveOverrideUrl(
|
|
2059
|
+
entry,
|
|
2060
|
+
external,
|
|
2061
|
+
sharedVersion
|
|
2062
|
+
);
|
|
2063
|
+
}
|
|
2064
|
+
});
|
|
2065
|
+
return Promise.resolve({ entry: remoteEntry, actions });
|
|
2066
|
+
} catch (error) {
|
|
2067
|
+
return Promise.reject(error);
|
|
2068
|
+
}
|
|
2069
|
+
};
|
|
2070
|
+
function resolveSharedExternal(remoteEntry, sharedInfo, {
|
|
2071
|
+
tag,
|
|
2072
|
+
remote,
|
|
2073
|
+
cached,
|
|
2074
|
+
scopeType,
|
|
2075
|
+
assertSameVersionCompatibility,
|
|
2076
|
+
commit
|
|
2077
|
+
}) {
|
|
2078
|
+
let action = scopeType === "strict" ? "share" : "skip";
|
|
2079
|
+
const sharedVersion = cached.versions.find((c) => c.action === "share");
|
|
2080
|
+
const isCompatible = !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);
|
|
2081
|
+
if (action === "skip" && !isCompatible && remote.strictVersion) {
|
|
2082
|
+
action = "scope";
|
|
2083
|
+
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}'`;
|
|
2084
|
+
if (config.strict.strictExternalCompatibility) {
|
|
2085
|
+
config.log.error(8, errorMsg);
|
|
2086
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2087
|
+
}
|
|
2088
|
+
config.log.warn(8, errorMsg);
|
|
2089
|
+
}
|
|
2090
|
+
const matchingVersion = cached.versions.find((cached2) => cached2.tag === tag);
|
|
2091
|
+
if (matchingVersion) {
|
|
2092
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
2093
|
+
matchingVersion.remotes.push(remote);
|
|
2094
|
+
} else {
|
|
2095
|
+
if (!sharedVersion) action = "share";
|
|
2096
|
+
remote.cached = action !== "skip";
|
|
2097
|
+
cached.versions.push({ tag, action, host: false, remotes: [remote] });
|
|
2098
|
+
}
|
|
2099
|
+
commit();
|
|
2100
|
+
return { action, sharedVersion };
|
|
2101
|
+
}
|
|
2102
|
+
function resolveOverrideUrl(remoteEntry, external, sharedVersion) {
|
|
2103
|
+
return ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2104
|
+
config.log.error(
|
|
2105
|
+
8,
|
|
2106
|
+
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2107
|
+
);
|
|
2108
|
+
return new NFError(
|
|
2109
|
+
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2110
|
+
);
|
|
2111
|
+
});
|
|
2112
|
+
}
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
// src/lib/core/2.app/steps/convert-to-import-map.ts
|
|
2116
|
+
function createConvertToImportMap({ log }, ports) {
|
|
2117
|
+
return ({ entry, actions }) => {
|
|
2118
|
+
const importMap = { imports: {} };
|
|
2119
|
+
addExternals(entry, actions, importMap);
|
|
2120
|
+
addRemoteInfos(entry, importMap);
|
|
2121
|
+
log.debug(9, `[${entry.name}] Processed actions:`, actions);
|
|
2122
|
+
return Promise.resolve(importMap);
|
|
2123
|
+
};
|
|
2124
|
+
function addExternals(remoteEntry, actions, importMap) {
|
|
2125
|
+
if (!remoteEntry.shared) {
|
|
2126
|
+
return;
|
|
2127
|
+
}
|
|
2128
|
+
const remoteEntryScope = getScope(remoteEntry.url);
|
|
2129
|
+
const integrityMap = remoteEntry.integrity;
|
|
2130
|
+
const chunkBundles = /* @__PURE__ */ new Set(["mapping-or-exposed"]);
|
|
2131
|
+
remoteEntry.shared.forEach((external) => {
|
|
2132
|
+
if (!external.singleton) {
|
|
2133
|
+
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2134
|
+
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2135
|
+
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2136
|
+
if (external?.bundle) chunkBundles.add(external?.bundle);
|
|
2137
|
+
return;
|
|
2138
|
+
}
|
|
2139
|
+
if (!actions[external.packageName]) {
|
|
2140
|
+
log.warn(
|
|
2141
|
+
9,
|
|
2142
|
+
`[${remoteEntry.name}] No action defined for shared external '${external.packageName}', skipping.`
|
|
2143
|
+
);
|
|
2144
|
+
return;
|
|
2145
|
+
}
|
|
2146
|
+
if (actions[external.packageName].action === "skip") {
|
|
2147
|
+
if (!external.shareScope) return;
|
|
2148
|
+
if (actions[external.packageName].override) {
|
|
2149
|
+
addToScopes(
|
|
2150
|
+
remoteEntryScope,
|
|
2151
|
+
external.packageName,
|
|
2152
|
+
actions[external.packageName].override,
|
|
2153
|
+
importMap
|
|
2154
|
+
);
|
|
2155
|
+
return;
|
|
2156
|
+
}
|
|
2157
|
+
}
|
|
2158
|
+
if (external?.bundle) chunkBundles.add(external?.bundle);
|
|
2159
|
+
if (actions[external.packageName].action === "scope") {
|
|
2160
|
+
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2161
|
+
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2162
|
+
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2163
|
+
return;
|
|
2164
|
+
}
|
|
2165
|
+
if (external.shareScope) {
|
|
2166
|
+
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2167
|
+
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2168
|
+
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2169
|
+
return;
|
|
2170
|
+
}
|
|
2171
|
+
const url = join(remoteEntryScope, external.outFileName);
|
|
2172
|
+
importMap.imports[external.packageName] = url;
|
|
2173
|
+
addIntegrity(importMap, url, integrityMap, external.outFileName);
|
|
2174
|
+
});
|
|
2175
|
+
addChunkImports(importMap, remoteEntry, remoteEntryScope, chunkBundles);
|
|
2176
|
+
}
|
|
2177
|
+
function addToScopes(scope, packageName, url, importMap) {
|
|
2178
|
+
if (!importMap.scopes) importMap.scopes = {};
|
|
2179
|
+
if (!importMap.scopes[scope]) importMap.scopes[scope] = {};
|
|
2180
|
+
importMap.scopes[scope][packageName] = url;
|
|
2181
|
+
}
|
|
2182
|
+
function addRemoteInfos(remoteEntry, importMap) {
|
|
2183
|
+
if (!remoteEntry.exposes) return;
|
|
2184
|
+
const scope = getScope(remoteEntry.url);
|
|
2185
|
+
remoteEntry.exposes.forEach((exposed) => {
|
|
2186
|
+
const moduleName = join(remoteEntry.name, exposed.key);
|
|
2187
|
+
const moduleUrl = join(scope, exposed.outFileName);
|
|
2188
|
+
importMap.imports[moduleName] = moduleUrl;
|
|
2189
|
+
addIntegrity(importMap, moduleUrl, remoteEntry.integrity, exposed.outFileName);
|
|
2190
|
+
});
|
|
2191
|
+
}
|
|
2192
|
+
function addChunkImports(importMap, remoteEntry, remoteEntryScope, chunkBundles) {
|
|
2193
|
+
Array.from(chunkBundles).forEach((bundleName) => {
|
|
2194
|
+
ports.sharedChunksRepo.tryGet(remoteEntry.name, bundleName).ifPresent((files) => {
|
|
2195
|
+
files.forEach((file) => {
|
|
2196
|
+
const url = join(remoteEntryScope, file);
|
|
2197
|
+
addToScopes(remoteEntryScope, toChunkImport(file), url, importMap);
|
|
2198
|
+
addIntegrity(importMap, url, remoteEntry.integrity, file);
|
|
2199
|
+
});
|
|
2200
|
+
});
|
|
2201
|
+
});
|
|
2202
|
+
return importMap;
|
|
2203
|
+
}
|
|
2204
|
+
function addIntegrity(importMap, url, integrityMap, file) {
|
|
2205
|
+
const hash = integrityMap?.[file];
|
|
2206
|
+
if (!hash) return;
|
|
2207
|
+
if (!importMap.integrity) importMap.integrity = {};
|
|
2208
|
+
importMap.integrity[url] = hash;
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
// src/lib/core/5.di/init.factory.ts
|
|
2213
|
+
var createInitDrivers = ({
|
|
2214
|
+
config,
|
|
2215
|
+
adapters
|
|
2216
|
+
}) => ({
|
|
2217
|
+
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
2218
|
+
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
2219
|
+
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
2220
|
+
generateImportMap: createGenerateImportMap(config, adapters),
|
|
2221
|
+
commitChanges: createCommitChanges(config, adapters),
|
|
2222
|
+
exposeModuleLoader: createExposeModuleLoader(config, adapters),
|
|
2223
|
+
getRemoteEntry: createGetRemoteEntry(config, adapters),
|
|
2224
|
+
updateCache: createUpdateCache(config, adapters),
|
|
2225
|
+
convertToImportMap: createConvertToImportMap(config, adapters)
|
|
2226
|
+
});
|
|
2227
|
+
var INIT_FLOW_FACTORY = ({
|
|
2228
|
+
config,
|
|
2229
|
+
adapters
|
|
2230
|
+
}) => {
|
|
2231
|
+
const flow = createInitDrivers({ config, adapters });
|
|
2232
|
+
return {
|
|
2233
|
+
flow,
|
|
2234
|
+
adapters,
|
|
2235
|
+
config
|
|
2236
|
+
};
|
|
2237
|
+
};
|
|
2238
|
+
|
|
2239
|
+
// src/lib/core/3.adapters/browser/browser.ts
|
|
2240
|
+
var createBrowser = (config) => {
|
|
2241
|
+
return {
|
|
2242
|
+
setImportMapFn: config.setImportMapFn,
|
|
2243
|
+
importModule: config.loadModuleFn
|
|
2244
|
+
};
|
|
2245
|
+
};
|
|
2246
|
+
|
|
2247
|
+
// src/lib/core/3.adapters/checks/version.check.ts
|
|
2248
|
+
var import_valid = __toESM(require_valid());
|
|
2249
|
+
var import_satisfies = __toESM(require_satisfies());
|
|
2250
|
+
var import_compare = __toESM(require_compare());
|
|
2251
|
+
var import_min_version = __toESM(require_min_version());
|
|
2252
|
+
var import_valid2 = __toESM(require_valid2());
|
|
2253
|
+
var createVersionCheck = () => {
|
|
2254
|
+
return {
|
|
2255
|
+
isValidSemver: function(version) {
|
|
2256
|
+
return (0, import_valid.default)(version) !== null;
|
|
2257
|
+
},
|
|
2258
|
+
isCompatible: function(version, range) {
|
|
2259
|
+
return (0, import_satisfies.default)(version, range);
|
|
2260
|
+
},
|
|
2261
|
+
compare: function(versionA, versionB) {
|
|
2262
|
+
return (0, import_compare.default)(versionA, versionB, true);
|
|
2263
|
+
},
|
|
2264
|
+
smallestVersion: function(versionRange) {
|
|
2265
|
+
if (!(0, import_valid2.default)(versionRange)) return "0.0.0";
|
|
2266
|
+
const minVersion = (0, import_min_version.default)(versionRange);
|
|
2267
|
+
return minVersion?.raw ?? "0.0.0";
|
|
2268
|
+
}
|
|
2269
|
+
};
|
|
2270
|
+
};
|
|
2271
|
+
|
|
2272
|
+
// src/lib/utils/integrity.ts
|
|
2273
|
+
var SUPPORTED_ALGORITHMS = {
|
|
2274
|
+
"sha256-": "SHA-256",
|
|
2275
|
+
"sha384-": "SHA-384",
|
|
2276
|
+
"sha512-": "SHA-512"
|
|
2277
|
+
};
|
|
2278
|
+
var parseIntegrity = (integrity) => {
|
|
2279
|
+
for (const prefix of Object.keys(SUPPORTED_ALGORITHMS)) {
|
|
2280
|
+
if (integrity.startsWith(prefix)) {
|
|
2281
|
+
return { algorithm: SUPPORTED_ALGORITHMS[prefix], expected: integrity };
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
return null;
|
|
2285
|
+
};
|
|
2286
|
+
var toBase64 = (bytes) => {
|
|
2287
|
+
const view = new Uint8Array(bytes);
|
|
2288
|
+
let bin = "";
|
|
2289
|
+
for (let i = 0; i < view.length; i++) bin += String.fromCharCode(view[i]);
|
|
2290
|
+
return btoa(bin);
|
|
2291
|
+
};
|
|
2292
|
+
var verifyIntegrity = async (bytes, integrity) => {
|
|
2293
|
+
const parsed = parseIntegrity(integrity);
|
|
2294
|
+
if (!parsed) {
|
|
2295
|
+
throw new TypeError(
|
|
2296
|
+
`Unsupported integrity prefix in '${integrity}'. Expected sha256-, sha384-, or sha512-.`
|
|
2297
|
+
);
|
|
2298
|
+
}
|
|
2299
|
+
const subtle = typeof crypto !== "undefined" && crypto.subtle ? crypto.subtle : void 0;
|
|
2300
|
+
if (!subtle) {
|
|
2301
|
+
throw new Error("SubtleCrypto is not available in this environment.");
|
|
2302
|
+
}
|
|
2303
|
+
const digest = await subtle.digest(parsed.algorithm, bytes);
|
|
2304
|
+
const actual = integrity.substring(0, integrity.indexOf("-") + 1) + toBase64(digest);
|
|
2305
|
+
if (actual !== parsed.expected) {
|
|
2306
|
+
throw new Error(`Integrity mismatch: expected ${parsed.expected}, got ${actual}`);
|
|
2307
|
+
}
|
|
2308
|
+
};
|
|
2309
|
+
|
|
2310
|
+
// src/lib/core/3.adapters/http/manifest-provider.ts
|
|
2311
|
+
var createManifestProvider = () => {
|
|
2312
|
+
const ensureOk = (response) => {
|
|
2313
|
+
if (!response.ok)
|
|
2314
|
+
return Promise.reject(new NFError(`${response.status} - ${response.statusText}`));
|
|
2315
|
+
return response;
|
|
2316
|
+
};
|
|
2317
|
+
const formatError = (manifestUrl) => (err) => {
|
|
2318
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
2319
|
+
throw new NFError(`Fetch of '${manifestUrl}' returned ${msg}`);
|
|
2320
|
+
};
|
|
2321
|
+
return {
|
|
2322
|
+
provide: async function(remotesOrManifestUrl, opts = {}) {
|
|
2323
|
+
if (typeof remotesOrManifestUrl !== "string") return Promise.resolve(remotesOrManifestUrl);
|
|
2324
|
+
const parse = async (response) => {
|
|
2325
|
+
if (!opts.integrity) return response.json();
|
|
2326
|
+
const bytes = await response.arrayBuffer();
|
|
2327
|
+
await verifyIntegrity(bytes, opts.integrity);
|
|
2328
|
+
return JSON.parse(new TextDecoder().decode(bytes));
|
|
2329
|
+
};
|
|
2330
|
+
return fetch(remotesOrManifestUrl).then(ensureOk).then(parse).catch(formatError(remotesOrManifestUrl));
|
|
2331
|
+
}
|
|
2332
|
+
};
|
|
2333
|
+
};
|
|
2334
|
+
|
|
2335
|
+
// src/lib/core/3.adapters/http/remote-entry-provider.ts
|
|
2336
|
+
var createRemoteEntryProvider = () => {
|
|
2337
|
+
const ensureOk = (response) => {
|
|
2338
|
+
if (!response.ok)
|
|
2339
|
+
return Promise.reject(new Error(`${response.status} - ${response.statusText}`));
|
|
2340
|
+
return response;
|
|
2341
|
+
};
|
|
2342
|
+
const fillEmptyFields = (remoteEntryUrl) => (remoteEntry) => {
|
|
2343
|
+
if (!remoteEntry.exposes) remoteEntry.exposes = [];
|
|
2344
|
+
if (!remoteEntry.shared) remoteEntry.shared = [];
|
|
2345
|
+
if (!remoteEntry.url) remoteEntry.url = remoteEntryUrl;
|
|
2346
|
+
return remoteEntry;
|
|
2347
|
+
};
|
|
2348
|
+
const formatError = (remoteEntryUrl) => (err) => {
|
|
2349
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
2350
|
+
throw new NFError(`Fetch of '${remoteEntryUrl}' returned ${msg}`);
|
|
2351
|
+
};
|
|
2352
|
+
return {
|
|
2353
|
+
provide: async function(remoteEntryUrl, opts = {}) {
|
|
2354
|
+
const parse = async (response) => {
|
|
2355
|
+
if (!opts.integrity) return response.json();
|
|
2356
|
+
const bytes = await response.arrayBuffer();
|
|
2357
|
+
await verifyIntegrity(bytes, opts.integrity);
|
|
2358
|
+
return JSON.parse(new TextDecoder().decode(bytes));
|
|
2359
|
+
};
|
|
2360
|
+
return fetch(remoteEntryUrl).then(ensureOk).then(parse).then(fillEmptyFields(remoteEntryUrl)).catch(formatError(remoteEntryUrl));
|
|
2361
|
+
}
|
|
2362
|
+
};
|
|
2363
|
+
};
|
|
2364
|
+
|
|
2365
|
+
// src/lib/core/3.adapters/storage/remote-info.repository.ts
|
|
2366
|
+
var createRemoteInfoRepository = (config) => {
|
|
2367
|
+
const STORAGE = config.storage("remotes", {});
|
|
2368
|
+
if (config.clearStorage) STORAGE.clear();
|
|
2369
|
+
const _cache = STORAGE.get() ?? {};
|
|
2370
|
+
return {
|
|
2371
|
+
contains: function(remoteName) {
|
|
2372
|
+
return !!_cache[remoteName];
|
|
2373
|
+
},
|
|
2374
|
+
remove: function(remoteName) {
|
|
2375
|
+
delete _cache[remoteName];
|
|
2376
|
+
return this;
|
|
2377
|
+
},
|
|
2378
|
+
addOrUpdate: function(remoteName, remote) {
|
|
2379
|
+
_cache[remoteName] = remote;
|
|
2380
|
+
return this;
|
|
2381
|
+
},
|
|
2382
|
+
tryGet: function(remoteName) {
|
|
2383
|
+
return Optional.of(_cache[remoteName]);
|
|
2384
|
+
},
|
|
2385
|
+
tryGetModule: function(remoteName, exposedModule) {
|
|
2386
|
+
return Optional.of(_cache[remoteName]?.exposes.find((m) => m.moduleName === exposedModule)).map(
|
|
2387
|
+
(m) => join(_cache[remoteName].scopeUrl, m.file)
|
|
2388
|
+
);
|
|
2389
|
+
},
|
|
2390
|
+
getAll: function() {
|
|
2391
|
+
return _cache;
|
|
2392
|
+
},
|
|
2091
2393
|
commit: function() {
|
|
2092
2394
|
STORAGE.set(_cache);
|
|
2093
2395
|
return this;
|
|
@@ -2095,7 +2397,7 @@ var createRemoteInfoRepository = (config) => {
|
|
|
2095
2397
|
};
|
|
2096
2398
|
};
|
|
2097
2399
|
|
|
2098
|
-
// src/lib/3.adapters/storage/scoped-externals.repository.ts
|
|
2400
|
+
// src/lib/core/3.adapters/storage/scoped-externals.repository.ts
|
|
2099
2401
|
var createScopedExternalsRepository = (config) => {
|
|
2100
2402
|
const STORAGE = config.storage("scoped-externals", {});
|
|
2101
2403
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -2123,7 +2425,7 @@ var createScopedExternalsRepository = (config) => {
|
|
|
2123
2425
|
};
|
|
2124
2426
|
};
|
|
2125
2427
|
|
|
2126
|
-
// src/lib/3.adapters/storage/shared-externals.repository.ts
|
|
2428
|
+
// src/lib/core/3.adapters/storage/shared-externals.repository.ts
|
|
2127
2429
|
var createSharedExternalsRepository = (config) => {
|
|
2128
2430
|
const STORAGE = config.storage(
|
|
2129
2431
|
"shared-externals",
|
|
@@ -2189,7 +2491,7 @@ var createSharedExternalsRepository = (config) => {
|
|
|
2189
2491
|
};
|
|
2190
2492
|
};
|
|
2191
2493
|
|
|
2192
|
-
// src/lib/3.adapters/browser/sse-handler.ts
|
|
2494
|
+
// src/lib/core/3.adapters/browser/sse-handler.ts
|
|
2193
2495
|
var createSSEHandler = (config) => {
|
|
2194
2496
|
const subscribers = [];
|
|
2195
2497
|
return {
|
|
@@ -2215,670 +2517,351 @@ var createSSEHandler = (config) => {
|
|
|
2215
2517
|
};
|
|
2216
2518
|
};
|
|
2217
2519
|
|
|
2218
|
-
// src/lib/
|
|
2219
|
-
var cloneEntry = (name, raw) => {
|
|
2220
|
-
try {
|
|
2221
|
-
if (typeof structuredClone === "function") {
|
|
2222
|
-
return structuredClone(raw);
|
|
2223
|
-
}
|
|
2224
|
-
} catch {
|
|
2225
|
-
}
|
|
2226
|
-
try {
|
|
2227
|
-
return JSON.parse(JSON.stringify(raw));
|
|
2228
|
-
} catch {
|
|
2229
|
-
}
|
|
2230
|
-
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
2231
|
-
};
|
|
2232
|
-
|
|
2233
|
-
// src/lib/3.adapters/storage/chunk.repository.ts
|
|
2520
|
+
// src/lib/core/3.adapters/storage/chunk.repository.ts
|
|
2234
2521
|
var createChunkRepository = (config) => {
|
|
2235
2522
|
const STORAGE = config.storage("shared-chunks", {});
|
|
2236
2523
|
if (config.clearStorage) STORAGE.clear();
|
|
2237
2524
|
const _cache = STORAGE.get() ?? {};
|
|
2238
2525
|
return {
|
|
2239
2526
|
addOrReplace: function(remoteName, bundleName, chunks) {
|
|
2240
|
-
if (!_cache[remoteName]) _cache[remoteName] = {};
|
|
2241
|
-
_cache[remoteName][bundleName] = chunks;
|
|
2242
|
-
return this;
|
|
2243
|
-
},
|
|
2244
|
-
tryGet: function(remoteName, bundleName) {
|
|
2245
|
-
return Optional.of(_cache[remoteName]?.[bundleName]);
|
|
2246
|
-
},
|
|
2247
|
-
commit: function() {
|
|
2248
|
-
STORAGE.set(_cache);
|
|
2249
|
-
return this;
|
|
2250
|
-
}
|
|
2251
|
-
};
|
|
2252
|
-
};
|
|
2253
|
-
|
|
2254
|
-
// src/lib/5.di/driving.factory.ts
|
|
2255
|
-
var createDriving = (config) => {
|
|
2256
|
-
const adapters = {
|
|
2257
|
-
versionCheck: createVersionCheck(),
|
|
2258
|
-
manifestProvider: createManifestProvider(),
|
|
2259
|
-
remoteEntryProvider: createRemoteEntryProvider(),
|
|
2260
|
-
remoteInfoRepo: createRemoteInfoRepository(config),
|
|
2261
|
-
scopedExternalsRepo: createScopedExternalsRepository(config),
|
|
2262
|
-
sharedExternalsRepo: createSharedExternalsRepository(config),
|
|
2263
|
-
sharedChunksRepo: createChunkRepository(config),
|
|
2264
|
-
browser: createBrowser(config),
|
|
2265
|
-
sse: createSSEHandler(config)
|
|
2266
|
-
};
|
|
2267
|
-
return { adapters, config };
|
|
2268
|
-
};
|
|
2269
|
-
|
|
2270
|
-
// src/lib/4.config/import-map/trusted-types.ts
|
|
2271
|
-
var IMPORT_MAP_KEYS = /* @__PURE__ */ new Set(["imports", "scopes", "integrity"]);
|
|
2272
|
-
var validateImportMapJSON = (input) => {
|
|
2273
|
-
let parsed;
|
|
2274
|
-
try {
|
|
2275
|
-
parsed = JSON.parse(input);
|
|
2276
|
-
} catch {
|
|
2277
|
-
throw new TypeError("[nf-orchestrator] trusted-types: import map is not valid JSON");
|
|
2278
|
-
}
|
|
2279
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
2280
|
-
throw new TypeError("[nf-orchestrator] trusted-types: import map must be a plain object");
|
|
2281
|
-
}
|
|
2282
|
-
for (const key of Object.keys(parsed)) {
|
|
2283
|
-
if (!IMPORT_MAP_KEYS.has(key)) {
|
|
2284
|
-
throw new TypeError(`[nf-orchestrator] trusted-types: unexpected key "${key}" in import map`);
|
|
2285
|
-
}
|
|
2286
|
-
}
|
|
2287
|
-
return input;
|
|
2288
|
-
};
|
|
2289
|
-
var validateScriptURL = (input) => {
|
|
2290
|
-
const base = typeof location !== "undefined" ? location.href : "http://localhost/";
|
|
2291
|
-
let url;
|
|
2292
|
-
try {
|
|
2293
|
-
url = new URL(input, base);
|
|
2294
|
-
} catch {
|
|
2295
|
-
throw new TypeError(`[nf-orchestrator] trusted-types: invalid script URL "${input}"`);
|
|
2296
|
-
}
|
|
2297
|
-
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
2298
|
-
throw new TypeError(
|
|
2299
|
-
`[nf-orchestrator] trusted-types: disallowed protocol "${url.protocol}" for script URL`
|
|
2300
|
-
);
|
|
2301
|
-
}
|
|
2302
|
-
return input;
|
|
2303
|
-
};
|
|
2304
|
-
var passThroughPolicy = {
|
|
2305
|
-
createScript: (input) => input,
|
|
2306
|
-
createScriptURL: (input) => input
|
|
2307
|
-
};
|
|
2308
|
-
var cachedPolicy = null;
|
|
2309
|
-
var getTrustedTypesPolicy = (name = "nfo") => {
|
|
2310
|
-
if (name === false) return passThroughPolicy;
|
|
2311
|
-
if (cachedPolicy) return cachedPolicy;
|
|
2312
|
-
const factory = globalThis.trustedTypes;
|
|
2313
|
-
if (!factory) {
|
|
2314
|
-
cachedPolicy = passThroughPolicy;
|
|
2315
|
-
return cachedPolicy;
|
|
2316
|
-
}
|
|
2317
|
-
const native = factory.createPolicy(name, {
|
|
2318
|
-
createScript: validateImportMapJSON,
|
|
2319
|
-
createScriptURL: validateScriptURL
|
|
2320
|
-
});
|
|
2321
|
-
cachedPolicy = {
|
|
2322
|
-
createScript: (input) => native.createScript(input),
|
|
2323
|
-
createScriptURL: (input) => native.createScriptURL(input)
|
|
2324
|
-
};
|
|
2325
|
-
return cachedPolicy;
|
|
2326
|
-
};
|
|
2327
|
-
|
|
2328
|
-
// src/lib/4.config/import-map/replace-in-dom.ts
|
|
2329
|
-
var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts = {}) => {
|
|
2330
|
-
if (opts?.override) {
|
|
2331
|
-
document.head.querySelectorAll(`script[type="${mapType}"]`).forEach((importMap2) => importMap2.remove());
|
|
2332
|
-
}
|
|
2333
|
-
const policy = getTrustedTypesPolicy(trustedTypesPolicyName);
|
|
2334
|
-
document.head.appendChild(
|
|
2335
|
-
Object.assign(document.createElement("script"), {
|
|
2336
|
-
type: mapType,
|
|
2337
|
-
text: policy.createScript(JSON.stringify(importMap))
|
|
2338
|
-
})
|
|
2339
|
-
);
|
|
2340
|
-
return Promise.resolve(importMap);
|
|
2341
|
-
};
|
|
2342
|
-
|
|
2343
|
-
// src/lib/4.config/import-map/use-default.ts
|
|
2344
|
-
var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
2345
|
-
loadModuleFn: (url) => {
|
|
2346
|
-
const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);
|
|
2347
|
-
return import(
|
|
2348
|
-
/* @vite-ignore */
|
|
2349
|
-
trusted
|
|
2350
|
-
);
|
|
2351
|
-
},
|
|
2352
|
-
setImportMapFn: replaceInDOM("importmap", trustedTypesPolicyName),
|
|
2353
|
-
reloadBrowserFn: () => {
|
|
2354
|
-
window.location.reload();
|
|
2355
|
-
}
|
|
2356
|
-
});
|
|
2357
|
-
|
|
2358
|
-
// src/lib/4.config/import-map/import-map.config.ts
|
|
2359
|
-
var createImportMapConfig = (o) => {
|
|
2360
|
-
const fallback = useDefaultImportMap(o.trustedTypesPolicyName);
|
|
2361
|
-
return {
|
|
2362
|
-
setImportMapFn: o.setImportMapFn ?? fallback.setImportMapFn,
|
|
2363
|
-
loadModuleFn: o.loadModuleFn ?? fallback.loadModuleFn,
|
|
2364
|
-
reloadBrowserFn: o.reloadBrowserFn ?? fallback.reloadBrowserFn
|
|
2365
|
-
};
|
|
2366
|
-
};
|
|
2367
|
-
|
|
2368
|
-
// src/lib/4.config/host/host.config.ts
|
|
2369
|
-
var createHostConfig = (override) => {
|
|
2370
|
-
const extras = override?.manifestIntegrity ? { manifestIntegrity: override.manifestIntegrity } : {};
|
|
2371
|
-
if (!override?.hostRemoteEntry) {
|
|
2372
|
-
return { hostRemoteEntry: false, ...extras };
|
|
2373
|
-
}
|
|
2374
|
-
if (typeof override.hostRemoteEntry === "string") {
|
|
2375
|
-
return {
|
|
2376
|
-
hostRemoteEntry: {
|
|
2377
|
-
name: "__NF-HOST__",
|
|
2378
|
-
url: override.hostRemoteEntry
|
|
2379
|
-
},
|
|
2380
|
-
...extras
|
|
2381
|
-
};
|
|
2382
|
-
}
|
|
2383
|
-
return {
|
|
2384
|
-
hostRemoteEntry: {
|
|
2385
|
-
name: "__NF-HOST__",
|
|
2386
|
-
...override.hostRemoteEntry
|
|
2387
|
-
},
|
|
2388
|
-
...extras
|
|
2389
|
-
};
|
|
2390
|
-
};
|
|
2391
|
-
|
|
2392
|
-
// src/lib/4.config/logging/noop.logger.ts
|
|
2393
|
-
var noopLogger = {
|
|
2394
|
-
debug: () => {
|
|
2395
|
-
},
|
|
2396
|
-
error: () => {
|
|
2397
|
-
},
|
|
2398
|
-
warn: () => {
|
|
2399
|
-
}
|
|
2400
|
-
};
|
|
2401
|
-
|
|
2402
|
-
// src/lib/2.app/config/log.contract.ts
|
|
2403
|
-
var LogLevel = {
|
|
2404
|
-
debug: 0,
|
|
2405
|
-
warn: 1,
|
|
2406
|
-
error: 2
|
|
2407
|
-
};
|
|
2408
|
-
|
|
2409
|
-
// src/lib/4.config/logging/log.handler.ts
|
|
2410
|
-
var createLogHandler = (logger, logLevel) => {
|
|
2411
|
-
const logTypes = Object.keys(LogLevel).filter((key) => isNaN(Number(key)));
|
|
2412
|
-
return logTypes.reduce(
|
|
2413
|
-
(acc, logMessageType) => {
|
|
2414
|
-
return {
|
|
2415
|
-
...acc,
|
|
2416
|
-
[logMessageType]: (step, message, details) => {
|
|
2417
|
-
if (LogLevel[logMessageType] >= LogLevel[logLevel]) {
|
|
2418
|
-
logger[logMessageType](step, message, details);
|
|
2419
|
-
}
|
|
2420
|
-
}
|
|
2421
|
-
};
|
|
2422
|
-
},
|
|
2423
|
-
{ level: logLevel }
|
|
2424
|
-
);
|
|
2425
|
-
};
|
|
2426
|
-
|
|
2427
|
-
// src/lib/4.config/logging/log.config.ts
|
|
2428
|
-
var createLogConfig = ({ logger, logLevel, sse }) => ({
|
|
2429
|
-
log: createLogHandler(logger ?? noopLogger, logLevel ?? "error"),
|
|
2430
|
-
sse: !!sse
|
|
2431
|
-
});
|
|
2432
|
-
|
|
2433
|
-
// src/lib/4.config/storage/global-this.storage.ts
|
|
2434
|
-
var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
2435
|
-
if (!globalThis[namespace]) {
|
|
2436
|
-
globalThis[namespace] = {};
|
|
2437
|
-
}
|
|
2438
|
-
const storage = globalThis[namespace];
|
|
2439
|
-
if (!storage[key]) storage[key] = initialValue;
|
|
2440
|
-
const entry = {
|
|
2441
|
-
get() {
|
|
2442
|
-
return cloneEntry(key, storage[key]);
|
|
2527
|
+
if (!_cache[remoteName]) _cache[remoteName] = {};
|
|
2528
|
+
_cache[remoteName][bundleName] = chunks;
|
|
2529
|
+
return this;
|
|
2443
2530
|
},
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
return entry;
|
|
2531
|
+
tryGet: function(remoteName, bundleName) {
|
|
2532
|
+
return Optional.of(_cache[remoteName]?.[bundleName]);
|
|
2447
2533
|
},
|
|
2448
|
-
|
|
2449
|
-
|
|
2534
|
+
commit: function() {
|
|
2535
|
+
STORAGE.set(_cache);
|
|
2450
2536
|
return this;
|
|
2451
2537
|
}
|
|
2452
2538
|
};
|
|
2453
|
-
return entry;
|
|
2454
|
-
};
|
|
2455
|
-
|
|
2456
|
-
// src/lib/4.config/storage/storage.config.ts
|
|
2457
|
-
var createStorageConfig = (override) => ({
|
|
2458
|
-
storage: override.storage ? override.storage(override.storageNamespace ?? "__NATIVE_FEDERATION__") : globalThisStorageEntry(override.storageNamespace ?? "__NATIVE_FEDERATION__"),
|
|
2459
|
-
clearStorage: override.clearStorage ?? false
|
|
2460
|
-
});
|
|
2461
|
-
|
|
2462
|
-
// src/lib/4.config/mode/default.profile.ts
|
|
2463
|
-
var defaultProfile = {
|
|
2464
|
-
latestSharedExternal: false,
|
|
2465
|
-
overrideCachedRemotes: "init-only",
|
|
2466
|
-
overrideCachedRemotesIfURLMatches: false
|
|
2467
2539
|
};
|
|
2468
2540
|
|
|
2469
|
-
// src/lib/
|
|
2470
|
-
var
|
|
2471
|
-
const
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
strictExternalVersion: override.strict?.strictExternalVersion ?? false,
|
|
2482
|
-
strictImportMap: override.strict?.strictImportMap ?? false
|
|
2483
|
-
};
|
|
2484
|
-
return {
|
|
2485
|
-
strict: strictnessConfig,
|
|
2486
|
-
profile: { ...defaultProfile, ...override.profile ?? {} }
|
|
2541
|
+
// src/lib/core/5.di/driving.factory.ts
|
|
2542
|
+
var createDriving = (config) => {
|
|
2543
|
+
const adapters = {
|
|
2544
|
+
versionCheck: createVersionCheck(),
|
|
2545
|
+
manifestProvider: createManifestProvider(),
|
|
2546
|
+
remoteEntryProvider: createRemoteEntryProvider(),
|
|
2547
|
+
remoteInfoRepo: createRemoteInfoRepository(config),
|
|
2548
|
+
scopedExternalsRepo: createScopedExternalsRepository(config),
|
|
2549
|
+
sharedExternalsRepo: createSharedExternalsRepository(config),
|
|
2550
|
+
sharedChunksRepo: createChunkRepository(config),
|
|
2551
|
+
browser: createBrowser(config),
|
|
2552
|
+
sse: createSSEHandler(config)
|
|
2487
2553
|
};
|
|
2554
|
+
return { adapters, config };
|
|
2488
2555
|
};
|
|
2489
2556
|
|
|
2490
|
-
// src/lib/
|
|
2491
|
-
var
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
// src/lib/2.app/flows/dynamic-init/convert-to-import-map.ts
|
|
2500
|
-
function createConvertToImportMap({ log }, ports) {
|
|
2501
|
-
return ({ entry, actions }) => {
|
|
2502
|
-
const importMap = { imports: {} };
|
|
2503
|
-
addExternals(entry, actions, importMap);
|
|
2504
|
-
addRemoteInfos(entry, importMap);
|
|
2505
|
-
log.debug(9, `[${entry.name}] Processed actions:`, actions);
|
|
2506
|
-
return Promise.resolve(importMap);
|
|
2507
|
-
};
|
|
2508
|
-
function addExternals(remoteEntry, actions, importMap) {
|
|
2509
|
-
if (!remoteEntry.shared) {
|
|
2510
|
-
return;
|
|
2511
|
-
}
|
|
2512
|
-
const remoteEntryScope = getScope(remoteEntry.url);
|
|
2513
|
-
const integrityMap = remoteEntry.integrity;
|
|
2514
|
-
const chunkBundles = /* @__PURE__ */ new Set(["mapping-or-exposed"]);
|
|
2515
|
-
remoteEntry.shared.forEach((external) => {
|
|
2516
|
-
if (!external.singleton) {
|
|
2517
|
-
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2518
|
-
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2519
|
-
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2520
|
-
if (external?.bundle) chunkBundles.add(external?.bundle);
|
|
2521
|
-
return;
|
|
2522
|
-
}
|
|
2523
|
-
if (!actions[external.packageName]) {
|
|
2524
|
-
log.warn(
|
|
2525
|
-
9,
|
|
2526
|
-
`[${remoteEntry.name}] No action defined for shared external '${external.packageName}', skipping.`
|
|
2527
|
-
);
|
|
2528
|
-
return;
|
|
2529
|
-
}
|
|
2530
|
-
if (actions[external.packageName].action === "skip") {
|
|
2531
|
-
if (!external.shareScope) return;
|
|
2532
|
-
if (actions[external.packageName].override) {
|
|
2533
|
-
addToScopes(
|
|
2534
|
-
remoteEntryScope,
|
|
2535
|
-
external.packageName,
|
|
2536
|
-
actions[external.packageName].override,
|
|
2537
|
-
importMap
|
|
2538
|
-
);
|
|
2539
|
-
return;
|
|
2540
|
-
}
|
|
2541
|
-
}
|
|
2542
|
-
if (external?.bundle) chunkBundles.add(external?.bundle);
|
|
2543
|
-
if (actions[external.packageName].action === "scope") {
|
|
2544
|
-
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2545
|
-
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2546
|
-
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2547
|
-
return;
|
|
2548
|
-
}
|
|
2549
|
-
if (external.shareScope) {
|
|
2550
|
-
const url2 = join(remoteEntryScope, external.outFileName);
|
|
2551
|
-
addToScopes(remoteEntryScope, external.packageName, url2, importMap);
|
|
2552
|
-
addIntegrity(importMap, url2, integrityMap, external.outFileName);
|
|
2553
|
-
return;
|
|
2554
|
-
}
|
|
2555
|
-
const url = join(remoteEntryScope, external.outFileName);
|
|
2556
|
-
importMap.imports[external.packageName] = url;
|
|
2557
|
-
addIntegrity(importMap, url, integrityMap, external.outFileName);
|
|
2558
|
-
});
|
|
2559
|
-
addChunkImports(importMap, remoteEntry, remoteEntryScope, chunkBundles);
|
|
2557
|
+
// src/lib/core/4.config/import-map/trusted-types.ts
|
|
2558
|
+
var IMPORT_MAP_KEYS = /* @__PURE__ */ new Set(["imports", "scopes", "integrity"]);
|
|
2559
|
+
var validateImportMapJSON = (input) => {
|
|
2560
|
+
let parsed;
|
|
2561
|
+
try {
|
|
2562
|
+
parsed = JSON.parse(input);
|
|
2563
|
+
} catch {
|
|
2564
|
+
throw new TypeError("[nf-orchestrator] trusted-types: import map is not valid JSON");
|
|
2560
2565
|
}
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
if (!importMap.scopes[scope]) importMap.scopes[scope] = {};
|
|
2564
|
-
importMap.scopes[scope][packageName] = url;
|
|
2566
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
2567
|
+
throw new TypeError("[nf-orchestrator] trusted-types: import map must be a plain object");
|
|
2565
2568
|
}
|
|
2566
|
-
|
|
2567
|
-
if (!
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
const moduleName = join(remoteEntry.name, exposed.key);
|
|
2571
|
-
const moduleUrl = join(scope, exposed.outFileName);
|
|
2572
|
-
importMap.imports[moduleName] = moduleUrl;
|
|
2573
|
-
addIntegrity(importMap, moduleUrl, remoteEntry.integrity, exposed.outFileName);
|
|
2574
|
-
});
|
|
2569
|
+
for (const key of Object.keys(parsed)) {
|
|
2570
|
+
if (!IMPORT_MAP_KEYS.has(key)) {
|
|
2571
|
+
throw new TypeError(`[nf-orchestrator] trusted-types: unexpected key "${key}" in import map`);
|
|
2572
|
+
}
|
|
2575
2573
|
}
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
});
|
|
2586
|
-
return importMap;
|
|
2574
|
+
return input;
|
|
2575
|
+
};
|
|
2576
|
+
var validateScriptURL = (input) => {
|
|
2577
|
+
const base = typeof location !== "undefined" ? location.href : "http://localhost/";
|
|
2578
|
+
let url;
|
|
2579
|
+
try {
|
|
2580
|
+
url = new URL(input, base);
|
|
2581
|
+
} catch {
|
|
2582
|
+
throw new TypeError(`[nf-orchestrator] trusted-types: invalid script URL "${input}"`);
|
|
2587
2583
|
}
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
importMap.integrity[url] = hash;
|
|
2584
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
2585
|
+
throw new TypeError(
|
|
2586
|
+
`[nf-orchestrator] trusted-types: disallowed protocol "${url.protocol}" for script URL`
|
|
2587
|
+
);
|
|
2593
2588
|
}
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
// src/lib/2.app/flows/dynamic-init/get-remote-entry.ts
|
|
2597
|
-
var normalizeRemoteRef = (remote) => {
|
|
2598
|
-
if (!remote) return {};
|
|
2599
|
-
if (typeof remote === "string") return { name: remote };
|
|
2600
|
-
return remote;
|
|
2589
|
+
return input;
|
|
2601
2590
|
};
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
);
|
|
2615
|
-
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2616
|
-
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2617
|
-
if (config.strict.strictRemoteEntry) {
|
|
2618
|
-
config.log.error(7, errorMsg);
|
|
2619
|
-
throw new NFError("Could not fetch remote entry");
|
|
2620
|
-
}
|
|
2621
|
-
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2622
|
-
}
|
|
2623
|
-
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2624
|
-
remoteEntry.override = true;
|
|
2625
|
-
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2626
|
-
}
|
|
2627
|
-
return Optional.of(checkForSSE(remoteEntry));
|
|
2628
|
-
} catch (error) {
|
|
2629
|
-
config.log.error(
|
|
2630
|
-
7,
|
|
2631
|
-
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2632
|
-
error
|
|
2633
|
-
);
|
|
2634
|
-
return Promise.reject(
|
|
2635
|
-
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2636
|
-
);
|
|
2637
|
-
}
|
|
2638
|
-
};
|
|
2639
|
-
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2640
|
-
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2641
|
-
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2642
|
-
).orElse(false);
|
|
2591
|
+
var passThroughPolicy = {
|
|
2592
|
+
createScript: (input) => input,
|
|
2593
|
+
createScriptURL: (input) => input
|
|
2594
|
+
};
|
|
2595
|
+
var cachedPolicy = null;
|
|
2596
|
+
var getTrustedTypesPolicy = (name = "nfo") => {
|
|
2597
|
+
if (name === false) return passThroughPolicy;
|
|
2598
|
+
if (cachedPolicy) return cachedPolicy;
|
|
2599
|
+
const factory = globalThis.trustedTypes;
|
|
2600
|
+
if (!factory) {
|
|
2601
|
+
cachedPolicy = passThroughPolicy;
|
|
2602
|
+
return cachedPolicy;
|
|
2643
2603
|
}
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2604
|
+
const native = factory.createPolicy(name, {
|
|
2605
|
+
createScript: validateImportMapJSON,
|
|
2606
|
+
createScriptURL: validateScriptURL
|
|
2607
|
+
});
|
|
2608
|
+
cachedPolicy = {
|
|
2609
|
+
createScript: (input) => native.createScript(input),
|
|
2610
|
+
createScriptURL: (input) => String(native.createScriptURL(input))
|
|
2611
|
+
};
|
|
2612
|
+
return cachedPolicy;
|
|
2613
|
+
};
|
|
2614
|
+
|
|
2615
|
+
// src/lib/core/4.config/import-map/replace-in-dom.ts
|
|
2616
|
+
var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts = {}) => {
|
|
2617
|
+
if (opts?.override) {
|
|
2618
|
+
document.head.querySelectorAll(`script[type="${mapType}"]`).forEach((importMap2) => importMap2.remove());
|
|
2656
2619
|
}
|
|
2657
|
-
|
|
2620
|
+
const policy = getTrustedTypesPolicy(trustedTypesPolicyName);
|
|
2621
|
+
document.head.appendChild(
|
|
2622
|
+
Object.assign(document.createElement("script"), {
|
|
2623
|
+
type: mapType,
|
|
2624
|
+
text: policy.createScript(JSON.stringify(importMap))
|
|
2625
|
+
})
|
|
2626
|
+
);
|
|
2627
|
+
return Promise.resolve(importMap);
|
|
2628
|
+
};
|
|
2658
2629
|
|
|
2659
|
-
// src/lib/
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
};
|
|
2672
|
-
function removeCachedRemoteEntry(remoteEntry) {
|
|
2673
|
-
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
2674
|
-
ports.scopedExternalsRepo.remove(remoteEntry.name);
|
|
2675
|
-
ports.sharedExternalsRepo.removeFromAllScopes(remoteEntry.name);
|
|
2630
|
+
// src/lib/core/4.config/import-map/use-default.ts
|
|
2631
|
+
var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
2632
|
+
loadModuleFn: (url) => {
|
|
2633
|
+
const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);
|
|
2634
|
+
return import(
|
|
2635
|
+
/* @vite-ignore */
|
|
2636
|
+
trusted
|
|
2637
|
+
);
|
|
2638
|
+
},
|
|
2639
|
+
setImportMapFn: replaceInDOM("importmap", trustedTypesPolicyName),
|
|
2640
|
+
reloadBrowserFn: () => {
|
|
2641
|
+
window.location.reload();
|
|
2676
2642
|
}
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2643
|
+
});
|
|
2644
|
+
|
|
2645
|
+
// src/lib/core/4.config/import-map/import-map.config.ts
|
|
2646
|
+
var createImportMapConfig = (o) => {
|
|
2647
|
+
const fallback = useDefaultImportMap(o.trustedTypesPolicyName);
|
|
2648
|
+
return {
|
|
2649
|
+
setImportMapFn: o.setImportMapFn ?? fallback.setImportMapFn,
|
|
2650
|
+
loadModuleFn: o.loadModuleFn ?? fallback.loadModuleFn,
|
|
2651
|
+
reloadBrowserFn: o.reloadBrowserFn ?? fallback.reloadBrowserFn
|
|
2652
|
+
};
|
|
2653
|
+
};
|
|
2654
|
+
|
|
2655
|
+
// src/lib/core/4.config/host/host.config.ts
|
|
2656
|
+
var createHostConfig = (override) => {
|
|
2657
|
+
const extras = override?.manifestIntegrity ? { manifestIntegrity: override.manifestIntegrity } : {};
|
|
2658
|
+
if (!override?.hostRemoteEntry) {
|
|
2659
|
+
return { hostRemoteEntry: false, ...extras };
|
|
2685
2660
|
}
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
}
|
|
2695
|
-
config.log.warn(8, errorMsg);
|
|
2696
|
-
}
|
|
2697
|
-
if (external.singleton) {
|
|
2698
|
-
const { action, sharedVersion } = addSharedExternal(remoteEntry.name, external);
|
|
2699
|
-
actions[external.packageName] = { action };
|
|
2700
|
-
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2701
|
-
actions[external.packageName].override = ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2702
|
-
config.log.error(
|
|
2703
|
-
8,
|
|
2704
|
-
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2705
|
-
);
|
|
2706
|
-
return new NFError(
|
|
2707
|
-
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2708
|
-
);
|
|
2709
|
-
});
|
|
2710
|
-
}
|
|
2711
|
-
} else {
|
|
2712
|
-
addScopedExternal(remoteEntry.name, external);
|
|
2713
|
-
}
|
|
2714
|
-
});
|
|
2715
|
-
return actions;
|
|
2661
|
+
if (typeof override.hostRemoteEntry === "string") {
|
|
2662
|
+
return {
|
|
2663
|
+
hostRemoteEntry: {
|
|
2664
|
+
name: "__NF-HOST__",
|
|
2665
|
+
url: override.hostRemoteEntry
|
|
2666
|
+
},
|
|
2667
|
+
...extras
|
|
2668
|
+
};
|
|
2716
2669
|
}
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2670
|
+
return {
|
|
2671
|
+
hostRemoteEntry: {
|
|
2672
|
+
name: "__NF-HOST__",
|
|
2673
|
+
...override.hostRemoteEntry
|
|
2674
|
+
},
|
|
2675
|
+
...extras
|
|
2676
|
+
};
|
|
2677
|
+
};
|
|
2678
|
+
|
|
2679
|
+
// src/lib/core/4.config/logging/noop.logger.ts
|
|
2680
|
+
var noopLogger = {
|
|
2681
|
+
debug: () => {
|
|
2682
|
+
},
|
|
2683
|
+
error: () => {
|
|
2684
|
+
},
|
|
2685
|
+
warn: () => {
|
|
2726
2686
|
}
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
action = "scope";
|
|
2748
|
-
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}'`;
|
|
2749
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2750
|
-
config.log.error(8, errorMsg);
|
|
2751
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2752
|
-
}
|
|
2753
|
-
config.log.warn(8, errorMsg);
|
|
2754
|
-
}
|
|
2755
|
-
const matchingVersion = cached.versions.find((cached2) => cached2.tag === tag);
|
|
2756
|
-
if (!!matchingVersion) {
|
|
2757
|
-
if (remote.strictVersion && matchingVersion.remotes[0].requiredVersion !== remote.requiredVersion) {
|
|
2758
|
-
const errorMsg = `[${remoteName}][${sharedInfo.packageName}@${sharedInfo.version}] Required version '${remote.requiredVersion}' does not match existing '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
2759
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2760
|
-
config.log.error(8, errorMsg);
|
|
2761
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2687
|
+
};
|
|
2688
|
+
|
|
2689
|
+
// src/lib/core/2.app/config/log.contract.ts
|
|
2690
|
+
var LogLevel = {
|
|
2691
|
+
debug: 0,
|
|
2692
|
+
warn: 1,
|
|
2693
|
+
error: 2
|
|
2694
|
+
};
|
|
2695
|
+
|
|
2696
|
+
// src/lib/core/4.config/logging/log.handler.ts
|
|
2697
|
+
var createLogHandler = (logger, logLevel) => {
|
|
2698
|
+
const logTypes = Object.keys(LogLevel).filter((key) => isNaN(Number(key)));
|
|
2699
|
+
return logTypes.reduce(
|
|
2700
|
+
(acc, logMessageType) => {
|
|
2701
|
+
return {
|
|
2702
|
+
...acc,
|
|
2703
|
+
[logMessageType]: (step, message, details) => {
|
|
2704
|
+
if (LogLevel[logMessageType] >= LogLevel[logLevel]) {
|
|
2705
|
+
logger[logMessageType](step, message, details);
|
|
2706
|
+
}
|
|
2762
2707
|
}
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2708
|
+
};
|
|
2709
|
+
},
|
|
2710
|
+
{ level: logLevel }
|
|
2711
|
+
);
|
|
2712
|
+
};
|
|
2713
|
+
|
|
2714
|
+
// src/lib/core/4.config/logging/log.config.ts
|
|
2715
|
+
var createLogConfig = ({ logger, logLevel, sse }) => ({
|
|
2716
|
+
log: createLogHandler(logger ?? noopLogger, logLevel ?? "error"),
|
|
2717
|
+
sse: !!sse
|
|
2718
|
+
});
|
|
2719
|
+
|
|
2720
|
+
// src/lib/utils/clone-entry.ts
|
|
2721
|
+
var cloneEntry = (name, raw) => {
|
|
2722
|
+
try {
|
|
2723
|
+
if (typeof structuredClone === "function") {
|
|
2724
|
+
return structuredClone(raw);
|
|
2770
2725
|
}
|
|
2771
|
-
|
|
2772
|
-
sharedInfo.packageName,
|
|
2773
|
-
{
|
|
2774
|
-
dirty: cached.dirty,
|
|
2775
|
-
versions: cached.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2776
|
-
},
|
|
2777
|
-
sharedInfo.shareScope
|
|
2778
|
-
);
|
|
2779
|
-
return { action, sharedVersion };
|
|
2726
|
+
} catch {
|
|
2780
2727
|
}
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
file: sharedInfo.outFileName,
|
|
2785
|
-
bundle: sharedInfo.bundle
|
|
2786
|
-
});
|
|
2728
|
+
try {
|
|
2729
|
+
return JSON.parse(JSON.stringify(raw));
|
|
2730
|
+
} catch {
|
|
2787
2731
|
}
|
|
2788
|
-
}
|
|
2732
|
+
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
2733
|
+
};
|
|
2789
2734
|
|
|
2790
|
-
// src/lib/
|
|
2791
|
-
var
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
}
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2735
|
+
// src/lib/core/4.config/storage/global-this.storage.ts
|
|
2736
|
+
var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
2737
|
+
if (!globalThis[namespace]) {
|
|
2738
|
+
globalThis[namespace] = {};
|
|
2739
|
+
}
|
|
2740
|
+
const storage = globalThis[namespace];
|
|
2741
|
+
if (!storage[key]) storage[key] = initialValue;
|
|
2742
|
+
const entry = {
|
|
2743
|
+
get() {
|
|
2744
|
+
return cloneEntry(key, storage[key]);
|
|
2745
|
+
},
|
|
2746
|
+
set(value) {
|
|
2747
|
+
storage[key] = cloneEntry(key, value);
|
|
2748
|
+
return entry;
|
|
2749
|
+
},
|
|
2750
|
+
clear() {
|
|
2751
|
+
storage[key] = cloneEntry(key, initialValue);
|
|
2752
|
+
return this;
|
|
2753
|
+
}
|
|
2754
|
+
};
|
|
2755
|
+
return entry;
|
|
2756
|
+
};
|
|
2757
|
+
|
|
2758
|
+
// src/lib/core/4.config/storage/storage.config.ts
|
|
2759
|
+
var createStorageConfig = (override) => ({
|
|
2760
|
+
storage: override.storage ? override.storage(override.storageNamespace ?? "__NATIVE_FEDERATION__") : globalThisStorageEntry(override.storageNamespace ?? "__NATIVE_FEDERATION__"),
|
|
2761
|
+
clearStorage: override.clearStorage ?? false
|
|
2799
2762
|
});
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2763
|
+
|
|
2764
|
+
// src/lib/core/4.config/mode/default.profile.ts
|
|
2765
|
+
var defaultProfile = {
|
|
2766
|
+
latestSharedExternal: false,
|
|
2767
|
+
skipInvalidExternalVersions: false,
|
|
2768
|
+
overrideCachedRemotes: "init-only",
|
|
2769
|
+
overrideCachedRemotesIfURLMatches: false
|
|
2770
|
+
};
|
|
2771
|
+
|
|
2772
|
+
// src/lib/core/4.config/mode/mode.config.ts
|
|
2773
|
+
var createModeConfig = (override) => {
|
|
2774
|
+
const strictnessConfig = typeof override.strict === "boolean" ? {
|
|
2775
|
+
strictRemoteEntry: override.strict,
|
|
2776
|
+
strictExternalCompatibility: override.strict,
|
|
2777
|
+
strictExternalSameVersionCompatibility: override.strict,
|
|
2778
|
+
strictExternalVersion: override.strict,
|
|
2779
|
+
strictImportMap: override.strict
|
|
2780
|
+
} : {
|
|
2781
|
+
strictRemoteEntry: override.strict?.strictRemoteEntry ?? false,
|
|
2782
|
+
strictExternalCompatibility: override.strict?.strictExternalCompatibility ?? false,
|
|
2783
|
+
strictExternalSameVersionCompatibility: override.strict?.strictExternalSameVersionCompatibility ?? false,
|
|
2784
|
+
strictExternalVersion: override.strict?.strictExternalVersion ?? false,
|
|
2785
|
+
strictImportMap: override.strict?.strictImportMap ?? false
|
|
2786
|
+
};
|
|
2805
2787
|
return {
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
config
|
|
2788
|
+
strict: strictnessConfig,
|
|
2789
|
+
profile: { ...defaultProfile, ...override.profile ?? {} }
|
|
2809
2790
|
};
|
|
2810
2791
|
};
|
|
2811
|
-
|
|
2812
|
-
|
|
2792
|
+
|
|
2793
|
+
// src/lib/core/5.di/config.factory.ts
|
|
2794
|
+
var createConfigHandlers = (overrides) => ({
|
|
2795
|
+
...createImportMapConfig(overrides),
|
|
2796
|
+
...createHostConfig(overrides),
|
|
2797
|
+
...createLogConfig(overrides),
|
|
2798
|
+
...createStorageConfig(overrides),
|
|
2799
|
+
...createModeConfig(overrides)
|
|
2800
|
+
});
|
|
2801
|
+
|
|
2802
|
+
// src/lib/core/5.di/federation-result.factory.ts
|
|
2803
|
+
var createStateDump = (config, adapters) => (msg) => config.log.debug(0, msg, {
|
|
2804
|
+
remotes: { ...adapters.remoteInfoRepo.getAll() },
|
|
2805
|
+
"shared-externals": adapters.sharedExternalsRepo.getScopes({ includeGlobal: true }).reduce(
|
|
2806
|
+
(acc, scope) => ({ ...acc, [scope]: adapters.sharedExternalsRepo.getFromScope(scope) }),
|
|
2807
|
+
{}
|
|
2808
|
+
),
|
|
2809
|
+
"scoped-externals": adapters.scopedExternalsRepo.getAll()
|
|
2810
|
+
});
|
|
2811
|
+
var createFederationResult = ({
|
|
2812
|
+
config,
|
|
2813
2813
|
adapters,
|
|
2814
|
-
|
|
2814
|
+
loadRemoteModule,
|
|
2815
|
+
initRemoteEntryFlow,
|
|
2816
|
+
afterInitRemoteEntry
|
|
2815
2817
|
}) => {
|
|
2816
|
-
const
|
|
2817
|
-
|
|
2818
|
+
const stateDump = createStateDump(config, adapters);
|
|
2819
|
+
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
2820
|
+
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
2821
|
+
return initRemoteEntryFlow(remoteEntryUrl, remote).catch((e) => {
|
|
2822
|
+
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
2823
|
+
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
2824
|
+
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
2825
|
+
return Promise.resolve();
|
|
2826
|
+
}).then(() => afterInitRemoteEntry?.()).then(() => result);
|
|
2818
2827
|
};
|
|
2819
|
-
const
|
|
2828
|
+
const result = {
|
|
2820
2829
|
config,
|
|
2821
2830
|
adapters,
|
|
2831
|
+
loadRemoteModule,
|
|
2832
|
+
load: loadRemoteModule,
|
|
2833
|
+
as: () => ({
|
|
2834
|
+
loadRemoteModule,
|
|
2835
|
+
load: loadRemoteModule
|
|
2836
|
+
}),
|
|
2822
2837
|
initRemoteEntry
|
|
2823
|
-
}
|
|
2824
|
-
return
|
|
2838
|
+
};
|
|
2839
|
+
return result;
|
|
2825
2840
|
};
|
|
2826
2841
|
|
|
2827
|
-
// src/lib/init-federation.ts
|
|
2842
|
+
// src/lib/core/init-federation.ts
|
|
2828
2843
|
var initFederation = (remotesOrManifestUrl, options = {}) => {
|
|
2829
2844
|
const { adapters, config } = createDriving(createConfigHandlers(options));
|
|
2830
|
-
const
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
});
|
|
2838
|
-
const initFlow = createInitFlow(INIT_FLOW_FACTORY({ adapters, config }));
|
|
2839
|
-
const dynamicInitFlow = createDynamicInitFlow(DYNAMIC_INIT_FLOW_FACTORY({ config, adapters }));
|
|
2840
|
-
return initFlow(remotesOrManifestUrl).then(({ loadRemoteModule }) => {
|
|
2841
|
-
const output = {
|
|
2842
|
-
config,
|
|
2843
|
-
adapters,
|
|
2844
|
-
loadRemoteModule,
|
|
2845
|
-
as: () => ({
|
|
2846
|
-
loadRemoteModule,
|
|
2847
|
-
load: loadRemoteModule
|
|
2848
|
-
}),
|
|
2849
|
-
load: loadRemoteModule
|
|
2850
|
-
};
|
|
2851
|
-
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
2852
|
-
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
2853
|
-
return dynamicInitFlow(remoteEntryUrl, remote).catch((e) => {
|
|
2854
|
-
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
2855
|
-
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
2856
|
-
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
2857
|
-
return Promise.resolve();
|
|
2858
|
-
}).then(() => ({
|
|
2859
|
-
...output,
|
|
2860
|
-
initRemoteEntry
|
|
2861
|
-
}));
|
|
2862
|
-
};
|
|
2863
|
-
return {
|
|
2864
|
-
...output,
|
|
2865
|
-
initRemoteEntry
|
|
2866
|
-
};
|
|
2867
|
-
}).catch((e) => {
|
|
2868
|
-
stateDump(`[init] STATE DUMP`);
|
|
2845
|
+
const factory = INIT_FLOW_FACTORY({ adapters, config });
|
|
2846
|
+
const initFlow = createInitFlow(factory);
|
|
2847
|
+
const initRemoteEntryFlow = createInitRemoteEntryFlow(factory);
|
|
2848
|
+
return initFlow(remotesOrManifestUrl).then(
|
|
2849
|
+
({ loadRemoteModule }) => createFederationResult({ config, adapters, loadRemoteModule, initRemoteEntryFlow })
|
|
2850
|
+
).catch((e) => {
|
|
2851
|
+
createStateDump(config, adapters)(`[init] STATE DUMP`);
|
|
2869
2852
|
return Promise.reject(e);
|
|
2870
2853
|
});
|
|
2871
2854
|
};
|
|
2872
2855
|
export {
|
|
2873
|
-
DYNAMIC_INIT_FLOW_FACTORY,
|
|
2874
2856
|
INIT_FLOW_FACTORY,
|
|
2875
2857
|
NFError,
|
|
2876
2858
|
createConfigHandlers,
|
|
2877
2859
|
createDriving,
|
|
2878
|
-
|
|
2879
|
-
createDynamicInitFlow,
|
|
2860
|
+
createFederationResult,
|
|
2880
2861
|
createInitDrivers,
|
|
2881
2862
|
createInitFlow,
|
|
2863
|
+
createInitRemoteEntryFlow,
|
|
2864
|
+
createStateDump,
|
|
2882
2865
|
initFederation
|
|
2883
2866
|
};
|
|
2884
2867
|
//# sourceMappingURL=native-federation-orchestrator.mjs.map
|