@bleedingdev/modern-js-plugin-bff-extensions 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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 (216) hide show
  1. package/README.md +25 -5
  2. package/dist/cjs/backend-federation/edge-runtime.js +3 -15
  3. package/dist/cjs/backend-federation/edge.js +9 -10
  4. package/dist/cjs/backend-federation/identity.js +26 -31
  5. package/dist/cjs/backend-federation/index.js +5 -5
  6. package/dist/cjs/backend-federation/integrity-plugin.js +112 -0
  7. package/dist/cjs/backend-federation/load.js +3 -13
  8. package/dist/cjs/backend-federation/node-shared.js +85 -0
  9. package/dist/cjs/backend-federation/node.js +6 -1
  10. package/dist/cjs/backend-federation/plugin.js +40 -21
  11. package/dist/cjs/backend-federation/runtime.js +16 -84
  12. package/dist/cjs/backend-federation/validate-loaded.js +2 -4
  13. package/dist/cjs/backend-federation-manifest/load.js +40 -12
  14. package/dist/cjs/backend-federation-manifest/metadata.js +3 -3
  15. package/dist/cjs/backend-federation-manifest/node.js +3 -1
  16. package/dist/cjs/backend-federation-manifest/remote.js +3 -9
  17. package/dist/cjs/backend-federation-manifest/validation.js +16 -12
  18. package/dist/cjs/cross-project-policy/evaluation.js +3 -3
  19. package/dist/cjs/cross-project-policy/node.js +11 -30
  20. package/dist/cjs/{backend-federation/legacy-warning.js → cross-project-policy/producer-runtime.js} +23 -5
  21. package/dist/cjs/{effect-adapter → effect-server}/cross-project-policy.js +5 -5
  22. package/dist/cjs/effect-server/entry.js +63 -0
  23. package/dist/cjs/{effect-adapter → effect-server}/error-response.js +4 -4
  24. package/dist/cjs/effect-server/index.js +199 -0
  25. package/dist/cjs/{client-generator → effect-source-loader}/built-entry.js +5 -6
  26. package/dist/cjs/{client-generator/runtime.js → effect-source-loader/http-api-runtime.js} +12 -20
  27. package/dist/cjs/effect-source-loader/index.js +18 -6
  28. package/dist/cjs/effect-source-loader/loader.js +17 -30
  29. package/dist/cjs/effect-source-loader/operation-contracts.js +60 -0
  30. package/dist/cjs/effect-source-loader/paths.js +90 -0
  31. package/dist/cjs/effect-source-loader/rspack-loader.js +73 -0
  32. package/dist/cjs/effect-source-loader/worker-runtime-source.js +71 -0
  33. package/dist/cjs/effect-source-loader/worker-runtime-wrapper.js +7 -50
  34. package/dist/cjs/hono/cross-project-policy.js +2 -1
  35. package/dist/cjs/{client-generator/paths.js → hono/node.js} +14 -25
  36. package/dist/esm/backend-federation/edge-runtime.mjs +2 -11
  37. package/dist/esm/backend-federation/edge.mjs +5 -6
  38. package/dist/esm/backend-federation/identity.mjs +21 -32
  39. package/dist/esm/backend-federation/index.mjs +1 -1
  40. package/dist/esm/backend-federation/integrity-plugin.mjs +68 -0
  41. package/dist/esm/backend-federation/load.mjs +2 -12
  42. package/dist/esm/backend-federation/node-shared.mjs +41 -0
  43. package/dist/esm/backend-federation/node.mjs +4 -2
  44. package/dist/esm/backend-federation/plugin.mjs +37 -18
  45. package/dist/esm/backend-federation/runtime.mjs +16 -84
  46. package/dist/esm/backend-federation/validate-loaded.mjs +2 -4
  47. package/dist/esm/backend-federation-manifest/load.mjs +40 -12
  48. package/dist/esm/backend-federation-manifest/metadata.mjs +1 -1
  49. package/dist/esm/backend-federation-manifest/node.mjs +3 -1
  50. package/dist/esm/backend-federation-manifest/remote.mjs +2 -8
  51. package/dist/esm/backend-federation-manifest/validation.mjs +15 -11
  52. package/dist/esm/cross-project-policy/evaluation.mjs +1 -1
  53. package/dist/esm/cross-project-policy/node.mjs +10 -19
  54. package/dist/esm/cross-project-policy/producer-runtime.mjs +20 -0
  55. package/dist/esm/{effect-adapter → effect-server}/cross-project-policy.mjs +3 -3
  56. package/dist/esm/effect-server/entry.mjs +15 -0
  57. package/dist/esm/{effect-adapter → effect-server}/error-response.mjs +2 -2
  58. package/dist/esm/effect-server/index.mjs +151 -0
  59. package/dist/esm/{client-generator → effect-source-loader}/built-entry.mjs +6 -7
  60. package/dist/esm/effect-source-loader/http-api-runtime.mjs +19 -0
  61. package/dist/esm/effect-source-loader/index.mjs +5 -2
  62. package/dist/esm/effect-source-loader/loader.mjs +17 -30
  63. package/dist/esm/effect-source-loader/operation-contracts.mjs +22 -0
  64. package/dist/esm/effect-source-loader/paths.mjs +43 -0
  65. package/dist/esm/effect-source-loader/rspack-loader.mjs +35 -0
  66. package/dist/esm/effect-source-loader/worker-runtime-source.mjs +23 -0
  67. package/dist/esm/effect-source-loader/worker-runtime-wrapper.mjs +5 -45
  68. package/dist/esm/hono/cross-project-policy.mjs +2 -1
  69. package/dist/esm-node/backend-federation/edge-runtime.mjs +2 -11
  70. package/dist/esm-node/backend-federation/edge.mjs +5 -6
  71. package/dist/esm-node/backend-federation/identity.mjs +21 -32
  72. package/dist/esm-node/backend-federation/index.mjs +1 -1
  73. package/dist/esm-node/backend-federation/integrity-plugin.mjs +69 -0
  74. package/dist/esm-node/backend-federation/load.mjs +2 -12
  75. package/dist/esm-node/backend-federation/node-shared.mjs +42 -0
  76. package/dist/esm-node/backend-federation/node.mjs +4 -2
  77. package/dist/esm-node/backend-federation/plugin.mjs +37 -18
  78. package/dist/esm-node/backend-federation/runtime.mjs +16 -84
  79. package/dist/esm-node/backend-federation/validate-loaded.mjs +2 -4
  80. package/dist/esm-node/backend-federation-manifest/load.mjs +40 -12
  81. package/dist/esm-node/backend-federation-manifest/metadata.mjs +1 -1
  82. package/dist/esm-node/backend-federation-manifest/node.mjs +3 -1
  83. package/dist/esm-node/backend-federation-manifest/remote.mjs +2 -8
  84. package/dist/esm-node/backend-federation-manifest/validation.mjs +15 -11
  85. package/dist/esm-node/cross-project-policy/evaluation.mjs +1 -1
  86. package/dist/esm-node/cross-project-policy/node.mjs +10 -19
  87. package/dist/esm-node/cross-project-policy/producer-runtime.mjs +21 -0
  88. package/dist/esm-node/{effect-adapter → effect-server}/cross-project-policy.mjs +3 -3
  89. package/dist/esm-node/effect-server/entry.mjs +16 -0
  90. package/dist/esm-node/{effect-adapter → effect-server}/error-response.mjs +2 -2
  91. package/dist/esm-node/effect-server/index.mjs +152 -0
  92. package/dist/esm-node/{client-generator → effect-source-loader}/built-entry.mjs +6 -7
  93. package/dist/esm-node/effect-source-loader/http-api-runtime.mjs +20 -0
  94. package/dist/esm-node/effect-source-loader/index.mjs +5 -2
  95. package/dist/esm-node/effect-source-loader/loader.mjs +17 -30
  96. package/dist/esm-node/effect-source-loader/operation-contracts.mjs +23 -0
  97. package/dist/esm-node/effect-source-loader/paths.mjs +44 -0
  98. package/dist/esm-node/effect-source-loader/rspack-loader.mjs +37 -0
  99. package/dist/esm-node/effect-source-loader/worker-runtime-source.mjs +24 -0
  100. package/dist/esm-node/effect-source-loader/worker-runtime-wrapper.mjs +5 -45
  101. package/dist/esm-node/hono/cross-project-policy.mjs +2 -1
  102. package/dist/esm-node/hono/node.mjs +14 -0
  103. package/dist/types/backend-federation/edge-runtime.d.ts +0 -5
  104. package/dist/types/backend-federation/edge.d.ts +5 -5
  105. package/dist/types/backend-federation/identity.d.ts +4 -16
  106. package/dist/types/backend-federation/index.d.ts +1 -1
  107. package/dist/types/backend-federation/integrity-plugin.d.ts +13 -0
  108. package/dist/types/backend-federation/load.d.ts +1 -7
  109. package/dist/types/backend-federation/node-shared.d.ts +20 -0
  110. package/dist/types/backend-federation/node.d.ts +4 -3
  111. package/dist/types/backend-federation/plugin.d.ts +4 -0
  112. package/dist/types/backend-federation/types.d.ts +3 -14
  113. package/dist/types/backend-federation/validate-loaded.d.ts +1 -2
  114. package/dist/types/backend-federation-manifest/metadata.d.ts +0 -6
  115. package/dist/types/backend-federation-manifest/types.d.ts +2 -1
  116. package/dist/types/cross-project-policy/evaluation.d.ts +1 -1
  117. package/dist/types/cross-project-policy/node.d.ts +3 -2
  118. package/dist/types/cross-project-policy/producer-runtime.d.ts +20 -0
  119. package/dist/types/effect-server/cross-project-policy.d.ts +5 -0
  120. package/dist/types/effect-server/entry.d.ts +3 -0
  121. package/dist/types/effect-server/error-response.d.ts +2 -0
  122. package/dist/types/effect-server/index.d.ts +4 -0
  123. package/dist/types/effect-source-loader/index.d.ts +5 -2
  124. package/dist/types/effect-source-loader/operation-contracts.d.ts +8 -0
  125. package/dist/types/effect-source-loader/paths.d.ts +23 -0
  126. package/dist/types/effect-source-loader/rspack-loader.d.ts +9 -0
  127. package/dist/types/effect-source-loader/worker-runtime-source.d.ts +4 -0
  128. package/dist/types/effect-source-loader/worker-runtime-wrapper.d.ts +4 -22
  129. package/dist/types/hono/node.d.ts +4 -0
  130. package/package.json +64 -36
  131. package/src/backend-federation/edge-runtime.ts +2 -13
  132. package/src/backend-federation/edge.ts +16 -21
  133. package/src/backend-federation/identity.ts +39 -65
  134. package/src/backend-federation/index.ts +1 -1
  135. package/src/backend-federation/integrity-plugin.ts +157 -0
  136. package/src/backend-federation/load.ts +7 -35
  137. package/src/backend-federation/node-shared.ts +76 -0
  138. package/src/backend-federation/node.ts +7 -14
  139. package/src/backend-federation/plugin.ts +73 -25
  140. package/src/backend-federation/runtime.ts +16 -90
  141. package/src/backend-federation/types.ts +3 -18
  142. package/src/backend-federation/validate-loaded.ts +2 -7
  143. package/src/backend-federation-manifest/load.ts +93 -38
  144. package/src/backend-federation-manifest/metadata.ts +1 -7
  145. package/src/backend-federation-manifest/node.ts +3 -2
  146. package/src/backend-federation-manifest/remote.ts +1 -7
  147. package/src/backend-federation-manifest/types.ts +2 -0
  148. package/src/backend-federation-manifest/validation.ts +29 -39
  149. package/src/cross-project-policy/evaluation.ts +1 -1
  150. package/src/cross-project-policy/node.ts +10 -41
  151. package/src/cross-project-policy/producer-runtime.ts +43 -0
  152. package/src/{effect-adapter → effect-server}/cross-project-policy.ts +8 -2
  153. package/src/effect-server/entry.ts +18 -0
  154. package/src/{effect-adapter → effect-server}/error-response.ts +1 -1
  155. package/src/effect-server/index.ts +242 -0
  156. package/src/{client-generator → effect-source-loader}/built-entry.ts +12 -12
  157. package/src/effect-source-loader/http-api-runtime.ts +39 -0
  158. package/src/effect-source-loader/index.ts +8 -5
  159. package/src/effect-source-loader/loader.ts +47 -52
  160. package/src/effect-source-loader/operation-contracts.ts +38 -0
  161. package/src/effect-source-loader/paths.ts +74 -0
  162. package/src/effect-source-loader/rspack-loader.ts +71 -0
  163. package/src/effect-source-loader/worker-runtime-source.ts +34 -0
  164. package/src/effect-source-loader/worker-runtime-wrapper.ts +5 -75
  165. package/src/hono/cross-project-policy.ts +2 -1
  166. package/src/hono/node.ts +24 -0
  167. package/dist/cjs/backend-federation/entry.js +0 -94
  168. package/dist/cjs/client-generator/generator.js +0 -73
  169. package/dist/cjs/client-generator/index.js +0 -54
  170. package/dist/cjs/client-generator/rendering.js +0 -253
  171. package/dist/cjs/client-generator/types.js +0 -18
  172. package/dist/cjs/effect-adapter/entry.js +0 -98
  173. package/dist/cjs/effect-adapter/index.js +0 -187
  174. package/dist/esm/backend-federation/entry.mjs +0 -56
  175. package/dist/esm/backend-federation/legacy-warning.mjs +0 -2
  176. package/dist/esm/client-generator/generator.mjs +0 -32
  177. package/dist/esm/client-generator/index.mjs +0 -3
  178. package/dist/esm/client-generator/paths.mjs +0 -24
  179. package/dist/esm/client-generator/rendering.mjs +0 -209
  180. package/dist/esm/client-generator/runtime.mjs +0 -27
  181. package/dist/esm/client-generator/types.mjs +0 -0
  182. package/dist/esm/effect-adapter/entry.mjs +0 -50
  183. package/dist/esm/effect-adapter/index.mjs +0 -139
  184. package/dist/esm-node/backend-federation/entry.mjs +0 -57
  185. package/dist/esm-node/backend-federation/legacy-warning.mjs +0 -3
  186. package/dist/esm-node/client-generator/generator.mjs +0 -33
  187. package/dist/esm-node/client-generator/index.mjs +0 -4
  188. package/dist/esm-node/client-generator/paths.mjs +0 -25
  189. package/dist/esm-node/client-generator/rendering.mjs +0 -210
  190. package/dist/esm-node/client-generator/runtime.mjs +0 -29
  191. package/dist/esm-node/client-generator/types.mjs +0 -1
  192. package/dist/esm-node/effect-adapter/entry.mjs +0 -51
  193. package/dist/esm-node/effect-adapter/index.mjs +0 -140
  194. package/dist/types/backend-federation/entry.d.ts +0 -2
  195. package/dist/types/backend-federation/legacy-warning.d.ts +0 -1
  196. package/dist/types/client-generator/generator.d.ts +0 -3
  197. package/dist/types/client-generator/index.d.ts +0 -4
  198. package/dist/types/client-generator/paths.d.ts +0 -5
  199. package/dist/types/client-generator/rendering.d.ts +0 -24
  200. package/dist/types/client-generator/types.d.ts +0 -33
  201. package/dist/types/effect-adapter/cross-project-policy.d.ts +0 -4
  202. package/dist/types/effect-adapter/entry.d.ts +0 -2
  203. package/dist/types/effect-adapter/error-response.d.ts +0 -2
  204. package/dist/types/effect-adapter/index.d.ts +0 -19
  205. package/src/backend-federation/entry.ts +0 -125
  206. package/src/backend-federation/legacy-warning.ts +0 -2
  207. package/src/client-generator/generator.ts +0 -52
  208. package/src/client-generator/index.ts +0 -10
  209. package/src/client-generator/paths.ts +0 -40
  210. package/src/client-generator/rendering.ts +0 -307
  211. package/src/client-generator/runtime.ts +0 -69
  212. package/src/client-generator/types.ts +0 -35
  213. package/src/effect-adapter/entry.ts +0 -95
  214. package/src/effect-adapter/index.ts +0 -246
  215. /package/dist/types/{client-generator → effect-source-loader}/built-entry.d.ts +0 -0
  216. /package/dist/types/{client-generator/runtime.d.ts → effect-source-loader/http-api-runtime.d.ts} +0 -0
