@bleedingdev/modern-js-plugin-bff-extensions 3.9.0-ultramodern.4 → 3.9.0-ultramodern.5

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 (82) hide show
  1. package/dist/cjs/backend-federation/edge.js +6 -6
  2. package/dist/cjs/backend-federation/index.js +5 -5
  3. package/dist/cjs/backend-federation/load.js +2 -2
  4. package/dist/cjs/backend-federation-manifest/metadata.js +3 -3
  5. package/dist/cjs/backend-federation-manifest/remote.js +2 -2
  6. package/dist/cjs/backend-federation-manifest/validation.js +3 -3
  7. package/dist/cjs/client-generator/rendering.js +4 -4
  8. package/dist/cjs/cross-project-policy/evaluation.js +3 -3
  9. package/dist/cjs/cross-project-policy/node.js +4 -3
  10. package/dist/cjs/cross-project-policy/producer-runtime.js +58 -0
  11. package/dist/cjs/effect-adapter/entry.js +1 -0
  12. package/dist/cjs/effect-adapter/index.js +9 -2
  13. package/dist/cjs/effect-source-loader/loader.js +6 -4
  14. package/dist/cjs/effect-source-loader/rspack-loader.js +89 -0
  15. package/dist/cjs/effect-source-loader/worker-runtime-wrapper.js +2 -30
  16. package/dist/cjs/hono/cross-project-policy.js +2 -1
  17. package/dist/cjs/hono/node.js +51 -0
  18. package/dist/esm/backend-federation/edge.mjs +1 -1
  19. package/dist/esm/backend-federation/index.mjs +1 -1
  20. package/dist/esm/backend-federation/load.mjs +1 -1
  21. package/dist/esm/backend-federation-manifest/metadata.mjs +1 -1
  22. package/dist/esm/backend-federation-manifest/remote.mjs +1 -1
  23. package/dist/esm/backend-federation-manifest/validation.mjs +1 -1
  24. package/dist/esm/client-generator/rendering.mjs +2 -2
  25. package/dist/esm/cross-project-policy/evaluation.mjs +1 -1
  26. package/dist/esm/cross-project-policy/node.mjs +2 -1
  27. package/dist/esm/cross-project-policy/producer-runtime.mjs +20 -0
  28. package/dist/esm/effect-adapter/entry.mjs +1 -0
  29. package/dist/esm/effect-adapter/index.mjs +5 -1
  30. package/dist/esm/effect-source-loader/loader.mjs +6 -4
  31. package/dist/esm/effect-source-loader/rspack-loader.mjs +51 -0
  32. package/dist/esm/effect-source-loader/worker-runtime-wrapper.mjs +2 -30
  33. package/dist/esm/hono/cross-project-policy.mjs +2 -1
  34. package/dist/esm-node/backend-federation/edge.mjs +1 -1
  35. package/dist/esm-node/backend-federation/index.mjs +1 -1
  36. package/dist/esm-node/backend-federation/load.mjs +1 -1
  37. package/dist/esm-node/backend-federation-manifest/metadata.mjs +1 -1
  38. package/dist/esm-node/backend-federation-manifest/remote.mjs +1 -1
  39. package/dist/esm-node/backend-federation-manifest/validation.mjs +1 -1
  40. package/dist/esm-node/client-generator/rendering.mjs +2 -2
  41. package/dist/esm-node/cross-project-policy/evaluation.mjs +1 -1
  42. package/dist/esm-node/cross-project-policy/node.mjs +2 -1
  43. package/dist/esm-node/cross-project-policy/producer-runtime.mjs +21 -0
  44. package/dist/esm-node/effect-adapter/entry.mjs +1 -0
  45. package/dist/esm-node/effect-adapter/index.mjs +5 -1
  46. package/dist/esm-node/effect-source-loader/loader.mjs +6 -4
  47. package/dist/esm-node/effect-source-loader/rspack-loader.mjs +53 -0
  48. package/dist/esm-node/effect-source-loader/worker-runtime-wrapper.mjs +2 -30
  49. package/dist/esm-node/hono/cross-project-policy.mjs +2 -1
  50. package/dist/esm-node/hono/node.mjs +14 -0
  51. package/dist/types/backend-federation/edge.d.ts +1 -1
  52. package/dist/types/backend-federation/index.d.ts +1 -1
  53. package/dist/types/backend-federation/types.d.ts +1 -1
  54. package/dist/types/client-generator/rendering.d.ts +1 -1
  55. package/dist/types/client-generator/types.d.ts +1 -1
  56. package/dist/types/cross-project-policy/evaluation.d.ts +1 -1
  57. package/dist/types/cross-project-policy/node.d.ts +2 -1
  58. package/dist/types/cross-project-policy/producer-runtime.d.ts +20 -0
  59. package/dist/types/effect-adapter/entry.d.ts +1 -0
  60. package/dist/types/effect-adapter/index.d.ts +2 -0
  61. package/dist/types/effect-source-loader/rspack-loader.d.ts +23 -0
  62. package/dist/types/hono/node.d.ts +4 -0
  63. package/package.json +48 -8
  64. package/src/backend-federation/edge.ts +1 -1
  65. package/src/backend-federation/index.ts +1 -1
  66. package/src/backend-federation/load.ts +1 -1
  67. package/src/backend-federation/types.ts +1 -1
  68. package/src/backend-federation-manifest/metadata.ts +1 -1
  69. package/src/backend-federation-manifest/remote.ts +1 -1
  70. package/src/backend-federation-manifest/validation.ts +1 -1
  71. package/src/client-generator/rendering.ts +6 -6
  72. package/src/client-generator/types.ts +1 -1
  73. package/src/cross-project-policy/evaluation.ts +1 -1
  74. package/src/cross-project-policy/node.ts +3 -3
  75. package/src/cross-project-policy/producer-runtime.ts +43 -0
  76. package/src/effect-adapter/entry.ts +1 -0
  77. package/src/effect-adapter/index.ts +5 -0
  78. package/src/effect-source-loader/loader.ts +29 -23
  79. package/src/effect-source-loader/rspack-loader.ts +102 -0
  80. package/src/effect-source-loader/worker-runtime-wrapper.ts +2 -30
  81. package/src/hono/cross-project-policy.ts +2 -1
  82. package/src/hono/node.ts +24 -0
