@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
package/fesm2022/node.mjs
CHANGED
|
@@ -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,7 @@ var require_valid2 = __commonJS({
|
|
|
1255
1277
|
}
|
|
1256
1278
|
});
|
|
1257
1279
|
|
|
1258
|
-
// src/lib/3.adapters/browser/browser.ts
|
|
1280
|
+
// src/lib/core/3.adapters/browser/browser.ts
|
|
1259
1281
|
var createBrowser = (config) => {
|
|
1260
1282
|
return {
|
|
1261
1283
|
setImportMapFn: config.setImportMapFn,
|
|
@@ -1263,7 +1285,7 @@ var createBrowser = (config) => {
|
|
|
1263
1285
|
};
|
|
1264
1286
|
};
|
|
1265
1287
|
|
|
1266
|
-
// src/lib/3.adapters/checks/version.check.ts
|
|
1288
|
+
// src/lib/core/3.adapters/checks/version.check.ts
|
|
1267
1289
|
var import_valid = __toESM(require_valid());
|
|
1268
1290
|
var import_satisfies = __toESM(require_satisfies());
|
|
1269
1291
|
var import_compare = __toESM(require_compare());
|
|
@@ -1288,7 +1310,7 @@ var createVersionCheck = () => {
|
|
|
1288
1310
|
};
|
|
1289
1311
|
};
|
|
1290
1312
|
|
|
1291
|
-
// src/lib/native-federation.error.ts
|
|
1313
|
+
// src/lib/core/native-federation.error.ts
|
|
1292
1314
|
var NFError = class extends Error {
|
|
1293
1315
|
constructor(message, cause) {
|
|
1294
1316
|
super(message, cause);
|
|
@@ -1334,7 +1356,7 @@ var verifyIntegrity = async (bytes, integrity) => {
|
|
|
1334
1356
|
}
|
|
1335
1357
|
};
|
|
1336
1358
|
|
|
1337
|
-
// src/lib/utils/
|
|
1359
|
+
// src/lib/node/utils/read-source.ts
|
|
1338
1360
|
import * as fs from "node:fs/promises";
|
|
1339
1361
|
import { fileURLToPath } from "node:url";
|
|
1340
1362
|
var isHttpUrl = (input) => input.startsWith("http://") || input.startsWith("https://");
|
|
@@ -1352,7 +1374,7 @@ var readSourceBytes = async (input) => {
|
|
|
1352
1374
|
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
1353
1375
|
};
|
|
1354
1376
|
|
|
1355
|
-
// src/lib/
|
|
1377
|
+
// src/lib/node/adapters/fs-manifest-provider.ts
|
|
1356
1378
|
var createFsManifestProvider = () => {
|
|
1357
1379
|
const formatError = (manifestUrl) => (err) => {
|
|
1358
1380
|
if (err instanceof NFError) throw err;
|
|
@@ -1373,7 +1395,7 @@ var createFsManifestProvider = () => {
|
|
|
1373
1395
|
};
|
|
1374
1396
|
};
|
|
1375
1397
|
|
|
1376
|
-
// src/lib/
|
|
1398
|
+
// src/lib/node/adapters/fs-remote-entry-provider.ts
|
|
1377
1399
|
var createFsRemoteEntryProvider = () => {
|
|
1378
1400
|
const fillEmptyFields = (remoteEntryUrl) => (remoteEntry) => {
|
|
1379
1401
|
if (!remoteEntry.exposes) remoteEntry.exposes = [];
|
|
@@ -1400,7 +1422,7 @@ var createFsRemoteEntryProvider = () => {
|
|
|
1400
1422
|
};
|
|
1401
1423
|
};
|
|
1402
1424
|
|
|
1403
|
-
// src/lib/
|
|
1425
|
+
// src/lib/node/adapters/noop-sse.ts
|
|
1404
1426
|
var createNoopSSE = () => ({
|
|
1405
1427
|
watchRemoteBuilds: () => {
|
|
1406
1428
|
},
|
|
@@ -1463,7 +1485,7 @@ var Optional = class _Optional {
|
|
|
1463
1485
|
}
|
|
1464
1486
|
};
|
|
1465
1487
|
|
|
1466
|
-
// src/lib/3.adapters/storage/remote-info.repository.ts
|
|
1488
|
+
// src/lib/core/3.adapters/storage/remote-info.repository.ts
|
|
1467
1489
|
var createRemoteInfoRepository = (config) => {
|
|
1468
1490
|
const STORAGE = config.storage("remotes", {});
|
|
1469
1491
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1498,7 +1520,7 @@ var createRemoteInfoRepository = (config) => {
|
|
|
1498
1520
|
};
|
|
1499
1521
|
};
|
|
1500
1522
|
|
|
1501
|
-
// src/lib/3.adapters/storage/scoped-externals.repository.ts
|
|
1523
|
+
// src/lib/core/3.adapters/storage/scoped-externals.repository.ts
|
|
1502
1524
|
var createScopedExternalsRepository = (config) => {
|
|
1503
1525
|
const STORAGE = config.storage("scoped-externals", {});
|
|
1504
1526
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1526,11 +1548,11 @@ var createScopedExternalsRepository = (config) => {
|
|
|
1526
1548
|
};
|
|
1527
1549
|
};
|
|
1528
1550
|
|
|
1529
|
-
// src/lib/1.domain/externals/external.contract.ts
|
|
1551
|
+
// src/lib/core/1.domain/externals/external.contract.ts
|
|
1530
1552
|
var GLOBAL_SCOPE = "__GLOBAL__";
|
|
1531
1553
|
var STRICT_SCOPE = "strict";
|
|
1532
1554
|
|
|
1533
|
-
// src/lib/3.adapters/storage/shared-externals.repository.ts
|
|
1555
|
+
// src/lib/core/3.adapters/storage/shared-externals.repository.ts
|
|
1534
1556
|
var createSharedExternalsRepository = (config) => {
|
|
1535
1557
|
const STORAGE = config.storage(
|
|
1536
1558
|
"shared-externals",
|
|
@@ -1596,22 +1618,7 @@ var createSharedExternalsRepository = (config) => {
|
|
|
1596
1618
|
};
|
|
1597
1619
|
};
|
|
1598
1620
|
|
|
1599
|
-
// src/lib/
|
|
1600
|
-
var cloneEntry = (name, raw) => {
|
|
1601
|
-
try {
|
|
1602
|
-
if (typeof structuredClone === "function") {
|
|
1603
|
-
return structuredClone(raw);
|
|
1604
|
-
}
|
|
1605
|
-
} catch {
|
|
1606
|
-
}
|
|
1607
|
-
try {
|
|
1608
|
-
return JSON.parse(JSON.stringify(raw));
|
|
1609
|
-
} catch {
|
|
1610
|
-
}
|
|
1611
|
-
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
1612
|
-
};
|
|
1613
|
-
|
|
1614
|
-
// src/lib/3.adapters/storage/chunk.repository.ts
|
|
1621
|
+
// src/lib/core/3.adapters/storage/chunk.repository.ts
|
|
1615
1622
|
var createChunkRepository = (config) => {
|
|
1616
1623
|
const STORAGE = config.storage("shared-chunks", {});
|
|
1617
1624
|
if (config.clearStorage) STORAGE.clear();
|
|
@@ -1632,7 +1639,7 @@ var createChunkRepository = (config) => {
|
|
|
1632
1639
|
};
|
|
1633
1640
|
};
|
|
1634
1641
|
|
|
1635
|
-
// src/lib/4.config/import-map/trusted-types.ts
|
|
1642
|
+
// src/lib/core/4.config/import-map/trusted-types.ts
|
|
1636
1643
|
var IMPORT_MAP_KEYS = /* @__PURE__ */ new Set(["imports", "scopes", "integrity"]);
|
|
1637
1644
|
var validateImportMapJSON = (input) => {
|
|
1638
1645
|
let parsed;
|
|
@@ -1685,12 +1692,12 @@ var getTrustedTypesPolicy = (name = "nfo") => {
|
|
|
1685
1692
|
});
|
|
1686
1693
|
cachedPolicy = {
|
|
1687
1694
|
createScript: (input) => native.createScript(input),
|
|
1688
|
-
createScriptURL: (input) => native.createScriptURL(input)
|
|
1695
|
+
createScriptURL: (input) => String(native.createScriptURL(input))
|
|
1689
1696
|
};
|
|
1690
1697
|
return cachedPolicy;
|
|
1691
1698
|
};
|
|
1692
1699
|
|
|
1693
|
-
// src/lib/4.config/import-map/replace-in-dom.ts
|
|
1700
|
+
// src/lib/core/4.config/import-map/replace-in-dom.ts
|
|
1694
1701
|
var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts = {}) => {
|
|
1695
1702
|
if (opts?.override) {
|
|
1696
1703
|
document.head.querySelectorAll(`script[type="${mapType}"]`).forEach((importMap2) => importMap2.remove());
|
|
@@ -1705,7 +1712,7 @@ var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts
|
|
|
1705
1712
|
return Promise.resolve(importMap);
|
|
1706
1713
|
};
|
|
1707
1714
|
|
|
1708
|
-
// src/lib/4.config/import-map/use-default.ts
|
|
1715
|
+
// src/lib/core/4.config/import-map/use-default.ts
|
|
1709
1716
|
var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
1710
1717
|
loadModuleFn: (url) => {
|
|
1711
1718
|
const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);
|
|
@@ -1720,7 +1727,7 @@ var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
|
1720
1727
|
}
|
|
1721
1728
|
});
|
|
1722
1729
|
|
|
1723
|
-
// src/lib/4.config/import-map/import-map.config.ts
|
|
1730
|
+
// src/lib/core/4.config/import-map/import-map.config.ts
|
|
1724
1731
|
var createImportMapConfig = (o) => {
|
|
1725
1732
|
const fallback = useDefaultImportMap(o.trustedTypesPolicyName);
|
|
1726
1733
|
return {
|
|
@@ -1730,7 +1737,7 @@ var createImportMapConfig = (o) => {
|
|
|
1730
1737
|
};
|
|
1731
1738
|
};
|
|
1732
1739
|
|
|
1733
|
-
// src/lib/4.config/host/host.config.ts
|
|
1740
|
+
// src/lib/core/4.config/host/host.config.ts
|
|
1734
1741
|
var createHostConfig = (override) => {
|
|
1735
1742
|
const extras = override?.manifestIntegrity ? { manifestIntegrity: override.manifestIntegrity } : {};
|
|
1736
1743
|
if (!override?.hostRemoteEntry) {
|
|
@@ -1754,7 +1761,7 @@ var createHostConfig = (override) => {
|
|
|
1754
1761
|
};
|
|
1755
1762
|
};
|
|
1756
1763
|
|
|
1757
|
-
// src/lib/4.config/logging/noop.logger.ts
|
|
1764
|
+
// src/lib/core/4.config/logging/noop.logger.ts
|
|
1758
1765
|
var noopLogger = {
|
|
1759
1766
|
debug: () => {
|
|
1760
1767
|
},
|
|
@@ -1764,14 +1771,14 @@ var noopLogger = {
|
|
|
1764
1771
|
}
|
|
1765
1772
|
};
|
|
1766
1773
|
|
|
1767
|
-
// src/lib/2.app/config/log.contract.ts
|
|
1774
|
+
// src/lib/core/2.app/config/log.contract.ts
|
|
1768
1775
|
var LogLevel = {
|
|
1769
1776
|
debug: 0,
|
|
1770
1777
|
warn: 1,
|
|
1771
1778
|
error: 2
|
|
1772
1779
|
};
|
|
1773
1780
|
|
|
1774
|
-
// src/lib/4.config/logging/log.handler.ts
|
|
1781
|
+
// src/lib/core/4.config/logging/log.handler.ts
|
|
1775
1782
|
var createLogHandler = (logger, logLevel) => {
|
|
1776
1783
|
const logTypes = Object.keys(LogLevel).filter((key) => isNaN(Number(key)));
|
|
1777
1784
|
return logTypes.reduce(
|
|
@@ -1789,13 +1796,28 @@ var createLogHandler = (logger, logLevel) => {
|
|
|
1789
1796
|
);
|
|
1790
1797
|
};
|
|
1791
1798
|
|
|
1792
|
-
// src/lib/4.config/logging/log.config.ts
|
|
1799
|
+
// src/lib/core/4.config/logging/log.config.ts
|
|
1793
1800
|
var createLogConfig = ({ logger, logLevel, sse }) => ({
|
|
1794
1801
|
log: createLogHandler(logger ?? noopLogger, logLevel ?? "error"),
|
|
1795
1802
|
sse: !!sse
|
|
1796
1803
|
});
|
|
1797
1804
|
|
|
1798
|
-
// src/lib/
|
|
1805
|
+
// src/lib/utils/clone-entry.ts
|
|
1806
|
+
var cloneEntry = (name, raw) => {
|
|
1807
|
+
try {
|
|
1808
|
+
if (typeof structuredClone === "function") {
|
|
1809
|
+
return structuredClone(raw);
|
|
1810
|
+
}
|
|
1811
|
+
} catch {
|
|
1812
|
+
}
|
|
1813
|
+
try {
|
|
1814
|
+
return JSON.parse(JSON.stringify(raw));
|
|
1815
|
+
} catch {
|
|
1816
|
+
}
|
|
1817
|
+
throw new NFError(`Could not clone entry '${String(name)}'`);
|
|
1818
|
+
};
|
|
1819
|
+
|
|
1820
|
+
// src/lib/core/4.config/storage/global-this.storage.ts
|
|
1799
1821
|
var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
1800
1822
|
if (!globalThis[namespace]) {
|
|
1801
1823
|
globalThis[namespace] = {};
|
|
@@ -1818,20 +1840,21 @@ var globalThisStorageEntry = (namespace) => (key, initialValue) => {
|
|
|
1818
1840
|
return entry;
|
|
1819
1841
|
};
|
|
1820
1842
|
|
|
1821
|
-
// src/lib/4.config/storage/storage.config.ts
|
|
1843
|
+
// src/lib/core/4.config/storage/storage.config.ts
|
|
1822
1844
|
var createStorageConfig = (override) => ({
|
|
1823
1845
|
storage: override.storage ? override.storage(override.storageNamespace ?? "__NATIVE_FEDERATION__") : globalThisStorageEntry(override.storageNamespace ?? "__NATIVE_FEDERATION__"),
|
|
1824
1846
|
clearStorage: override.clearStorage ?? false
|
|
1825
1847
|
});
|
|
1826
1848
|
|
|
1827
|
-
// src/lib/4.config/mode/default.profile.ts
|
|
1849
|
+
// src/lib/core/4.config/mode/default.profile.ts
|
|
1828
1850
|
var defaultProfile = {
|
|
1829
1851
|
latestSharedExternal: false,
|
|
1852
|
+
skipInvalidExternalVersions: false,
|
|
1830
1853
|
overrideCachedRemotes: "init-only",
|
|
1831
1854
|
overrideCachedRemotesIfURLMatches: false
|
|
1832
1855
|
};
|
|
1833
1856
|
|
|
1834
|
-
// src/lib/4.config/mode/mode.config.ts
|
|
1857
|
+
// src/lib/core/4.config/mode/mode.config.ts
|
|
1835
1858
|
var createModeConfig = (override) => {
|
|
1836
1859
|
const strictnessConfig = typeof override.strict === "boolean" ? {
|
|
1837
1860
|
strictRemoteEntry: override.strict,
|
|
@@ -1852,7 +1875,7 @@ var createModeConfig = (override) => {
|
|
|
1852
1875
|
};
|
|
1853
1876
|
};
|
|
1854
1877
|
|
|
1855
|
-
// src/lib/5.di/config.factory.ts
|
|
1878
|
+
// src/lib/core/5.di/config.factory.ts
|
|
1856
1879
|
var createConfigHandlers = (overrides) => ({
|
|
1857
1880
|
...createImportMapConfig(overrides),
|
|
1858
1881
|
...createHostConfig(overrides),
|
|
@@ -1861,7 +1884,28 @@ var createConfigHandlers = (overrides) => ({
|
|
|
1861
1884
|
...createModeConfig(overrides)
|
|
1862
1885
|
});
|
|
1863
1886
|
|
|
1864
|
-
// src/lib/2.app/flows/init
|
|
1887
|
+
// src/lib/core/2.app/flows/init.flow.ts
|
|
1888
|
+
var createInitFlow = ({
|
|
1889
|
+
flow,
|
|
1890
|
+
adapters,
|
|
1891
|
+
config
|
|
1892
|
+
}) => {
|
|
1893
|
+
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
1894
|
+
config,
|
|
1895
|
+
adapters,
|
|
1896
|
+
loadRemoteModule
|
|
1897
|
+
}));
|
|
1898
|
+
};
|
|
1899
|
+
|
|
1900
|
+
// src/lib/core/2.app/flows/init-remote-entry.flow.ts
|
|
1901
|
+
var createInitRemoteEntryFlow = ({
|
|
1902
|
+
flow
|
|
1903
|
+
}) => {
|
|
1904
|
+
const processDynamicRemoteEntry = (remoteEntry) => flow.updateCache(remoteEntry).then(flow.convertToImportMap).then(flow.commitChanges);
|
|
1905
|
+
return (remoteEntryUrl, remote) => flow.getRemoteEntry(remoteEntryUrl, remote).then((entry) => entry.map(processDynamicRemoteEntry).orElse(Promise.resolve())).then(() => void 0);
|
|
1906
|
+
};
|
|
1907
|
+
|
|
1908
|
+
// src/lib/core/2.app/steps/get-remote-entries.ts
|
|
1865
1909
|
function createGetRemoteEntries(config, ports) {
|
|
1866
1910
|
return (remotesOrManifestUrl = {}) => {
|
|
1867
1911
|
const manifestPromise = config.manifestIntegrity ? ports.manifestProvider.provide(remotesOrManifestUrl, {
|
|
@@ -1955,20 +1999,13 @@ function createGetRemoteEntries(config, ports) {
|
|
|
1955
1999
|
}
|
|
1956
2000
|
}
|
|
1957
2001
|
|
|
1958
|
-
// src/lib/2.app/
|
|
1959
|
-
function
|
|
1960
|
-
return (
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
addExternalsToStorage(remoteEntry);
|
|
1966
|
-
addSharedChunksToStorage(remoteEntry);
|
|
1967
|
-
});
|
|
1968
|
-
return Promise.resolve(remoteEntries);
|
|
1969
|
-
} catch (e) {
|
|
1970
|
-
return Promise.reject(e);
|
|
1971
|
-
}
|
|
2002
|
+
// src/lib/core/2.app/steps/store-remote-entry.ts
|
|
2003
|
+
function createStoreRemoteEntry(config, ports, logStep) {
|
|
2004
|
+
return (remoteEntry, onSharedExternal) => {
|
|
2005
|
+
if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);
|
|
2006
|
+
addRemoteInfoToStorage(remoteEntry);
|
|
2007
|
+
addExternalsToStorage(remoteEntry, onSharedExternal);
|
|
2008
|
+
addSharedChunksToStorage(remoteEntry);
|
|
1972
2009
|
};
|
|
1973
2010
|
function removeCachedRemoteEntry(remoteEntry) {
|
|
1974
2011
|
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
@@ -1985,88 +2022,130 @@ function createProcessRemoteEntries(config, ports) {
|
|
|
1985
2022
|
...integrity ? { integrity } : {}
|
|
1986
2023
|
});
|
|
1987
2024
|
}
|
|
1988
|
-
function addExternalsToStorage(remoteEntry) {
|
|
2025
|
+
function addExternalsToStorage(remoteEntry, onSharedExternal) {
|
|
1989
2026
|
remoteEntry.shared.forEach((external) => {
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
if (config.strict.strictExternalVersion) {
|
|
1993
|
-
config.log.error(2, errorMsg);
|
|
1994
|
-
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
1995
|
-
}
|
|
1996
|
-
config.log.warn(2, errorMsg);
|
|
1997
|
-
}
|
|
2027
|
+
const tag = resolveVersion(remoteEntry, external);
|
|
2028
|
+
if (tag === null) return;
|
|
1998
2029
|
if (external.singleton) {
|
|
1999
|
-
|
|
2030
|
+
onSharedExternal(remoteEntry, external, sharedExternalContext(remoteEntry, external, tag));
|
|
2000
2031
|
} else {
|
|
2001
|
-
addScopedExternal(remoteEntry
|
|
2032
|
+
addScopedExternal(remoteEntry, external, tag);
|
|
2002
2033
|
}
|
|
2003
2034
|
});
|
|
2004
2035
|
}
|
|
2005
2036
|
function addSharedChunksToStorage(remoteEntry) {
|
|
2006
2037
|
if (!remoteEntry.chunks) return;
|
|
2007
2038
|
config.log.debug(
|
|
2008
|
-
|
|
2039
|
+
logStep,
|
|
2009
2040
|
`Adding chunks for remote "${remoteEntry.name}", bundles: [${Object.keys(remoteEntry.chunks).join(", ")}]`
|
|
2010
2041
|
);
|
|
2011
2042
|
Object.entries(remoteEntry.chunks).forEach(([bundleName, chunks]) => {
|
|
2012
2043
|
ports.sharedChunksRepo.addOrReplace(remoteEntry.name, bundleName, chunks);
|
|
2013
2044
|
});
|
|
2014
2045
|
}
|
|
2015
|
-
function
|
|
2016
|
-
|
|
2017
|
-
|
|
2046
|
+
function addScopedExternal(remoteEntry, sharedInfo, tag) {
|
|
2047
|
+
ports.scopedExternalsRepo.addExternal(remoteEntry.name, sharedInfo.packageName, {
|
|
2048
|
+
tag,
|
|
2049
|
+
file: sharedInfo.outFileName,
|
|
2050
|
+
bundle: sharedInfo.bundle
|
|
2051
|
+
});
|
|
2052
|
+
}
|
|
2053
|
+
function resolveVersion(remoteEntry, external) {
|
|
2054
|
+
if (external.version && ports.versionCheck.isValidSemver(external.version)) {
|
|
2055
|
+
return external.version;
|
|
2056
|
+
}
|
|
2057
|
+
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
2058
|
+
if (config.strict.strictExternalVersion) {
|
|
2059
|
+
config.log.error(logStep, errorMsg);
|
|
2060
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2061
|
+
}
|
|
2062
|
+
if (config.profile.skipInvalidExternalVersions) {
|
|
2063
|
+
config.log.warn(logStep, `${errorMsg} Skipping external.`);
|
|
2064
|
+
return null;
|
|
2065
|
+
}
|
|
2066
|
+
config.log.warn(logStep, errorMsg);
|
|
2067
|
+
return ports.versionCheck.smallestVersion(external.requiredVersion);
|
|
2068
|
+
}
|
|
2069
|
+
function sharedExternalContext(remoteEntry, sharedInfo, tag) {
|
|
2070
|
+
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2018
2071
|
const remote = {
|
|
2019
2072
|
file: sharedInfo.outFileName,
|
|
2020
|
-
name:
|
|
2073
|
+
name: remoteEntry.name,
|
|
2021
2074
|
bundle: sharedInfo.bundle,
|
|
2022
2075
|
strictVersion: sharedInfo.strictVersion,
|
|
2023
2076
|
cached: false,
|
|
2024
|
-
requiredVersion: sharedInfo.requiredVersion || tag
|
|
2077
|
+
requiredVersion: scopeType === "strict" ? tag : sharedInfo.requiredVersion || tag
|
|
2025
2078
|
};
|
|
2026
|
-
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2027
|
-
if (scopeType === "strict") {
|
|
2028
|
-
action = "share";
|
|
2029
|
-
remote.requiredVersion = tag;
|
|
2030
|
-
}
|
|
2031
2079
|
const cached2 = ports.sharedExternalsRepo.tryGet(sharedInfo.packageName, sharedInfo.shareScope).orElse({ dirty: false, versions: [] });
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2080
|
+
return {
|
|
2081
|
+
tag,
|
|
2082
|
+
remote,
|
|
2083
|
+
cached: cached2,
|
|
2084
|
+
scopeType,
|
|
2085
|
+
assertSameVersionCompatibility(matchingVersion) {
|
|
2086
|
+
if (!remote.strictVersion) return;
|
|
2087
|
+
if (matchingVersion.remotes[0].requiredVersion === remote.requiredVersion) return;
|
|
2088
|
+
const errorMsg = `[${remoteEntry.name}][${sharedInfo.packageName}@${sharedInfo.version}] Required version-range '${remote.requiredVersion}' does not match cached version-range '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
2037
2089
|
if (config.strict.strictExternalSameVersionCompatibility) {
|
|
2038
|
-
config.log.error(
|
|
2090
|
+
config.log.error(logStep, errorMsg);
|
|
2039
2091
|
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2040
2092
|
}
|
|
2041
|
-
config.log.warn(
|
|
2093
|
+
config.log.warn(logStep, errorMsg);
|
|
2094
|
+
},
|
|
2095
|
+
commit() {
|
|
2096
|
+
ports.sharedExternalsRepo.addOrUpdate(
|
|
2097
|
+
sharedInfo.packageName,
|
|
2098
|
+
{
|
|
2099
|
+
dirty: cached2.dirty,
|
|
2100
|
+
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2101
|
+
},
|
|
2102
|
+
sharedInfo.shareScope
|
|
2103
|
+
);
|
|
2042
2104
|
}
|
|
2105
|
+
};
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
// src/lib/core/2.app/steps/process-remote-entries.ts
|
|
2110
|
+
function createProcessRemoteEntries(config, ports) {
|
|
2111
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 2);
|
|
2112
|
+
return (remoteEntries) => {
|
|
2113
|
+
try {
|
|
2114
|
+
remoteEntries.forEach((remoteEntry) => storeRemoteEntry(remoteEntry, addSharedExternal));
|
|
2115
|
+
return Promise.resolve(remoteEntries);
|
|
2116
|
+
} catch (e) {
|
|
2117
|
+
return Promise.reject(e);
|
|
2118
|
+
}
|
|
2119
|
+
};
|
|
2120
|
+
function addSharedExternal(remoteEntry, _sharedInfo, {
|
|
2121
|
+
tag,
|
|
2122
|
+
remote,
|
|
2123
|
+
cached: cached2,
|
|
2124
|
+
scopeType,
|
|
2125
|
+
assertSameVersionCompatibility,
|
|
2126
|
+
commit
|
|
2127
|
+
}) {
|
|
2128
|
+
const matchingVersion = cached2.versions.find((version) => version.tag === tag);
|
|
2129
|
+
if (matchingVersion) {
|
|
2130
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
2043
2131
|
if (!matchingVersion.host && !!remoteEntry?.host) {
|
|
2044
2132
|
matchingVersion.host = true;
|
|
2045
2133
|
matchingVersion.remotes.unshift(remote);
|
|
2046
2134
|
} else matchingVersion.remotes.push(remote);
|
|
2047
2135
|
} else {
|
|
2048
|
-
if (scopeType !== "strict") dirty = true;
|
|
2049
|
-
cached2.versions.push({
|
|
2136
|
+
if (scopeType !== "strict") cached2.dirty = true;
|
|
2137
|
+
cached2.versions.push({
|
|
2138
|
+
tag,
|
|
2139
|
+
action: scopeType === "strict" ? "share" : "skip",
|
|
2140
|
+
host: !!remoteEntry?.host,
|
|
2141
|
+
remotes: [remote]
|
|
2142
|
+
});
|
|
2050
2143
|
}
|
|
2051
|
-
|
|
2052
|
-
sharedInfo.packageName,
|
|
2053
|
-
{
|
|
2054
|
-
dirty,
|
|
2055
|
-
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2056
|
-
},
|
|
2057
|
-
sharedInfo.shareScope
|
|
2058
|
-
);
|
|
2059
|
-
}
|
|
2060
|
-
function addScopedExternal(scope, sharedInfo) {
|
|
2061
|
-
ports.scopedExternalsRepo.addExternal(scope, sharedInfo.packageName, {
|
|
2062
|
-
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
2063
|
-
file: sharedInfo.outFileName,
|
|
2064
|
-
bundle: sharedInfo.bundle
|
|
2065
|
-
});
|
|
2144
|
+
commit();
|
|
2066
2145
|
}
|
|
2067
2146
|
}
|
|
2068
2147
|
|
|
2069
|
-
// src/lib/2.app/
|
|
2148
|
+
// src/lib/core/2.app/steps/determine-shared-externals.ts
|
|
2070
2149
|
function createDetermineSharedExternals(config, ports) {
|
|
2071
2150
|
return () => {
|
|
2072
2151
|
for (const shareScope of ports.sharedExternalsRepo.getScopes()) {
|
|
@@ -2143,15 +2222,7 @@ function createDetermineSharedExternals(config, ports) {
|
|
|
2143
2222
|
}
|
|
2144
2223
|
}
|
|
2145
2224
|
|
|
2146
|
-
// node_modules/.pnpm/@softarc+native-federation@4.
|
|
2147
|
-
var BuildNotificationType;
|
|
2148
|
-
(function(BuildNotificationType2) {
|
|
2149
|
-
BuildNotificationType2["COMPLETED"] = "federation-rebuild-complete";
|
|
2150
|
-
BuildNotificationType2["ERROR"] = "federation-rebuild-error";
|
|
2151
|
-
BuildNotificationType2["CANCELLED"] = "federation-rebuild-cancelled";
|
|
2152
|
-
})(BuildNotificationType || (BuildNotificationType = {}));
|
|
2153
|
-
|
|
2154
|
-
// node_modules/.pnpm/@softarc+native-federation@4.1.3_typescript@5.9.3/node_modules/@softarc/native-federation/src/lib/domain/core/chunk.js
|
|
2225
|
+
// node_modules/.pnpm/@softarc+native-federation@4.2.0_typescript@6.0.3/node_modules/@softarc/native-federation/dist/lib/domain/core/chunk.js
|
|
2155
2226
|
var CHUNK_PREFIX = "@nf-internal";
|
|
2156
2227
|
function toChunkImport(fileName) {
|
|
2157
2228
|
if (fileName.startsWith("./")) {
|
|
@@ -2161,7 +2232,7 @@ function toChunkImport(fileName) {
|
|
|
2161
2232
|
return CHUNK_PREFIX + "/" + packageName;
|
|
2162
2233
|
}
|
|
2163
2234
|
|
|
2164
|
-
// src/lib/2.app/
|
|
2235
|
+
// src/lib/core/2.app/steps/generate-import-map.ts
|
|
2165
2236
|
function createGenerateImportMap(config, ports) {
|
|
2166
2237
|
return () => {
|
|
2167
2238
|
const importMap = { imports: {} };
|
|
@@ -2186,7 +2257,12 @@ function createGenerateImportMap(config, ports) {
|
|
|
2186
2257
|
});
|
|
2187
2258
|
addToScope(importMap, remote.scopeUrl, createScopeModules(externals, remote.scopeUrl));
|
|
2188
2259
|
for (const version of Object.values(externals)) {
|
|
2189
|
-
addIntegrity(
|
|
2260
|
+
addIntegrity(
|
|
2261
|
+
importMap,
|
|
2262
|
+
join(remote.scopeUrl, version.file),
|
|
2263
|
+
remoteName,
|
|
2264
|
+
version.file
|
|
2265
|
+
);
|
|
2190
2266
|
}
|
|
2191
2267
|
Object.values(externals).filter((e) => !!e.bundle).forEach((e) => registerBundleChunks(chunkBundles, remoteName, e.bundle));
|
|
2192
2268
|
}
|
|
@@ -2395,7 +2471,7 @@ function createGenerateImportMap(config, ports) {
|
|
|
2395
2471
|
}
|
|
2396
2472
|
}
|
|
2397
2473
|
|
|
2398
|
-
// src/lib/2.app/
|
|
2474
|
+
// src/lib/core/2.app/steps/commit-changes.ts
|
|
2399
2475
|
function createCommitChanges(config, ports) {
|
|
2400
2476
|
return (importMap) => Promise.resolve(importMap).then(addToBrowser).then(persistRepositoryChanges);
|
|
2401
2477
|
function addToBrowser(importMap) {
|
|
@@ -2412,7 +2488,7 @@ function createCommitChanges(config, ports) {
|
|
|
2412
2488
|
}
|
|
2413
2489
|
}
|
|
2414
2490
|
|
|
2415
|
-
// src/lib/2.app/
|
|
2491
|
+
// src/lib/core/2.app/steps/expose-module-loader.ts
|
|
2416
2492
|
function createExposeModuleLoader(config, ports) {
|
|
2417
2493
|
const loadRemoteModule = (remoteName, exposedModule) => {
|
|
2418
2494
|
try {
|
|
@@ -2438,42 +2514,137 @@ function createExposeModuleLoader(config, ports) {
|
|
|
2438
2514
|
return () => Promise.resolve(loadRemoteModule);
|
|
2439
2515
|
}
|
|
2440
2516
|
|
|
2441
|
-
// src/lib/
|
|
2442
|
-
var
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
2447
|
-
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
2448
|
-
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
2449
|
-
generateImportMap: createGenerateImportMap(config, adapters),
|
|
2450
|
-
commitChanges: createCommitChanges(config, adapters),
|
|
2451
|
-
exposeModuleLoader: createExposeModuleLoader(config, adapters)
|
|
2452
|
-
});
|
|
2453
|
-
var INIT_FLOW_FACTORY = ({
|
|
2454
|
-
config,
|
|
2455
|
-
adapters
|
|
2456
|
-
}) => {
|
|
2457
|
-
const flow = createInitDrivers({ config, adapters });
|
|
2458
|
-
return {
|
|
2459
|
-
flow,
|
|
2460
|
-
adapters,
|
|
2461
|
-
config
|
|
2462
|
-
};
|
|
2463
|
-
};
|
|
2464
|
-
var createInitFlow = ({
|
|
2465
|
-
flow,
|
|
2466
|
-
adapters,
|
|
2467
|
-
config
|
|
2468
|
-
}) => {
|
|
2469
|
-
return (remotesOrManifestUrl) => flow.getRemoteEntries(remotesOrManifestUrl).then(flow.processRemoteEntries).then(flow.determineSharedExternals).then(flow.generateImportMap).then(flow.commitChanges).then(flow.exposeModuleLoader).then((loadRemoteModule) => ({
|
|
2470
|
-
config,
|
|
2471
|
-
adapters,
|
|
2472
|
-
loadRemoteModule
|
|
2473
|
-
}));
|
|
2517
|
+
// src/lib/core/2.app/steps/get-remote-entry.ts
|
|
2518
|
+
var normalizeRemoteRef = (remote) => {
|
|
2519
|
+
if (!remote) return {};
|
|
2520
|
+
if (typeof remote === "string") return { name: remote };
|
|
2521
|
+
return remote;
|
|
2474
2522
|
};
|
|
2523
|
+
function createGetRemoteEntry(config, ports) {
|
|
2524
|
+
return async (remoteEntryUrl, remote) => {
|
|
2525
|
+
const { name: remoteName, integrity } = normalizeRemoteRef(remote);
|
|
2526
|
+
if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {
|
|
2527
|
+
config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);
|
|
2528
|
+
return Optional.empty();
|
|
2529
|
+
}
|
|
2530
|
+
try {
|
|
2531
|
+
const remoteEntry = integrity ? await ports.remoteEntryProvider.provide(remoteEntryUrl, { integrity }) : await ports.remoteEntryProvider.provide(remoteEntryUrl);
|
|
2532
|
+
config.log.debug(
|
|
2533
|
+
7,
|
|
2534
|
+
`[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`
|
|
2535
|
+
);
|
|
2536
|
+
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2537
|
+
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2538
|
+
if (config.strict.strictRemoteEntry) {
|
|
2539
|
+
config.log.error(7, errorMsg);
|
|
2540
|
+
throw new NFError("Could not fetch remote entry");
|
|
2541
|
+
}
|
|
2542
|
+
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2543
|
+
}
|
|
2544
|
+
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2545
|
+
remoteEntry.override = true;
|
|
2546
|
+
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2547
|
+
}
|
|
2548
|
+
return Optional.of(checkForSSE(remoteEntry));
|
|
2549
|
+
} catch (error) {
|
|
2550
|
+
config.log.error(
|
|
2551
|
+
7,
|
|
2552
|
+
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2553
|
+
error
|
|
2554
|
+
);
|
|
2555
|
+
return Promise.reject(
|
|
2556
|
+
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2557
|
+
);
|
|
2558
|
+
}
|
|
2559
|
+
};
|
|
2560
|
+
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2561
|
+
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2562
|
+
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2563
|
+
).orElse(false);
|
|
2564
|
+
}
|
|
2565
|
+
function checkForSSE(entry) {
|
|
2566
|
+
if (config.sse) {
|
|
2567
|
+
if (entry.buildNotificationsEndpoint) {
|
|
2568
|
+
ports.sse.watchRemoteBuilds(
|
|
2569
|
+
join(getScope(entry.url), entry.buildNotificationsEndpoint)
|
|
2570
|
+
);
|
|
2571
|
+
config.log.debug(7, `Registered SSE endpoint of remote '${entry.name}' `);
|
|
2572
|
+
} else {
|
|
2573
|
+
config.log.debug(7, `Remote ${entry.name} has no defined 'buildNotificationsEndpoint'`);
|
|
2574
|
+
}
|
|
2575
|
+
}
|
|
2576
|
+
return entry;
|
|
2577
|
+
}
|
|
2578
|
+
}
|
|
2579
|
+
|
|
2580
|
+
// src/lib/core/2.app/steps/update-cache.ts
|
|
2581
|
+
function createUpdateCache(config, ports) {
|
|
2582
|
+
const storeRemoteEntry = createStoreRemoteEntry(config, ports, 8);
|
|
2583
|
+
return (remoteEntry) => {
|
|
2584
|
+
try {
|
|
2585
|
+
const actions = {};
|
|
2586
|
+
storeRemoteEntry(remoteEntry, (entry, external, ctx) => {
|
|
2587
|
+
const { action, sharedVersion } = resolveSharedExternal(entry, external, ctx);
|
|
2588
|
+
actions[external.packageName] = { action };
|
|
2589
|
+
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2590
|
+
actions[external.packageName].override = resolveOverrideUrl(
|
|
2591
|
+
entry,
|
|
2592
|
+
external,
|
|
2593
|
+
sharedVersion
|
|
2594
|
+
);
|
|
2595
|
+
}
|
|
2596
|
+
});
|
|
2597
|
+
return Promise.resolve({ entry: remoteEntry, actions });
|
|
2598
|
+
} catch (error) {
|
|
2599
|
+
return Promise.reject(error);
|
|
2600
|
+
}
|
|
2601
|
+
};
|
|
2602
|
+
function resolveSharedExternal(remoteEntry, sharedInfo, {
|
|
2603
|
+
tag,
|
|
2604
|
+
remote,
|
|
2605
|
+
cached: cached2,
|
|
2606
|
+
scopeType,
|
|
2607
|
+
assertSameVersionCompatibility,
|
|
2608
|
+
commit
|
|
2609
|
+
}) {
|
|
2610
|
+
let action = scopeType === "strict" ? "share" : "skip";
|
|
2611
|
+
const sharedVersion = cached2.versions.find((c) => c.action === "share");
|
|
2612
|
+
const isCompatible = !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);
|
|
2613
|
+
if (action === "skip" && !isCompatible && remote.strictVersion) {
|
|
2614
|
+
action = "scope";
|
|
2615
|
+
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}'`;
|
|
2616
|
+
if (config.strict.strictExternalCompatibility) {
|
|
2617
|
+
config.log.error(8, errorMsg);
|
|
2618
|
+
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2619
|
+
}
|
|
2620
|
+
config.log.warn(8, errorMsg);
|
|
2621
|
+
}
|
|
2622
|
+
const matchingVersion = cached2.versions.find((cached3) => cached3.tag === tag);
|
|
2623
|
+
if (matchingVersion) {
|
|
2624
|
+
assertSameVersionCompatibility(matchingVersion);
|
|
2625
|
+
matchingVersion.remotes.push(remote);
|
|
2626
|
+
} else {
|
|
2627
|
+
if (!sharedVersion) action = "share";
|
|
2628
|
+
remote.cached = action !== "skip";
|
|
2629
|
+
cached2.versions.push({ tag, action, host: false, remotes: [remote] });
|
|
2630
|
+
}
|
|
2631
|
+
commit();
|
|
2632
|
+
return { action, sharedVersion };
|
|
2633
|
+
}
|
|
2634
|
+
function resolveOverrideUrl(remoteEntry, external, sharedVersion) {
|
|
2635
|
+
return ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2636
|
+
config.log.error(
|
|
2637
|
+
8,
|
|
2638
|
+
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2639
|
+
);
|
|
2640
|
+
return new NFError(
|
|
2641
|
+
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2642
|
+
);
|
|
2643
|
+
});
|
|
2644
|
+
}
|
|
2645
|
+
}
|
|
2475
2646
|
|
|
2476
|
-
// src/lib/2.app/
|
|
2647
|
+
// src/lib/core/2.app/steps/convert-to-import-map.ts
|
|
2477
2648
|
function createConvertToImportMap({ log }, ports) {
|
|
2478
2649
|
return ({ entry, actions }) => {
|
|
2479
2650
|
const importMap = { imports: {} };
|
|
@@ -2570,242 +2741,78 @@ function createConvertToImportMap({ log }, ports) {
|
|
|
2570
2741
|
}
|
|
2571
2742
|
}
|
|
2572
2743
|
|
|
2573
|
-
// src/lib/
|
|
2574
|
-
var
|
|
2575
|
-
if (!remote) return {};
|
|
2576
|
-
if (typeof remote === "string") return { name: remote };
|
|
2577
|
-
return remote;
|
|
2578
|
-
};
|
|
2579
|
-
function createGetRemoteEntry(config, ports) {
|
|
2580
|
-
return async (remoteEntryUrl, remote) => {
|
|
2581
|
-
const { name: remoteName, integrity } = normalizeRemoteRef(remote);
|
|
2582
|
-
if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {
|
|
2583
|
-
config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);
|
|
2584
|
-
return Optional.empty();
|
|
2585
|
-
}
|
|
2586
|
-
try {
|
|
2587
|
-
const remoteEntry = integrity ? await ports.remoteEntryProvider.provide(remoteEntryUrl, { integrity }) : await ports.remoteEntryProvider.provide(remoteEntryUrl);
|
|
2588
|
-
config.log.debug(
|
|
2589
|
-
7,
|
|
2590
|
-
`[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`
|
|
2591
|
-
);
|
|
2592
|
-
if (!!remoteName && remoteEntry.name !== remoteName) {
|
|
2593
|
-
const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;
|
|
2594
|
-
if (config.strict.strictRemoteEntry) {
|
|
2595
|
-
config.log.error(7, errorMsg);
|
|
2596
|
-
throw new NFError("Could not fetch remote entry");
|
|
2597
|
-
}
|
|
2598
|
-
config.log.warn(7, errorMsg + " Omitting expected name.");
|
|
2599
|
-
}
|
|
2600
|
-
if (ports.remoteInfoRepo.contains(remoteEntry.name)) {
|
|
2601
|
-
remoteEntry.override = true;
|
|
2602
|
-
config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);
|
|
2603
|
-
}
|
|
2604
|
-
return Optional.of(checkForSSE(remoteEntry));
|
|
2605
|
-
} catch (error) {
|
|
2606
|
-
config.log.error(
|
|
2607
|
-
7,
|
|
2608
|
-
`[${remoteName ?? "unknown"}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,
|
|
2609
|
-
error
|
|
2610
|
-
);
|
|
2611
|
-
return Promise.reject(
|
|
2612
|
-
new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)
|
|
2613
|
-
);
|
|
2614
|
-
}
|
|
2615
|
-
};
|
|
2616
|
-
function shouldSkipCachedRemote(remoteEntryUrl, remoteName) {
|
|
2617
|
-
return ports.remoteInfoRepo.tryGet(remoteName).map(
|
|
2618
|
-
(cachedRemoteInfo) => config.profile.overrideCachedRemotes !== "always" || !config.profile.overrideCachedRemotesIfURLMatches && remoteEntryUrl === join(cachedRemoteInfo.scopeUrl, "remoteEntry.json")
|
|
2619
|
-
).orElse(false);
|
|
2620
|
-
}
|
|
2621
|
-
function checkForSSE(entry) {
|
|
2622
|
-
if (config.sse) {
|
|
2623
|
-
if (entry.buildNotificationsEndpoint) {
|
|
2624
|
-
ports.sse.watchRemoteBuilds(
|
|
2625
|
-
join(getScope(entry.url), entry.buildNotificationsEndpoint)
|
|
2626
|
-
);
|
|
2627
|
-
config.log.debug(7, `Registered SSE endpoint of remote '${entry.name}' `);
|
|
2628
|
-
} else {
|
|
2629
|
-
config.log.debug(7, `Remote ${entry.name} has no defined 'buildNotificationsEndpoint'`);
|
|
2630
|
-
}
|
|
2631
|
-
}
|
|
2632
|
-
return entry;
|
|
2633
|
-
}
|
|
2634
|
-
}
|
|
2635
|
-
|
|
2636
|
-
// src/lib/2.app/flows/dynamic-init/update-cache.ts
|
|
2637
|
-
function createUpdateCache(config, ports) {
|
|
2638
|
-
return (remoteEntry) => {
|
|
2639
|
-
try {
|
|
2640
|
-
if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);
|
|
2641
|
-
addRemoteInfoToStorage(remoteEntry);
|
|
2642
|
-
const actions = mergeExternalsIntoStorage(remoteEntry);
|
|
2643
|
-
addSharedChunksToStorage(remoteEntry);
|
|
2644
|
-
return Promise.resolve({ entry: remoteEntry, actions });
|
|
2645
|
-
} catch (error) {
|
|
2646
|
-
return Promise.reject(error);
|
|
2647
|
-
}
|
|
2648
|
-
};
|
|
2649
|
-
function removeCachedRemoteEntry(remoteEntry) {
|
|
2650
|
-
ports.remoteInfoRepo.remove(remoteEntry.name);
|
|
2651
|
-
ports.scopedExternalsRepo.remove(remoteEntry.name);
|
|
2652
|
-
ports.sharedExternalsRepo.removeFromAllScopes(remoteEntry.name);
|
|
2653
|
-
}
|
|
2654
|
-
function addRemoteInfoToStorage({ name, url, exposes }) {
|
|
2655
|
-
ports.remoteInfoRepo.addOrUpdate(name, {
|
|
2656
|
-
scopeUrl: getScope(url),
|
|
2657
|
-
exposes: Object.values(exposes ?? []).map((m) => ({
|
|
2658
|
-
moduleName: m.key,
|
|
2659
|
-
file: m.outFileName
|
|
2660
|
-
}))
|
|
2661
|
-
});
|
|
2662
|
-
}
|
|
2663
|
-
function mergeExternalsIntoStorage(remoteEntry) {
|
|
2664
|
-
const actions = {};
|
|
2665
|
-
remoteEntry.shared.forEach((external) => {
|
|
2666
|
-
if (!external.version || !ports.versionCheck.isValidSemver(external.version)) {
|
|
2667
|
-
const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;
|
|
2668
|
-
if (config.strict.strictExternalVersion) {
|
|
2669
|
-
config.log.error(8, errorMsg);
|
|
2670
|
-
throw new NFError(`Could not process remote '${remoteEntry.name}'`);
|
|
2671
|
-
}
|
|
2672
|
-
config.log.warn(8, errorMsg);
|
|
2673
|
-
}
|
|
2674
|
-
if (external.singleton) {
|
|
2675
|
-
const { action, sharedVersion } = addSharedExternal(remoteEntry.name, external);
|
|
2676
|
-
actions[external.packageName] = { action };
|
|
2677
|
-
if (action === "skip" && external.shareScope && sharedVersion?.remotes[0]?.file) {
|
|
2678
|
-
actions[external.packageName].override = ports.remoteInfoRepo.tryGet(sharedVersion.remotes[0].name).map((remote) => join(remote.scopeUrl, sharedVersion.remotes[0].file)).orThrow(() => {
|
|
2679
|
-
config.log.error(
|
|
2680
|
-
8,
|
|
2681
|
-
`[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${external.packageName}@${external.version}][override] Remote name not found in cache.`
|
|
2682
|
-
);
|
|
2683
|
-
return new NFError(
|
|
2684
|
-
`Could not find override url from remote ${sharedVersion.remotes[0].name}`
|
|
2685
|
-
);
|
|
2686
|
-
});
|
|
2687
|
-
}
|
|
2688
|
-
} else {
|
|
2689
|
-
addScopedExternal(remoteEntry.name, external);
|
|
2690
|
-
}
|
|
2691
|
-
});
|
|
2692
|
-
return actions;
|
|
2693
|
-
}
|
|
2694
|
-
function addSharedChunksToStorage(remoteEntry) {
|
|
2695
|
-
if (!remoteEntry.chunks) return;
|
|
2696
|
-
config.log.debug(
|
|
2697
|
-
8,
|
|
2698
|
-
`Adding chunks for remote "${remoteEntry.name}", bundles: [${Object.keys(remoteEntry.chunks).join(", ")}]`
|
|
2699
|
-
);
|
|
2700
|
-
Object.entries(remoteEntry.chunks).forEach(([bundleName, chunks]) => {
|
|
2701
|
-
ports.sharedChunksRepo.addOrReplace(remoteEntry.name, bundleName, chunks);
|
|
2702
|
-
});
|
|
2703
|
-
}
|
|
2704
|
-
function addSharedExternal(remoteName, sharedInfo) {
|
|
2705
|
-
const cached2 = ports.sharedExternalsRepo.tryGet(sharedInfo.packageName, sharedInfo.shareScope).orElse({ dirty: false, versions: [] });
|
|
2706
|
-
let action = "skip";
|
|
2707
|
-
const tag = sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion);
|
|
2708
|
-
const remote = {
|
|
2709
|
-
file: sharedInfo.outFileName,
|
|
2710
|
-
strictVersion: sharedInfo.strictVersion,
|
|
2711
|
-
requiredVersion: sharedInfo.requiredVersion || tag,
|
|
2712
|
-
name: remoteName,
|
|
2713
|
-
bundle: sharedInfo.bundle,
|
|
2714
|
-
cached: false
|
|
2715
|
-
};
|
|
2716
|
-
const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);
|
|
2717
|
-
if (scopeType === "strict") {
|
|
2718
|
-
remote.requiredVersion = tag;
|
|
2719
|
-
action = "share";
|
|
2720
|
-
}
|
|
2721
|
-
const sharedVersion = cached2.versions.find((c) => c.action === "share");
|
|
2722
|
-
const isCompatible = !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);
|
|
2723
|
-
if (action === "skip" && !isCompatible && remote.strictVersion) {
|
|
2724
|
-
action = "scope";
|
|
2725
|
-
const errorMsg = `[${sharedInfo.shareScope ?? GLOBAL_SCOPE}][${remoteName}] ${sharedInfo.packageName}@${sharedInfo.version} Is not compatible with existing ${sharedInfo.packageName}@${sharedVersion.tag} requiredRange '${sharedVersion.remotes[0]?.requiredVersion}'`;
|
|
2726
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2727
|
-
config.log.error(8, errorMsg);
|
|
2728
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2729
|
-
}
|
|
2730
|
-
config.log.warn(8, errorMsg);
|
|
2731
|
-
}
|
|
2732
|
-
const matchingVersion = cached2.versions.find((cached3) => cached3.tag === tag);
|
|
2733
|
-
if (!!matchingVersion) {
|
|
2734
|
-
if (remote.strictVersion && matchingVersion.remotes[0].requiredVersion !== remote.requiredVersion) {
|
|
2735
|
-
const errorMsg = `[${remoteName}][${sharedInfo.packageName}@${sharedInfo.version}] Required version '${remote.requiredVersion}' does not match existing '${matchingVersion.remotes[0].requiredVersion}'`;
|
|
2736
|
-
if (config.strict.strictExternalCompatibility) {
|
|
2737
|
-
config.log.error(8, errorMsg);
|
|
2738
|
-
throw new NFError(`Could not process remote '${remoteName}'`);
|
|
2739
|
-
}
|
|
2740
|
-
config.log.warn(8, errorMsg);
|
|
2741
|
-
}
|
|
2742
|
-
matchingVersion.remotes.push(remote);
|
|
2743
|
-
} else {
|
|
2744
|
-
if (!sharedVersion) action = "share";
|
|
2745
|
-
remote.cached = action !== "skip";
|
|
2746
|
-
cached2.versions.push({ tag, action, host: false, remotes: [remote] });
|
|
2747
|
-
}
|
|
2748
|
-
ports.sharedExternalsRepo.addOrUpdate(
|
|
2749
|
-
sharedInfo.packageName,
|
|
2750
|
-
{
|
|
2751
|
-
dirty: cached2.dirty,
|
|
2752
|
-
versions: cached2.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag))
|
|
2753
|
-
},
|
|
2754
|
-
sharedInfo.shareScope
|
|
2755
|
-
);
|
|
2756
|
-
return { action, sharedVersion };
|
|
2757
|
-
}
|
|
2758
|
-
function addScopedExternal(remoteName, sharedInfo) {
|
|
2759
|
-
ports.scopedExternalsRepo.addExternal(remoteName, sharedInfo.packageName, {
|
|
2760
|
-
tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),
|
|
2761
|
-
file: sharedInfo.outFileName,
|
|
2762
|
-
bundle: sharedInfo.bundle
|
|
2763
|
-
});
|
|
2764
|
-
}
|
|
2765
|
-
}
|
|
2766
|
-
|
|
2767
|
-
// src/lib/5.di/flows/dynamic-init.factory.ts
|
|
2768
|
-
var createDynamicInitDrivers = ({
|
|
2744
|
+
// src/lib/core/5.di/init.factory.ts
|
|
2745
|
+
var createInitDrivers = ({
|
|
2769
2746
|
config,
|
|
2770
2747
|
adapters
|
|
2771
2748
|
}) => ({
|
|
2749
|
+
getRemoteEntries: createGetRemoteEntries(config, adapters),
|
|
2750
|
+
processRemoteEntries: createProcessRemoteEntries(config, adapters),
|
|
2751
|
+
determineSharedExternals: createDetermineSharedExternals(config, adapters),
|
|
2752
|
+
generateImportMap: createGenerateImportMap(config, adapters),
|
|
2753
|
+
commitChanges: createCommitChanges(config, adapters),
|
|
2754
|
+
exposeModuleLoader: createExposeModuleLoader(config, adapters),
|
|
2772
2755
|
getRemoteEntry: createGetRemoteEntry(config, adapters),
|
|
2773
2756
|
updateCache: createUpdateCache(config, adapters),
|
|
2774
|
-
convertToImportMap: createConvertToImportMap(config, adapters)
|
|
2775
|
-
commitChanges: createCommitChanges(config, adapters)
|
|
2757
|
+
convertToImportMap: createConvertToImportMap(config, adapters)
|
|
2776
2758
|
});
|
|
2777
|
-
var
|
|
2759
|
+
var INIT_FLOW_FACTORY = ({
|
|
2778
2760
|
config,
|
|
2779
2761
|
adapters
|
|
2780
2762
|
}) => {
|
|
2781
|
-
const flow =
|
|
2763
|
+
const flow = createInitDrivers({ config, adapters });
|
|
2782
2764
|
return {
|
|
2783
2765
|
flow,
|
|
2784
2766
|
adapters,
|
|
2785
2767
|
config
|
|
2786
2768
|
};
|
|
2787
2769
|
};
|
|
2788
|
-
|
|
2789
|
-
|
|
2770
|
+
|
|
2771
|
+
// src/lib/core/5.di/federation-result.factory.ts
|
|
2772
|
+
var createStateDump = (config, adapters) => (msg) => config.log.debug(0, msg, {
|
|
2773
|
+
remotes: { ...adapters.remoteInfoRepo.getAll() },
|
|
2774
|
+
"shared-externals": adapters.sharedExternalsRepo.getScopes({ includeGlobal: true }).reduce(
|
|
2775
|
+
(acc, scope) => ({ ...acc, [scope]: adapters.sharedExternalsRepo.getFromScope(scope) }),
|
|
2776
|
+
{}
|
|
2777
|
+
),
|
|
2778
|
+
"scoped-externals": adapters.scopedExternalsRepo.getAll()
|
|
2779
|
+
});
|
|
2780
|
+
var createFederationResult = ({
|
|
2781
|
+
config,
|
|
2790
2782
|
adapters,
|
|
2791
|
-
|
|
2783
|
+
loadRemoteModule,
|
|
2784
|
+
initRemoteEntryFlow,
|
|
2785
|
+
afterInitRemoteEntry
|
|
2792
2786
|
}) => {
|
|
2793
|
-
const
|
|
2794
|
-
|
|
2787
|
+
const stateDump = createStateDump(config, adapters);
|
|
2788
|
+
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
2789
|
+
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
2790
|
+
return initRemoteEntryFlow(remoteEntryUrl, remote).catch((e) => {
|
|
2791
|
+
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
2792
|
+
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
2793
|
+
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
2794
|
+
return Promise.resolve();
|
|
2795
|
+
}).then(() => afterInitRemoteEntry?.()).then(() => result);
|
|
2795
2796
|
};
|
|
2796
|
-
const
|
|
2797
|
+
const result = {
|
|
2797
2798
|
config,
|
|
2798
2799
|
adapters,
|
|
2800
|
+
loadRemoteModule,
|
|
2801
|
+
load: loadRemoteModule,
|
|
2802
|
+
as: () => ({
|
|
2803
|
+
loadRemoteModule,
|
|
2804
|
+
load: loadRemoteModule
|
|
2805
|
+
}),
|
|
2799
2806
|
initRemoteEntry
|
|
2800
|
-
}
|
|
2801
|
-
return
|
|
2807
|
+
};
|
|
2808
|
+
return result;
|
|
2802
2809
|
};
|
|
2803
2810
|
|
|
2804
|
-
// src/lib/
|
|
2811
|
+
// src/lib/node/adapters/node-loader.client.ts
|
|
2805
2812
|
import { register } from "node:module";
|
|
2806
2813
|
import { MessageChannel } from "node:worker_threads";
|
|
2807
2814
|
|
|
2808
|
-
// src/lib/
|
|
2815
|
+
// src/lib/node/adapters/loader-url.ts
|
|
2809
2816
|
import { createRequire } from "node:module";
|
|
2810
2817
|
import { pathToFileURL } from "node:url";
|
|
2811
2818
|
var getLoaderUrl = () => {
|
|
@@ -2823,7 +2830,7 @@ var getLoaderUrl = () => {
|
|
|
2823
2830
|
}
|
|
2824
2831
|
};
|
|
2825
2832
|
|
|
2826
|
-
// src/lib/
|
|
2833
|
+
// src/lib/node/adapters/node-loader.client.ts
|
|
2827
2834
|
var NODE_LOADER_CLIENT_ACK_TIMEOUT_MS = 1e4;
|
|
2828
2835
|
var cached = null;
|
|
2829
2836
|
var createClient = () => {
|
|
@@ -2838,7 +2845,9 @@ var createClient = () => {
|
|
|
2838
2845
|
const omitBridged = (map) => {
|
|
2839
2846
|
if (bridged.size === 0) return map;
|
|
2840
2847
|
const drop = (imports) => Object.fromEntries(Object.entries(imports).filter(([specifier]) => !bridged.has(specifier)));
|
|
2841
|
-
const scopes = map.scopes ? Object.fromEntries(
|
|
2848
|
+
const scopes = map.scopes ? Object.fromEntries(
|
|
2849
|
+
Object.entries(map.scopes).map(([scope, imports]) => [scope, drop(imports)])
|
|
2850
|
+
) : map.scopes;
|
|
2842
2851
|
return { ...map, imports: drop(map.imports), ...scopes ? { scopes } : {} };
|
|
2843
2852
|
};
|
|
2844
2853
|
const postAndAwaitAck = (message, ackType) => new Promise((resolve, reject) => {
|
|
@@ -2891,7 +2900,7 @@ var getNodeLoaderClient = () => {
|
|
|
2891
2900
|
return cached;
|
|
2892
2901
|
};
|
|
2893
2902
|
|
|
2894
|
-
// src/lib/
|
|
2903
|
+
// src/lib/node/use-node.ts
|
|
2895
2904
|
var useNodeImportMap = () => {
|
|
2896
2905
|
const nodeLoader = getNodeLoaderClient();
|
|
2897
2906
|
return {
|
|
@@ -2907,7 +2916,7 @@ var useNodeImportMap = () => {
|
|
|
2907
2916
|
};
|
|
2908
2917
|
};
|
|
2909
2918
|
|
|
2910
|
-
// src/lib/
|
|
2919
|
+
// src/lib/node/resolve-host-instances.ts
|
|
2911
2920
|
var matches = (specifier, patterns) => patterns.some((p) => specifier === p || specifier.startsWith(p));
|
|
2912
2921
|
var isAuto = (option) => option === "all" || typeof option === "object" && option !== null && ("include" in option || "exclude" in option || "load" in option);
|
|
2913
2922
|
var resolveHostInstances = async (option, deps) => {
|
|
@@ -2926,7 +2935,9 @@ var resolveHostInstances = async (option, deps) => {
|
|
|
2926
2935
|
const integrity = typeof hostRemoteEntry === "string" ? void 0 : hostRemoteEntry.integrity;
|
|
2927
2936
|
const entry = await deps.remoteEntryProvider.provide(url, { integrity });
|
|
2928
2937
|
const load = auto.load ?? ((specifier) => import(specifier));
|
|
2929
|
-
const specifiers = [
|
|
2938
|
+
const specifiers = [
|
|
2939
|
+
...new Set((entry.shared ?? []).filter((s) => s.singleton).map((s) => s.packageName))
|
|
2940
|
+
].filter((s) => auto.include ? matches(s, auto.include) : true).filter((s) => auto.exclude ? !matches(s, auto.exclude) : true);
|
|
2930
2941
|
const map = {};
|
|
2931
2942
|
for (const specifier of specifiers) {
|
|
2932
2943
|
try {
|
|
@@ -2939,11 +2950,14 @@ var resolveHostInstances = async (option, deps) => {
|
|
|
2939
2950
|
);
|
|
2940
2951
|
}
|
|
2941
2952
|
}
|
|
2942
|
-
deps.log.debug(
|
|
2953
|
+
deps.log.debug(
|
|
2954
|
+
0,
|
|
2955
|
+
`[native-federation] hostInstances bridged: ${Object.keys(map).join(", ") || "(none)"}`
|
|
2956
|
+
);
|
|
2943
2957
|
return map;
|
|
2944
2958
|
};
|
|
2945
2959
|
|
|
2946
|
-
// src/lib/utils/
|
|
2960
|
+
// src/lib/node/utils/to-url.ts
|
|
2947
2961
|
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
2948
2962
|
var URL_SCHEME = /^[a-z][a-z0-9+\-.]*:/i;
|
|
2949
2963
|
var toUrl = (pathOrUrl) => URL_SCHEME.test(pathOrUrl) ? pathOrUrl : pathToFileURL2(pathOrUrl).href;
|
|
@@ -2953,7 +2967,7 @@ var normalizeHostRemoteEntry = (hostRemoteEntry) => {
|
|
|
2953
2967
|
return { ...hostRemoteEntry, url: toUrl(hostRemoteEntry.url) };
|
|
2954
2968
|
};
|
|
2955
2969
|
|
|
2956
|
-
// src/lib/init-federation.node.ts
|
|
2970
|
+
// src/lib/node/init-federation.node.ts
|
|
2957
2971
|
var HOST_INSTANCES_GLOBAL = "__NF_HOST_INSTANCES__";
|
|
2958
2972
|
var buildNodeAdapters = (config) => ({
|
|
2959
2973
|
versionCheck: createVersionCheck(),
|
|
@@ -2995,45 +3009,19 @@ var initNodeFederation = (remotesOrManifestUrl, options = {}) => {
|
|
|
2995
3009
|
);
|
|
2996
3010
|
await nodeConfig.setHostInstancesFn(keys);
|
|
2997
3011
|
})();
|
|
2998
|
-
const
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
),
|
|
3004
|
-
"scoped-externals": adapters.scopedExternalsRepo.getAll()
|
|
3005
|
-
});
|
|
3006
|
-
const initFlow = createInitFlow(INIT_FLOW_FACTORY({ adapters, config }));
|
|
3007
|
-
const dynamicInitFlow = createDynamicInitFlow(DYNAMIC_INIT_FLOW_FACTORY({ config, adapters }));
|
|
3008
|
-
return hostInstancesReady.then(() => initFlow(remotesOrManifestUrl)).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then((loadRemoteModule) => {
|
|
3009
|
-
const output = {
|
|
3012
|
+
const factory = INIT_FLOW_FACTORY({ adapters, config });
|
|
3013
|
+
const initFlow = createInitFlow(factory);
|
|
3014
|
+
const initRemoteEntryFlow = createInitRemoteEntryFlow(factory);
|
|
3015
|
+
return hostInstancesReady.then(() => initFlow(remotesOrManifestUrl)).then(({ loadRemoteModule }) => nodeConfig.nodeLoader.ready().then(() => loadRemoteModule)).then(
|
|
3016
|
+
(loadRemoteModule) => createFederationResult({
|
|
3010
3017
|
config,
|
|
3011
3018
|
adapters,
|
|
3012
3019
|
loadRemoteModule,
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
};
|
|
3019
|
-
const initRemoteEntry = async (remoteEntryUrl, remote) => {
|
|
3020
|
-
const remoteName = typeof remote === "string" ? remote : remote?.name;
|
|
3021
|
-
return dynamicInitFlow(remoteEntryUrl, remote).catch((e) => {
|
|
3022
|
-
stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);
|
|
3023
|
-
if (config.strict.strictRemoteEntry) return Promise.reject(e);
|
|
3024
|
-
else console.warn("Failed to initialize remote entry, continuing anyway.");
|
|
3025
|
-
return Promise.resolve();
|
|
3026
|
-
}).then(() => nodeConfig.nodeLoader.ready()).then(() => ({
|
|
3027
|
-
...output,
|
|
3028
|
-
initRemoteEntry
|
|
3029
|
-
}));
|
|
3030
|
-
};
|
|
3031
|
-
return {
|
|
3032
|
-
...output,
|
|
3033
|
-
initRemoteEntry
|
|
3034
|
-
};
|
|
3035
|
-
}).catch((e) => {
|
|
3036
|
-
stateDump(`[init] STATE DUMP`);
|
|
3020
|
+
initRemoteEntryFlow,
|
|
3021
|
+
afterInitRemoteEntry: () => nodeConfig.nodeLoader.ready()
|
|
3022
|
+
})
|
|
3023
|
+
).catch((e) => {
|
|
3024
|
+
createStateDump(config, adapters)(`[init] STATE DUMP`);
|
|
3037
3025
|
return Promise.reject(e);
|
|
3038
3026
|
});
|
|
3039
3027
|
};
|