@@ -0,0 +1,199 @@
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
+ default: ()=>effect_server
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
+ require("@modern-js/server-runtime-extensions/server-config");
45
+ const effect_namespaceObject = require("@modern-js/bff-effect/effect");
46
+ const node_namespaceObject = require("@modern-js/server-runtime-extensions/bff-policy/node");
47
+ const runtime_lifecycle_namespaceObject = require("@modern-js/server-runtime-extensions/runtime-lifecycle");
48
+ const utils_namespaceObject = require("@modern-js/utils");
49
+ const evaluation_js_namespaceObject = require("../cross-project-policy/evaluation.js");
50
+ const loader_js_namespaceObject = require("../effect-source-loader/loader.js");
51
+ const external_cross_project_policy_js_namespaceObject = require("./cross-project-policy.js");
52
+ const external_entry_js_namespaceObject = require("./entry.js");
53
+ const external_error_response_js_namespaceObject = require("./error-response.js");
54
+ const EFFECT_MIDDLEWARE_BEFORE = [
55
+ 'custom-server-hook',
56
+ 'custom-server-middleware',
57
+ 'render'
58
+ ];
59
+ const effect_server = ()=>({
60
+ name: '@modern-js/plugin-bff-extensions/effect-server',
61
+ setup (api) {
62
+ const runtimeFramework = api.getServerContext().bffRuntimeFramework;
63
+ if ('effect' !== runtimeFramework) throw new Error(`Effect BFF server plugin requires Effect; received "${runtimeFramework}".`);
64
+ let handler = null;
65
+ let unregisterRuntimeDisposer;
66
+ let prefix = '/api';
67
+ let prefixes = [
68
+ '/api'
69
+ ];
70
+ let matchingPrefixes = [
71
+ '/api'
72
+ ];
73
+ let retired = false;
74
+ const dispose = async ()=>{
75
+ retired = true;
76
+ unregisterRuntimeDisposer?.();
77
+ unregisterRuntimeDisposer = void 0;
78
+ const previous = handler;
79
+ handler = null;
80
+ await previous?.dispose();
81
+ };
82
+ const loadHandler = async ()=>{
83
+ const entryFile = (0, external_entry_js_namespaceObject.resolveEffectServerEntryFile)(api);
84
+ if (!entryFile || !await utils_namespaceObject.fs.pathExists(entryFile)) {
85
+ handler = null;
86
+ return;
87
+ }
88
+ const { appDirectory } = api.getServerContext();
89
+ let mod;
90
+ try {
91
+ mod = await ((0, utils_namespaceObject.isProd)() ? (0, loader_js_namespaceObject.loadEffectBuiltModule)(entryFile) : (0, loader_js_namespaceObject.loadEffectSourceModule)({
92
+ resourcePath: entryFile,
93
+ appDir: appDirectory || external_node_path_default().dirname(entryFile)
94
+ }));
95
+ } catch (error) {
96
+ utils_namespaceObject.logger.error(`[BFF][Effect] Failed to load Effect entry: ${entryFile}\n${String(error)}`);
97
+ throw error;
98
+ }
99
+ const producer = (0, node_namespaceObject.resolveOperationProducer)({
100
+ directories: [
101
+ external_node_path_default().dirname(entryFile),
102
+ appDirectory
103
+ ],
104
+ requestId: api.getServerConfig()?.bff?.requestId
105
+ });
106
+ const crossProjectPolicies = new Map(await Promise.all(prefixes.map(async (prefix)=>[
107
+ prefix,
108
+ await (0, external_cross_project_policy_js_namespaceObject.resolveEffectServerCrossProjectPolicy)(api, prefix, mod, producer)
109
+ ])));
110
+ const effectConfig = api.getServerConfig()?.bff?.effect;
111
+ const loaded = await (0, effect_namespaceObject.resolveEffectBffModuleHandler)(mod, {
112
+ openapi: effectConfig?.openapi,
113
+ dataPlatform: effectConfig?.dataPlatform,
114
+ validateRequest: (request)=>{
115
+ const { path: mountedPathname } = (0, effect_namespaceObject.useEffectContext)();
116
+ const prefix = matchingPrefixes.find((item)=>'/' === item || mountedPathname === item || mountedPathname.startsWith(`${item}/`));
117
+ if (!prefix) return null;
118
+ const requestUrl = new URL(request.url);
119
+ if ('/' !== prefix) requestUrl.pathname = '/' === requestUrl.pathname ? prefix : `${prefix}${requestUrl.pathname}`;
120
+ return (0, evaluation_js_namespaceObject.checkCrossProjectPolicyForRequest)(new Request(requestUrl, request), crossProjectPolicies.get(prefix));
121
+ },
122
+ onWarning: (message)=>utils_namespaceObject.logger.warn(message)
123
+ });
124
+ if (!loaded) {
125
+ const error = new Error(`[BFF][Effect] Invalid Effect entry module: ${entryFile}. Export defineEffectBff(...) or a { api, layer } HttpApi module.`);
126
+ utils_namespaceObject.logger.warn(error.message);
127
+ throw error;
128
+ }
129
+ const candidateOwner = {};
130
+ if (loaded.dispose) (0, runtime_lifecycle_namespaceObject.registerServerRuntimeDisposer)(candidateOwner, loaded.dispose);
131
+ const candidate = (0, runtime_lifecycle_namespaceObject.createDisposableServerRuntimeHandle)(candidateOwner, loaded.handler);
132
+ if (retired) {
133
+ await candidate.dispose();
134
+ throw new Error('Cannot initialize a retired Effect server.');
135
+ }
136
+ handler = candidate;
137
+ };
138
+ api.onPrepare(async ()=>{
139
+ const { middlewares: globalMiddlewares } = api.getServerContext();
140
+ const configuredPrefix = api.getServerConfig()?.bff?.prefix;
141
+ const enableHandleWeb = api.getServerConfig()?.bff?.enableHandleWeb;
142
+ const configuredPrefixes = Array.isArray(configuredPrefix) ? configuredPrefix.filter(Boolean) : [
143
+ configuredPrefix || '/api'
144
+ ];
145
+ prefixes = [
146
+ ...new Set(configuredPrefixes.length > 0 ? configuredPrefixes : [
147
+ '/api'
148
+ ])
149
+ ];
150
+ matchingPrefixes = [
151
+ ...prefixes
152
+ ].sort((left, right)=>right.length - left.length);
153
+ prefix = prefixes[0] || '/api';
154
+ const { serverBase } = api.getServerContext();
155
+ if (serverBase) unregisterRuntimeDisposer = (0, runtime_lifecycle_namespaceObject.registerServerRuntimeDisposer)(serverBase, dispose);
156
+ try {
157
+ await loadHandler();
158
+ } catch (error) {
159
+ await dispose();
160
+ throw error;
161
+ }
162
+ const middlewarePrefixes = enableHandleWeb ? [
163
+ prefix
164
+ ] : matchingPrefixes;
165
+ const middlewares = middlewarePrefixes.map((middlewarePrefix)=>({
166
+ name: 'effect-api-handler',
167
+ path: enableHandleWeb ? '*' : `${middlewarePrefix}/*`,
168
+ method: 'all',
169
+ order: 'post',
170
+ before: EFFECT_MIDDLEWARE_BEFORE,
171
+ handler: async (context, next)=>{
172
+ const activeHandler = handler;
173
+ if (!activeHandler) {
174
+ if (enableHandleWeb) return void await next();
175
+ return (0, external_error_response_js_namespaceObject.createEffectServerRuntimeErrorResponse)(api, new Error('[BFF][Effect] Missing Effect entry. Define api/index or configure bff.effect.entry.'), context);
176
+ }
177
+ const mountedPrefix = enableHandleWeb ? matchingPrefixes.find((item)=>'/' === item || context.req.path === item || context.req.path.startsWith(`${item}/`)) || prefix : middlewarePrefix;
178
+ const response = await (0, effect_namespaceObject.dispatchEffectBffRequest)(activeHandler, context.req.raw, {
179
+ prefix: mountedPrefix,
180
+ env: context.env,
181
+ path: context.req.path,
182
+ method: context.req.method,
183
+ onError: (error)=>(0, external_error_response_js_namespaceObject.createEffectServerRuntimeErrorResponse)(api, error, context)
184
+ });
185
+ if (404 === response.status && enableHandleWeb) return void await next();
186
+ return new Response(response.body, response);
187
+ }
188
+ }));
189
+ globalMiddlewares.push(...middlewares);
190
+ });
191
+ }
192
+ });
193
+ exports["default"] = __webpack_exports__["default"];
194
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
195
+ "default"
196
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
197
+ Object.defineProperty(exports, '__esModule', {
198
+ value: true
199
+ });
@@ -34,12 +34,11 @@ __webpack_require__.d(__webpack_exports__, {
34
34
  });