@@ -28,16 +28,16 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- BACKEND_FEDERATION_CONTRACT_VERSION: ()=>universal_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION,
32
- BACKEND_FEDERATION_EFFECT_EXPOSE: ()=>universal_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE,
33
- BACKEND_FEDERATION_MANIFEST_FILE: ()=>universal_namespaceObject.BACKEND_FEDERATION_MANIFEST_FILE,
34
- BACKEND_FEDERATION_NODE_ADAPTER_VERSION: ()=>universal_namespaceObject.BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
31
+ BACKEND_FEDERATION_CONTRACT_VERSION: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION,
32
+ BACKEND_FEDERATION_EFFECT_EXPOSE: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE,
33
+ BACKEND_FEDERATION_MANIFEST_FILE: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_MANIFEST_FILE,
34
+ BACKEND_FEDERATION_NODE_ADAPTER_VERSION: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
35
35
  createBackendFederationLoadEntryPlugin: ()=>external_edge_runtime_js_namespaceObject.createBackendFederationLoadEntryPlugin,
36
36
  createBackendFederationRuntime: ()=>external_edge_runtime_js_namespaceObject.createBackendFederationRuntime,
37
37
  loadBackendFederatedEffectApi: ()=>loadBackendFederatedEffectApi,
38
38
  validateExpectedBackendFederationIdentity: ()=>external_identity_js_namespaceObject.validateExpectedBackendFederationIdentity
39
39
  });
40
- const universal_namespaceObject = require("@modern-js/utils/universal");
40
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
41
41
  const external_edge_runtime_js_namespaceObject = require("./edge-runtime.js");
42
42
  const external_legacy_warning_js_namespaceObject = require("./legacy-warning.js");
43
43
  const external_utils_js_namespaceObject = require("./utils.js");
