@bleedingdev/modern-js-plugin-bff 3.2.0-ultramodern.103 → 3.2.0-ultramodern.104

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.
@@ -3,12 +3,12 @@ var __webpack_modules__ = {
3
3
  "../data-platform" (module) {
4
4
  module.exports = require("../data-platform/index.js");
5
5
  },
6
- "@effect/opentelemetry" (module) {
7
- module.exports = require("@effect/opentelemetry");
8
- },
9
6
  "effect/Config" (module) {
10
7
  module.exports = require("effect/Config");
11
8
  },
9
+ "effect/Context" (module) {
10
+ module.exports = require("effect/Context");
11
+ },
12
12
  "effect/Effect" (module) {
13
13
  module.exports = require("effect/Effect");
14
14
  },
@@ -78,18 +78,18 @@ function __webpack_require__(moduleId) {
78
78
  var __webpack_exports__ = {};
79
79
  (()=>{
80
80
  __webpack_require__.r(__webpack_exports__);
81
- var effect_Layer__rspack_import_0 = __webpack_require__("effect/Layer");
82
- var effect_unstable_http__rspack_import_1 = __webpack_require__("effect/unstable/http");
83
- var effect_unstable_httpapi__rspack_import_2 = __webpack_require__("effect/unstable/httpapi");
84
- var effect_unstable_rpc__rspack_import_3 = __webpack_require__("effect/unstable/rpc");
85
- var _data_platform__rspack_import_4 = __webpack_require__("../data-platform");
86
- var _effect_opentelemetry__rspack_import_5 = __webpack_require__("@effect/opentelemetry");
81
+ var effect_Context__rspack_import_0 = __webpack_require__("effect/Context");
82
+ var effect_Layer__rspack_import_1 = __webpack_require__("effect/Layer");
83
+ var effect_unstable_http__rspack_import_2 = __webpack_require__("effect/unstable/http");
84
+ var effect_unstable_httpapi__rspack_import_3 = __webpack_require__("effect/unstable/httpapi");
85
+ var effect_unstable_rpc__rspack_import_4 = __webpack_require__("effect/unstable/rpc");
86
+ var _data_platform__rspack_import_5 = __webpack_require__("../data-platform");
87
87
  var effect_Config__rspack_import_6 = __webpack_require__("effect/Config");
88
88
  var effect_Effect__rspack_import_7 = __webpack_require__("effect/Effect");
89
89
  var effect_Option__rspack_import_8 = __webpack_require__("effect/Option");
90
90
  var effect_Schema__rspack_import_9 = __webpack_require__("effect/Schema");
91
91
  var __rspack_reexport = {};
92
- for(const __rspack_import_key in effect_unstable_http__rspack_import_1)if ([
92
+ for(const __rspack_import_key in effect_unstable_http__rspack_import_2)if ([
93
93
  "Config",
94
94
  "Layer",
95
95
  "Schema",
@@ -100,12 +100,11 @@ var __webpack_exports__ = {};
100
100
  "Effect",
101
101
  "defineEffectRpcBff",
102
102
  "createHttpApiHandler",
103
- "OpenTelemetry",
104
103
  "Option"
105
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_http__rspack_import_1[__rspack_import_key];
104
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_http__rspack_import_2[__rspack_import_key];
106
105
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
107
106
  var __rspack_reexport = {};
108
- for(const __rspack_import_key in effect_unstable_httpapi__rspack_import_2)if ([
107
+ for(const __rspack_import_key in effect_unstable_httpapi__rspack_import_3)if ([
109
108
  "Config",
110
109
  "Layer",
111
110
  "Schema",
@@ -116,12 +115,11 @@ var __webpack_exports__ = {};
116
115
  "Effect",
117
116
  "defineEffectRpcBff",
118
117
  "createHttpApiHandler",
119
- "OpenTelemetry",
120
118
  "Option"
121
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_httpapi__rspack_import_2[__rspack_import_key];
119
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_httpapi__rspack_import_3[__rspack_import_key];
122
120
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
123
121
  var __rspack_reexport = {};
124
- for(const __rspack_import_key in effect_unstable_rpc__rspack_import_3)if ([
122
+ for(const __rspack_import_key in effect_unstable_rpc__rspack_import_4)if ([
125
123
  "Config",
126
124
  "Layer",
127
125
  "Schema",
@@ -132,10 +130,10 @@ var __webpack_exports__ = {};
132
130
  "Effect",
133
131
  "defineEffectRpcBff",
134
132
  "createHttpApiHandler",
135
- "OpenTelemetry",
136
133
  "Option"
137
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_rpc__rspack_import_3[__rspack_import_key];
134
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>effect_unstable_rpc__rspack_import_4[__rspack_import_key];
138
135
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
136
+ const emptyEffectServiceContext = effect_Context__rspack_import_0.empty();
139
137
  function normalizeOpenApiPath(pathname) {
140
138
  if (!pathname.startsWith('/')) return `/${pathname}`;
141
139
  return pathname;
@@ -153,7 +151,7 @@ var __webpack_exports__ = {};
153
151
  return pathname;
154
152
  }
155
153
  function normalizeBatchPath(pathname) {
156
- if (!pathname || '/' === pathname) return _data_platform__rspack_import_4.DEFAULT_DATA_BATCH_ENDPOINT;
154
+ if (!pathname || '/' === pathname) return _data_platform__rspack_import_5.DEFAULT_DATA_BATCH_ENDPOINT;
157
155
  if (!pathname.startsWith('/')) return `/${pathname}`;
158
156
  return pathname;
159
157
  }
@@ -290,33 +288,33 @@ var __webpack_exports__ = {};
290
288
  function getRpcSerializationLayer(serialization) {
291
289
  switch(serialization){
292
290
  case 'ndjson':
293
- return effect_unstable_rpc__rspack_import_3.RpcSerialization.layerNdjson;
291
+ return effect_unstable_rpc__rspack_import_4.RpcSerialization.layerNdjson;
294
292
  case 'jsonRpc':
295
- return effect_unstable_rpc__rspack_import_3.RpcSerialization.layerJsonRpc();
293
+ return effect_unstable_rpc__rspack_import_4.RpcSerialization.layerJsonRpc();
296
294
  case 'ndJsonRpc':
297
- return effect_unstable_rpc__rspack_import_3.RpcSerialization.layerNdJsonRpc();
295
+ return effect_unstable_rpc__rspack_import_4.RpcSerialization.layerNdJsonRpc();
298
296
  case 'msgPack':
299
- return effect_unstable_rpc__rspack_import_3.RpcSerialization.layerMsgPack;
297
+ return effect_unstable_rpc__rspack_import_4.RpcSerialization.layerMsgPack;
300
298
  default:
301
- return effect_unstable_rpc__rspack_import_3.RpcSerialization.layerJsonRpc();
299
+ return effect_unstable_rpc__rspack_import_4.RpcSerialization.layerJsonRpc();
302
300
  }
303
301
  }
304
302
  function createRpcApiHandler(options) {
305
303
  const rpcPath = normalizeRpcPath(options.path);
306
- const rpcLayer = effect_Layer__rspack_import_0.provide(effect_unstable_rpc__rspack_import_3.RpcServer.layerHttp({
304
+ const rpcLayer = effect_Layer__rspack_import_1.provide(effect_unstable_rpc__rspack_import_4.RpcServer.layerHttp({
307
305
  group: options.group,
308
306
  path: rpcPath,
309
307
  protocol: 'http',
310
308
  disableTracing: options.disableTracing,
311
309
  spanPrefix: options.spanPrefix,
312
310
  spanAttributes: options.spanAttributes
313
- }), effect_Layer__rspack_import_0.mergeAll(options.layer, getRpcSerializationLayer(options.serialization)));
314
- return effect_unstable_http__rspack_import_1.HttpRouter.toWebHandler(rpcLayer);
311
+ }), effect_Layer__rspack_import_1.mergeAll(options.layer, getRpcSerializationLayer(options.serialization)));
312
+ return effect_unstable_http__rspack_import_2.HttpRouter.toWebHandler(rpcLayer);
315
313
  }
316
314
  function createOpenApiLayer(api, openapi) {
317
315
  const openApiOptions = getOpenApiOptions(openapi);
318
316
  if (!openApiOptions) return null;
319
- return effect_unstable_http__rspack_import_1.HttpRouter.add('GET', openApiOptions.path, effect_unstable_http__rspack_import_1.HttpServerResponse.jsonUnsafe(effect_unstable_httpapi__rspack_import_2.OpenApi.fromApi(api)));
317
+ return effect_unstable_http__rspack_import_2.HttpRouter.add('GET', openApiOptions.path, effect_unstable_http__rspack_import_2.HttpServerResponse.jsonUnsafe(effect_unstable_httpapi__rspack_import_3.OpenApi.fromApi(api)));
320
318
  }
321
319
  function createInvalidEnvelopeResponse(message, errors) {
322
320
  return new Response(JSON.stringify({
@@ -334,15 +332,15 @@ var __webpack_exports__ = {};
334
332
  function validateDataPlatformRequestEnvelope(request, options) {
335
333
  const isEnabled = options?.enabled ?? true;
336
334
  if (!isEnabled) return null;
337
- const envelopeHeader = options?.envelopeHeader || _data_platform__rspack_import_4.DEFAULT_DATA_ENVELOPE_HEADER;
335
+ const envelopeHeader = options?.envelopeHeader || _data_platform__rspack_import_5.DEFAULT_DATA_ENVELOPE_HEADER;
338
336
  const encodedEnvelope = request.headers.get(envelopeHeader);
339
337
  if (!encodedEnvelope) {
340
338
  if (options?.requireEnvelope) return createInvalidEnvelopeResponse(`Missing required data envelope header: ${envelopeHeader}`);
341
339
  return null;
342
340
  }
343
- const envelope = (0, _data_platform__rspack_import_4.decodeRequestEnvelopeHeader)(encodedEnvelope);
341
+ const envelope = (0, _data_platform__rspack_import_5.decodeRequestEnvelopeHeader)(encodedEnvelope);
344
342
  if (!envelope) return createInvalidEnvelopeResponse(`Invalid data envelope header format: ${envelopeHeader}`);
345
- const validation = (0, _data_platform__rspack_import_4.validateRequestEnvelope)(envelope, {
343
+ const validation = (0, _data_platform__rspack_import_5.validateRequestEnvelope)(envelope, {
346
344
  expectedProtocolVersion: 1,
347
345
  expectedNamespace: options?.expectedNamespace,
348
346
  expectedOrigin: options?.validateOrigin === false ? void 0 : getExpectedEnvelopeOrigin(request),
@@ -350,7 +348,7 @@ var __webpack_exports__ = {};
350
348
  });
351
349
  if (!validation.ok) return createInvalidEnvelopeResponse('Invalid data envelope', validation.errors);
352
350
  if (envelope.selectionPlan) {
353
- const selectionValidation = (0, _data_platform__rspack_import_4.validateSelectionPlan)(envelope.selectionPlan, {
351
+ const selectionValidation = (0, _data_platform__rspack_import_5.validateSelectionPlan)(envelope.selectionPlan, {
354
352
  maxDepth: options?.selection?.maxDepth,
355
353
  maxFields: options?.selection?.maxFields,
356
354
  allowedLeafPaths: options?.selection?.allowedLeafPaths
@@ -412,10 +410,10 @@ var __webpack_exports__ = {};
412
410
  };
413
411
  }
414
412
  function createHttpApiHandler(options) {
415
- const apiLayer = options.layer;
413
+ const apiLayer = options.layer.pipe(effect_Layer__rspack_import_1.provide(effect_unstable_http__rspack_import_2.HttpServer.layerServices));
416
414
  const openApiLayer = createOpenApiLayer(options.api, options.openapi);
417
- const mergedLayer = openApiLayer ? effect_Layer__rspack_import_0.mergeAll(apiLayer, openApiLayer) : apiLayer;
418
- const httpApiHandler = effect_unstable_http__rspack_import_1.HttpRouter.toWebHandler(mergedLayer);
415
+ const mergedLayer = openApiLayer ? effect_Layer__rspack_import_1.mergeAll(apiLayer, openApiLayer) : apiLayer;
416
+ const httpApiHandler = effect_unstable_http__rspack_import_2.HttpRouter.toWebHandler(mergedLayer);
419
417
  const dataPlatformBatchOptions = options.dataPlatform?.batch;
420
418
  const batchEnabled = dataPlatformBatchOptions?.enabled !== false;
421
419
  const batchPath = normalizeBatchPath(dataPlatformBatchOptions?.endpoint);
@@ -424,12 +422,12 @@ var __webpack_exports__ = {};
424
422
  const batchConcurrency = Math.max(1, dataPlatformBatchOptions?.maxConcurrency ?? 4);
425
423
  const batchItemTimeoutMs = Math.max(0, dataPlatformBatchOptions?.requestTimeoutMs ?? 10000);
426
424
  const batchAllowedMethods = normalizeBatchAllowedMethods(dataPlatformBatchOptions?.allowedMethods);
427
- const envelopeHeader = options.dataPlatform?.envelopeHeader || _data_platform__rspack_import_4.DEFAULT_DATA_ENVELOPE_HEADER;
425
+ const envelopeHeader = options.dataPlatform?.envelopeHeader || _data_platform__rspack_import_5.DEFAULT_DATA_ENVELOPE_HEADER;
428
426
  const normalizedEnvelopeHeader = envelopeHeader.toLowerCase();
429
427
  const withDataPlatformValidation = async (request, context)=>{
430
428
  const validationError = validateDataPlatformRequestEnvelope(request, options.dataPlatform);
431
429
  if (validationError) return validationError;
432
- return httpApiHandler.handler(request, context);
430
+ return httpApiHandler.handler(request, context ?? emptyEffectServiceContext);
433
431
  };
434
432
  const handleBatchRequest = async (request, context)=>{
435
433
  const mountedPrefix = getMountedPrefixFromContext(request, context);
@@ -472,7 +470,7 @@ var __webpack_exports__ = {};
472
470
  if (!normalizedHeaders.traceparent) {
473
471
  const encodedEnvelope = normalizedHeaders[normalizedEnvelopeHeader];
474
472
  if ('string' == typeof encodedEnvelope) {
475
- const envelope = (0, _data_platform__rspack_import_4.decodeRequestEnvelopeHeader)(encodedEnvelope);
473
+ const envelope = (0, _data_platform__rspack_import_5.decodeRequestEnvelopeHeader)(encodedEnvelope);
476
474
  if (envelope?.traceparent) normalizedHeaders.traceparent = envelope.traceparent;
477
475
  }
478
476
  }
@@ -528,7 +526,7 @@ var __webpack_exports__ = {};
528
526
  status: 200,
529
527
  headers: {
530
528
  'content-type': 'application/json; charset=utf-8',
531
- [_data_platform__rspack_import_4.DEFAULT_DATA_BATCH_HEADER]: '1',
529
+ [_data_platform__rspack_import_5.DEFAULT_DATA_BATCH_HEADER]: '1',
532
530
  'x-modernjs-data-batch-id': payload.batchId
533
531
  }
534
532
  });
@@ -548,7 +546,7 @@ var __webpack_exports__ = {};
548
546
  const rpcHandler = createRpcApiHandler(options.rpc);
549
547
  return {
550
548
  handler: async (request, context)=>{
551
- if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context);
549
+ if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context ?? emptyEffectServiceContext);
552
550
  return handleHttpApiRequest(request);
553
551
  },
554
552
  dispose: async ()=>{
@@ -562,10 +560,9 @@ var __webpack_exports__ = {};
562
560
  __webpack_require__.d(__webpack_exports__, {
563
561
  Config: ()=>effect_Config__rspack_import_6,
564
562
  Effect: ()=>effect_Effect__rspack_import_7,
565
- HttpApiBuilder: ()=>effect_unstable_httpapi__rspack_import_2.HttpApiBuilder,
566
- HttpTraceContext: ()=>effect_unstable_http__rspack_import_1.HttpTraceContext,
567
- Layer: ()=>effect_Layer__rspack_import_0,
568
- OpenTelemetry: ()=>_effect_opentelemetry__rspack_import_5,
563
+ HttpApiBuilder: ()=>effect_unstable_httpapi__rspack_import_3.HttpApiBuilder,
564
+ HttpTraceContext: ()=>effect_unstable_http__rspack_import_2.HttpTraceContext,
565
+ Layer: ()=>effect_Layer__rspack_import_1,
569
566
  Option: ()=>effect_Option__rspack_import_8,
570
567
  Schema: ()=>effect_Schema__rspack_import_9,
571
568
  createHttpApiHandler: ()=>createHttpApiHandler,
@@ -578,7 +575,6 @@ exports.Effect = __webpack_exports__.Effect;
578
575
  exports.HttpApiBuilder = __webpack_exports__.HttpApiBuilder;
579
576
  exports.HttpTraceContext = __webpack_exports__.HttpTraceContext;
580
577
  exports.Layer = __webpack_exports__.Layer;
581
- exports.OpenTelemetry = __webpack_exports__.OpenTelemetry;
582
578
  exports.Option = __webpack_exports__.Option;
583
579
  exports.Schema = __webpack_exports__.Schema;
584
580
  exports.createHttpApiHandler = __webpack_exports__.createHttpApiHandler;
@@ -590,7 +586,6 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
590
586
  "HttpApiBuilder",
591
587
  "HttpTraceContext",
592
588
  "Layer",
593
- "OpenTelemetry",
594
589
  "Option",
595
590
  "Schema",
596
591
  "createHttpApiHandler",
@@ -5,6 +5,9 @@ var __webpack_modules__ = {
5
5
  },
6
6
  "./handler" (module) {
7
7
  module.exports = require("./handler.js");
8
+ },
9
+ "@effect/opentelemetry" (module) {
10
+ module.exports = require("@effect/opentelemetry");
8
11
  }
9
12
  };
10
13
  var __webpack_module_cache__ = {};
@@ -54,26 +57,31 @@ function __webpack_require__(moduleId) {
54
57
  var __webpack_exports__ = {};
55
58
  (()=>{
56
59
  __webpack_require__.r(__webpack_exports__);
57
- var _context__rspack_import_0 = __webpack_require__("./context");
58
- var _handler__rspack_import_1 = __webpack_require__("./handler");
60
+ var _effect_opentelemetry__rspack_import_0 = __webpack_require__("@effect/opentelemetry");
61
+ var _context__rspack_import_1 = __webpack_require__("./context");
62
+ var _handler__rspack_import_2 = __webpack_require__("./handler");
59
63
  var __rspack_reexport = {};
60
- for(const __rspack_import_key in _handler__rspack_import_1)if ([
64
+ for(const __rspack_import_key in _handler__rspack_import_2)if ([
61
65
  "useEffectContext",
62
66
  "default",
63
- "useOperationContext",
64
- "createEffectOperationContext"
65
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_handler__rspack_import_1[__rspack_import_key];
67
+ "OpenTelemetry",
68
+ "createEffectOperationContext",
69
+ "useOperationContext"
70
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_handler__rspack_import_2[__rspack_import_key];
66
71
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
67
72
  __webpack_require__.d(__webpack_exports__, {
68
- createEffectOperationContext: ()=>_context__rspack_import_0.createEffectOperationContext,
69
- useEffectContext: ()=>_context__rspack_import_0.useEffectContext,
70
- useOperationContext: ()=>_context__rspack_import_0.useOperationContext
73
+ OpenTelemetry: ()=>_effect_opentelemetry__rspack_import_0,
74
+ createEffectOperationContext: ()=>_context__rspack_import_1.createEffectOperationContext,
75
+ useEffectContext: ()=>_context__rspack_import_1.useEffectContext,
76
+ useOperationContext: ()=>_context__rspack_import_1.useOperationContext
71
77
  });
72
78
  })();
79
+ exports.OpenTelemetry = __webpack_exports__.OpenTelemetry;
73
80
  exports.createEffectOperationContext = __webpack_exports__.createEffectOperationContext;
74
81
  exports.useEffectContext = __webpack_exports__.useEffectContext;
75
82
  exports.useOperationContext = __webpack_exports__.useOperationContext;
76
83
  for(var __rspack_i in __webpack_exports__)if (-1 === [
84
+ "OpenTelemetry",
77
85
  "createEffectOperationContext",
78
86
  "useEffectContext",
79
87
  "useOperationContext"
@@ -30,6 +30,7 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  resolveEffectBffModuleHandler: ()=>resolveEffectBffModuleHandler
32
32
  });
33
+ const Context_namespaceObject = require("effect/Context");
33
34
  const httpapi_namespaceObject = require("effect/unstable/httpapi");
34
35
  const external_handler_js_namespaceObject = require("./handler.js");
35
36
  function isRecord(value) {
@@ -44,15 +45,29 @@ function isRequestHandler(value) {
44
45
  function isEffectApiDefinition(module) {
45
46
  return httpapi_namespaceObject.HttpApi.isHttpApi(module.api) && void 0 !== module.layer;
46
47
  }
47
- async function resolveEffectBffModuleHandler(mod, options = {}) {
48
- let normalizedModule = mod;
49
- const mergeRuntimeExports = (value)=>{
50
- if (!isRecord(value) || !includesRuntimeExports(value)) return;
51
- normalizedModule = {
52
- ...normalizedModule,
53
- ...value
54
- };
48
+ function isEffectServiceContext(context) {
49
+ return 'object' == typeof context && null !== context && 'mapUnsafe' in context;
50
+ }
51
+ const emptyEffectServiceContext = Context_namespaceObject.empty();
52
+ function callEffectBffRequestHandler(handler, request, context) {
53
+ return void 0 === context ? handler(request) : handler(request, context);
54
+ }
55
+ function createLoadedHandler(webHandler) {
56
+ return {
57
+ handler: (request, context)=>callEffectBffRequestHandler(webHandler.handler, request, context),
58
+ dispose: webHandler.dispose
55
59
  };
60
+ }
61
+ function createLoadedHttpApiHandler(webHandler) {
62
+ return {
63
+ handler: (request, context)=>{
64
+ const effectContext = isEffectServiceContext(context) ? context : emptyEffectServiceContext;
65
+ return webHandler.handler(request, effectContext);
66
+ },
67
+ dispose: webHandler.dispose
68
+ };
69
+ }
70
+ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {}) {
56
71
  if (isRequestHandler(normalizedModule.handler)) return {
57
72
  handler: normalizedModule.handler
58
73
  };
@@ -60,13 +75,6 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
60
75
  if (isRequestHandler(entry)) return {
61
76
  handler: entry
62
77
  };
63
- if ('function' == typeof entry && 0 === entry.length) {
64
- const out = await entry();
65
- if (isRequestHandler(out)) return {
66
- handler: out
67
- };
68
- mergeRuntimeExports(out);
69
- }
70
78
  if (isRecord(entry)) normalizedModule = {
71
79
  ...normalizedModule,
72
80
  ...entry
@@ -86,12 +94,7 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
86
94
  openapi: options.openapi,
87
95
  dataPlatform: options.dataPlatform
88
96
  });
89
- return {
90
- handler: async (request, context)=>webHandler.handler(request, context),
91
- dispose: async ()=>{
92
- await webHandler.dispose();
93
- }
94
- };
97
+ return createLoadedHandler(webHandler);
95
98
  }
96
99
  if (isEffectApiDefinition(normalizedModule)) {
97
100
  options.onWarning?.('[BFF][Effect] Detected { api, layer } export without createHandler. Prefer `defineEffectBff(...)` from @modern-js/plugin-bff/server to avoid module instance mismatch.');
@@ -101,15 +104,35 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
101
104
  openapi: options.openapi,
102
105
  dataPlatform: options.dataPlatform
103
106
  });
104
- return {
105
- handler: async (request, context)=>webHandler.handler(request, context),
106
- dispose: async ()=>{
107
- await webHandler.dispose();
108
- }
109
- };
107
+ return createLoadedHttpApiHandler(webHandler);
110
108
  }
111
109
  return null;
112
110
  }
111
+ function resolveEffectBffModuleHandler(mod, options = {}) {
112
+ let normalizedModule = mod;
113
+ const mergeRuntimeExports = (value)=>{
114
+ if (!isRecord(value) || !includesRuntimeExports(value)) return;
115
+ normalizedModule = {
116
+ ...normalizedModule,
117
+ ...value
118
+ };
119
+ };
120
+ if (isRequestHandler(normalizedModule.handler)) return Promise.resolve({
121
+ handler: normalizedModule.handler
122
+ });
123
+ const entry = normalizedModule.default;
124
+ if (isRequestHandler(entry)) return Promise.resolve({
125
+ handler: entry
126
+ });
127
+ if ('function' == typeof entry && 0 === entry.length) return Promise.resolve(entry()).then((out)=>{
128
+ if (isRequestHandler(out)) return {
129
+ handler: out
130
+ };
131
+ mergeRuntimeExports(out);
132
+ return resolveNormalizedEffectBffModuleHandler(normalizedModule, options);
133
+ });
134
+ return Promise.resolve(resolveNormalizedEffectBffModuleHandler(normalizedModule, options));
135
+ }
113
136
  exports.resolveEffectBffModuleHandler = __webpack_exports__.resolveEffectBffModuleHandler;
114
137
  for(var __rspack_i in __webpack_exports__)if (-1 === [
115
138
  "resolveEffectBffModuleHandler"
@@ -106,7 +106,7 @@ function makeEffectHttpApiClient(api, options) {
106
106
  for (const [header, value] of Object.entries(requestContextHeaders))if (void 0 === nextRequest.headers[header.toLowerCase()]) nextRequest = http_namespaceObject.HttpClientRequest.setHeader(nextRequest, header, value);
107
107
  return nextRequest;
108
108
  }));
109
- return options?.transformClient ? options.transformClient(contextClient) : contextClient;
109
+ return 'function' == typeof options?.transformClient ? options.transformClient(contextClient) : contextClient;
110
110
  };
111
111
  return httpapi_namespaceObject.HttpApiClient.make(api, {
112
112
  baseUrl: options?.baseUrl,
@@ -1,9 +1,8 @@
1
1
  import * as __rspack_external_effect_Layer_16f7a8fc from "effect/Layer";
2
- import { HttpRouter, HttpServerResponse, HttpTraceContext } from "effect/unstable/http";
2
+ import { HttpRouter, HttpServer, HttpServerResponse, HttpTraceContext } from "effect/unstable/http";
3
3
  import { HttpApiBuilder, OpenApi } from "effect/unstable/httpapi";
4
4
  import { RpcSerialization, RpcServer } from "effect/unstable/rpc";
5
5
  import { DEFAULT_DATA_BATCH_ENDPOINT, DEFAULT_DATA_BATCH_HEADER, DEFAULT_DATA_ENVELOPE_HEADER, decodeRequestEnvelopeHeader, validateRequestEnvelope, validateSelectionPlan } from "../data-platform/index.mjs";
6
- import * as __rspack_external__effect_opentelemetry_8bbbb5af from "@effect/opentelemetry";
7
6
  import * as __rspack_external_effect_Config_29be8a92 from "effect/Config";
8
7
  import * as __rspack_external_effect_Effect_194ac36c from "effect/Effect";
9
8
  import * as __rspack_external_effect_Option_4d691636 from "effect/Option";
@@ -11,6 +10,8 @@ import * as __rspack_external_effect_Schema_f8472650 from "effect/Schema";
11
10
  export * from "effect/unstable/http";
12
11
  export * from "effect/unstable/httpapi";
13
12
  export * from "effect/unstable/rpc";
13
+ import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
14
+ const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
14
15
  function normalizeOpenApiPath(pathname) {
15
16
  if (!pathname.startsWith('/')) return `/${pathname}`;
16
17
  return pathname;
@@ -287,7 +288,7 @@ function defineEffectRpcBff(definition) {
287
288
  };
288
289
  }
289
290
  function createHttpApiHandler(options) {
290
- const apiLayer = options.layer;
291
+ const apiLayer = options.layer.pipe(__rspack_external_effect_Layer_16f7a8fc.provide(HttpServer.layerServices));
291
292
  const openApiLayer = createOpenApiLayer(options.api, options.openapi);
292
293
  const mergedLayer = openApiLayer ? __rspack_external_effect_Layer_16f7a8fc.mergeAll(apiLayer, openApiLayer) : apiLayer;
293
294
  const httpApiHandler = HttpRouter.toWebHandler(mergedLayer);
@@ -304,7 +305,7 @@ function createHttpApiHandler(options) {
304
305
  const withDataPlatformValidation = async (request, context)=>{
305
306
  const validationError = validateDataPlatformRequestEnvelope(request, options.dataPlatform);
306
307
  if (validationError) return validationError;
307
- return httpApiHandler.handler(request, context);
308
+ return httpApiHandler.handler(request, context ?? emptyEffectServiceContext);
308
309
  };
309
310
  const handleBatchRequest = async (request, context)=>{
310
311
  const mountedPrefix = getMountedPrefixFromContext(request, context);
@@ -423,7 +424,7 @@ function createHttpApiHandler(options) {
423
424
  const rpcHandler = createRpcApiHandler(options.rpc);
424
425
  return {
425
426
  handler: async (request, context)=>{
426
- if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context);
427
+ if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context ?? emptyEffectServiceContext);
427
428
  return handleHttpApiRequest(request);
428
429
  },
429
430
  dispose: async ()=>{
@@ -434,4 +435,4 @@ function createHttpApiHandler(options) {
434
435
  }
435
436
  };
436
437
  }
437
- export { HttpApiBuilder, HttpTraceContext, __rspack_external__effect_opentelemetry_8bbbb5af as OpenTelemetry, __rspack_external_effect_Config_29be8a92 as Config, __rspack_external_effect_Effect_194ac36c as Effect, __rspack_external_effect_Layer_16f7a8fc as Layer, __rspack_external_effect_Option_4d691636 as Option, __rspack_external_effect_Schema_f8472650 as Schema, createHttpApiHandler, defineEffectBff, defineEffectRpcBff };
438
+ export { HttpApiBuilder, HttpTraceContext, __rspack_external_effect_Config_29be8a92 as Config, __rspack_external_effect_Effect_194ac36c as Effect, __rspack_external_effect_Layer_16f7a8fc as Layer, __rspack_external_effect_Option_4d691636 as Option, __rspack_external_effect_Schema_f8472650 as Schema, createHttpApiHandler, defineEffectBff, defineEffectRpcBff };
@@ -1,2 +1,4 @@
1
+ import * as __rspack_external__effect_opentelemetry_8bbbb5af from "@effect/opentelemetry";
1
2
  export * from "./handler.mjs";
2
3
  export { createEffectOperationContext, useEffectContext, useOperationContext } from "./context.mjs";
4
+ export { __rspack_external__effect_opentelemetry_8bbbb5af as OpenTelemetry };
@@ -1,5 +1,6 @@
1
1
  import { HttpApi } from "effect/unstable/httpapi";
2
2
  import { createHttpApiHandler } from "./handler.mjs";
3
+ import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
3
4
  function isRecord(value) {
4
5
  return 'object' == typeof value && null !== value;
5
6
  }
@@ -12,15 +13,29 @@ function isRequestHandler(value) {
12
13
  function isEffectApiDefinition(module) {
13
14
  return HttpApi.isHttpApi(module.api) && void 0 !== module.layer;
14
15
  }
15
- async function resolveEffectBffModuleHandler(mod, options = {}) {
16
- let normalizedModule = mod;
17
- const mergeRuntimeExports = (value)=>{
18
- if (!isRecord(value) || !includesRuntimeExports(value)) return;
19
- normalizedModule = {
20
- ...normalizedModule,
21
- ...value
22
- };
16
+ function isEffectServiceContext(context) {
17
+ return 'object' == typeof context && null !== context && 'mapUnsafe' in context;
18
+ }
19
+ const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
20
+ function callEffectBffRequestHandler(handler, request, context) {
21
+ return void 0 === context ? handler(request) : handler(request, context);
22
+ }
23
+ function createLoadedHandler(webHandler) {
24
+ return {
25
+ handler: (request, context)=>callEffectBffRequestHandler(webHandler.handler, request, context),
26
+ dispose: webHandler.dispose
23
27
  };
28
+ }
29
+ function createLoadedHttpApiHandler(webHandler) {
30
+ return {
31
+ handler: (request, context)=>{
32
+ const effectContext = isEffectServiceContext(context) ? context : emptyEffectServiceContext;
33
+ return webHandler.handler(request, effectContext);
34
+ },
35
+ dispose: webHandler.dispose
36
+ };
37
+ }
38
+ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {}) {
24
39
  if (isRequestHandler(normalizedModule.handler)) return {
25
40
  handler: normalizedModule.handler
26
41
  };
@@ -28,13 +43,6 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
28
43
  if (isRequestHandler(entry)) return {
29
44
  handler: entry
30
45
  };
31
- if ('function' == typeof entry && 0 === entry.length) {
32
- const out = await entry();
33
- if (isRequestHandler(out)) return {
34
- handler: out
35
- };
36
- mergeRuntimeExports(out);
37
- }
38
46
  if (isRecord(entry)) normalizedModule = {
39
47
  ...normalizedModule,
40
48
  ...entry
@@ -54,12 +62,7 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
54
62
  openapi: options.openapi,
55
63
  dataPlatform: options.dataPlatform
56
64
  });
57
- return {
58
- handler: async (request, context)=>webHandler.handler(request, context),
59
- dispose: async ()=>{
60
- await webHandler.dispose();
61
- }
62
- };
65
+ return createLoadedHandler(webHandler);
63
66
  }
64
67
  if (isEffectApiDefinition(normalizedModule)) {
65
68
  options.onWarning?.('[BFF][Effect] Detected { api, layer } export without createHandler. Prefer `defineEffectBff(...)` from @modern-js/plugin-bff/server to avoid module instance mismatch.');
@@ -69,13 +72,33 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
69
72
  openapi: options.openapi,
70
73
  dataPlatform: options.dataPlatform
71
74
  });
72
- return {
73
- handler: async (request, context)=>webHandler.handler(request, context),
74
- dispose: async ()=>{
75
- await webHandler.dispose();
76
- }
77
- };
75
+ return createLoadedHttpApiHandler(webHandler);
78
76
  }
79
77
  return null;
80
78
  }
79
+ function resolveEffectBffModuleHandler(mod, options = {}) {
80
+ let normalizedModule = mod;
81
+ const mergeRuntimeExports = (value)=>{
82
+ if (!isRecord(value) || !includesRuntimeExports(value)) return;
83
+ normalizedModule = {
84
+ ...normalizedModule,
85
+ ...value
86
+ };
87
+ };
88
+ if (isRequestHandler(normalizedModule.handler)) return Promise.resolve({
89
+ handler: normalizedModule.handler
90
+ });
91
+ const entry = normalizedModule.default;
92
+ if (isRequestHandler(entry)) return Promise.resolve({
93
+ handler: entry
94
+ });
95
+ if ('function' == typeof entry && 0 === entry.length) return Promise.resolve(entry()).then((out)=>{
96
+ if (isRequestHandler(out)) return {
97
+ handler: out
98
+ };
99
+ mergeRuntimeExports(out);
100
+ return resolveNormalizedEffectBffModuleHandler(normalizedModule, options);
101
+ });
102
+ return Promise.resolve(resolveNormalizedEffectBffModuleHandler(normalizedModule, options));
103
+ }
81
104
  export { resolveEffectBffModuleHandler };
@@ -55,7 +55,7 @@ function makeEffectHttpApiClient(api, options) {
55
55
  for (const [header, value] of Object.entries(requestContextHeaders))if (void 0 === nextRequest.headers[header.toLowerCase()]) nextRequest = HttpClientRequest.setHeader(nextRequest, header, value);
56
56
  return nextRequest;
57
57
  }));
58
- return options?.transformClient ? options.transformClient(contextClient) : contextClient;
58
+ return 'function' == typeof options?.transformClient ? options.transformClient(contextClient) : contextClient;
59
59
  };
60
60
  return HttpApiClient.make(api, {
61
61
  baseUrl: options?.baseUrl,
@@ -1,10 +1,9 @@
1
1
  import "node:module";
2
2
  import * as __rspack_external_effect_Layer_16f7a8fc from "effect/Layer";
3
- import { HttpRouter, HttpServerResponse, HttpTraceContext } from "effect/unstable/http";
3
+ import { HttpRouter, HttpServer, HttpServerResponse, HttpTraceContext } from "effect/unstable/http";
4
4
  import { HttpApiBuilder, OpenApi } from "effect/unstable/httpapi";
5
5
  import { RpcSerialization, RpcServer } from "effect/unstable/rpc";
6
6
  import { DEFAULT_DATA_BATCH_ENDPOINT, DEFAULT_DATA_BATCH_HEADER, DEFAULT_DATA_ENVELOPE_HEADER, decodeRequestEnvelopeHeader, validateRequestEnvelope, validateSelectionPlan } from "../data-platform/index.mjs";
7
- import * as __rspack_external__effect_opentelemetry_8bbbb5af from "@effect/opentelemetry";
8
7
  import * as __rspack_external_effect_Config_29be8a92 from "effect/Config";
9
8
  import * as __rspack_external_effect_Effect_194ac36c from "effect/Effect";
10
9
  import * as __rspack_external_effect_Option_4d691636 from "effect/Option";
@@ -12,6 +11,8 @@ import * as __rspack_external_effect_Schema_f8472650 from "effect/Schema";
12
11
  export * from "effect/unstable/http";
13
12
  export * from "effect/unstable/httpapi";
14
13
  export * from "effect/unstable/rpc";
14
+ import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
15
+ const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
15
16
  function normalizeOpenApiPath(pathname) {
16
17
  if (!pathname.startsWith('/')) return `/${pathname}`;
17
18
  return pathname;
@@ -288,7 +289,7 @@ function defineEffectRpcBff(definition) {
288
289
  };
289
290
  }
290
291
  function createHttpApiHandler(options) {
291
- const apiLayer = options.layer;
292
+ const apiLayer = options.layer.pipe(__rspack_external_effect_Layer_16f7a8fc.provide(HttpServer.layerServices));
292
293
  const openApiLayer = createOpenApiLayer(options.api, options.openapi);
293
294
  const mergedLayer = openApiLayer ? __rspack_external_effect_Layer_16f7a8fc.mergeAll(apiLayer, openApiLayer) : apiLayer;
294
295
  const httpApiHandler = HttpRouter.toWebHandler(mergedLayer);
@@ -305,7 +306,7 @@ function createHttpApiHandler(options) {
305
306
  const withDataPlatformValidation = async (request, context)=>{
306
307
  const validationError = validateDataPlatformRequestEnvelope(request, options.dataPlatform);
307
308
  if (validationError) return validationError;
308
- return httpApiHandler.handler(request, context);
309
+ return httpApiHandler.handler(request, context ?? emptyEffectServiceContext);
309
310
  };
310
311
  const handleBatchRequest = async (request, context)=>{
311
312
  const mountedPrefix = getMountedPrefixFromContext(request, context);
@@ -424,7 +425,7 @@ function createHttpApiHandler(options) {
424
425
  const rpcHandler = createRpcApiHandler(options.rpc);
425
426
  return {
426
427
  handler: async (request, context)=>{
427
- if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context);
428
+ if (isRpcRequest(request, rpcPath)) return rpcHandler.handler(request, context ?? emptyEffectServiceContext);
428
429
  return handleHttpApiRequest(request);
429
430
  },
430
431
  dispose: async ()=>{
@@ -435,4 +436,4 @@ function createHttpApiHandler(options) {
435
436
  }
436
437
  };
437
438
  }
438
- export { HttpApiBuilder, HttpTraceContext, __rspack_external__effect_opentelemetry_8bbbb5af as OpenTelemetry, __rspack_external_effect_Config_29be8a92 as Config, __rspack_external_effect_Effect_194ac36c as Effect, __rspack_external_effect_Layer_16f7a8fc as Layer, __rspack_external_effect_Option_4d691636 as Option, __rspack_external_effect_Schema_f8472650 as Schema, createHttpApiHandler, defineEffectBff, defineEffectRpcBff };
439
+ export { HttpApiBuilder, HttpTraceContext, __rspack_external_effect_Config_29be8a92 as Config, __rspack_external_effect_Effect_194ac36c as Effect, __rspack_external_effect_Layer_16f7a8fc as Layer, __rspack_external_effect_Option_4d691636 as Option, __rspack_external_effect_Schema_f8472650 as Schema, createHttpApiHandler, defineEffectBff, defineEffectRpcBff };
@@ -1,3 +1,5 @@
1
1
  import "node:module";
2
+ import * as __rspack_external__effect_opentelemetry_8bbbb5af from "@effect/opentelemetry";
2
3
  export * from "./handler.mjs";
3
4
  export { createEffectOperationContext, useEffectContext, useOperationContext } from "./context.mjs";
5
+ export { __rspack_external__effect_opentelemetry_8bbbb5af as OpenTelemetry };
@@ -1,6 +1,7 @@
1
1
  import "node:module";
2
2
  import { HttpApi } from "effect/unstable/httpapi";
3
3
  import { createHttpApiHandler } from "./handler.mjs";
4
+ import * as __rspack_external_effect_Context_f1289ca3 from "effect/Context";
4
5
  function isRecord(value) {
5
6
  return 'object' == typeof value && null !== value;
6
7
  }
@@ -13,15 +14,29 @@ function isRequestHandler(value) {
13
14
  function isEffectApiDefinition(module) {
14
15
  return HttpApi.isHttpApi(module.api) && void 0 !== module.layer;
15
16
  }
16
- async function resolveEffectBffModuleHandler(mod, options = {}) {
17
- let normalizedModule = mod;
18
- const mergeRuntimeExports = (value)=>{
19
- if (!isRecord(value) || !includesRuntimeExports(value)) return;
20
- normalizedModule = {
21
- ...normalizedModule,
22
- ...value
23
- };
17
+ function isEffectServiceContext(context) {
18
+ return 'object' == typeof context && null !== context && 'mapUnsafe' in context;
19
+ }
20
+ const emptyEffectServiceContext = __rspack_external_effect_Context_f1289ca3.empty();
21
+ function callEffectBffRequestHandler(handler, request, context) {
22
+ return void 0 === context ? handler(request) : handler(request, context);
23
+ }
24
+ function createLoadedHandler(webHandler) {
25
+ return {
26
+ handler: (request, context)=>callEffectBffRequestHandler(webHandler.handler, request, context),
27
+ dispose: webHandler.dispose
24
28
  };
29
+ }
30
+ function createLoadedHttpApiHandler(webHandler) {
31
+ return {
32
+ handler: (request, context)=>{
33
+ const effectContext = isEffectServiceContext(context) ? context : emptyEffectServiceContext;
34
+ return webHandler.handler(request, effectContext);
35
+ },
36
+ dispose: webHandler.dispose
37
+ };
38
+ }
39
+ function resolveNormalizedEffectBffModuleHandler(normalizedModule, options = {}) {
25
40
  if (isRequestHandler(normalizedModule.handler)) return {
26
41
  handler: normalizedModule.handler
27
42
  };
@@ -29,13 +44,6 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
29
44
  if (isRequestHandler(entry)) return {
30
45
  handler: entry
31
46
  };
32
- if ('function' == typeof entry && 0 === entry.length) {
33
- const out = await entry();
34
- if (isRequestHandler(out)) return {
35
- handler: out
36
- };
37
- mergeRuntimeExports(out);
38
- }
39
47
  if (isRecord(entry)) normalizedModule = {
40
48
  ...normalizedModule,
41
49
  ...entry
@@ -55,12 +63,7 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
55
63
  openapi: options.openapi,
56
64
  dataPlatform: options.dataPlatform
57
65
  });
58
- return {
59
- handler: async (request, context)=>webHandler.handler(request, context),
60
- dispose: async ()=>{
61
- await webHandler.dispose();
62
- }
63
- };
66
+ return createLoadedHandler(webHandler);
64
67
  }
65
68
  if (isEffectApiDefinition(normalizedModule)) {
66
69
  options.onWarning?.('[BFF][Effect] Detected { api, layer } export without createHandler. Prefer `defineEffectBff(...)` from @modern-js/plugin-bff/server to avoid module instance mismatch.');
@@ -70,13 +73,33 @@ async function resolveEffectBffModuleHandler(mod, options = {}) {
70
73
  openapi: options.openapi,
71
74
  dataPlatform: options.dataPlatform
72
75
  });
73
- return {
74
- handler: async (request, context)=>webHandler.handler(request, context),
75
- dispose: async ()=>{
76
- await webHandler.dispose();
77
- }
78
- };
76
+ return createLoadedHttpApiHandler(webHandler);
79
77
  }
80
78
  return null;
81
79
  }
80
+ function resolveEffectBffModuleHandler(mod, options = {}) {
81
+ let normalizedModule = mod;
82
+ const mergeRuntimeExports = (value)=>{
83
+ if (!isRecord(value) || !includesRuntimeExports(value)) return;
84
+ normalizedModule = {
85
+ ...normalizedModule,
86
+ ...value
87
+ };
88
+ };
89
+ if (isRequestHandler(normalizedModule.handler)) return Promise.resolve({
90
+ handler: normalizedModule.handler
91
+ });
92
+ const entry = normalizedModule.default;
93
+ if (isRequestHandler(entry)) return Promise.resolve({
94
+ handler: entry
95
+ });
96
+ if ('function' == typeof entry && 0 === entry.length) return Promise.resolve(entry()).then((out)=>{
97
+ if (isRequestHandler(out)) return {
98
+ handler: out
99
+ };
100
+ mergeRuntimeExports(out);
101
+ return resolveNormalizedEffectBffModuleHandler(normalizedModule, options);
102
+ });
103
+ return Promise.resolve(resolveNormalizedEffectBffModuleHandler(normalizedModule, options));
104
+ }
82
105
  export { resolveEffectBffModuleHandler };
@@ -56,7 +56,7 @@ function makeEffectHttpApiClient(api, options) {
56
56
  for (const [header, value] of Object.entries(requestContextHeaders))if (void 0 === nextRequest.headers[header.toLowerCase()]) nextRequest = HttpClientRequest.setHeader(nextRequest, header, value);
57
57
  return nextRequest;
58
58
  }));
59
- return options?.transformClient ? options.transformClient(contextClient) : contextClient;
59
+ return 'function' == typeof options?.transformClient ? options.transformClient(contextClient) : contextClient;
60
60
  };
61
61
  return HttpApiClient.make(api, {
62
62
  baseUrl: options?.baseUrl,
@@ -1,8 +1,10 @@
1
+ import type { FileSystem, Path } from 'effect';
2
+ import * as Context from 'effect/Context';
1
3
  import type * as EffectType from 'effect/Effect';
2
4
  import * as Layer from 'effect/Layer';
5
+ import { Etag, HttpPlatform, HttpRouter } from 'effect/unstable/http';
3
6
  import { type HttpApi, type HttpApiClient, type HttpApiGroup } from 'effect/unstable/httpapi';
4
7
  import { type Rpc, type RpcGroup } from 'effect/unstable/rpc';
5
- export * as OpenTelemetry from '@effect/opentelemetry';
6
8
  export * as Config from 'effect/Config';
7
9
  export * as Effect from 'effect/Effect';
8
10
  export * as Layer from 'effect/Layer';
@@ -13,7 +15,8 @@ export { HttpTraceContext } from 'effect/unstable/http';
13
15
  export * from 'effect/unstable/httpapi';
14
16
  export { HttpApiBuilder } from 'effect/unstable/httpapi';
15
17
  export * from 'effect/unstable/rpc';
16
- export type EffectRuntimeLayer = Layer.Layer<never, unknown, unknown>;
18
+ export type EffectRuntimeRequirements = Etag.Generator | FileSystem.FileSystem | HttpPlatform.HttpPlatform | HttpRouter.HttpRouter | HttpRouter.Request<'Error', any> | HttpRouter.Request<'GlobalError', any> | HttpRouter.Request<'GlobalRequires', any> | HttpRouter.Request<'Requires', any> | Path.Path;
19
+ export type EffectRuntimeLayer = Layer.Layer<never, never, EffectRuntimeRequirements>;
17
20
  export type EffectRpcSerialization = 'json' | 'ndjson' | 'jsonRpc' | 'ndJsonRpc' | 'msgPack';
18
21
  export type EffectRpcRuntimeLayer<TRpcs extends Rpc.Any = Rpc.Any> = Layer.Layer<Rpc.ToHandler<TRpcs> | Rpc.Middleware<TRpcs> | Rpc.ServicesServer<TRpcs>, unknown, never>;
19
22
  export type EffectRpcBffDefinition<TRpcs extends Rpc.Any = Rpc.Any, TRpcLayer extends EffectRpcRuntimeLayer<TRpcs> = EffectRpcRuntimeLayer<TRpcs>> = {
@@ -141,7 +144,7 @@ export type EffectBffOpenApiConfig = boolean | {
141
144
  };
142
145
  export type EffectRpcBffHandlerFactory<TRpcs extends Rpc.Any = Rpc.Any> = (options?: Partial<EffectRpcBffHandlerOptions>) => ReturnType<typeof createRpcApiHandler<TRpcs>>;
143
146
  declare function createRpcApiHandler<TRpcs extends Rpc.Any = Rpc.Any>(options: EffectRpcBffDefinition<TRpcs>): {
144
- readonly handler: (request: globalThis.Request, context?: import("effect/Context").Context<never> | undefined) => Promise<Response>;
147
+ readonly handler: (request: globalThis.Request, context?: Context.Context<never> | undefined) => Promise<Response>;
145
148
  readonly dispose: () => Promise<void>;
146
149
  };
147
150
  export declare function defineEffectBff<TApi extends HttpApi.AnyWithProps, TLayer extends EffectRuntimeLayer, TRpcs extends Rpc.Any = Rpc.Any>(definition: {
@@ -165,6 +168,6 @@ export declare function createHttpApiHandler<TApi extends HttpApi.AnyWithProps =
165
168
  rpc?: EffectRpcBffDefinition<TRpcs>;
166
169
  dataPlatform?: EffectDataPlatformValidationOptions;
167
170
  }): {
168
- handler: (request: Request, context?: Parameters<(request: globalThis.Request, context: import("effect/Context").Context<any>) => Promise<Response>>[1]) => Promise<Response>;
171
+ handler: (request: Request, context?: Parameters<(request: globalThis.Request, context: Context.Context<any>) => Promise<Response>>[1]) => Promise<Response>;
169
172
  dispose: () => Promise<void>;
170
173
  };
@@ -1,2 +1,3 @@
1
+ export * as OpenTelemetry from '@effect/opentelemetry';
1
2
  export { type CreateEffectOperationContextOptions, createEffectOperationContext, type EffectContext, useEffectContext, useOperationContext, } from './context';
2
3
  export * from './handler';
@@ -1,7 +1,7 @@
1
1
  import type * as EffectServiceContext from 'effect/Context';
2
2
  import { type EffectBffOpenApiConfig, type EffectDataPlatformValidationOptions } from './handler';
3
3
  import type { EffectContext } from './operation-context';
4
- export type EffectBffRequestHandler = (request: Request, context?: EffectServiceContext.Context<never> | EffectContext) => Promise<Response> | Response;
4
+ export type EffectBffRequestHandler = (request: Request, context?: EffectServiceContext.Context<any> | EffectContext) => Promise<Response> | Response;
5
5
  export type EffectBffHandlerFactory = (options?: {
6
6
  openapi?: EffectBffOpenApiConfig;
7
7
  dataPlatform?: EffectDataPlatformValidationOptions;
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.2.0-ultramodern.103",
20
+ "version": "3.2.0-ultramodern.104",
21
21
  "types": "./dist/types/cli.d.ts",
22
22
  "main": "./dist/cjs/cli.js",
23
23
  "exports": {
@@ -145,12 +145,12 @@
145
145
  "effect": "4.0.0-beta.66",
146
146
  "qs": "^6.15.2",
147
147
  "type-is": "^2.1.0",
148
- "@modern-js/create-request": "npm:@bleedingdev/modern-js-create-request@3.2.0-ultramodern.103",
149
- "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.2.0-ultramodern.103",
150
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.2.0-ultramodern.103",
151
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.103",
152
- "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.2.0-ultramodern.103",
153
- "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.2.0-ultramodern.103"
148
+ "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.2.0-ultramodern.104",
149
+ "@modern-js/create-request": "npm:@bleedingdev/modern-js-create-request@3.2.0-ultramodern.104",
150
+ "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.2.0-ultramodern.104",
151
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.2.0-ultramodern.104",
152
+ "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.2.0-ultramodern.104",
153
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.104"
154
154
  },
155
155
  "devDependencies": {
156
156
  "@rsbuild/core": "2.0.10",
@@ -161,12 +161,12 @@
161
161
  "@typescript/native-preview": "7.0.0-dev.20260527.2",
162
162
  "memfs": "^4.57.2",
163
163
  "zod": "^4.4.3",
164
- "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.2.0-ultramodern.103",
165
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.2.0-ultramodern.103",
166
- "@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.2.0-ultramodern.103",
167
- "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.2.0-ultramodern.103",
168
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.103",
169
- "@scripts/rstest-config": "2.66.0"
164
+ "@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.2.0-ultramodern.104",
165
+ "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.2.0-ultramodern.104",
166
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.2.0-ultramodern.104",
167
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.104",
168
+ "@scripts/rstest-config": "2.66.0",
169
+ "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.2.0-ultramodern.104"
170
170
  },
171
171
  "sideEffects": false,
172
172
  "publishConfig": {