@bleedingdev/modern-js-plugin-bff-extensions 3.9.0-ultramodern.1 → 3.9.0-ultramodern.11
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 +13 -3
- package/dist/cjs/backend-federation/edge-runtime.js +3 -15
- package/dist/cjs/backend-federation/edge.js +8 -9
- package/dist/cjs/backend-federation/identity.js +17 -23
- package/dist/cjs/backend-federation/index.js +5 -5
- package/dist/cjs/backend-federation/load.js +3 -13
- package/dist/cjs/backend-federation/validate-loaded.js +2 -4
- package/dist/cjs/backend-federation-manifest/load.js +37 -12
- package/dist/cjs/backend-federation-manifest/metadata.js +3 -3
- package/dist/cjs/backend-federation-manifest/remote.js +2 -2
- package/dist/cjs/backend-federation-manifest/validation.js +7 -7
- package/dist/cjs/cross-project-policy/evaluation.js +3 -3
- package/dist/cjs/cross-project-policy/node.js +4 -3
- package/dist/cjs/{backend-federation/legacy-warning.js → cross-project-policy/producer-runtime.js} +23 -5
- package/dist/cjs/effect-adapter/entry.js +1 -0
- package/dist/cjs/effect-adapter/index.js +9 -2
- package/dist/cjs/{client-generator → effect-source-loader}/built-entry.js +1 -1
- package/dist/cjs/{client-generator/runtime.js → effect-source-loader/http-api-runtime.js} +12 -20
- package/dist/cjs/effect-source-loader/index.js +18 -6
- package/dist/cjs/effect-source-loader/loader.js +10 -29
- package/dist/cjs/effect-source-loader/operation-contracts.js +83 -0
- package/dist/cjs/effect-source-loader/rspack-loader.js +73 -0
- package/dist/cjs/effect-source-loader/worker-runtime-source.js +71 -0
- package/dist/cjs/effect-source-loader/worker-runtime-wrapper.js +7 -50
- package/dist/cjs/hono/cross-project-policy.js +2 -1
- package/dist/cjs/hono/node.js +51 -0
- package/dist/esm/backend-federation/edge-runtime.mjs +2 -11
- package/dist/esm/backend-federation/edge.mjs +4 -5
- package/dist/esm/backend-federation/identity.mjs +17 -23
- package/dist/esm/backend-federation/index.mjs +1 -1
- package/dist/esm/backend-federation/load.mjs +2 -12
- package/dist/esm/backend-federation/validate-loaded.mjs +2 -4
- package/dist/esm/backend-federation-manifest/load.mjs +37 -12
- package/dist/esm/backend-federation-manifest/metadata.mjs +1 -1
- package/dist/esm/backend-federation-manifest/remote.mjs +1 -1
- package/dist/esm/backend-federation-manifest/validation.mjs +5 -5
- package/dist/esm/cross-project-policy/evaluation.mjs +1 -1
- package/dist/esm/cross-project-policy/node.mjs +2 -1
- package/dist/esm/cross-project-policy/producer-runtime.mjs +20 -0
- package/dist/esm/effect-adapter/entry.mjs +1 -0
- package/dist/esm/effect-adapter/index.mjs +5 -1
- package/dist/esm/{client-generator → effect-source-loader}/built-entry.mjs +1 -1
- package/dist/esm/effect-source-loader/http-api-runtime.mjs +19 -0
- package/dist/esm/effect-source-loader/index.mjs +5 -2
- package/dist/esm/effect-source-loader/loader.mjs +10 -29
- package/dist/esm/effect-source-loader/operation-contracts.mjs +45 -0
- package/dist/esm/effect-source-loader/rspack-loader.mjs +35 -0
- package/dist/esm/effect-source-loader/worker-runtime-source.mjs +23 -0
- package/dist/esm/effect-source-loader/worker-runtime-wrapper.mjs +5 -45
- package/dist/esm/hono/cross-project-policy.mjs +2 -1
- package/dist/esm-node/backend-federation/edge-runtime.mjs +2 -11
- package/dist/esm-node/backend-federation/edge.mjs +4 -5
- package/dist/esm-node/backend-federation/identity.mjs +17 -23
- package/dist/esm-node/backend-federation/index.mjs +1 -1
- package/dist/esm-node/backend-federation/load.mjs +2 -12
- package/dist/esm-node/backend-federation/validate-loaded.mjs +2 -4
- package/dist/esm-node/backend-federation-manifest/load.mjs +37 -12
- package/dist/esm-node/backend-federation-manifest/metadata.mjs +1 -1
- package/dist/esm-node/backend-federation-manifest/remote.mjs +1 -1
- package/dist/esm-node/backend-federation-manifest/validation.mjs +5 -5
- package/dist/esm-node/cross-project-policy/evaluation.mjs +1 -1
- package/dist/esm-node/cross-project-policy/node.mjs +2 -1
- package/dist/esm-node/cross-project-policy/producer-runtime.mjs +21 -0
- package/dist/esm-node/effect-adapter/entry.mjs +1 -0
- package/dist/esm-node/effect-adapter/index.mjs +5 -1
- package/dist/esm-node/{client-generator → effect-source-loader}/built-entry.mjs +1 -1
- package/dist/esm-node/effect-source-loader/http-api-runtime.mjs +20 -0
- package/dist/esm-node/effect-source-loader/index.mjs +5 -2
- package/dist/esm-node/effect-source-loader/loader.mjs +10 -29
- package/dist/esm-node/effect-source-loader/operation-contracts.mjs +46 -0
- package/dist/esm-node/effect-source-loader/rspack-loader.mjs +37 -0
- package/dist/esm-node/effect-source-loader/worker-runtime-source.mjs +24 -0
- package/dist/esm-node/effect-source-loader/worker-runtime-wrapper.mjs +5 -45
- package/dist/esm-node/hono/cross-project-policy.mjs +2 -1
- package/dist/esm-node/hono/node.mjs +14 -0
- package/dist/types/backend-federation/edge-runtime.d.ts +0 -5
- package/dist/types/backend-federation/edge.d.ts +1 -3
- package/dist/types/backend-federation/identity.d.ts +2 -11
- package/dist/types/backend-federation/index.d.ts +1 -1
- package/dist/types/backend-federation/load.d.ts +1 -7
- package/dist/types/backend-federation/node.d.ts +1 -3
- package/dist/types/backend-federation/types.d.ts +1 -7
- package/dist/types/backend-federation/validate-loaded.d.ts +1 -2
- package/dist/types/backend-federation-manifest/metadata.d.ts +0 -6
- package/dist/types/cross-project-policy/evaluation.d.ts +1 -1
- package/dist/types/cross-project-policy/node.d.ts +2 -1
- package/dist/types/cross-project-policy/producer-runtime.d.ts +20 -0
- package/dist/types/effect-adapter/entry.d.ts +1 -0
- package/dist/types/effect-adapter/index.d.ts +2 -0
- package/dist/types/effect-source-loader/index.d.ts +5 -2
- package/dist/types/effect-source-loader/operation-contracts.d.ts +8 -0
- package/dist/types/effect-source-loader/rspack-loader.d.ts +9 -0
- package/dist/types/effect-source-loader/worker-runtime-source.d.ts +4 -0
- package/dist/types/effect-source-loader/worker-runtime-wrapper.d.ts +4 -22
- package/dist/types/hono/node.d.ts +4 -0
- package/package.json +50 -22
- package/src/backend-federation/edge-runtime.ts +2 -13
- package/src/backend-federation/edge.ts +9 -17
- package/src/backend-federation/identity.ts +9 -27
- package/src/backend-federation/index.ts +1 -1
- package/src/backend-federation/load.ts +7 -34
- package/src/backend-federation/node.ts +0 -11
- package/src/backend-federation/types.ts +1 -7
- package/src/backend-federation/validate-loaded.ts +2 -7
- package/src/backend-federation-manifest/load.ts +92 -38
- package/src/backend-federation-manifest/metadata.ts +1 -7
- package/src/backend-federation-manifest/remote.ts +1 -1
- package/src/backend-federation-manifest/validation.ts +10 -13
- package/src/cross-project-policy/evaluation.ts +1 -1
- package/src/cross-project-policy/node.ts +3 -3
- package/src/cross-project-policy/producer-runtime.ts +43 -0
- package/src/effect-adapter/entry.ts +1 -0
- package/src/effect-adapter/index.ts +5 -0
- package/src/{client-generator → effect-source-loader}/built-entry.ts +1 -3
- package/src/effect-source-loader/http-api-runtime.ts +39 -0
- package/src/effect-source-loader/index.ts +8 -5
- package/src/effect-source-loader/loader.ts +31 -47
- package/src/effect-source-loader/operation-contracts.ts +72 -0
- package/src/effect-source-loader/rspack-loader.ts +72 -0
- package/src/effect-source-loader/worker-runtime-source.ts +34 -0
- package/src/effect-source-loader/worker-runtime-wrapper.ts +5 -75
- package/src/hono/cross-project-policy.ts +2 -1
- package/src/hono/node.ts +24 -0
- package/dist/cjs/client-generator/generator.js +0 -73
- package/dist/cjs/client-generator/index.js +0 -54
- package/dist/cjs/client-generator/rendering.js +0 -253
- package/dist/cjs/client-generator/types.js +0 -18
- package/dist/esm/backend-federation/legacy-warning.mjs +0 -2
- package/dist/esm/client-generator/generator.mjs +0 -32
- package/dist/esm/client-generator/index.mjs +0 -3
- package/dist/esm/client-generator/rendering.mjs +0 -209
- package/dist/esm/client-generator/runtime.mjs +0 -27
- package/dist/esm/client-generator/types.mjs +0 -0
- package/dist/esm-node/backend-federation/legacy-warning.mjs +0 -3
- package/dist/esm-node/client-generator/generator.mjs +0 -33
- package/dist/esm-node/client-generator/index.mjs +0 -4
- package/dist/esm-node/client-generator/rendering.mjs +0 -210
- package/dist/esm-node/client-generator/runtime.mjs +0 -29
- package/dist/esm-node/client-generator/types.mjs +0 -1
- package/dist/types/backend-federation/legacy-warning.d.ts +0 -1
- package/dist/types/client-generator/generator.d.ts +0 -3
- package/dist/types/client-generator/index.d.ts +0 -4
- package/dist/types/client-generator/rendering.d.ts +0 -24
- package/dist/types/client-generator/types.d.ts +0 -33
- package/src/backend-federation/legacy-warning.ts +0 -2
- package/src/client-generator/generator.ts +0 -52
- package/src/client-generator/index.ts +0 -10
- package/src/client-generator/rendering.ts +0 -307
- package/src/client-generator/runtime.ts +0 -69
- package/src/client-generator/types.ts +0 -35
- /package/dist/cjs/{client-generator → effect-source-loader}/paths.js +0 -0
- /package/dist/esm/{client-generator → effect-source-loader}/paths.mjs +0 -0
- /package/dist/esm-node/{client-generator → effect-source-loader}/paths.mjs +0 -0
- /package/dist/types/{client-generator → effect-source-loader}/built-entry.d.ts +0 -0
- /package/dist/types/{client-generator/runtime.d.ts → effect-source-loader/http-api-runtime.d.ts} +0 -0
- /package/dist/types/{client-generator → effect-source-loader}/paths.d.ts +0 -0
- /package/src/{client-generator → effect-source-loader}/paths.ts +0 -0
|
@@ -32,30 +32,22 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
32
32
|
loadEffectApi: ()=>loadEffectApi
|
|
33
33
|
});
|
|
34
34
|
const effect_namespaceObject = require("@modern-js/bff-effect/effect");
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
let httpApiRuntimePromise;
|
|
38
|
-
function isRecord(value) {
|
|
39
|
-
return 'object' == typeof value && null !== value;
|
|
40
|
-
}
|
|
41
|
-
function isHttpApiRuntime(value) {
|
|
42
|
-
return isRecord(value) && 'function' == typeof value.isHttpApi && 'function' == typeof value.reflect;
|
|
43
|
-
}
|
|
35
|
+
const httpapi_namespaceObject = require("effect/unstable/httpapi");
|
|
36
|
+
const external_loader_js_namespaceObject = require("./loader.js");
|
|
44
37
|
function getHttpApiRuntime() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
return Promise.resolve({
|
|
39
|
+
isHttpApi: httpapi_namespaceObject.HttpApi.isHttpApi,
|
|
40
|
+
reflect: (api, handlers)=>{
|
|
41
|
+
if (!httpapi_namespaceObject.HttpApi.isHttpApi(api)) throw new TypeError('[BFF][Effect] Expected an HttpApi contract.');
|
|
42
|
+
httpapi_namespaceObject.HttpApi.reflect(api, {
|
|
43
|
+
onGroup: handlers.onGroup ?? (()=>{}),
|
|
44
|
+
onEndpoint: handlers.onEndpoint
|
|
45
|
+
});
|
|
46
|
+
}
|
|
54
47
|
});
|
|
55
|
-
return httpApiRuntimePromise;
|
|
56
48
|
}
|
|
57
49
|
function loadEffectApi(options) {
|
|
58
|
-
return getHttpApiRuntime().then((httpApiRuntime)=>(0,
|
|
50
|
+
return getHttpApiRuntime().then((httpApiRuntime)=>(0, external_loader_js_namespaceObject.loadEffectSourceModule)(options).then((mod)=>(0, effect_namespaceObject.extractHttpApiFromModule)(mod, httpApiRuntime.isHttpApi)));
|
|
59
51
|
}
|
|
60
52
|
exports.getHttpApiRuntime = __webpack_exports__.getHttpApiRuntime;
|
|
61
53
|
exports.loadEffectApi = __webpack_exports__.loadEffectApi;
|
|
@@ -28,23 +28,35 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
bundleBuiltEffectEntryForNode: ()=>external_built_entry_js_namespaceObject.bundleBuiltEffectEntryForNode,
|
|
31
32
|
bundleEffectEntryForNode: ()=>external_loader_js_namespaceObject.bundleEffectEntryForNode,
|
|
32
|
-
|
|
33
|
+
bundleEffectWorkerRuntimeSource: ()=>external_worker_runtime_source_js_namespaceObject.bundleEffectWorkerRuntimeSource,
|
|
33
34
|
generateEffectWorkerRuntimeWrapper: ()=>external_worker_runtime_wrapper_js_namespaceObject.generateEffectWorkerRuntimeWrapper,
|
|
34
|
-
resolveEffectEntryFile: ()=>
|
|
35
|
+
resolveEffectEntryFile: ()=>external_paths_js_namespaceObject.resolveEffectEntryFile,
|
|
36
|
+
resolveEffectEntryPaths: ()=>external_built_entry_js_namespaceObject.resolveEffectEntryPaths,
|
|
37
|
+
resolveEffectOperationContracts: ()=>external_operation_contracts_js_namespaceObject.resolveEffectOperationContracts
|
|
35
38
|
});
|
|
36
|
-
const
|
|
39
|
+
const external_built_entry_js_namespaceObject = require("./built-entry.js");
|
|
37
40
|
const external_loader_js_namespaceObject = require("./loader.js");
|
|
41
|
+
const external_operation_contracts_js_namespaceObject = require("./operation-contracts.js");
|
|
42
|
+
const external_paths_js_namespaceObject = require("./paths.js");
|
|
43
|
+
const external_worker_runtime_source_js_namespaceObject = require("./worker-runtime-source.js");
|
|
38
44
|
const external_worker_runtime_wrapper_js_namespaceObject = require("./worker-runtime-wrapper.js");
|
|
45
|
+
exports.bundleBuiltEffectEntryForNode = __webpack_exports__.bundleBuiltEffectEntryForNode;
|
|
39
46
|
exports.bundleEffectEntryForNode = __webpack_exports__.bundleEffectEntryForNode;
|
|
40
|
-
exports.
|
|
47
|
+
exports.bundleEffectWorkerRuntimeSource = __webpack_exports__.bundleEffectWorkerRuntimeSource;
|
|
41
48
|
exports.generateEffectWorkerRuntimeWrapper = __webpack_exports__.generateEffectWorkerRuntimeWrapper;
|
|
42
49
|
exports.resolveEffectEntryFile = __webpack_exports__.resolveEffectEntryFile;
|
|
50
|
+
exports.resolveEffectEntryPaths = __webpack_exports__.resolveEffectEntryPaths;
|
|
51
|
+
exports.resolveEffectOperationContracts = __webpack_exports__.resolveEffectOperationContracts;
|
|
43
52
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
53
|
+
"bundleBuiltEffectEntryForNode",
|
|
44
54
|
"bundleEffectEntryForNode",
|
|
45
|
-
"
|
|
55
|
+
"bundleEffectWorkerRuntimeSource",
|
|
46
56
|
"generateEffectWorkerRuntimeWrapper",
|
|
47
|
-
"resolveEffectEntryFile"
|
|
57
|
+
"resolveEffectEntryFile",
|
|
58
|
+
"resolveEffectEntryPaths",
|
|
59
|
+
"resolveEffectOperationContracts"
|
|
48
60
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
49
61
|
Object.defineProperty(exports, '__esModule', {
|
|
50
62
|
value: true
|
|
@@ -93,16 +93,18 @@ function preserveSourceModuleSemantics() {
|
|
|
93
93
|
name: 'modern-js-effect-source-semantics',
|
|
94
94
|
setup (buildApi) {
|
|
95
95
|
buildApi.onLoad({
|
|
96
|
-
filter: /\.[cm]?[jt]sx
|
|
96
|
+
filter: /\.[cm]?[jt]sx?$/,
|
|
97
|
+
namespace: 'file'
|
|
97
98
|
}, async (args)=>{
|
|
98
99
|
const loader = sourceLoader(args);
|
|
99
100
|
if (!loader) return;
|
|
100
101
|
const source = await external_node_fs_default().promises.readFile(args.path, 'utf8');
|
|
102
|
+
const canonicalSourcePath = await external_node_fs_default().promises.realpath(args.path);
|
|
101
103
|
const compiled = await (0, external_esbuild_namespaceObject.transform)(source, {
|
|
102
104
|
define: {
|
|
103
|
-
__dirname: JSON.stringify(external_node_path_default().dirname(
|
|
104
|
-
__filename: JSON.stringify(
|
|
105
|
-
'import.meta.url': JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(
|
|
105
|
+
__dirname: JSON.stringify(external_node_path_default().dirname(canonicalSourcePath)),
|
|
106
|
+
__filename: JSON.stringify(canonicalSourcePath),
|
|
107
|
+
'import.meta.url': JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(canonicalSourcePath).href)
|
|
106
108
|
},
|
|
107
109
|
jsx: 'automatic',
|
|
108
110
|
loader,
|
|
@@ -145,7 +147,6 @@ function isBareSpecifier(specifier) {
|
|
|
145
147
|
return !specifier.startsWith('.') && !specifier.startsWith('/') && !external_node_path_default().isAbsolute(specifier);
|
|
146
148
|
}
|
|
147
149
|
function externalizeInstalledDependencies(options) {
|
|
148
|
-
const runtimeRequire = (0, external_node_module_namespaceObject.createRequire)(external_node_path_default().join(options.runtimeResolveDir, '__modern_effect_entry.cjs'));
|
|
149
150
|
return {
|
|
150
151
|
name: 'modern-js-effect-installed-dependencies',
|
|
151
152
|
setup (buildApi) {
|
|
@@ -185,28 +186,10 @@ function externalizeInstalledDependencies(options) {
|
|
|
185
186
|
},
|
|
186
187
|
resolveDir: options.runtimeResolveDir
|
|
187
188
|
});
|
|
188
|
-
if (0 === runtimeResolution.errors.length && runtimeResolution.path) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
requiredPath = runtimeRequire.resolve(args.path);
|
|
193
|
-
} catch {
|
|
194
|
-
requiredPath = runtimeResolution.path;
|
|
195
|
-
}
|
|
196
|
-
if (await isEsmOnlyFile(requiredPath)) return {
|
|
197
|
-
namespace: resolution.namespace,
|
|
198
|
-
path: resolution.path,
|
|
199
|
-
pluginData: resolution.pluginData,
|
|
200
|
-
sideEffects: resolution.sideEffects,
|
|
201
|
-
suffix: resolution.suffix,
|
|
202
|
-
warnings: resolution.warnings
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
return {
|
|
206
|
-
external: true,
|
|
207
|
-
path: args.path
|
|
208
|
-
};
|
|
209
|
-
}
|
|
189
|
+
if (0 === runtimeResolution.errors.length && runtimeResolution.path) return {
|
|
190
|
+
external: true,
|
|
191
|
+
path: args.path
|
|
192
|
+
};
|
|
210
193
|
}
|
|
211
194
|
return {
|
|
212
195
|
namespace: resolution.namespace,
|
|
@@ -234,7 +217,6 @@ async function bundleEffectEntryForNode(options) {
|
|
|
234
217
|
platform: 'node',
|
|
235
218
|
plugins: [
|
|
236
219
|
externalizeInstalledDependencies({
|
|
237
|
-
format: options.format,
|
|
238
220
|
runtimeResolveDir: options.appDir
|
|
239
221
|
}),
|
|
240
222
|
preserveSourceModuleSemantics()
|
|
@@ -308,7 +290,6 @@ async function loadEffectSourceModule(options) {
|
|
|
308
290
|
platform: 'node',
|
|
309
291
|
plugins: [
|
|
310
292
|
externalizeInstalledDependencies({
|
|
311
|
-
format: 'esm',
|
|
312
293
|
runtimeResolveDir: appDir
|
|
313
294
|
}),
|
|
314
295
|
preserveSourceModuleSemantics()
|
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
resolveEffectOperationContracts: ()=>resolveEffectOperationContracts
|
|
32
|
+
});
|
|
33
|
+
const effect_namespaceObject = require("@modern-js/bff-effect/effect");
|
|
34
|
+
const node_namespaceObject = require("@modern-js/server-runtime-extensions/bff-policy/node");
|
|
35
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
36
|
+
const external_http_api_runtime_js_namespaceObject = require("./http-api-runtime.js");
|
|
37
|
+
function getPackageInfo(resourcePath, appDir, onDependency) {
|
|
38
|
+
for (const startDir of [
|
|
39
|
+
utils_namespaceObject.upath.dirname(resourcePath),
|
|
40
|
+
appDir
|
|
41
|
+
]){
|
|
42
|
+
let current = utils_namespaceObject.upath.resolve(startDir);
|
|
43
|
+
for(let depth = 0; depth < 32; depth += 1){
|
|
44
|
+
const packageJsonPath = utils_namespaceObject.upath.join(current, 'package.json');
|
|
45
|
+
if (utils_namespaceObject.fs.existsSync(packageJsonPath)) {
|
|
46
|
+
onDependency?.(packageJsonPath);
|
|
47
|
+
try {
|
|
48
|
+
const packageJson = utils_namespaceObject.fs.readJSONSync(packageJsonPath);
|
|
49
|
+
return {
|
|
50
|
+
name: packageJson.name,
|
|
51
|
+
version: packageJson.version
|
|
52
|
+
};
|
|
53
|
+
} catch {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const parent = utils_namespaceObject.upath.dirname(current);
|
|
58
|
+
if (parent === current) break;
|
|
59
|
+
current = parent;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {};
|
|
63
|
+
}
|
|
64
|
+
async function resolveEffectOperationContracts(options) {
|
|
65
|
+
const api = await (0, external_http_api_runtime_js_namespaceObject.loadEffectApi)(options);
|
|
66
|
+
if (null === api) return null;
|
|
67
|
+
const runtime = await (0, external_http_api_runtime_js_namespaceObject.getHttpApiRuntime)();
|
|
68
|
+
const endpoints = (0, effect_namespaceObject.collectEffectEndpoints)(runtime.reflect, api, options.prefix);
|
|
69
|
+
const packageInfo = getPackageInfo(options.resourcePath, options.appDir, options.onDependency);
|
|
70
|
+
const requestId = options.requestId?.trim() || packageInfo.name || 'default';
|
|
71
|
+
return (0, node_namespaceObject.buildOperationContractMap)({
|
|
72
|
+
handlers: (0, effect_namespaceObject.toOperationContractSources)(endpoints),
|
|
73
|
+
requestId,
|
|
74
|
+
operationVersion: (0, node_namespaceObject.deriveOperationVersion)(packageInfo.version)
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.resolveEffectOperationContracts = __webpack_exports__.resolveEffectOperationContracts;
|
|
78
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
79
|
+
"resolveEffectOperationContracts"
|
|
80
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
81
|
+
Object.defineProperty(exports, '__esModule', {
|
|
82
|
+
value: true
|
|
83
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
default: ()=>loader
|
|
32
|
+
});
|
|
33
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
34
|
+
const external_index_js_namespaceObject = require("./index.js");
|
|
35
|
+
async function loader(source) {
|
|
36
|
+
this.cacheable();
|
|
37
|
+
delete require.cache[this.resourcePath];
|
|
38
|
+
const callback = this.async();
|
|
39
|
+
try {
|
|
40
|
+
const options = this.getOptions();
|
|
41
|
+
const entry = (0, external_index_js_namespaceObject.resolveEffectEntryFile)(options);
|
|
42
|
+
if (!entry || (0, external_node_fs_namespaceObject.realpathSync)(entry) !== (0, external_node_fs_namespaceObject.realpathSync)(this.resourcePath)) throw new Error(`Unexpected Effect BFF loader resource: ${this.resourcePath}`);
|
|
43
|
+
const query = new URLSearchParams(this.resourceQuery);
|
|
44
|
+
if (query.has('modern-bff-runtime-source')) {
|
|
45
|
+
const { transform } = await import("@swc/core");
|
|
46
|
+
const transformed = await transform(source, {
|
|
47
|
+
filename: this.resourcePath,
|
|
48
|
+
sourceMaps: false,
|
|
49
|
+
jsc: {
|
|
50
|
+
parser: {
|
|
51
|
+
syntax: "typescript",
|
|
52
|
+
tsx: /\.[jt]sx$/.test(this.resourcePath)
|
|
53
|
+
},
|
|
54
|
+
target: 'es2024'
|
|
55
|
+
},
|
|
56
|
+
module: {
|
|
57
|
+
type: 'es6'
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
callback(void 0, await (0, external_index_js_namespaceObject.bundleEffectWorkerRuntimeSource)(transformed.code, this.resourcePath, this));
|
|
61
|
+
} else if (query.has('modern-bff-runtime')) callback(void 0, await (0, external_index_js_namespaceObject.generateEffectWorkerRuntimeWrapper)(this, options, this.resourcePath));
|
|
62
|
+
else throw new Error('Effect BFF entries are server-only. Import the shared HttpApi contract and use HttpApiClient.make (or makeEffectHttpApiClient) for a fully inferred client.');
|
|
63
|
+
} catch (error) {
|
|
64
|
+
callback(error instanceof Error ? error : new Error(String(error)));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports["default"] = __webpack_exports__["default"];
|
|
68
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
69
|
+
"default"
|
|
70
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
71
|
+
Object.defineProperty(exports, '__esModule', {
|
|
72
|
+
value: true
|
|
73
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
bundleEffectWorkerRuntimeSource: ()=>bundleEffectWorkerRuntimeSource
|
|
41
|
+
});
|
|
42
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
43
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
44
|
+
const external_esbuild_namespaceObject = require("esbuild");
|
|
45
|
+
async function bundleEffectWorkerRuntimeSource(source, resourcePath, loader) {
|
|
46
|
+
const result = await (0, external_esbuild_namespaceObject.build)({
|
|
47
|
+
absWorkingDir: external_node_path_default().dirname(resourcePath),
|
|
48
|
+
bundle: true,
|
|
49
|
+
format: 'esm',
|
|
50
|
+
metafile: true,
|
|
51
|
+
packages: 'external',
|
|
52
|
+
platform: 'neutral',
|
|
53
|
+
stdin: {
|
|
54
|
+
contents: source,
|
|
55
|
+
loader: 'js',
|
|
56
|
+
resolveDir: external_node_path_default().dirname(resourcePath),
|
|
57
|
+
sourcefile: resourcePath
|
|
58
|
+
},
|
|
59
|
+
target: 'es2024',
|
|
60
|
+
write: false
|
|
61
|
+
});
|
|
62
|
+
for (const dependency of Object.keys(result.metafile.inputs))if ('<stdin>' !== dependency) loader.addDependency(external_node_path_default().resolve(external_node_path_default().dirname(resourcePath), dependency));
|
|
63
|
+
return result.outputFiles[0].text;
|
|
64
|
+
}
|
|
65
|
+
exports.bundleEffectWorkerRuntimeSource = __webpack_exports__.bundleEffectWorkerRuntimeSource;
|
|
66
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
67
|
+
"bundleEffectWorkerRuntimeSource"
|
|
68
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
69
|
+
Object.defineProperty(exports, '__esModule', {
|
|
70
|
+
value: true
|
|
71
|
+
});
|
|
@@ -27,69 +27,26 @@ var __webpack_require__ = {};
|
|
|
27
27
|
})();
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
generateEffectWorkerRuntimeWrapper: ()=>generateEffectWorkerRuntimeWrapper
|
|
32
|
+
});
|
|
33
|
+
const external_operation_contracts_js_namespaceObject = require("./operation-contracts.js");
|
|
30
34
|
async function generateEffectWorkerRuntimeWrapper(loader, options, resourcePath) {
|
|
31
|
-
const
|
|
32
|
-
const artifacts = await generateEffectClient({
|
|
35
|
+
const operationContracts = await (0, external_operation_contracts_js_namespaceObject.resolveEffectOperationContracts)({
|
|
33
36
|
appDir: options.appDir,
|
|
34
|
-
apiDir: options.apiDir,
|
|
35
37
|
resourcePath,
|
|
36
38
|
prefix: options.prefix,
|
|
37
|
-
port: Number(options.port),
|
|
38
|
-
target: 'bundle',
|
|
39
39
|
requestId: options.requestId,
|
|
40
|
-
requestCreator: options.requestCreator,
|
|
41
|
-
httpMethodDecider: options.httpMethodDecider,
|
|
42
|
-
dataPlatformBatch: options.effectDataPlatformBatch,
|
|
43
40
|
onDependency: (dependency)=>loader.addDependency(dependency)
|
|
44
41
|
});
|
|
45
42
|
const sourceRequest = `${resourcePath}?modern-bff-runtime-source`;
|
|
46
|
-
const operationContracts = artifacts?.operationContracts ?? {};
|
|
47
43
|
return `import * as effectBffModule from ${JSON.stringify(sourceRequest)};
|
|
48
|
-
import {
|
|
49
|
-
|
|
50
|
-
const __generatedOperationContracts = ${JSON.stringify(operationContracts)};
|
|
51
|
-
|
|
52
|
-
const __mergeGeneratedOperationContracts = policy => {
|
|
53
|
-
if (
|
|
54
|
-
!policy ||
|
|
55
|
-
!policy.expectedOperationContracts ||
|
|
56
|
-
typeof policy.expectedOperationContracts !== 'object' ||
|
|
57
|
-
Array.isArray(policy.expectedOperationContracts)
|
|
58
|
-
) {
|
|
59
|
-
return policy;
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
...policy,
|
|
63
|
-
expectedOperationContracts: {
|
|
64
|
-
...policy.expectedOperationContracts,
|
|
65
|
-
...__generatedOperationContracts,
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export const __modern_create_effect_bff_dispatcher = options =>
|
|
71
|
-
createEffectBffEdgeDispatcher({
|
|
72
|
-
...options,
|
|
73
|
-
crossProjectPolicy: __mergeGeneratedOperationContracts(
|
|
74
|
-
options?.crossProjectPolicy,
|
|
75
|
-
),
|
|
76
|
-
module: effectBffModule,
|
|
77
|
-
});
|
|
44
|
+
import { createEffectBffEdgeDispatcherFactory } from '@modern-js/bff-effect/effect-edge';
|
|
45
|
+
export const __modern_create_effect_bff_dispatcher = createEffectBffEdgeDispatcherFactory(effectBffModule, ${JSON.stringify(operationContracts ?? {})});
|
|
78
46
|
`;
|
|
79
47
|
}
|
|
80
|
-
async function generateEffectClientCode(options) {
|
|
81
|
-
const { generateEffectClient } = await import("../client-generator/generator.js");
|
|
82
|
-
const artifacts = await generateEffectClient(options);
|
|
83
|
-
return null === artifacts ? null : artifacts.code;
|
|
84
|
-
}
|
|
85
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
86
|
-
generateEffectClientCode: ()=>generateEffectClientCode,
|
|
87
|
-
generateEffectWorkerRuntimeWrapper: ()=>generateEffectWorkerRuntimeWrapper
|
|
88
|
-
});
|
|
89
|
-
exports.generateEffectClientCode = __webpack_exports__.generateEffectClientCode;
|
|
90
48
|
exports.generateEffectWorkerRuntimeWrapper = __webpack_exports__.generateEffectWorkerRuntimeWrapper;
|
|
91
49
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
92
|
-
"generateEffectClientCode",
|
|
93
50
|
"generateEffectWorkerRuntimeWrapper"
|
|
94
51
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
95
52
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -37,7 +37,8 @@ const createHonoCrossProjectPolicyMiddleware = (policy, routePath)=>async functi
|
|
|
37
37
|
routePath
|
|
38
38
|
});
|
|
39
39
|
if (denial) return denial;
|
|
40
|
-
|
|
40
|
+
const result = await next();
|
|
41
|
+
return result instanceof Response ? result : void 0;
|
|
41
42
|
};
|
|
42
43
|
exports.createHonoCrossProjectPolicyMiddleware = __webpack_exports__.createHonoCrossProjectPolicyMiddleware;
|
|
43
44
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
createHonoRouteBinder: ()=>createHonoRouteBinder
|
|
32
|
+
});
|
|
33
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
34
|
+
const node_js_namespaceObject = require("../cross-project-policy/node.js");
|
|
35
|
+
const external_bind_route_handlers_js_namespaceObject = require("./bind-route-handlers.js");
|
|
36
|
+
const createHonoRouteBinder = (api, handlers)=>{
|
|
37
|
+
const policy = (0, node_js_namespaceObject.resolveAdapterCrossProjectPolicy)(api, handlers);
|
|
38
|
+
return (options)=>(0, external_bind_route_handlers_js_namespaceObject.bindHonoRouteHandlers)({
|
|
39
|
+
...options,
|
|
40
|
+
policy,
|
|
41
|
+
onError: api.getServerConfig()?.onError,
|
|
42
|
+
reportError: (error)=>utils_namespaceObject.logger.error(error)
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.createHonoRouteBinder = __webpack_exports__.createHonoRouteBinder;
|
|
46
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
47
|
+
"createHonoRouteBinder"
|
|
48
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
49
|
+
Object.defineProperty(exports, '__esModule', {
|
|
50
|
+
value: true
|
|
51
|
+
});
|
|
@@ -66,7 +66,7 @@ async function resolveEdgeEntry(plugins, remote) {
|
|
|
66
66
|
}
|
|
67
67
|
throw new Error(`[BFF][Effect] Missing static or service-binding entry provider for backend federation remote ${remote.name}.`);
|
|
68
68
|
}
|
|
69
|
-
var _entries = /*#__PURE__*/ new WeakMap(), _expected = /*#__PURE__*/ new WeakMap(), _hostName = /*#__PURE__*/ new WeakMap(),
|
|
69
|
+
var _entries = /*#__PURE__*/ new WeakMap(), _expected = /*#__PURE__*/ new WeakMap(), _hostName = /*#__PURE__*/ new WeakMap(), _modules = /*#__PURE__*/ new WeakMap(), _plugins = /*#__PURE__*/ new WeakMap(), _remotes = /*#__PURE__*/ new WeakMap(), _loadEntry = /*#__PURE__*/ new WeakSet(), _loadModule = /*#__PURE__*/ new WeakSet();
|
|
70
70
|
class EdgeBackendFederationRuntime {
|
|
71
71
|
async loadRemote(request) {
|
|
72
72
|
const existing = _class_private_field_get(this, _modules).get(request);
|
|
@@ -93,10 +93,6 @@ class EdgeBackendFederationRuntime {
|
|
|
93
93
|
writable: true,
|
|
94
94
|
value: void 0
|
|
95
95
|
});
|
|
96
|
-
_class_private_field_init(this, _allowMissingIdentityMetadata, {
|
|
97
|
-
writable: true,
|
|
98
|
-
value: void 0
|
|
99
|
-
});
|
|
100
96
|
_class_private_field_init(this, _modules, {
|
|
101
97
|
writable: true,
|
|
102
98
|
value: void 0
|
|
@@ -112,7 +108,6 @@ class EdgeBackendFederationRuntime {
|
|
|
112
108
|
_class_private_field_set(this, _entries, new Map());
|
|
113
109
|
_class_private_field_set(this, _modules, new Map());
|
|
114
110
|
if (void 0 !== options.entryPolicy) throw new Error('[BFF][Effect] Edge backend federation does not execute entry evaluators. Register a static or service-binding entry provider.');
|
|
115
|
-
_class_private_field_set(this, _allowMissingIdentityMetadata, true === options.allowMissingIdentityMetadata);
|
|
116
111
|
_class_private_field_set(this, _expected, options.expected);
|
|
117
112
|
_class_private_field_set(this, _hostName, options.hostName);
|
|
118
113
|
_class_private_field_set(this, _plugins, options.plugins ?? []);
|
|
@@ -151,7 +146,6 @@ function loadModule(request) {
|
|
|
151
146
|
if ('function' != typeof factory) throw new Error(`[BFF][Effect] Backend federation expose ${remote.name}/${expose.replace(/^\.\//u, '')} must load factory function.`);
|
|
152
147
|
const loaded = await factory();
|
|
153
148
|
return validateLoadedBackendFederatedEffectApi(loaded, {
|
|
154
|
-
allowMissingIdentityMetadata: _class_private_field_get(this, _allowMissingIdentityMetadata),
|
|
155
149
|
expected: _class_private_field_get(this, _expected),
|
|
156
150
|
remoteName,
|
|
157
151
|
remoteRequest: request
|
|
@@ -180,7 +174,4 @@ function createBackendFederationRuntime(options) {
|
|
|
180
174
|
if (void 0 === options.expected || 'string' != typeof options.expected.unitId || 0 === options.expected.unitId.length || 'string' != typeof options.expected.buildMarker || 0 === options.expected.buildMarker.length) throw new Error('[BFF][Effect] Edge backend federation runtime requires expected.unitId and expected.buildMarker.');
|
|
181
175
|
return new EdgeBackendFederationRuntime(options);
|
|
182
176
|
}
|
|
183
|
-
|
|
184
|
-
return new EdgeBackendFederationRuntime(options);
|
|
185
|
-
}
|
|
186
|
-
export { createBackendFederationLoadEntryPlugin, createBackendFederationRuntime, createBackendFederationRuntimeForLoad };
|
|
177
|
+
export { createBackendFederationLoadEntryPlugin, createBackendFederationRuntime };
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "@modern-js/
|
|
2
|
-
import { createBackendFederationLoadEntryPlugin, createBackendFederationRuntime
|
|
3
|
-
import { LEGACY_LOAD_WARNING } from "./legacy-warning.mjs";
|
|
1
|
+
import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "@modern-js/backend-federation-contracts";
|
|
2
|
+
import { createBackendFederationLoadEntryPlugin, createBackendFederationRuntime } from "./edge-runtime.mjs";
|
|
4
3
|
import { normalizeExpose } from "./utils.mjs";
|
|
5
4
|
function loadBackendFederatedEffectApi(options) {
|
|
6
5
|
if (void 0 !== options.runtime || void 0 !== options.entryPolicy) return Promise.reject(new Error('[BFF][Effect] Edge backend federation does not execute custom runtimes or entry evaluators. Register a static or service-binding entry provider.'));
|
|
7
6
|
const remoteName = options.remote?.name ?? options.remoteName;
|
|
8
7
|
if (void 0 === remoteName || 0 === remoteName.length) return Promise.reject(new Error('[BFF][Effect] Missing backend federation remote name.'));
|
|
9
|
-
if (
|
|
8
|
+
if (!options.expected?.unitId || !options.expected.buildMarker) return Promise.reject(new Error('[BFF][Effect] Backend federation requires expected.unitId and expected.buildMarker.'));
|
|
10
9
|
const expose = options.expose ?? options.remote?.expose ?? BACKEND_FEDERATION_EFFECT_EXPOSE;
|
|
11
10
|
const remoteRequest = `${remoteName}/${normalizeExpose(expose)}`;
|
|
12
11
|
let runtime;
|
|
13
12
|
try {
|
|
14
|
-
runtime =
|
|
13
|
+
runtime = createBackendFederationRuntime(options);
|
|
15
14
|
} catch (error) {
|
|
16
15
|
return Promise.reject(error);
|
|
17
16
|
}
|