35
35
  const utils_namespaceObject = require("@modern-js/utils");
36
36
  const external_paths_js_namespaceObject = require("./paths.js");
37
- const BUILT_ENTRY_EXT = /\.(?:[cm]?ts|tsx|jsx)$/u;
38
37
  function resolveBuiltEffectEntry(appDirectory, distDirectory, sourceEntry) {
39
38
  if (void 0 === sourceEntry || 0 === sourceEntry.length) return;
40
- const relativeEntry = utils_namespaceObject.upath.relative(appDirectory, sourceEntry);
41
- if ('..' === relativeEntry || relativeEntry.startsWith(`..${utils_namespaceObject.upath.sep}`)) throw new Error(`Effect BFF entry must be inside the application directory: ${sourceEntry}`);
42
- const builtEntry = utils_namespaceObject.upath.resolve(distDirectory, relativeEntry).replace(BUILT_ENTRY_EXT, '.js');
39
+ const relativeEntry = (0, external_paths_js_namespaceObject.relativeEffectAppPath)(appDirectory, sourceEntry);
40
+ if (void 0 === relativeEntry) throw new Error(`Effect BFF entry must be inside the application directory: ${sourceEntry}`);
41
+ const builtEntry = (0, external_paths_js_namespaceObject.emittedEffectEntry)(utils_namespaceObject.upath.resolve(distDirectory, relativeEntry));
43
42
  return utils_namespaceObject.fs.existsSync(builtEntry) ? builtEntry : void 0;
44
43
  }
