@bleedingdev/modern-js-plugin-bff-extensions 3.8.3-ultramodern.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +29 -0
- package/dist/cjs/backend-federation/edge-runtime.js +230 -0
- package/dist/cjs/backend-federation/edge.js +80 -0
- package/dist/cjs/backend-federation/entry.js +94 -0
- package/dist/cjs/backend-federation/identity.js +82 -0
- package/dist/cjs/backend-federation/index.js +61 -0
- package/dist/cjs/backend-federation/legacy-warning.js +40 -0
- package/dist/cjs/backend-federation/load.js +72 -0
- package/dist/cjs/backend-federation/node.js +50 -0
- package/dist/cjs/backend-federation/plugin.js +63 -0
- package/dist/cjs/backend-federation/remotes.js +51 -0
- package/dist/cjs/backend-federation/runtime.js +128 -0
- package/dist/cjs/backend-federation/types.js +18 -0
- package/dist/cjs/backend-federation/utils.js +48 -0
- package/dist/cjs/backend-federation/validate-loaded.js +56 -0
- package/dist/cjs/backend-federation-manifest/errors.js +83 -0
- package/dist/cjs/backend-federation-manifest/index.js +48 -0
- package/dist/cjs/backend-federation-manifest/load.js +173 -0
- package/dist/cjs/backend-federation-manifest/metadata.js +101 -0
- package/dist/cjs/backend-federation-manifest/node.js +50 -0
- package/dist/cjs/backend-federation-manifest/reference.js +132 -0
- package/dist/cjs/backend-federation-manifest/remote.js +81 -0
- package/dist/cjs/backend-federation-manifest/types.js +18 -0
- package/dist/cjs/backend-federation-manifest/validation.js +110 -0
- package/dist/cjs/client-generator/built-entry.js +84 -0
- package/dist/cjs/client-generator/generator.js +73 -0
- package/dist/cjs/client-generator/index.js +54 -0
- package/dist/cjs/client-generator/paths.js +62 -0
- package/dist/cjs/client-generator/rendering.js +253 -0
- package/dist/cjs/client-generator/runtime.js +68 -0
- package/dist/cjs/client-generator/types.js +18 -0
- package/dist/cjs/cross-project-generation/index.js +40 -0
- package/dist/cjs/cross-project-generation/render.js +53 -0
- package/dist/cjs/cross-project-policy/evaluation.js +75 -0
- package/dist/cjs/cross-project-policy/index.js +40 -0
- package/dist/cjs/cross-project-policy/node.js +76 -0
- package/dist/cjs/effect-adapter/cross-project-policy.js +64 -0
- package/dist/cjs/effect-adapter/entry.js +98 -0
- package/dist/cjs/effect-adapter/error-response.js +75 -0
- package/dist/cjs/effect-adapter/index.js +187 -0
- package/dist/cjs/effect-source-loader/index.js +51 -0
- package/dist/cjs/effect-source-loader/loader.js +341 -0
- package/dist/cjs/effect-source-loader/worker-runtime-wrapper.js +97 -0
- package/dist/cjs/hono/bind-route-handlers.js +76 -0
- package/dist/cjs/hono/cross-project-policy.js +48 -0
- package/dist/cjs/hono/index.js +40 -0
- package/dist/esm/backend-federation/edge-runtime.mjs +186 -0
- package/dist/esm/backend-federation/edge.mjs +21 -0
- package/dist/esm/backend-federation/entry.mjs +56 -0
- package/dist/esm/backend-federation/identity.mjs +41 -0
- package/dist/esm/backend-federation/index.mjs +4 -0
- package/dist/esm/backend-federation/legacy-warning.mjs +2 -0
- package/dist/esm/backend-federation/load.mjs +34 -0
- package/dist/esm/backend-federation/node.mjs +12 -0
- package/dist/esm/backend-federation/plugin.mjs +25 -0
- package/dist/esm/backend-federation/remotes.mjs +13 -0
- package/dist/esm/backend-federation/runtime.mjs +90 -0
- package/dist/esm/backend-federation/types.mjs +0 -0
- package/dist/esm/backend-federation/utils.mjs +7 -0
- package/dist/esm/backend-federation/validate-loaded.mjs +18 -0
- package/dist/esm/backend-federation-manifest/errors.mjs +32 -0
- package/dist/esm/backend-federation-manifest/index.mjs +3 -0
- package/dist/esm/backend-federation-manifest/load.mjs +135 -0
- package/dist/esm/backend-federation-manifest/metadata.mjs +42 -0
- package/dist/esm/backend-federation-manifest/node.mjs +12 -0
- package/dist/esm/backend-federation-manifest/reference.mjs +88 -0
- package/dist/esm/backend-federation-manifest/remote.mjs +43 -0
- package/dist/esm/backend-federation-manifest/types.mjs +0 -0
- package/dist/esm/backend-federation-manifest/validation.mjs +66 -0
- package/dist/esm/client-generator/built-entry.mjs +40 -0
- package/dist/esm/client-generator/generator.mjs +32 -0
- package/dist/esm/client-generator/index.mjs +3 -0
- package/dist/esm/client-generator/paths.mjs +24 -0
- package/dist/esm/client-generator/rendering.mjs +209 -0
- package/dist/esm/client-generator/runtime.mjs +27 -0
- package/dist/esm/client-generator/types.mjs +0 -0
- package/dist/esm/cross-project-generation/index.mjs +1 -0
- package/dist/esm/cross-project-generation/render.mjs +15 -0
- package/dist/esm/cross-project-policy/evaluation.mjs +34 -0
- package/dist/esm/cross-project-policy/index.mjs +1 -0
- package/dist/esm/cross-project-policy/node.mjs +28 -0
- package/dist/esm/effect-adapter/cross-project-policy.mjs +26 -0
- package/dist/esm/effect-adapter/entry.mjs +50 -0
- package/dist/esm/effect-adapter/error-response.mjs +37 -0
- package/dist/esm/effect-adapter/index.mjs +139 -0
- package/dist/esm/effect-source-loader/index.mjs +3 -0
- package/dist/esm/effect-source-loader/loader.mjs +285 -0
- package/dist/esm/effect-source-loader/worker-runtime-wrapper.mjs +56 -0
- package/dist/esm/hono/bind-route-handlers.mjs +38 -0
- package/dist/esm/hono/cross-project-policy.mjs +10 -0
- package/dist/esm/hono/index.mjs +1 -0
- package/dist/esm-node/backend-federation/edge-runtime.mjs +187 -0
- package/dist/esm-node/backend-federation/edge.mjs +22 -0
- package/dist/esm-node/backend-federation/entry.mjs +57 -0
- package/dist/esm-node/backend-federation/identity.mjs +42 -0
- package/dist/esm-node/backend-federation/index.mjs +5 -0
- package/dist/esm-node/backend-federation/legacy-warning.mjs +3 -0
- package/dist/esm-node/backend-federation/load.mjs +35 -0
- package/dist/esm-node/backend-federation/node.mjs +13 -0
- package/dist/esm-node/backend-federation/plugin.mjs +26 -0
- package/dist/esm-node/backend-federation/remotes.mjs +14 -0
- package/dist/esm-node/backend-federation/runtime.mjs +91 -0
- package/dist/esm-node/backend-federation/types.mjs +1 -0
- package/dist/esm-node/backend-federation/utils.mjs +8 -0
- package/dist/esm-node/backend-federation/validate-loaded.mjs +19 -0
- package/dist/esm-node/backend-federation-manifest/errors.mjs +33 -0
- package/dist/esm-node/backend-federation-manifest/index.mjs +4 -0
- package/dist/esm-node/backend-federation-manifest/load.mjs +136 -0
- package/dist/esm-node/backend-federation-manifest/metadata.mjs +43 -0
- package/dist/esm-node/backend-federation-manifest/node.mjs +13 -0
- package/dist/esm-node/backend-federation-manifest/reference.mjs +89 -0
- package/dist/esm-node/backend-federation-manifest/remote.mjs +44 -0
- package/dist/esm-node/backend-federation-manifest/types.mjs +1 -0
- package/dist/esm-node/backend-federation-manifest/validation.mjs +67 -0
- package/dist/esm-node/client-generator/built-entry.mjs +41 -0
- package/dist/esm-node/client-generator/generator.mjs +33 -0
- package/dist/esm-node/client-generator/index.mjs +4 -0
- package/dist/esm-node/client-generator/paths.mjs +25 -0
- package/dist/esm-node/client-generator/rendering.mjs +210 -0
- package/dist/esm-node/client-generator/runtime.mjs +29 -0
- package/dist/esm-node/client-generator/types.mjs +1 -0
- package/dist/esm-node/cross-project-generation/index.mjs +2 -0
- package/dist/esm-node/cross-project-generation/render.mjs +16 -0
- package/dist/esm-node/cross-project-policy/evaluation.mjs +35 -0
- package/dist/esm-node/cross-project-policy/index.mjs +2 -0
- package/dist/esm-node/cross-project-policy/node.mjs +29 -0
- package/dist/esm-node/effect-adapter/cross-project-policy.mjs +27 -0
- package/dist/esm-node/effect-adapter/entry.mjs +51 -0
- package/dist/esm-node/effect-adapter/error-response.mjs +38 -0
- package/dist/esm-node/effect-adapter/index.mjs +140 -0
- package/dist/esm-node/effect-source-loader/index.mjs +4 -0
- package/dist/esm-node/effect-source-loader/loader.mjs +286 -0
- package/dist/esm-node/effect-source-loader/worker-runtime-wrapper.mjs +57 -0
- package/dist/esm-node/hono/bind-route-handlers.mjs +39 -0
- package/dist/esm-node/hono/cross-project-policy.mjs +11 -0
- package/dist/esm-node/hono/index.mjs +2 -0
- package/dist/types/backend-federation/edge-runtime.d.ts +46 -0
- package/dist/types/backend-federation/edge.d.ts +28 -0
- package/dist/types/backend-federation/entry.d.ts +2 -0
- package/dist/types/backend-federation/identity.d.ts +30 -0
- package/dist/types/backend-federation/index.d.ts +6 -0
- package/dist/types/backend-federation/legacy-warning.d.ts +1 -0
- package/dist/types/backend-federation/load.d.ts +13 -0
- package/dist/types/backend-federation/node.d.ts +4 -0
- package/dist/types/backend-federation/plugin.d.ts +3 -0
- package/dist/types/backend-federation/remotes.d.ts +2 -0
- package/dist/types/backend-federation/runtime.d.ts +3 -0
- package/dist/types/backend-federation/types.d.ts +76 -0
- package/dist/types/backend-federation/utils.d.ts +2 -0
- package/dist/types/backend-federation/validate-loaded.d.ts +8 -0
- package/dist/types/backend-federation-manifest/errors.d.ts +11 -0
- package/dist/types/backend-federation-manifest/index.d.ts +5 -0
- package/dist/types/backend-federation-manifest/load.d.ts +3 -0
- package/dist/types/backend-federation-manifest/metadata.d.ts +18 -0
- package/dist/types/backend-federation-manifest/node.d.ts +3 -0
- package/dist/types/backend-federation-manifest/reference.d.ts +4 -0
- package/dist/types/backend-federation-manifest/remote.d.ts +3 -0
- package/dist/types/backend-federation-manifest/types.d.ts +49 -0
- package/dist/types/backend-federation-manifest/validation.d.ts +5 -0
- package/dist/types/client-generator/built-entry.d.ts +16 -0
- package/dist/types/client-generator/generator.d.ts +3 -0
- package/dist/types/client-generator/index.d.ts +4 -0
- package/dist/types/client-generator/paths.d.ts +5 -0
- package/dist/types/client-generator/rendering.d.ts +24 -0
- package/dist/types/client-generator/runtime.d.ts +12 -0
- package/dist/types/client-generator/types.d.ts +33 -0
- package/dist/types/cross-project-generation/index.d.ts +1 -0
- package/dist/types/cross-project-generation/render.d.ts +1 -0
- package/dist/types/cross-project-policy/evaluation.d.ts +4 -0
- package/dist/types/cross-project-policy/index.d.ts +1 -0
- package/dist/types/cross-project-policy/node.d.ts +4 -0
- package/dist/types/effect-adapter/cross-project-policy.d.ts +4 -0
- package/dist/types/effect-adapter/entry.d.ts +2 -0
- package/dist/types/effect-adapter/error-response.d.ts +2 -0
- package/dist/types/effect-adapter/index.d.ts +19 -0
- package/dist/types/effect-source-loader/index.d.ts +3 -0
- package/dist/types/effect-source-loader/loader.d.ts +17 -0
- package/dist/types/effect-source-loader/worker-runtime-wrapper.d.ts +25 -0
- package/dist/types/hono/bind-route-handlers.d.ts +10 -0
- package/dist/types/hono/cross-project-policy.d.ts +3 -0
- package/dist/types/hono/index.d.ts +1 -0
- package/package.json +213 -0
- package/src/backend-federation/edge-runtime.ts +258 -0
- package/src/backend-federation/edge.ts +128 -0
- package/src/backend-federation/entry.ts +125 -0
- package/src/backend-federation/identity.ts +97 -0
- package/src/backend-federation/index.ts +30 -0
- package/src/backend-federation/legacy-warning.ts +2 -0
- package/src/backend-federation/load.ts +102 -0
- package/src/backend-federation/node.ts +33 -0
- package/src/backend-federation/plugin.ts +35 -0
- package/src/backend-federation/remotes.ts +17 -0
- package/src/backend-federation/runtime.ts +99 -0
- package/src/backend-federation/types.ts +103 -0
- package/src/backend-federation/utils.ts +7 -0
- package/src/backend-federation/validate-loaded.ts +72 -0
- package/src/backend-federation-manifest/errors.ts +85 -0
- package/src/backend-federation-manifest/index.ts +11 -0
- package/src/backend-federation-manifest/load.ts +266 -0
- package/src/backend-federation-manifest/metadata.ts +73 -0
- package/src/backend-federation-manifest/node.ts +19 -0
- package/src/backend-federation-manifest/reference.ts +240 -0
- package/src/backend-federation-manifest/remote.ts +102 -0
- package/src/backend-federation-manifest/types.ts +73 -0
- package/src/backend-federation-manifest/validation.ts +255 -0
- package/src/client-generator/built-entry.ts +70 -0
- package/src/client-generator/generator.ts +52 -0
- package/src/client-generator/index.ts +10 -0
- package/src/client-generator/paths.ts +40 -0
- package/src/client-generator/rendering.ts +307 -0
- package/src/client-generator/runtime.ts +69 -0
- package/src/client-generator/types.ts +35 -0
- package/src/cross-project-generation/index.ts +1 -0
- package/src/cross-project-generation/render.ts +14 -0
- package/src/cross-project-policy/evaluation.ts +70 -0
- package/src/cross-project-policy/index.ts +1 -0
- package/src/cross-project-policy/node.ts +63 -0
- package/src/effect-adapter/cross-project-policy.ts +63 -0
- package/src/effect-adapter/entry.ts +95 -0
- package/src/effect-adapter/error-response.ts +68 -0
- package/src/effect-adapter/index.ts +246 -0
- package/src/effect-source-loader/index.ts +6 -0
- package/src/effect-source-loader/loader.ts +397 -0
- package/src/effect-source-loader/worker-runtime-wrapper.ts +90 -0
- package/src/hono/bind-route-handlers.ts +62 -0
- package/src/hono/cross-project-policy.ts +26 -0
- package/src/hono/index.ts +4 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
loadBackendFederatedEffectApiFromManifest: ()=>loadBackendFederatedEffectApiFromManifest
|
|
32
|
+
});
|
|
33
|
+
const index_js_namespaceObject = require("../backend-federation/index.js");
|
|
34
|
+
const load_js_namespaceObject = require("../backend-federation/load.js");
|
|
35
|
+
const external_errors_js_namespaceObject = require("./errors.js");
|
|
36
|
+
const external_reference_js_namespaceObject = require("./reference.js");
|
|
37
|
+
const external_remote_js_namespaceObject = require("./remote.js");
|
|
38
|
+
const external_validation_js_namespaceObject = require("./validation.js");
|
|
39
|
+
function createManifestLoadScope(options) {
|
|
40
|
+
const controller = new AbortController();
|
|
41
|
+
const policyTimeouts = [
|
|
42
|
+
options.manifestPolicy?.timeoutMs,
|
|
43
|
+
options.entryPolicy?.timeoutMs
|
|
44
|
+
].filter((timeout)=>void 0 !== timeout);
|
|
45
|
+
const configuredTimeouts = [
|
|
46
|
+
options.timeoutMs,
|
|
47
|
+
...policyTimeouts
|
|
48
|
+
].filter((timeout)=>void 0 !== timeout);
|
|
49
|
+
for (const timeout of configuredTimeouts)if (!Number.isSafeInteger(timeout) || timeout < 0) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', '[BFF][Effect] Backend federation timeoutMs must be a non-negative safe integer.');
|
|
50
|
+
const timeoutMs = options.timeoutMs ?? (policyTimeouts.length > 0 ? Math.min(...policyTimeouts) : 0);
|
|
51
|
+
const inputSignals = [
|
|
52
|
+
options.signal,
|
|
53
|
+
options.manifestPolicy?.signal,
|
|
54
|
+
options.entryPolicy?.signal
|
|
55
|
+
].filter((signal)=>void 0 !== signal);
|
|
56
|
+
const abortListeners = [];
|
|
57
|
+
let timedOut = false;
|
|
58
|
+
const forwardAbort = (signal)=>{
|
|
59
|
+
controller.abort(signal.reason);
|
|
60
|
+
};
|
|
61
|
+
for (const signal of inputSignals){
|
|
62
|
+
if (signal.aborted) {
|
|
63
|
+
forwardAbort(signal);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
const listener = ()=>forwardAbort(signal);
|
|
67
|
+
abortListeners.push([
|
|
68
|
+
signal,
|
|
69
|
+
listener
|
|
70
|
+
]);
|
|
71
|
+
signal.addEventListener('abort', listener, {
|
|
72
|
+
once: true
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const timeout = timeoutMs > 0 ? setTimeout(()=>{
|
|
76
|
+
if (controller.signal.aborted) return;
|
|
77
|
+
timedOut = true;
|
|
78
|
+
controller.abort(new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('timeout', `[BFF][Effect] Backend federation load timed out after ${timeoutMs}ms.`));
|
|
79
|
+
}, timeoutMs) : void 0;
|
|
80
|
+
return {
|
|
81
|
+
cleanup () {
|
|
82
|
+
if (timeout) clearTimeout(timeout);
|
|
83
|
+
for (const [signal, listener] of abortListeners)signal.removeEventListener('abort', listener);
|
|
84
|
+
},
|
|
85
|
+
signal: controller.signal,
|
|
86
|
+
timedOut: ()=>timedOut,
|
|
87
|
+
timeoutMs
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function isRemoteManifestReference(options) {
|
|
91
|
+
if (void 0 !== options.manifest || options.manifestPath) return false;
|
|
92
|
+
return Boolean(options.manifestUrl || options.manifestEnv);
|
|
93
|
+
}
|
|
94
|
+
function hasPinnedRemoteEntryExpectation(options) {
|
|
95
|
+
const expected = options.entryPolicy?.expected;
|
|
96
|
+
return 'number' == typeof expected?.byteLength && 'string' == typeof expected.entryUrl && 'string' == typeof expected.remoteName && 'string' == typeof expected.sha256;
|
|
97
|
+
}
|
|
98
|
+
function isCallerPinnedStaticRemote(options, remote) {
|
|
99
|
+
return options.remote?.entry === remote.entry && options.remote?.name === remote.name && /^(?:binding|service|static):/u.test(remote.entry);
|
|
100
|
+
}
|
|
101
|
+
function throwIfManifestLoadAborted(signal) {
|
|
102
|
+
if (signal.aborted) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('remote_unavailable', '[BFF][Effect] Backend federation load was aborted before remote execution.', signal.reason);
|
|
103
|
+
}
|
|
104
|
+
async function loadBackendFederatedEffectApiFromManifest(options) {
|
|
105
|
+
let manifest;
|
|
106
|
+
let remote;
|
|
107
|
+
let scope;
|
|
108
|
+
try {
|
|
109
|
+
scope = createManifestLoadScope(options);
|
|
110
|
+
throwIfManifestLoadAborted(scope.signal);
|
|
111
|
+
manifest = await (0, external_reference_js_namespaceObject.loadBackendFederationManifest)({
|
|
112
|
+
...options,
|
|
113
|
+
manifestPolicy: {
|
|
114
|
+
...options.manifestPolicy,
|
|
115
|
+
signal: scope.signal,
|
|
116
|
+
timeoutMs: 0
|
|
117
|
+
},
|
|
118
|
+
signal: scope.signal,
|
|
119
|
+
timeoutMs: 0
|
|
120
|
+
});
|
|
121
|
+
(0, external_validation_js_namespaceObject.validateBackendFederationManifest)(manifest, options.expected);
|
|
122
|
+
remote = (0, external_remote_js_namespaceObject.resolveBackendFederationRemoteFromManifest)(manifest, options.remote);
|
|
123
|
+
throwIfManifestLoadAborted(scope.signal);
|
|
124
|
+
const remoteManifest = isRemoteManifestReference(options);
|
|
125
|
+
if (remoteManifest && void 0 !== options.runtime) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', `[BFF][Effect] Backend federation remote ${remote.name} cannot use a custom runtime selected by a network manifest.`);
|
|
126
|
+
if (remoteManifest && !/^https?:\/\//iu.test(remote.entry) && !isCallerPinnedStaticRemote(options, remote)) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', `[BFF][Effect] Backend federation network manifests cannot select local, global, or plugin entry ${remote.entry}. Pin a static/service binding in caller configuration or use a verified HTTP(S) entry.`);
|
|
127
|
+
if (remoteManifest && /^https?:\/\//iu.test(remote.entry) && !hasPinnedRemoteEntryExpectation(options)) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', `[BFF][Effect] Backend federation remote ${remote.name} from a network manifest requires caller-pinned entryUrl, remoteName, sha256, and byteLength values.`);
|
|
128
|
+
if (/^https?:\/\//iu.test(remote.entry) && void 0 === remote.verification && options.entryPolicy?.expected === void 0) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', `[BFF][Effect] Backend federation remote ${remote.name} requires entry.sha256 and entry.byteLength before network execution.`);
|
|
129
|
+
if (/^https?:\/\//iu.test(remote.entry) && void 0 !== options.runtime) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_invalid', `[BFF][Effect] Backend federation remote ${remote.name} cannot use a custom runtime for network entry execution.`);
|
|
130
|
+
const loaded = await (0, load_js_namespaceObject.loadBackendFederatedEffectApi)({
|
|
131
|
+
hostName: options.hostName,
|
|
132
|
+
remote,
|
|
133
|
+
...options.plugins ? {
|
|
134
|
+
plugins: options.plugins
|
|
135
|
+
} : {},
|
|
136
|
+
entryPolicy: {
|
|
137
|
+
...options.entryPolicy,
|
|
138
|
+
signal: scope.signal,
|
|
139
|
+
timeoutMs: 0
|
|
140
|
+
},
|
|
141
|
+
...options.runtime ? {
|
|
142
|
+
runtime: options.runtime
|
|
143
|
+
} : {},
|
|
144
|
+
...options.expected?.unitId && options.expected.buildMarker ? {
|
|
145
|
+
expected: {
|
|
146
|
+
unitId: options.expected.unitId,
|
|
147
|
+
buildMarker: options.expected.buildMarker
|
|
148
|
+
},
|
|
149
|
+
allowMissingIdentityMetadata: true
|
|
150
|
+
} : {}
|
|
151
|
+
}).catch((error)=>{
|
|
152
|
+
throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError(scope?.timedOut() === true ? 'timeout' : (0, external_validation_js_namespaceObject.classifyLoadError)(error), `[BFF][Effect] Backend federation remote ${remote?.name ?? 'unknown'} could not load ${remote?.expose ?? index_js_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE}.`, error);
|
|
153
|
+
});
|
|
154
|
+
(0, external_validation_js_namespaceObject.validateLoadedBackendFederationContract)(loaded, manifest, remote);
|
|
155
|
+
return loaded;
|
|
156
|
+
} catch (error) {
|
|
157
|
+
const adapterError = scope?.timedOut() === true ? new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('timeout', `[BFF][Effect] Backend federation load timed out after ${scope.timeoutMs}ms.`, error) : error instanceof external_errors_js_namespaceObject.BackendFederationManifestAdapterError ? error : new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('remote_unavailable', '[BFF][Effect] Backend federation manifest adapter failed.', error);
|
|
158
|
+
if (options.fallback) return options.fallback(adapterError, {
|
|
159
|
+
manifest,
|
|
160
|
+
remote
|
|
161
|
+
});
|
|
162
|
+
throw adapterError;
|
|
163
|
+
} finally{
|
|
164
|
+
scope?.cleanup();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.loadBackendFederatedEffectApiFromManifest = __webpack_exports__.loadBackendFederatedEffectApiFromManifest;
|
|
168
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
169
|
+
"loadBackendFederatedEffectApiFromManifest"
|
|
170
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
171
|
+
Object.defineProperty(exports, '__esModule', {
|
|
172
|
+
value: true
|
|
173
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
backendFederationMetadata: ()=>backendFederationMetadata,
|
|
32
|
+
deliveryUnitMetadata: ()=>deliveryUnitMetadata,
|
|
33
|
+
isRecord: ()=>isRecord,
|
|
34
|
+
manifestDeliveryUnit: ()=>manifestDeliveryUnit,
|
|
35
|
+
recordField: ()=>recordField,
|
|
36
|
+
resolveRemoteEntryFromMetadata: ()=>resolveRemoteEntryFromMetadata,
|
|
37
|
+
stringValue: ()=>stringValue,
|
|
38
|
+
versionBoundaryMetadata: ()=>versionBoundaryMetadata
|
|
39
|
+
});
|
|
40
|
+
const universal_namespaceObject = require("@modern-js/utils/universal");
|
|
41
|
+
function stringValue(value) {
|
|
42
|
+
return 'string' == typeof value && value.length > 0 ? value : void 0;
|
|
43
|
+
}
|
|
44
|
+
function isRecord(value) {
|
|
45
|
+
return 'object' == typeof value && null !== value;
|
|
46
|
+
}
|
|
47
|
+
function recordField(value, field) {
|
|
48
|
+
const fieldValue = value?.[field];
|
|
49
|
+
return isRecord(fieldValue) ? fieldValue : void 0;
|
|
50
|
+
}
|
|
51
|
+
function resolveRemoteEntryFromMetadata(manifest) {
|
|
52
|
+
const metaData = recordField(manifest, 'metaData');
|
|
53
|
+
const remoteEntry = recordField(metaData, 'remoteEntry');
|
|
54
|
+
const publicPath = stringValue(metaData?.publicPath) ?? stringValue(metaData?.ssrPublicPath);
|
|
55
|
+
const entryName = stringValue(remoteEntry?.name);
|
|
56
|
+
if (!publicPath || !entryName) return;
|
|
57
|
+
const entryPath = stringValue(remoteEntry?.path) ?? '';
|
|
58
|
+
const normalizedBase = publicPath.replace(/\/+$/u, '');
|
|
59
|
+
const normalizedPath = entryPath.replace(/^\/+|\/+$/gu, '');
|
|
60
|
+
return [
|
|
61
|
+
normalizedBase,
|
|
62
|
+
normalizedPath,
|
|
63
|
+
entryName
|
|
64
|
+
].filter(Boolean).join('/');
|
|
65
|
+
}
|
|
66
|
+
function backendFederationMetadata(manifest) {
|
|
67
|
+
return (0, universal_namespaceObject.backendFederationMetadata)(manifest);
|
|
68
|
+
}
|
|
69
|
+
function versionBoundaryMetadata(manifest) {
|
|
70
|
+
return (0, universal_namespaceObject.backendFederationVersionBoundary)(manifest);
|
|
71
|
+
}
|
|
72
|
+
function deliveryUnitMetadata(record) {
|
|
73
|
+
return recordField(record, 'deliveryUnit');
|
|
74
|
+
}
|
|
75
|
+
function manifestDeliveryUnit(backendFederation, boundary) {
|
|
76
|
+
return {
|
|
77
|
+
boundary: deliveryUnitMetadata(boundary),
|
|
78
|
+
top: deliveryUnitMetadata(backendFederation)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.backendFederationMetadata = __webpack_exports__.backendFederationMetadata;
|
|
82
|
+
exports.deliveryUnitMetadata = __webpack_exports__.deliveryUnitMetadata;
|
|
83
|
+
exports.isRecord = __webpack_exports__.isRecord;
|
|
84
|
+
exports.manifestDeliveryUnit = __webpack_exports__.manifestDeliveryUnit;
|
|
85
|
+
exports.recordField = __webpack_exports__.recordField;
|
|
86
|
+
exports.resolveRemoteEntryFromMetadata = __webpack_exports__.resolveRemoteEntryFromMetadata;
|
|
87
|
+
exports.stringValue = __webpack_exports__.stringValue;
|
|
88
|
+
exports.versionBoundaryMetadata = __webpack_exports__.versionBoundaryMetadata;
|
|
89
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
90
|
+
"backendFederationMetadata",
|
|
91
|
+
"deliveryUnitMetadata",
|
|
92
|
+
"isRecord",
|
|
93
|
+
"manifestDeliveryUnit",
|
|
94
|
+
"recordField",
|
|
95
|
+
"resolveRemoteEntryFromMetadata",
|
|
96
|
+
"stringValue",
|
|
97
|
+
"versionBoundaryMetadata"
|
|
98
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
99
|
+
Object.defineProperty(exports, '__esModule', {
|
|
100
|
+
value: true
|
|
101
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
loadBackendFederatedEffectApiFromManifest: ()=>loadBackendFederatedEffectApiFromManifest
|
|
32
|
+
});
|
|
33
|
+
const node_namespaceObject = require("@modern-js/server-runtime-extensions/backend-federation-security/node");
|
|
34
|
+
const external_load_js_namespaceObject = require("./load.js");
|
|
35
|
+
function loadBackendFederatedEffectApiFromManifest(options) {
|
|
36
|
+
return (0, external_load_js_namespaceObject.loadBackendFederatedEffectApiFromManifest)({
|
|
37
|
+
...options,
|
|
38
|
+
entryPolicy: {
|
|
39
|
+
...options.entryPolicy,
|
|
40
|
+
evaluateCommonJs: options.entryPolicy?.evaluateCommonJs ?? node_namespaceObject.evaluateNodeBackendFederationCommonJs
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
exports.loadBackendFederatedEffectApiFromManifest = __webpack_exports__.loadBackendFederatedEffectApiFromManifest;
|
|
45
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
46
|
+
"loadBackendFederatedEffectApiFromManifest"
|
|
47
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
48
|
+
Object.defineProperty(exports, '__esModule', {
|
|
49
|
+
value: true
|
|
50
|
+
});
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
loadBackendFederationManifest: ()=>loadBackendFederationManifest,
|
|
32
|
+
resolveBackendFederationManifestReference: ()=>resolveBackendFederationManifestReference,
|
|
33
|
+
withTimeout: ()=>withTimeout
|
|
34
|
+
});
|
|
35
|
+
const backend_federation_security_namespaceObject = require("@modern-js/server-runtime-extensions/backend-federation-security");
|
|
36
|
+
const index_js_namespaceObject = require("../backend-federation/index.js");
|
|
37
|
+
const external_errors_js_namespaceObject = require("./errors.js");
|
|
38
|
+
const external_metadata_js_namespaceObject = require("./metadata.js");
|
|
39
|
+
function getProcessEnv() {
|
|
40
|
+
return "u" > typeof process ? process.env : void 0;
|
|
41
|
+
}
|
|
42
|
+
function resolveManifestReferenceSource(options) {
|
|
43
|
+
if (options.manifestPath) return 'path';
|
|
44
|
+
if (options.manifestUrl) return 'url';
|
|
45
|
+
if (options.manifestEnv) return 'env';
|
|
46
|
+
}
|
|
47
|
+
function resolveBackendFederationManifestReference(options) {
|
|
48
|
+
if (options.manifestPath) return options.manifestPath;
|
|
49
|
+
if (options.manifestUrl) return options.manifestUrl;
|
|
50
|
+
if (!options.manifestEnv) return;
|
|
51
|
+
return options.env?.[options.manifestEnv] ?? getProcessEnv()?.[options.manifestEnv];
|
|
52
|
+
}
|
|
53
|
+
function assertExpectedIdentityForReference(options, source) {
|
|
54
|
+
if (void 0 === source || 'path' === source) return;
|
|
55
|
+
if (options.expected?.unitId && options.expected.buildMarker) return;
|
|
56
|
+
throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('version_mismatch', `[BFF][Effect] Backend federation ${source} manifest references require expected.unitId and expected.buildMarker.`, void 0, {
|
|
57
|
+
label: 'expected.deliveryUnit',
|
|
58
|
+
expected: 'unitId + buildMarker',
|
|
59
|
+
received: options.expected,
|
|
60
|
+
referenceSource: source
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function isHttpUrl(value) {
|
|
64
|
+
return /^https?:\/\//iu.test(value);
|
|
65
|
+
}
|
|
66
|
+
function referenceForDiagnostics(reference) {
|
|
67
|
+
return isHttpUrl(reference) ? (0, backend_federation_security_namespaceObject.redactBackendFederationUrl)(reference) : '[local manifest]';
|
|
68
|
+
}
|
|
69
|
+
async function readFileReference(reference) {
|
|
70
|
+
const [{ fileURLToPath }, fs] = await Promise.all([
|
|
71
|
+
import("node:url"),
|
|
72
|
+
import("node:fs/promises")
|
|
73
|
+
]);
|
|
74
|
+
const filePath = reference.startsWith('file:') ? fileURLToPath(reference) : reference;
|
|
75
|
+
return fs.readFile(filePath, 'utf8');
|
|
76
|
+
}
|
|
77
|
+
async function withTimeout(promise, timeoutMs, label) {
|
|
78
|
+
if (!timeoutMs || timeoutMs <= 0) return promise;
|
|
79
|
+
let timeout;
|
|
80
|
+
try {
|
|
81
|
+
return await Promise.race([
|
|
82
|
+
promise,
|
|
83
|
+
new Promise((_, reject)=>{
|
|
84
|
+
timeout = setTimeout(()=>{
|
|
85
|
+
reject(new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('timeout', `[BFF][Effect] ${label} timed out after ${timeoutMs}ms.`));
|
|
86
|
+
}, timeoutMs);
|
|
87
|
+
})
|
|
88
|
+
]);
|
|
89
|
+
} finally{
|
|
90
|
+
if (timeout) clearTimeout(timeout);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function loadBackendFederationManifest(options) {
|
|
94
|
+
if (options.manifest) return options.manifest;
|
|
95
|
+
const reference = resolveBackendFederationManifestReference(options);
|
|
96
|
+
if (!reference) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_unavailable', `[BFF][Effect] Backend federation manifest reference is missing. Pass manifest, manifestPath, manifestUrl, or manifestEnv for ${index_js_namespaceObject.BACKEND_FEDERATION_MANIFEST_FILE}.`);
|
|
97
|
+
assertExpectedIdentityForReference(options, resolveManifestReferenceSource(options));
|
|
98
|
+
const referenceSource = resolveManifestReferenceSource(options);
|
|
99
|
+
if ('path' === referenceSource && isHttpUrl(reference)) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_unavailable', '[BFF][Effect] Backend federation manifestPath must identify an explicit local file. Use manifestUrl for HTTP(S) manifests.');
|
|
100
|
+
if (('url' === referenceSource || 'env' === referenceSource) && !isHttpUrl(reference)) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_unavailable', `[BFF][Effect] Backend federation ${referenceSource} manifest references must use HTTP(S). Use manifestPath for an explicit local file.`);
|
|
101
|
+
try {
|
|
102
|
+
const diagnosticReference = referenceForDiagnostics(reference);
|
|
103
|
+
const source = isHttpUrl(reference) ? new TextDecoder('utf-8', {
|
|
104
|
+
fatal: true
|
|
105
|
+
}).decode(await (0, backend_federation_security_namespaceObject.loadBoundedBackendFederationResource)(reference, {
|
|
106
|
+
allowInsecureHttp: options.manifestPolicy?.allowInsecureHttp === true,
|
|
107
|
+
fetch: options.fetch,
|
|
108
|
+
kind: 'manifest',
|
|
109
|
+
maxBytes: options.manifestPolicy?.maxBytes,
|
|
110
|
+
signal: options.manifestPolicy?.signal ?? options.signal,
|
|
111
|
+
timeoutMs: options.manifestPolicy?.timeoutMs ?? options.timeoutMs
|
|
112
|
+
})) : await withTimeout(readFileReference(reference), options.manifestPolicy?.timeoutMs ?? options.timeoutMs, 'Backend federation local manifest');
|
|
113
|
+
const manifest = JSON.parse(source);
|
|
114
|
+
(0, external_errors_js_namespaceObject.assertManifestAdapter)((0, external_metadata_js_namespaceObject.isRecord)(manifest), 'manifest_invalid', `[BFF][Effect] Backend federation manifest ${diagnosticReference} must be a JSON object.`);
|
|
115
|
+
return manifest;
|
|
116
|
+
} catch (error) {
|
|
117
|
+
if (error instanceof external_errors_js_namespaceObject.BackendFederationManifestAdapterError) throw error;
|
|
118
|
+
if (error instanceof backend_federation_security_namespaceObject.BackendFederationRemoteEntryError) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('timeout' === error.code ? 'timeout' : 'manifest_unavailable', `[BFF][Effect] ${error.message}`, error, error.details);
|
|
119
|
+
throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('manifest_unavailable', `[BFF][Effect] Backend federation manifest ${referenceForDiagnostics(reference)} could not be loaded.`, error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.loadBackendFederationManifest = __webpack_exports__.loadBackendFederationManifest;
|
|
123
|
+
exports.resolveBackendFederationManifestReference = __webpack_exports__.resolveBackendFederationManifestReference;
|
|
124
|
+
exports.withTimeout = __webpack_exports__.withTimeout;
|
|
125
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
126
|
+
"loadBackendFederationManifest",
|
|
127
|
+
"resolveBackendFederationManifestReference",
|
|
128
|
+
"withTimeout"
|
|
129
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
130
|
+
Object.defineProperty(exports, '__esModule', {
|
|
131
|
+
value: true
|
|
132
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
resolveBackendFederationRemoteFromManifest: ()=>resolveBackendFederationRemoteFromManifest
|
|
32
|
+
});
|
|
33
|
+
const backend_federation_security_namespaceObject = require("@modern-js/server-runtime-extensions/backend-federation-security");
|
|
34
|
+
const universal_namespaceObject = require("@modern-js/utils/universal");
|
|
35
|
+
const index_js_namespaceObject = require("../backend-federation/index.js");
|
|
36
|
+
const external_errors_js_namespaceObject = require("./errors.js");
|
|
37
|
+
const external_metadata_js_namespaceObject = require("./metadata.js");
|
|
38
|
+
function resolveBackendFederationRemoteFromManifest(manifest, remoteOverride = {}) {
|
|
39
|
+
const backendFederation = (0, external_metadata_js_namespaceObject.backendFederationMetadata)(manifest);
|
|
40
|
+
const entry = (0, external_metadata_js_namespaceObject.recordField)(manifest, 'entry');
|
|
41
|
+
const metaData = (0, external_metadata_js_namespaceObject.recordField)(manifest, 'metaData');
|
|
42
|
+
const remoteEntry = (0, external_metadata_js_namespaceObject.recordField)(metaData, 'remoteEntry');
|
|
43
|
+
const remoteName = remoteOverride.name ?? (0, external_metadata_js_namespaceObject.stringValue)(backendFederation?.name) ?? (0, external_metadata_js_namespaceObject.stringValue)(manifest.name) ?? (0, external_metadata_js_namespaceObject.stringValue)(manifest.id);
|
|
44
|
+
const manifestEntryUrl = (0, external_metadata_js_namespaceObject.stringValue)(backendFederation?.containerEntry) ?? (0, external_metadata_js_namespaceObject.stringValue)(entry?.url) ?? (0, external_metadata_js_namespaceObject.resolveRemoteEntryFromMetadata)(manifest);
|
|
45
|
+
const remoteEntryUrl = remoteOverride.entry ?? manifestEntryUrl;
|
|
46
|
+
const remoteType = remoteOverride.type ?? (0, external_metadata_js_namespaceObject.stringValue)(backendFederation?.remoteType) ?? (0, external_metadata_js_namespaceObject.stringValue)(entry?.type) ?? (0, external_metadata_js_namespaceObject.stringValue)(remoteEntry?.type) ?? 'module';
|
|
47
|
+
const expose = remoteOverride.expose ?? (0, universal_namespaceObject.backendFederationExposeNames)(backendFederation)[0] ?? index_js_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
|
|
48
|
+
let verification;
|
|
49
|
+
try {
|
|
50
|
+
const manifestVerification = (0, backend_federation_security_namespaceObject.resolveBackendFederationRemoteEntryVerification)(manifest);
|
|
51
|
+
verification = remoteOverride.verification ?? (remoteEntryUrl === manifestEntryUrl ? manifestVerification : void 0);
|
|
52
|
+
} catch (cause) {
|
|
53
|
+
if (cause instanceof backend_federation_security_namespaceObject.BackendFederationRemoteEntryError) throw new external_errors_js_namespaceObject.BackendFederationManifestAdapterError('identity_mismatch' === cause.code ? 'version_mismatch' : 'manifest_invalid', `[BFF][Effect] ${cause.message}`, cause, cause.details);
|
|
54
|
+
throw cause;
|
|
55
|
+
}
|
|
56
|
+
(0, external_errors_js_namespaceObject.assertManifestAdapter)(remoteName, 'manifest_invalid', '[BFF][Effect] Backend federation manifest must declare a remote name.');
|
|
57
|
+
(0, external_errors_js_namespaceObject.assertManifestAdapter)(remoteEntryUrl, 'manifest_invalid', '[BFF][Effect] Backend federation manifest must declare a backend remote entry URL.');
|
|
58
|
+
(0, external_errors_js_namespaceObject.assertManifestAdapter)(expose === index_js_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE, 'manifest_invalid', `[BFF][Effect] Backend federation manifest expose must be ${index_js_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE}.`);
|
|
59
|
+
return {
|
|
60
|
+
name: remoteName,
|
|
61
|
+
entry: remoteEntryUrl,
|
|
62
|
+
type: remoteType,
|
|
63
|
+
...verification ? {
|
|
64
|
+
verification
|
|
65
|
+
} : {},
|
|
66
|
+
...remoteOverride.entryGlobalName ? {
|
|
67
|
+
entryGlobalName: remoteOverride.entryGlobalName
|
|
68
|
+
} : {},
|
|
69
|
+
expose,
|
|
70
|
+
...remoteOverride.shareScope ? {
|
|
71
|
+
shareScope: remoteOverride.shareScope
|
|
72
|
+
} : {}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
exports.resolveBackendFederationRemoteFromManifest = __webpack_exports__.resolveBackendFederationRemoteFromManifest;
|
|
76
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
77
|
+
"resolveBackendFederationRemoteFromManifest"
|
|
78
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
79
|
+
Object.defineProperty(exports, '__esModule', {
|
|
80
|
+
value: true
|
|
81
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.r = (exports1)=>{
|
|
5
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
6
|
+
value: 'Module'
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
})();
|
|
13
|
+
var __webpack_exports__ = {};
|
|
14
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15
|
+
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
16
|
+
Object.defineProperty(exports, '__esModule', {
|
|
17
|
+
value: true
|
|
18
|
+
});
|