@@ -47,7 +47,7 @@ function loadBackendFederatedEffectApi(options) {
47
47
  const remoteName = options.remote?.name ?? options.remoteName;
48
48
  if (void 0 === remoteName || 0 === remoteName.length) return Promise.reject(new Error('[BFF][Effect] Missing backend federation remote name.'));
49
49
  if (void 0 === options.expected) console.warn(external_legacy_warning_js_namespaceObject.LEGACY_LOAD_WARNING);
50
- const expose = options.expose ?? options.remote?.expose ?? universal_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
50
+ const expose = options.expose ?? options.remote?.expose ?? backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
51
51
  const remoteRequest = `${remoteName}/${(0, external_utils_js_namespaceObject.normalizeExpose)(expose)}`;
52
52
  let runtime;
53
53
  try {
@@ -28,15 +28,15 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- BACKEND_FEDERATION_CONTRACT_VERSION: ()=>universal_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION,
32
- BACKEND_FEDERATION_EFFECT_EXPOSE: ()=>universal_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE,
33
- BACKEND_FEDERATION_MANIFEST_FILE: ()=>universal_namespaceObject.BACKEND_FEDERATION_MANIFEST_FILE,
34
- BACKEND_FEDERATION_NODE_ADAPTER_VERSION: ()=>universal_namespaceObject.BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
31
+ BACKEND_FEDERATION_CONTRACT_VERSION: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION,
32
+ BACKEND_FEDERATION_EFFECT_EXPOSE: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE,
33
+ BACKEND_FEDERATION_MANIFEST_FILE: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_MANIFEST_FILE,
34
+ BACKEND_FEDERATION_NODE_ADAPTER_VERSION: ()=>backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_NODE_ADAPTER_VERSION,
35
35
  createBackendFederationLoadEntryPlugin: ()=>external_plugin_js_namespaceObject.createBackendFederationLoadEntryPlugin,
36
36
  createBackendFederationRuntime: ()=>external_runtime_js_namespaceObject.createBackendFederationRuntime,
37
37
  validateExpectedBackendFederationIdentity: ()=>external_identity_js_namespaceObject.validateExpectedBackendFederationIdentity
38
38
  });
39
- const universal_namespaceObject = require("@modern-js/utils/universal");
39
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
40
40
  const external_identity_js_namespaceObject = require("./identity.js");
41
41
  const external_plugin_js_namespaceObject = require("./plugin.js");
42
42
  const external_runtime_js_namespaceObject = require("./runtime.js");
@@ -30,7 +30,7 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  loadBackendFederatedEffectApi: ()=>loadBackendFederatedEffectApi
32
32
  });
33
- const universal_namespaceObject = require("@modern-js/utils/universal");
33
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
34
34
  const Effect_namespaceObject = require("effect/Effect");
35
35
  const Logger_namespaceObject = require("effect/Logger");
36
36
  const external_legacy_warning_js_namespaceObject = require("./legacy-warning.js");
@@ -54,7 +54,7 @@ function loadBackendFederatedEffectApi(options) {
54
54
  if (void 0 !== configuredRemote.verification || options.entryPolicy?.expected !== void 0) return Promise.reject(new Error('[BFF][Effect] A custom Module Federation runtime cannot bypass verified backend entry loading.'));
55
55
  }
56
56
  const runtime = options.runtime ?? (0, external_runtime_js_namespaceObject.createBackendFederationRuntime)(options);
57
- const expose = options.expose ?? options.remote?.expose ?? universal_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
57
+ const expose = options.expose ?? options.remote?.expose ?? backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
58
58
  const remoteRequest = `${remoteName}/${(0, external_utils_js_namespaceObject.normalizeExpose)(expose)}`;