45
44
  async function bundleBuiltEffectEntryForNode(options) {
@@ -51,7 +50,7 @@ async function bundleBuiltEffectEntryForNode(options) {
51
50
  });
52
51
  const builtEntry = resolveBuiltEffectEntry(appDir, distDir, sourceEntry);
53
52
  if (void 0 === builtEntry || 0 === builtEntry.length) throw new Error(`Effect BFF entry was not emitted into ${distDir}: ${sourceEntry ?? utils_namespaceObject.upath.resolve(apiDir, 'index')}`);
54
- const { bundleEffectEntryForNode } = await import("../effect-source-loader/loader.js");
53
+ const { bundleEffectEntryForNode } = await import("./loader.js");
55
54
  return bundleEffectEntryForNode({
56
55
  appDir,
57
56
  entryPath: builtEntry,
@@ -65,7 +64,7 @@ function resolveEffectEntryPaths(options) {
65
64
  apiDir,
66
65
  effectEntry
67
66
  });
68
- const relativeEffectEntry = void 0 !== sourceEffectEntry && sourceEffectEntry.length > 0 ? utils_namespaceObject.upath.relative(appDir, sourceEffectEntry).replace(BUILT_ENTRY_EXT, '.js') : '';
67
+ const relativeEffectEntry = void 0 !== sourceEffectEntry && sourceEffectEntry.length > 0 ? (0, external_paths_js_namespaceObject.emittedEffectEntry)(utils_namespaceObject.upath.relative(appDir, sourceEffectEntry)) : '';
69
68
  return {
70
69
  sourceEffectEntry,
71
70
  relativeEffectEntry
@@ -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 utils_namespaceObject = require("@modern-js/utils");
36
- const loader_js_namespaceObject = require("../effect-source-loader/loader.js");
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
- if (void 0 === httpApiRuntimePromise) httpApiRuntimePromise = (0, utils_namespaceObject.compatibleRequire)('effect/unstable/httpapi', false).catch((error)=>{
46
- const message = error instanceof Error ? error.message : String(error);
47
- if (!message.includes("Cannot find module 'effect/unstable/httpapi'")) throw error;
48
- const effectPackageJson = require.resolve('effect/package.json');
49
- const effectHttpApiRuntimePath = utils_namespaceObject.upath.join(utils_namespaceObject.upath.dirname(effectPackageJson), 'dist', 'unstable', 'httpapi', 'index.js');
50
- return (0, utils_namespaceObject.compatibleRequire)(effectHttpApiRuntimePath, false);
51
- }).then((mod)=>{
52
- if (isRecord(mod) && isHttpApiRuntime(mod.HttpApi)) return mod.HttpApi;
53
- throw new Error('[BFF][Effect] Unable to resolve HttpApi runtime from effect/unstable/httpapi.');
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, loader_js_namespaceObject.loadEffectSourceModule)(options).then((mod)=>(0, effect_namespaceObject.extractHttpApiFromModule)(mod, httpApiRuntime.isHttpApi)));
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
- generateEffectClientCode: ()=>external_worker_runtime_wrapper_js_namespaceObject.generateEffectClientCode,
33
+ bundleEffectWorkerRuntimeSource: ()=>external_worker_runtime_source_js_namespaceObject.bundleEffectWorkerRuntimeSource,
33
34
  generateEffectWorkerRuntimeWrapper: ()=>external_worker_runtime_wrapper_js_namespaceObject.generateEffectWorkerRuntimeWrapper,
34
- resolveEffectEntryFile: ()=>paths_js_namespaceObject.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 paths_js_namespaceObject = require("../client-generator/paths.js");
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.generateEffectClientCode = __webpack_exports__.generateEffectClientCode;
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
- "generateEffectClientCode",
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(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,
@@ -123,6 +125,7 @@ const nodeBuiltins = new Set([
123
125
  ...external_node_module_namespaceObject.builtinModules.map((name)=>`node:${name}`)
124
126
  ]);
125
127
  const dependencyResolutionMarker = 'modern-js-effect-dependency-resolution';
128
+ const BFF_RUNTIME_PACKAGE = /^@modern-js\/(?:bff-effect|plugin-bff)(?:\/|$)/;
126
129
  async function isEsmOnlyFile(filename) {
127
130
  const extension = external_node_path_default().extname(filename).toLowerCase();
128
131
  if ('.mjs' === extension || '.mts' === extension) return true;
@@ -145,13 +148,16 @@ function isBareSpecifier(specifier) {
145
148
  return !specifier.startsWith('.') && !specifier.startsWith('/') && !external_node_path_default().isAbsolute(specifier);
146
149
  }
147
150
  function externalizeInstalledDependencies(options) {
148
- const runtimeRequire = (0, external_node_module_namespaceObject.createRequire)(external_node_path_default().join(options.runtimeResolveDir, '__modern_effect_entry.cjs'));
149
151
  return {
150
152
  name: 'modern-js-effect-installed-dependencies',
151
153
  setup (buildApi) {
152
154
  buildApi.onResolve({
153
155
  filter: /.*/
154
156
  }, async (args)=>{
157
+ if (BFF_RUNTIME_PACKAGE.test(args.path)) return {
158
+ external: true,
159
+ path: args.path
160
+ };
155
161
  if (!isBareSpecifier(args.path) || nodeBuiltins.has(args.path) || args.pluginData?.[dependencyResolutionMarker] === true) return nodeBuiltins.has(args.path) ? {
156
162
  external: true,
157
163
  path: args.path
@@ -175,7 +181,8 @@ function externalizeInstalledDependencies(options) {
175
181
  path: args.path
176
182
  };
177
183
  const realPath = await external_node_fs_default().promises.realpath(resolution.path).catch(()=>resolution.path);
178
- if (realPath.includes(`${external_node_path_default().sep}node_modules${external_node_path_default().sep}`)) {
184
+ const loader = SOURCE_LOADERS.get(external_node_path_default().extname(realPath).toLowerCase());
185
+ if (realPath.includes(`${external_node_path_default().sep}node_modules${external_node_path_default().sep}`) && 'ts' !== loader && 'tsx' !== loader && 'jsx' !== loader) {
179
186
  const runtimeResolution = await buildApi.resolve(args.path, {
180
187
  importer: '',
181
188
  kind: args.kind,
@@ -185,28 +192,10 @@ function externalizeInstalledDependencies(options) {
185
192
  },
186
193
  resolveDir: options.runtimeResolveDir
187
194
  });
188
- if (0 === runtimeResolution.errors.length && runtimeResolution.path) {
189
- if ('cjs' === options.format) {
190
- let requiredPath;
191
- try {
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
- }
195
+ if (0 === runtimeResolution.errors.length && runtimeResolution.path) return {
196
+ external: true,
197
+ path: args.path
198
+ };
210
199
  }
211
200
  return {
212
201
  namespace: resolution.namespace,
@@ -234,7 +223,6 @@ async function bundleEffectEntryForNode(options) {
234
223
  platform: 'node',
235
224
  plugins: [
236
225
  externalizeInstalledDependencies({
237
- format: options.format,
238
226
  runtimeResolveDir: options.appDir
239
227
  }),
240
228
  preserveSourceModuleSemantics()
@@ -308,7 +296,6 @@ async function loadEffectSourceModule(options) {
308
296
  platform: 'node',
309
297
  plugins: [
310
298
  externalizeInstalledDependencies({
311
- format: 'esm',
312
299
  runtimeResolveDir: appDir
313
300
  }),
314
301
  preserveSourceModuleSemantics()
@@ -0,0 +1,60 @@
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
+ async function resolveEffectOperationContracts(options) {
38
+ const api = await (0, external_http_api_runtime_js_namespaceObject.loadEffectApi)(options);
39
+ if (null === api) return null;
40
+ const runtime = await (0, external_http_api_runtime_js_namespaceObject.getHttpApiRuntime)();
41
+ const endpoints = (0, effect_namespaceObject.collectEffectEndpoints)(runtime.reflect, api, options.prefix);
42
+ return (0, node_namespaceObject.buildOperationContractMap)({
43
+ handlers: (0, effect_namespaceObject.toOperationContractSources)(endpoints),
44
+ ...(0, node_namespaceObject.resolveOperationProducer)({
45
+ directories: [
46
+ utils_namespaceObject.upath.dirname(options.resourcePath),
47
+ options.appDir
48
+ ],
49
+ requestId: options.requestId,
50
+ onDependency: options.onDependency
51
+ })
52
+ });
53
+ }
54
+ exports.resolveEffectOperationContracts = __webpack_exports__.resolveEffectOperationContracts;
55
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
56
+ "resolveEffectOperationContracts"
57
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
58
+ Object.defineProperty(exports, '__esModule', {
59
+ value: true
60
+ });
@@ -0,0 +1,90 @@
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
+ emittedEffectEntry: ()=>emittedEffectEntry,
32
+ relativeEffectAppPath: ()=>relativeEffectAppPath,
33
+ resolveEffectEntry: ()=>resolveEffectEntry,
34
+ resolveEffectEntryFile: ()=>resolveEffectEntryFile
35
+ });
36
+ const utils_namespaceObject = require("@modern-js/utils");
37
+ const JS_OR_TS_EXTS = [
38
+ '.js',
39
+ '.jsx',
40
+ '.ts',
41
+ '.tsx',
42
+ '.mjs',
43
+ '.mts',
44
+ '.cjs',
45
+ '.cts'
46
+ ];
47
+ const emittedEffectEntry = (entry)=>entry.replace(/\.(?:[cm]?ts|tsx|jsx)$/u, '.js');
48
+ function relativeEffectAppPath(appDir, entry) {
49
+ const relative = utils_namespaceObject.upath.relative(appDir, entry);
50
+ return '..' === relative || relative.startsWith('../') || relative.split('/').includes('node_modules') ? void 0 : relative;
51
+ }
52
+ function existingEntry(entry) {
53
+ return utils_namespaceObject.upath.extname(entry) ? utils_namespaceObject.fs.existsSync(entry) ? entry : void 0 : (0, utils_namespaceObject.findExists)(JS_OR_TS_EXTS.map((ext)=>`${entry}${ext}`)) || void 0;
54
+ }
55
+ function resolveEffectEntry(options) {
56
+ const { appDir, apiDir, effectEntry, distDir } = options;
57
+ const entry = utils_namespaceObject.upath.resolve(appDir, effectEntry || utils_namespaceObject.upath.join(apiDir, 'index'));
58
+ if (distDir && void 0 !== relativeEffectAppPath(distDir, entry)) return {
59
+ kind: 'built-output',
60
+ path: existingEntry(emittedEffectEntry(entry))
61
+ };
62
+ const relative = relativeEffectAppPath(appDir, entry);
63
+ if (void 0 === relative) return {
64
+ kind: 'external-sdk',
65
+ path: existingEntry(entry)
66
+ };
67
+ return distDir ? {
68
+ kind: 'built-output',
69
+ path: existingEntry(emittedEffectEntry(utils_namespaceObject.upath.resolve(distDir, relative)))
70
+ } : {
71
+ kind: 'app-source',
72
+ path: existingEntry(entry)
73
+ };
74
+ }
75
+ function resolveEffectEntryFile(options) {
76
+ return resolveEffectEntry(options).path;
77
+ }
78
+ exports.emittedEffectEntry = __webpack_exports__.emittedEffectEntry;
79
+ exports.relativeEffectAppPath = __webpack_exports__.relativeEffectAppPath;
80
+ exports.resolveEffectEntry = __webpack_exports__.resolveEffectEntry;
81
+ exports.resolveEffectEntryFile = __webpack_exports__.resolveEffectEntryFile;
82
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
83
+ "emittedEffectEntry",
84
+ "relativeEffectAppPath",
85
+ "resolveEffectEntry",
86
+ "resolveEffectEntryFile"
87
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
88
+ Object.defineProperty(exports, '__esModule', {
89
+ value: true
90
+ });
@@ -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
+ });