@bleedingdev/modern-js-plugin-bff-extensions 3.9.0-ultramodern.12 → 3.9.0-ultramodern.13

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.
Files changed (41) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/backend-federation/node-evaluator.js +48 -0
  3. package/dist/cjs/backend-federation/node.js +2 -2
  4. package/dist/cjs/backend-federation-manifest/node.js +2 -2
  5. package/dist/cjs/{effect-adapter → effect-server}/cross-project-policy.js +4 -4
  6. package/dist/cjs/{effect-adapter → effect-server}/entry.js +4 -4
  7. package/dist/cjs/{effect-adapter → effect-server}/error-response.js +4 -4
  8. package/dist/cjs/effect-server/index.js +199 -0
  9. package/dist/esm/backend-federation/node-evaluator.mjs +7 -0
  10. package/dist/esm/backend-federation/node.mjs +2 -2
  11. package/dist/esm/backend-federation-manifest/node.mjs +2 -2
  12. package/dist/esm/{effect-adapter → effect-server}/cross-project-policy.mjs +2 -2
  13. package/dist/esm/{effect-adapter → effect-server}/entry.mjs +2 -2
  14. package/dist/esm/{effect-adapter → effect-server}/error-response.mjs +2 -2
  15. package/dist/esm/effect-server/index.mjs +151 -0
  16. package/dist/esm-node/backend-federation/node-evaluator.mjs +8 -0
  17. package/dist/esm-node/backend-federation/node.mjs +2 -2
  18. package/dist/esm-node/backend-federation-manifest/node.mjs +2 -2
  19. package/dist/esm-node/{effect-adapter → effect-server}/cross-project-policy.mjs +2 -2
  20. package/dist/esm-node/{effect-adapter → effect-server}/entry.mjs +2 -2
  21. package/dist/esm-node/{effect-adapter → effect-server}/error-response.mjs +2 -2
  22. package/dist/esm-node/effect-server/index.mjs +152 -0
  23. package/dist/types/backend-federation/node-evaluator.d.ts +2 -0
  24. package/dist/types/{effect-adapter → effect-server}/cross-project-policy.d.ts +1 -1
  25. package/dist/types/{effect-adapter → effect-server}/entry.d.ts +1 -1
  26. package/dist/types/effect-server/error-response.d.ts +2 -0
  27. package/dist/types/effect-server/index.d.ts +4 -0
  28. package/package.json +27 -27
  29. package/src/backend-federation/node-evaluator.ts +13 -0
  30. package/src/backend-federation/node.ts +2 -3
  31. package/src/backend-federation-manifest/node.ts +2 -3
  32. package/src/{effect-adapter → effect-server}/cross-project-policy.ts +1 -1
  33. package/src/{effect-adapter → effect-server}/entry.ts +1 -1
  34. package/src/{effect-adapter → effect-server}/error-response.ts +1 -1
  35. package/src/effect-server/index.ts +242 -0
  36. package/dist/cjs/effect-adapter/index.js +0 -202
  37. package/dist/esm/effect-adapter/index.mjs +0 -151
  38. package/dist/esm-node/effect-adapter/index.mjs +0 -152
  39. package/dist/types/effect-adapter/error-response.d.ts +0 -2
  40. package/dist/types/effect-adapter/index.d.ts +0 -21
  41. package/src/effect-adapter/index.ts +0 -257
@@ -1,12 +1,12 @@
1
1
  import "node:module";
2
- import { evaluateNodeBackendFederationCommonJs } from "@modern-js/server-runtime-extensions/backend-federation-security/node";
3
2
  import { loadBackendFederatedEffectApi } from "./load.mjs";
3
+ import { evaluateEffectBackendFederationCommonJs } from "./node-evaluator.mjs";
4
4
  function node_loadBackendFederatedEffectApi(options) {
5
5
  return loadBackendFederatedEffectApi({
6
6
  ...options,
7
7
  entryPolicy: {
8
8
  ...options.entryPolicy,
9
- evaluateCommonJs: options.entryPolicy?.evaluateCommonJs ?? evaluateNodeBackendFederationCommonJs
9
+ evaluateCommonJs: options.entryPolicy?.evaluateCommonJs ?? evaluateEffectBackendFederationCommonJs
10
10
  }
11
11
  });
12
12
  }