59
59
  return runtime.loadRemote(remoteRequest).then((loaded)=>(0, external_validate_loaded_js_namespaceObject.validateLoadedBackendFederatedEffectApi)(loaded, {
60
60
  allowMissingIdentityMetadata: options.allowMissingIdentityMetadata,
@@ -37,7 +37,7 @@ __webpack_require__.d(__webpack_exports__, {
37
37
  stringValue: ()=>stringValue,
38
38
  versionBoundaryMetadata: ()=>versionBoundaryMetadata
39
39
  });
40
- const universal_namespaceObject = require("@modern-js/utils/universal");
40
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
41
41
  function stringValue(value) {
42
42
  return 'string' == typeof value && value.length > 0 ? value : void 0;
43
43
  }
@@ -64,10 +64,10 @@ function resolveRemoteEntryFromMetadata(manifest) {
64
64
  ].filter(Boolean).join('/');
65
65
  }
66
66
  function backendFederationMetadata(manifest) {
67
- return (0, universal_namespaceObject.backendFederationMetadata)(manifest);
67
+ return (0, backend_federation_contracts_namespaceObject.backendFederationMetadata)(manifest);
68
68
  }
69
69
  function versionBoundaryMetadata(manifest) {
70
- return (0, universal_namespaceObject.backendFederationVersionBoundary)(manifest);
70
+ return (0, backend_federation_contracts_namespaceObject.backendFederationVersionBoundary)(manifest);
71
71
  }
72
72
  function deliveryUnitMetadata(record) {
73
73
  return recordField(record, 'deliveryUnit');
@@ -30,8 +30,8 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  resolveBackendFederationRemoteFromManifest: ()=>resolveBackendFederationRemoteFromManifest
32
32
  });
33
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
33
34
  const backend_federation_security_namespaceObject = require("@modern-js/server-runtime-extensions/backend-federation-security");
34
- const universal_namespaceObject = require("@modern-js/utils/universal");
35
35
  const index_js_namespaceObject = require("../backend-federation/index.js");
36
36
  const external_errors_js_namespaceObject = require("./errors.js");
37
37
  const external_metadata_js_namespaceObject = require("./metadata.js");
@@ -44,7 +44,7 @@ function resolveBackendFederationRemoteFromManifest(manifest, remoteOverride = {
44
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
45
  const remoteEntryUrl = remoteOverride.entry ?? manifestEntryUrl;
46
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;
47
+ const expose = remoteOverride.expose ?? (0, backend_federation_contracts_namespaceObject.backendFederationExposeNames)(backendFederation)[0] ?? index_js_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE;
48
48
  let verification;
49
49
  try {
50
50
  const manifestVerification = (0, backend_federation_security_namespaceObject.resolveBackendFederationRemoteEntryVerification)(manifest);
@@ -32,7 +32,7 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  validateBackendFederationManifest: ()=>validateBackendFederationManifest,
33
33
  validateLoadedBackendFederationContract: ()=>validateLoadedBackendFederationContract
34
34
  });
35
- const universal_namespaceObject = require("@modern-js/utils/universal");
35
+ const backend_federation_contracts_namespaceObject = require("@modern-js/backend-federation-contracts");
36
36
  const index_js_namespaceObject = require("../backend-federation/index.js");
37
37
  const external_errors_js_namespaceObject = require("./errors.js");
38
38
  const external_metadata_js_namespaceObject = require("./metadata.js");
@@ -48,12 +48,12 @@ function validateBackendFederationManifest(manifest, expected = {}) {
48
48
  const expectedBuildMarker = resolveExpectedBuildMarker(expected);
49
49
  const backendFederation = (0, external_metadata_js_namespaceObject.backendFederationMetadata)(manifest);
50
50
  (0, external_errors_js_namespaceObject.assertManifestAdapter)(backendFederation, 'manifest_invalid', '[BFF][Effect] Backend federation manifest must declare backendFederation metadata.');
51
- const manifestShape = (0, universal_namespaceObject.validateBackendFederationManifest)(manifest, {
51
+ const manifestShape = (0, backend_federation_contracts_namespaceObject.validateBackendFederationManifest)(manifest, {
52
52
  expectedContractVersion: false,
53
53
  expectedNodeAdapterVersion: false,
54
54
  validateDeliveryUnit: false
55
55
  });
56
- (0, external_errors_js_namespaceObject.assertManifestAdapter)(manifestShape.ok, 'manifest_invalid', `[BFF][Effect] Backend federation manifest schema invalid: ${(0, universal_namespaceObject.formatBackendFederationValidationErrors)(manifestShape.errors)}.`);
56
+ (0, external_errors_js_namespaceObject.assertManifestAdapter)(manifestShape.ok, 'manifest_invalid', `[BFF][Effect] Backend federation manifest schema invalid: ${(0, backend_federation_contracts_namespaceObject.formatBackendFederationValidationErrors)(manifestShape.errors)}.`);
57
57
  (0, external_errors_js_namespaceObject.assertManifestAdapter)('effect' === backendFederation.runtimeFramework, 'strict_effect_required', '[BFF][Effect] Backend federation manifest must declare runtimeFramework: "effect".');
58
58
  (0, external_errors_js_namespaceObject.assertManifestAdapter)(true === backendFederation.strictEffectApproach, 'strict_effect_required', '[BFF][Effect] Backend federation manifest must declare strictEffectApproach: true.');
59
59
  (0, external_errors_js_namespaceObject.assertVersionValue)((0, external_metadata_js_namespaceObject.stringValue)(backendFederation.contractVersion), expected.contractVersion ?? index_js_namespaceObject.BACKEND_FEDERATION_CONTRACT_VERSION, 'manifest contractVersion');
@@ -32,11 +32,11 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  renderEffectClientCode: ()=>renderEffectClientCode,
33
33
  renderEffectClientDeclaration: ()=>renderEffectClientDeclaration
34
34
  });
35
- const bff_core_namespaceObject = require("@modern-js/bff-core");
36
35
  const effect_namespaceObject = require("@modern-js/bff-effect/effect");
36
+ const node_namespaceObject = require("@modern-js/server-runtime-extensions/bff-policy/node");
37
37
  const utils_namespaceObject = require("@modern-js/utils");
38
38
  const DEFAULT_REQUEST_CREATOR = '@modern-js/plugin-bff/client';
39
- const EFFECT_CLIENT_RUNTIME_IMPORT = '@modern-js/plugin-bff/effect-client-runtime';
39
+ const EFFECT_CLIENT_RUNTIME_IMPORT = '@modern-js/bff-effect/effect-client-runtime';
40
40
  function isAbsoluteUrl(value) {
41
41
  try {
42
42
  new URL(value);
@@ -113,7 +113,7 @@ function createEffectClientGeneration(endpoints, options) {
113
113
  const dataPlatformAppNamespace = void 0 === packageName || '' === packageName ? 'unknown-app' : packageName;
114
114
  const requestId = 'bundle' === options.target ? void 0 !== options.requestId && '' !== options.requestId.trim() ? options.requestId.trim() : void 0 !== packageName && '' !== packageName ? packageName : void 0 : void 0;
115
115
  const normalizedRequestId = void 0 === requestId || '' === requestId ? 'default' : requestId;
116
- const operationVersion = (0, bff_core_namespaceObject.deriveOperationVersion)(packageInfo.version);
116
+ const operationVersion = (0, node_namespaceObject.deriveOperationVersion)(packageInfo.version);
117
117
  const batchConfig = options.dataPlatformBatch;
118
118
  const batchEndpoint = resolveBatchEndpoint(options.prefix, batchConfig?.endpoint);
119
119
  const manifest = {
@@ -151,7 +151,7 @@ function createEffectClientGeneration(endpoints, options) {
151
151
  return {
152
152
  config,
153
153
  manifest,
154
- operationContracts: (0, bff_core_namespaceObject.buildOperationContractMap)({
154
+ operationContracts: (0, node_namespaceObject.buildOperationContractMap)({
155
155
  handlers: (0, effect_namespaceObject.toOperationContractSources)(endpoints),
156
156
  requestId: normalizedRequestId,
157
157
  operationVersion
@@ -31,13 +31,13 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  checkCrossProjectPolicyForRequest: ()=>checkCrossProjectPolicyForRequest,
32
32
  checkCrossProjectPolicyResponse: ()=>checkCrossProjectPolicyResponse
33
33
  });
34
- const cross_project_policy_namespaceObject = require("@modern-js/bff-core/security/cross-project-policy");
34
+ const bff_policy_namespaceObject = require("@modern-js/server-runtime-extensions/bff-policy");
35
35
  const DENIAL_HEADERS = {
36
36
  'content-type': 'application/json; charset=utf-8'
37
37
  };
38
38
  const checkCrossProjectPolicyResponse = (headers, policy, observedRequest)=>{
39
39
  if (!policy?.enabled) return null;
40
- const violation = (0, cross_project_policy_namespaceObject.evaluateCrossProjectPolicy)(headers, policy, observedRequest);
40
+ const violation = (0, bff_policy_namespaceObject.evaluateCrossProjectPolicy)(headers, policy, observedRequest);
41
41
  if (!violation) return null;
42
42
  return new Response(JSON.stringify({
43
43
  code: violation.code,
@@ -54,7 +54,7 @@ const checkCrossProjectPolicyForRequest = (request, policy)=>{
54
54
  method: request.method,
55
55
  pathname: new URL(request.url).pathname
56
56
  };
57
- const observedRequest = (0, cross_project_policy_namespaceObject.resolveCrossProjectRequestObservation)(requestTarget, policy) ?? {
57
+ const observedRequest = (0, bff_policy_namespaceObject.resolveCrossProjectRequestObservation)(requestTarget, policy) ?? {
58
58
  method: requestTarget.method,
59
59
  routePath: requestTarget.pathname
60
60
  };
@@ -42,7 +42,8 @@ __webpack_require__.d(__webpack_exports__, {
42
42
  const external_node_fs_namespaceObject = require("node:fs");
43
43
  const external_node_path_namespaceObject = require("node:path");
44
44
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
45
- const bff_core_namespaceObject = require("@modern-js/bff-core");
45
+ require("@modern-js/server-runtime-extensions/server-config");
46
+ const node_namespaceObject = require("@modern-js/server-runtime-extensions/bff-policy/node");
46
47
  const readNearestPackageVersion = (startDir)=>{
47
48
  if (!startDir) return;
48
49
  let current = external_node_path_default().resolve(startDir);
@@ -59,12 +60,12 @@ const readNearestPackageVersion = (startDir)=>{
59
60
  const resolveAdapterCrossProjectPolicy = (api, handlers)=>{
60
61
  const bff = api.getServerConfig()?.bff;
61
62
  const { apiDirectory, appDirectory } = api.getServerContext();
62
- return (0, bff_core_namespaceObject.resolveCrossProjectPolicy)({
63
+ return (0, node_namespaceObject.resolveCrossProjectPolicy)({
63
64
  crossProjectPolicy: bff?.crossProjectPolicy,
64
65
  handlers,
65
66
  requestId: bff?.requestId,
66
67
  isCrossProjectServer: bff?.isCrossProjectServer,
67
- operationVersion: (0, bff_core_namespaceObject.deriveOperationVersion)(readNearestPackageVersion(apiDirectory) ?? readNearestPackageVersion(appDirectory))
68
+ operationVersion: (0, node_namespaceObject.deriveOperationVersion)(readNearestPackageVersion(apiDirectory) ?? readNearestPackageVersion(appDirectory))
68
69
  });
69
70
  };
70
71
  exports.resolveAdapterCrossProjectPolicy = __webpack_exports__.resolveAdapterCrossProjectPolicy;
@@ -0,0 +1,58 @@
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
+ function createProducerClient(configure, { requestId }) {
31
+ return (options)=>configure({
32
+ requestId,
33
+ requireEnvelope: true,
34
+ ...options,
35
+ identityBinding: {
36
+ enabled: true,
37
+ strict: true,
38
+ ...options?.identityBinding
39
+ },
40
+ operationContract: {
41
+ enabled: true,
42
+ strict: true,
43
+ requireSchemaHash: true,
44
+ requireOperationVersion: true,
45
+ ...options?.operationContract
46
+ }
47
+ });
48
+ }
49
+ __webpack_require__.d(__webpack_exports__, {
50
+ createProducerClient: ()=>createProducerClient
51
+ });
52
+ exports.createProducerClient = __webpack_exports__.createProducerClient;
53
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
54
+ "createProducerClient"
55
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
56
+ Object.defineProperty(exports, '__esModule', {
57
+ value: true
58
+ });
@@ -41,6 +41,7 @@ __webpack_require__.d(__webpack_exports__, {
41
41
  });
42
42
  const external_node_path_namespaceObject = require("node:path");
43
43
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
44
+ require("@modern-js/server-runtime-extensions/server-config");
44
45
  const utils_namespaceObject = require("@modern-js/utils");
45
46
  const JS_OR_TS_EXTS = [
46
47
  '.js',
@@ -37,10 +37,12 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- EffectAdapter: ()=>EffectAdapter
40
+ EffectAdapter: ()=>EffectAdapter,
41
+ createRuntimeAdapters: ()=>createRuntimeAdapters
41
42
  });
42
43
  const external_node_path_namespaceObject = require("node:path");
43
44
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
45
+ require("@modern-js/server-runtime-extensions/server-config");
44
46
  const effect_namespaceObject = require("@modern-js/bff-effect/effect");
45
47
  const runtime_lifecycle_namespaceObject = require("@modern-js/server-runtime-extensions/runtime-lifecycle");
46
48
  const utils_namespaceObject = require("@modern-js/utils");
@@ -178,9 +180,14 @@ class EffectAdapter {
178
180
  this.api = api;
179
181
  }
180
182
  }
183
+ const createRuntimeAdapters = (api)=>[
184
+ new EffectAdapter(api)
185
+ ];
181
186
  exports.EffectAdapter = __webpack_exports__.EffectAdapter;
187
+ exports.createRuntimeAdapters = __webpack_exports__.createRuntimeAdapters;
182
188
  for(var __rspack_i in __webpack_exports__)if (-1 === [
183
- "EffectAdapter"
189
+ "EffectAdapter",
190
+ "createRuntimeAdapters"
184
191
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
185
192
  Object.defineProperty(exports, '__esModule', {
186
193
  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(args.path)),
104
- __filename: JSON.stringify(args.path),
105
- 'import.meta.url': JSON.stringify((0, external_node_url_namespaceObject.pathToFileURL)(args.path).href)
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,
@@ -0,0 +1,89 @@
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 {
63
+ const code = await (0, external_index_js_namespaceObject.generateEffectClientCode)({
64
+ appDir: options.appDir,
65
+ apiDir: options.apiDir,
66
+ resourcePath: this.resourcePath,
67
+ prefix: options.prefix,
68
+ port: Number(options.port),
69
+ target: options.target,
70
+ requestId: options.requestId,
71
+ requestCreator: options.requestCreator,
72
+ httpMethodDecider: options.httpMethodDecider,
73
+ dataPlatformBatch: options.effectDataPlatformBatch,
74
+ onDependency: (dependency)=>this.addDependency(dependency)
75
+ });
76
+ if (null === code) throw new Error(`Failed to generate Effect client for ${this.resourcePath}`);
77
+ callback(void 0, code);
78
+ }
79
+ } catch (error) {
80
+ callback(error instanceof Error ? error : new Error(String(error)));
81
+ }
82
+ }
83
+ exports["default"] = __webpack_exports__["default"];
84
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
85
+ "default"
86
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
87
+ Object.defineProperty(exports, '__esModule', {
88
+ value: true
89
+ });
@@ -45,36 +45,8 @@ async function generateEffectWorkerRuntimeWrapper(loader, options, resourcePath)
45
45
  const sourceRequest = `${resourcePath}?modern-bff-runtime-source`;
46
46
  const operationContracts = artifacts?.operationContracts ?? {};
47
47
  return `import * as effectBffModule from ${JSON.stringify(sourceRequest)};
48
- import { createEffectBffEdgeDispatcher } from '@modern-js/plugin-bff/effect-edge/dispatcher';
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
- });
48
+ import { createEffectBffEdgeDispatcherFactory } from '@modern-js/bff-effect/effect-edge';
49
+ export const __modern_create_effect_bff_dispatcher = createEffectBffEdgeDispatcherFactory(effectBffModule, ${JSON.stringify(operationContracts)});
78
50
  `;
79
51
  }
80
52
  async function generateEffectClientCode(options) {
@@ -37,7 +37,8 @@ const createHonoCrossProjectPolicyMiddleware = (policy, routePath)=>async functi
37
37
  routePath
38
38
  });
39
39
  if (denial) return denial;
40
- return next();
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
+ });
@@ -1,4 +1,4 @@
1
- import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "@modern-js/utils/universal";
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
2
  import { createBackendFederationLoadEntryPlugin, createBackendFederationRuntime, createBackendFederationRuntimeForLoad } from "./edge-runtime.mjs";
3
3
  import { LEGACY_LOAD_WARNING } from "./legacy-warning.mjs";
4
4
  import { normalizeExpose } from "./utils.mjs";
@@ -1,4 +1,4 @@
1
- export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "@modern-js/utils/universal";
1
+ export { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_EFFECT_EXPOSE, BACKEND_FEDERATION_MANIFEST_FILE, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "@modern-js/backend-federation-contracts";
2
2
  export { validateExpectedBackendFederationIdentity } from "./identity.mjs";
3
3
  export { createBackendFederationLoadEntryPlugin } from "./plugin.mjs";
4
4
  export { createBackendFederationRuntime } from "./runtime.mjs";
@@ -1,4 +1,4 @@
1
- import { BACKEND_FEDERATION_EFFECT_EXPOSE } from "@modern-js/utils/universal";
1
+ import { BACKEND_FEDERATION_EFFECT_EXPOSE } from "@modern-js/backend-federation-contracts";
2
2
  import { LEGACY_LOAD_WARNING } from "./legacy-warning.mjs";
3
3
  import { collectRemotes } from "./remotes.mjs";
4
4
  import { createBackendFederationRuntime } from "./runtime.mjs";
@@ -1,4 +1,4 @@
1
- import { backendFederationMetadata, backendFederationVersionBoundary } from "@modern-js/utils/universal";
1
+ import { backendFederationMetadata, backendFederationVersionBoundary } from "@modern-js/backend-federation-contracts";
2
2
  function stringValue(value) {
3
3
  return 'string' == typeof value && value.length > 0 ? value : void 0;
4
4
  }
@@ -1,5 +1,5 @@
1
+ import { backendFederationExposeNames } from "@modern-js/backend-federation-contracts";
1
2
  import { BackendFederationRemoteEntryError, resolveBackendFederationRemoteEntryVerification } from "@modern-js/server-runtime-extensions/backend-federation-security";
2
- import { backendFederationExposeNames } from "@modern-js/utils/universal";
3
3
  import { BACKEND_FEDERATION_EFFECT_EXPOSE } from "../backend-federation/index.mjs";
4
4
  import { BackendFederationManifestAdapterError, assertManifestAdapter } from "./errors.mjs";
5
5
  import { backendFederationMetadata, recordField, resolveRemoteEntryFromMetadata, stringValue } from "./metadata.mjs";
@@ -1,4 +1,4 @@
1
- import { formatBackendFederationValidationErrors, validateBackendFederationManifest } from "@modern-js/utils/universal";
1
+ import { formatBackendFederationValidationErrors, validateBackendFederationManifest } from "@modern-js/backend-federation-contracts";
2
2
  import { BACKEND_FEDERATION_CONTRACT_VERSION, BACKEND_FEDERATION_NODE_ADAPTER_VERSION } from "../backend-federation/index.mjs";
3
3
  import { BackendFederationManifestAdapterError, assertConsistentValue, assertManifestAdapter, assertVersionValue } from "./errors.mjs";
4
4
  import { backendFederationMetadata, manifestDeliveryUnit, recordField, stringValue, versionBoundaryMetadata } from "./metadata.mjs";
@@ -1,8 +1,8 @@
1
- import { buildOperationContractMap, deriveOperationVersion } from "@modern-js/bff-core";
2
1
  import { createEffectEndpointContractHash, ensureLeadingSlash, normalizeEffectPrefix, toOperationContractSources } from "@modern-js/bff-effect/effect";
2
+ import { buildOperationContractMap, deriveOperationVersion } from "@modern-js/server-runtime-extensions/bff-policy/node";
3
3
  import { fs, upath } from "@modern-js/utils";
4
4
  const DEFAULT_REQUEST_CREATOR = '@modern-js/plugin-bff/client';
5
- const EFFECT_CLIENT_RUNTIME_IMPORT = '@modern-js/plugin-bff/effect-client-runtime';
5
+ const EFFECT_CLIENT_RUNTIME_IMPORT = '@modern-js/bff-effect/effect-client-runtime';
6
6
  function isAbsoluteUrl(value) {
7
7
  try {
8
8
  new URL(value);
@@ -1,4 +1,4 @@
1
- import { evaluateCrossProjectPolicy, resolveCrossProjectRequestObservation } from "@modern-js/bff-core/security/cross-project-policy";
1
+ import { evaluateCrossProjectPolicy, resolveCrossProjectRequestObservation } from "@modern-js/server-runtime-extensions/bff-policy";
2
2
  const DENIAL_HEADERS = {
3
3
  'content-type': 'application/json; charset=utf-8'
4
4
  };
@@ -1,6 +1,7 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import node_path from "node:path";
3
- import { deriveOperationVersion, resolveCrossProjectPolicy } from "@modern-js/bff-core";
3
+ import "@modern-js/server-runtime-extensions/server-config";
4
+ import { deriveOperationVersion, resolveCrossProjectPolicy } from "@modern-js/server-runtime-extensions/bff-policy/node";
4
5
  const readNearestPackageVersion = (startDir)=>{
5
6
  if (!startDir) return;
6
7
  let current = node_path.resolve(startDir);