@@ -1,12 +1,12 @@
1
1
  import "node:module";
2
- import { evaluateNodeBackendFederationCommonJs } from "@modern-js/server-runtime-extensions/backend-federation-security/node";
2
+ import { evaluateEffectBackendFederationCommonJs } from "../backend-federation/node-evaluator.mjs";
3
3
  import { loadBackendFederatedEffectApiFromManifest } from "./load.mjs";
4
4
  function node_loadBackendFederatedEffectApiFromManifest(options) {
5
5
  return loadBackendFederatedEffectApiFromManifest({
6
6
  ...options,
7
7
  entryPolicy: {
8
8
  ...options.entryPolicy,
9
- evaluateCommonJs: options.entryPolicy?.evaluateCommonJs ?? evaluateNodeBackendFederationCommonJs
9
+ evaluateCommonJs: options.entryPolicy?.evaluateCommonJs ?? evaluateEffectBackendFederationCommonJs
10
10
  }
11
11
  });
12
12
  }
@@ -3,7 +3,7 @@ import { collectEffectEndpoints, extractHttpApiFromModule, toOperationContractSo
3
3
  import { logger } from "@modern-js/utils";
4
4
  import { HttpApi } from "effect/unstable/httpapi";
5
5
  import { resolveAdapterCrossProjectPolicy } from "../cross-project-policy/index.mjs";
6
- function resolveEffectAdapterCrossProjectPolicy(api, prefix, mod, producer) {
6
+ function resolveEffectServerCrossProjectPolicy(api, prefix, mod, producer) {
7
7
  const contractSourcesPromise = null === mod ? Promise.resolve([]) : Promise.resolve().then(()=>extractHttpApiFromModule(mod, HttpApi.isHttpApi)).then((effectApi)=>{
8
8
  if (null === effectApi) return [];
9
9
  const reflect = (apiValue, handlers)=>{
@@ -24,4 +24,4 @@ function resolveEffectAdapterCrossProjectPolicy(api, prefix, mod, producer) {
24
24
  return policy;
25
25
  });
26
26
  }
27
- export { resolveEffectAdapterCrossProjectPolicy };
27
+ export { resolveEffectServerCrossProjectPolicy };
@@ -3,7 +3,7 @@ import node_path from "node:path";
3
3
  import "@modern-js/server-runtime-extensions/server-config";
4
4
  import { API_DIR, isProd } from "@modern-js/utils";
5
5
  import { resolveEffectEntry } from "../effect-source-loader/paths.mjs";
6
- function resolveEffectAdapterEntryFile(api) {
6
+ function resolveEffectServerEntryFile(api) {
7
7
  const { appDirectory, apiDirectory, distDirectory } = api.getServerContext();
8
8
  const appDir = node_path.resolve(appDirectory || process.cwd());
9
9
  return resolveEffectEntry({
@@ -13,4 +13,4 @@ function resolveEffectAdapterEntryFile(api) {
13
13
  distDir: isProd() && distDirectory ? node_path.resolve(distDirectory) : void 0
14
14
  }).path;
15
15
  }
16
- export { resolveEffectAdapterEntryFile };
16
+ export { resolveEffectServerEntryFile };
@@ -1,7 +1,7 @@
1
1
  import "node:module";
2
2
  import { createSafeFailureResponse } from "@modern-js/runtime-extensions/safe-failure";
3
3
  import { logger } from "@modern-js/utils";
4
- function createEffectAdapterRuntimeErrorResponse(api, error, context) {
4
+ function createEffectServerRuntimeErrorResponse(api, error, context) {
5
5
  try {
6
6
  const onError = api.getServerConfig()?.onError;
7
7
  if (void 0 !== onError) return Promise.resolve(onError(error instanceof Error ? error : new Error(String(error)), ensureJsonContext(context))).then((result)=>result instanceof Response ? result : createSafeFailureResponse(error)).catch((configError)=>{
@@ -35,4 +35,4 @@ function ensureJsonContext(context) {
35
35
  }
36
36
  });
37
37
  }
38
- export { createEffectAdapterRuntimeErrorResponse };
38
+ export { createEffectServerRuntimeErrorResponse };
@@ -0,0 +1,152 @@
1
+ import "node:module";
2
+ import node_path from "node:path";
3
+ import "@modern-js/server-runtime-extensions/server-config";
4
+ import { dispatchEffectBffRequest, resolveEffectBffModuleHandler, useEffectContext } from "@modern-js/bff-effect/effect";
5
+ import { resolveOperationProducer } from "@modern-js/server-runtime-extensions/bff-policy/node";
6
+ import { createDisposableServerRuntimeHandle, registerServerRuntimeDisposer } from "@modern-js/server-runtime-extensions/runtime-lifecycle";
7
+ import { fs, isProd, logger } from "@modern-js/utils";
8
+ import { checkCrossProjectPolicyForRequest } from "../cross-project-policy/evaluation.mjs";
9
+ import { loadEffectBuiltModule, loadEffectSourceModule } from "../effect-source-loader/loader.mjs";
10
+ import { resolveEffectServerCrossProjectPolicy } from "./cross-project-policy.mjs";
11
+ import { resolveEffectServerEntryFile } from "./entry.mjs";
12
+ import { createEffectServerRuntimeErrorResponse } from "./error-response.mjs";
13
+ const EFFECT_MIDDLEWARE_BEFORE = [
14
+ 'custom-server-hook',
15
+ 'custom-server-middleware',
16
+ 'render'
17
+ ];
18
+ const effect_server = ()=>({
19
+ name: '@modern-js/plugin-bff-extensions/effect-server',
20
+ setup (api) {
21
+ const runtimeFramework = api.getServerContext().bffRuntimeFramework;
22
+ if ('effect' !== runtimeFramework) throw new Error(`Effect BFF server plugin requires Effect; received "${runtimeFramework}".`);
23
+ let handler = null;
24
+ let unregisterRuntimeDisposer;
25
+ let prefix = '/api';
26
+ let prefixes = [
27
+ '/api'
28
+ ];
29
+ let matchingPrefixes = [
30
+ '/api'
31
+ ];
32
+ let retired = false;
33
+ const dispose = async ()=>{
34
+ retired = true;
35
+ unregisterRuntimeDisposer?.();
36
+ unregisterRuntimeDisposer = void 0;
37
+ const previous = handler;
38
+ handler = null;
39
+ await previous?.dispose();
40
+ };
41
+ const loadHandler = async ()=>{
42
+ const entryFile = resolveEffectServerEntryFile(api);
43
+ if (!entryFile || !await fs.pathExists(entryFile)) {
44
+ handler = null;
45
+ return;
46
+ }
47
+ const { appDirectory } = api.getServerContext();
48
+ let mod;
49
+ try {
50
+ mod = await (isProd() ? loadEffectBuiltModule(entryFile) : loadEffectSourceModule({
51
+ resourcePath: entryFile,
52
+ appDir: appDirectory || node_path.dirname(entryFile)
53
+ }));
54
+ } catch (error) {
55
+ logger.error(`[BFF][Effect] Failed to load Effect entry: ${entryFile}\n${String(error)}`);
56
+ throw error;
57
+ }
58
+ const producer = resolveOperationProducer({
59
+ directories: [
60
+ node_path.dirname(entryFile),
61
+ appDirectory
62
+ ],
63
+ requestId: api.getServerConfig()?.bff?.requestId
64
+ });
65
+ const crossProjectPolicies = new Map(await Promise.all(prefixes.map(async (prefix)=>[
66
+ prefix,
67
+ await resolveEffectServerCrossProjectPolicy(api, prefix, mod, producer)
68
+ ])));
69
+ const effectConfig = api.getServerConfig()?.bff?.effect;
70
+ const loaded = await resolveEffectBffModuleHandler(mod, {
71
+ openapi: effectConfig?.openapi,
72
+ dataPlatform: effectConfig?.dataPlatform,
73
+ validateRequest: (request)=>{
74
+ const { path: mountedPathname } = useEffectContext();
75
+ const prefix = matchingPrefixes.find((item)=>'/' === item || mountedPathname === item || mountedPathname.startsWith(`${item}/`));
76
+ if (!prefix) return null;
77
+ const requestUrl = new URL(request.url);
78
+ if ('/' !== prefix) requestUrl.pathname = '/' === requestUrl.pathname ? prefix : `${prefix}${requestUrl.pathname}`;
79
+ return checkCrossProjectPolicyForRequest(new Request(requestUrl, request), crossProjectPolicies.get(prefix));
80
+ },
81
+ onWarning: (message)=>logger.warn(message)
82
+ });
83
+ if (!loaded) {
84
+ const error = new Error(`[BFF][Effect] Invalid Effect entry module: ${entryFile}. Export defineEffectBff(...) or a { api, layer } HttpApi module.`);
85
+ logger.warn(error.message);
86
+ throw error;
87
+ }
88
+ const candidateOwner = {};
89
+ if (loaded.dispose) registerServerRuntimeDisposer(candidateOwner, loaded.dispose);
90
+ const candidate = createDisposableServerRuntimeHandle(candidateOwner, loaded.handler);
91
+ if (retired) {
92
+ await candidate.dispose();
93
+ throw new Error('Cannot initialize a retired Effect server.');
94
+ }
95
+ handler = candidate;
96
+ };
97
+ api.onPrepare(async ()=>{
98
+ const { middlewares: globalMiddlewares } = api.getServerContext();
99
+ const configuredPrefix = api.getServerConfig()?.bff?.prefix;
100
+ const enableHandleWeb = api.getServerConfig()?.bff?.enableHandleWeb;
101
+ const configuredPrefixes = Array.isArray(configuredPrefix) ? configuredPrefix.filter(Boolean) : [
102
+ configuredPrefix || '/api'
103
+ ];
104
+ prefixes = [
105
+ ...new Set(configuredPrefixes.length > 0 ? configuredPrefixes : [
106
+ '/api'
107
+ ])
108
+ ];
109
+ matchingPrefixes = [
110
+ ...prefixes
111
+ ].sort((left, right)=>right.length - left.length);
112
+ prefix = prefixes[0] || '/api';
113
+ const { serverBase } = api.getServerContext();
114
+ if (serverBase) unregisterRuntimeDisposer = registerServerRuntimeDisposer(serverBase, dispose);
115
+ try {
116
+ await loadHandler();
117
+ } catch (error) {
118
+ await dispose();
119
+ throw error;
120
+ }
121
+ const middlewarePrefixes = enableHandleWeb ? [
122
+ prefix
123
+ ] : matchingPrefixes;
124
+ const middlewares = middlewarePrefixes.map((middlewarePrefix)=>({
125
+ name: 'effect-api-handler',
126
+ path: enableHandleWeb ? '*' : `${middlewarePrefix}/*`,
127
+ method: 'all',
128
+ order: 'post',
129
+ before: EFFECT_MIDDLEWARE_BEFORE,
130
+ handler: async (context, next)=>{
131
+ const activeHandler = handler;
132
+ if (!activeHandler) {
133
+ if (enableHandleWeb) return void await next();
134
+ return createEffectServerRuntimeErrorResponse(api, new Error('[BFF][Effect] Missing Effect entry. Define api/index or configure bff.effect.entry.'), context);
135
+ }
136
+ const mountedPrefix = enableHandleWeb ? matchingPrefixes.find((item)=>'/' === item || context.req.path === item || context.req.path.startsWith(`${item}/`)) || prefix : middlewarePrefix;
137
+ const response = await dispatchEffectBffRequest(activeHandler, context.req.raw, {
138
+ prefix: mountedPrefix,
139
+ env: context.env,
140
+ path: context.req.path,
141
+ method: context.req.method,
142
+ onError: (error)=>createEffectServerRuntimeErrorResponse(api, error, context)
143
+ });
144
+ if (404 === response.status && enableHandleWeb) return void await next();
145
+ return new Response(response.body, response);
146
+ }
147
+ }));
148
+ globalMiddlewares.push(...middlewares);
149
+ });
150
+ }
151
+ });
152
+ export default effect_server;
@@ -0,0 +1,2 @@
1
+ import { evaluateNodeBackendFederationCommonJs } from '@modern-js/server-runtime-extensions/backend-federation-security/node';
2
+ export declare const evaluateEffectBackendFederationCommonJs: (source: Parameters<typeof evaluateNodeBackendFederationCommonJs>[0], context: Parameters<typeof evaluateNodeBackendFederationCommonJs>[1]) => Record<string, unknown>;
@@ -2,4 +2,4 @@ import { type EffectApiModule } from '@modern-js/bff-effect/effect';
2
2
  import type { ServerPluginAPI } from '@modern-js/server-core';
3
3
  import type { resolveOperationProducer } from '@modern-js/server-runtime-extensions/bff-policy/node';
4
4
  import type { ResolvedCrossProjectPolicy } from '../cross-project-policy/evaluation.js';
5
- export declare function resolveEffectAdapterCrossProjectPolicy(api: ServerPluginAPI, prefix: string, mod: EffectApiModule | null, producer?: ReturnType<typeof resolveOperationProducer>): Promise<ResolvedCrossProjectPolicy | undefined>;
5
+ export declare function resolveEffectServerCrossProjectPolicy(api: ServerPluginAPI, prefix: string, mod: EffectApiModule | null, producer?: ReturnType<typeof resolveOperationProducer>): Promise<ResolvedCrossProjectPolicy | undefined>;
@@ -1,3 +1,3 @@
1
1
  import '@modern-js/server-runtime-extensions/server-config';
2
2
  import type { ServerPluginAPI } from '@modern-js/server-core';
3
- export declare function resolveEffectAdapterEntryFile(api: ServerPluginAPI): string | undefined;
3
+ export declare function resolveEffectServerEntryFile(api: ServerPluginAPI): string | undefined;
@@ -0,0 +1,2 @@
1
+ import type { Context, ServerPluginAPI } from '@modern-js/server-core';
2
+ export declare function createEffectServerRuntimeErrorResponse(api: ServerPluginAPI, error: unknown, context: Context): Promise<Response>;
@@ -0,0 +1,4 @@
1
+ import '@modern-js/server-runtime-extensions/server-config';
2
+ import type { ServerPlugin } from '@modern-js/server-core';
3
+ export default _default;
4
+ declare function _default(): ServerPlugin;
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "modern.js",
19
19
  "ultramodern.js"
20
20
  ],
21
- "version": "3.9.0-ultramodern.12",
21
+ "version": "3.9.0-ultramodern.13",
22
22
  "files": [
23
23
  "dist",
24
24
  "src"
@@ -50,13 +50,13 @@
50
50
  },
51
51
  "default": "./dist/cjs/cross-project-generation/index.js"
52
52
  },
53
- "./effect-adapter": {
54
- "types": "./dist/types/effect-adapter/index.d.ts",
53
+ "./effect-server": {
54
+ "types": "./dist/types/effect-server/index.d.ts",
55
55
  "node": {
56
- "import": "./dist/esm-node/effect-adapter/index.mjs",
57
- "require": "./dist/cjs/effect-adapter/index.js"
56
+ "import": "./dist/esm-node/effect-server/index.mjs",
57
+ "require": "./dist/cjs/effect-server/index.js"
58
58
  },
59
- "default": "./dist/cjs/effect-adapter/index.js"
59
+ "default": "./dist/cjs/effect-server/index.js"
60
60
  },
61
61
  "./effect-source-loader": {
62
62
  "types": "./dist/types/effect-source-loader/index.d.ts",
@@ -147,9 +147,9 @@
147
147
  "./dist/types/cross-project-generation/index.d.ts",
148
148
  "./src/cross-project-generation/index.ts"
149
149
  ],
150
- "effect-adapter": [
151
- "./dist/types/effect-adapter/index.d.ts",
152
- "./src/effect-adapter/index.ts"
150
+ "effect-server": [
151
+ "./dist/types/effect-server/index.d.ts",
152
+ "./src/effect-server/index.ts"
153
153
  ],
154
154
  "effect-source-loader": [
155
155
  "./dist/types/effect-source-loader/index.d.ts",
@@ -193,21 +193,21 @@
193
193
  "node": ">=26.7.0"
194
194
  },
195
195
  "dependencies": {
196
- "@modern-js/backend-federation-contracts": "npm:@bleedingdev/modern-js-backend-federation-contracts@3.9.0-ultramodern.12",
197
- "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.9.0-ultramodern.12",
198
- "@modern-js/bff-effect": "npm:@bleedingdev/modern-js-bff-effect@3.9.0-ultramodern.12",
199
- "@modern-js/runtime-extensions": "npm:@bleedingdev/modern-js-runtime-extensions@3.9.0-ultramodern.12",
200
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.12",
201
- "@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.0-ultramodern.12",
202
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.12",
203
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.12",
204
- "@module-federation/runtime": "2.9.0",
196
+ "@modern-js/backend-federation-contracts": "npm:@bleedingdev/modern-js-backend-federation-contracts@3.9.0-ultramodern.13",
197
+ "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.9.0-ultramodern.13",
198
+ "@modern-js/bff-effect": "npm:@bleedingdev/modern-js-bff-effect@3.9.0-ultramodern.13",
199
+ "@modern-js/runtime-extensions": "npm:@bleedingdev/modern-js-runtime-extensions@3.9.0-ultramodern.13",
200
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.13",
201
+ "@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.0-ultramodern.13",
202
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.13",
203
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.13",
204
+ "@module-federation/runtime": "npm:@bleedingdev/mf-runtime@2.9.1",
205
205
  "@swc/core": "1.16.2",
206
206
  "esbuild": "^0.28.2"
207
207
  },
208
208
  "peerDependencies": {
209
- "@effect/opentelemetry": "4.0.0-rc.112",
210
- "effect": "4.0.0-rc.112"
209
+ "@effect/opentelemetry": "4.0.0-rc.117",
210
+ "effect": "4.0.0-rc.117"
211
211
  },
212
212
  "peerDependenciesMeta": {
213
213
  "@effect/opentelemetry": {
@@ -218,15 +218,15 @@
218
218
  }
219
219
  },
220
220
  "devDependencies": {
221
- "@effect/opentelemetry": "4.0.0-rc.112",
222
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.0-ultramodern.12",
223
- "@rsbuild/core": "2.2.3",
224
- "@rslib/core": "1.0.0",
221
+ "@effect/opentelemetry": "4.0.0-rc.117",
222
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.0-ultramodern.13",
223
+ "@rsbuild/core": "2.2.9",
224
+ "@rslib/core": "1.0.2",
225
225
  "@scripts/rstest-config": "2.66.0",
226
- "@types/node": "^26.4.1",
227
- "@types/react": "^19.2.18",
226
+ "@types/node": "^26.6.2",
227
+ "@types/react": "^19.3.0",
228
228
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
229
- "effect": "4.0.0-rc.112"
229
+ "effect": "npm:@bleedingdev/effect@4.0.0-rc.117"
230
230
  },
231
231
  "sideEffects": false,
232
232
  "publishConfig": {
@@ -0,0 +1,13 @@
1
+ import { createRequire } from 'node:module';
2
+ import { evaluateNodeBackendFederationCommonJs } from '@modern-js/server-runtime-extensions/backend-federation-security/node';
3
+
4
+ const fromAdapter = createRequire(import.meta.url);
5
+ const fromEffectPackage = createRequire(
6
+ fromAdapter.resolve('@modern-js/bff-effect/package.json'),
7
+ );
8
+ const privateRegistry = fromEffectPackage(`#effect-entry-shape-${'registry'}`);
9
+
10
+ export const evaluateEffectBackendFederationCommonJs = (
11
+ source: Parameters<typeof evaluateNodeBackendFederationCommonJs>[0],
12
+ context: Parameters<typeof evaluateNodeBackendFederationCommonJs>[1],
13
+ ) => evaluateNodeBackendFederationCommonJs(source, context, privateRegistry);
@@ -1,6 +1,5 @@
1
- import { evaluateNodeBackendFederationCommonJs } from '@modern-js/server-runtime-extensions/backend-federation-security/node';
2
-
3
1
  import { loadBackendFederatedEffectApi as loadUniversalBackendFederatedEffectApi } from './load';
2
+ import { evaluateEffectBackendFederationCommonJs } from './node-evaluator';
4
3
  import type {
5
4
  BackendFederatedEffectApiModule,
6
5
  BackendFederationIdentityLoadOptions,
@@ -16,7 +15,7 @@ export function loadBackendFederatedEffectApi(
16
15
  ...options.entryPolicy,
17
16
  evaluateCommonJs:
18
17
  options.entryPolicy?.evaluateCommonJs ??
19
- evaluateNodeBackendFederationCommonJs,
18
+ evaluateEffectBackendFederationCommonJs,
20
19
  },
21
20
  });
22
21
  }
@@ -1,6 +1,5 @@
1
- import { evaluateNodeBackendFederationCommonJs } from '@modern-js/server-runtime-extensions/backend-federation-security/node';
2
-
3
1
  import type { BackendFederatedEffectApiModule } from '../backend-federation';
2
+ import { evaluateEffectBackendFederationCommonJs } from '../backend-federation/node-evaluator';
4
3
  import { loadBackendFederatedEffectApiFromManifest as loadUniversalBackendFederatedEffectApiFromManifest } from './load';
5
4
  import type { BackendFederationManifestAdapterOptions } from './types';
6
5
 
@@ -13,7 +12,7 @@ export function loadBackendFederatedEffectApiFromManifest(
13
12
  ...options.entryPolicy,
14
13
  evaluateCommonJs:
15
14
  options.entryPolicy?.evaluateCommonJs ??
16
- evaluateNodeBackendFederationCommonJs,
15
+ evaluateEffectBackendFederationCommonJs,
17
16
  },
18
17
  });
19
18
  }
@@ -13,7 +13,7 @@ import { HttpApi } from 'effect/unstable/httpapi';
13
13
  import { resolveAdapterCrossProjectPolicy } from '../cross-project-policy';
14
14
  import type { ResolvedCrossProjectPolicy } from '../cross-project-policy/evaluation';
15
15
 
16
- export function resolveEffectAdapterCrossProjectPolicy(
16
+ export function resolveEffectServerCrossProjectPolicy(
17
17
  api: ServerPluginAPI,
18
18
  prefix: string,
19
19
  mod: EffectApiModule | null,
@@ -5,7 +5,7 @@ import type { ServerPluginAPI } from '@modern-js/server-core';
5
5
  import { API_DIR, isProd } from '@modern-js/utils';
6
6
  import { resolveEffectEntry } from '../effect-source-loader/paths';
7
7
 
8
- export function resolveEffectAdapterEntryFile(api: ServerPluginAPI) {
8
+ export function resolveEffectServerEntryFile(api: ServerPluginAPI) {
9
9
  const { appDirectory, apiDirectory, distDirectory } = api.getServerContext();
10
10
  const appDir = path.resolve(appDirectory || process.cwd());
11
11
  return resolveEffectEntry({
@@ -2,7 +2,7 @@ import { createSafeFailureResponse } from '@modern-js/runtime-extensions/safe-fa
2
2
  import type { Context, ServerPluginAPI } from '@modern-js/server-core';
3
3
  import { logger } from '@modern-js/utils';
4
4
 
5
- export function createEffectAdapterRuntimeErrorResponse(
5
+ export function createEffectServerRuntimeErrorResponse(
6
6
  api: ServerPluginAPI,
7
7
  error: unknown,
8
8
  context: Context,