@bleedingdev/modern-js-plugin-bff 3.2.0-ultramodern.12 → 3.2.0-ultramodern.121

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 (80) hide show
  1. package/dist/cjs/cli.js +9 -5
  2. package/dist/cjs/constants.js +13 -9
  3. package/dist/cjs/index.js +9 -5
  4. package/dist/cjs/loader.js +32 -5
  5. package/dist/cjs/runtime/create-request/index.js +9 -5
  6. package/dist/cjs/runtime/data-platform/index.js +50 -26
  7. package/dist/cjs/runtime/effect/adapter.js +99 -93
  8. package/dist/cjs/runtime/effect/context.js +19 -7
  9. package/dist/cjs/runtime/effect/edge.js +169 -0
  10. package/dist/cjs/runtime/effect/endpoint-contracts.js +130 -0
  11. package/dist/cjs/runtime/effect/handler.js +642 -0
  12. package/dist/cjs/runtime/effect/index.js +30 -547
  13. package/dist/cjs/runtime/effect/module.js +151 -0
  14. package/dist/cjs/runtime/effect/operation-context.js +103 -0
  15. package/dist/cjs/runtime/effect-client/index.js +22 -6
  16. package/dist/cjs/runtime/effect-client/runtime.js +266 -0
  17. package/dist/cjs/runtime/hono/adapter.js +30 -14
  18. package/dist/cjs/runtime/hono/index.js +9 -5
  19. package/dist/cjs/runtime/hono/operators.js +9 -5
  20. package/dist/cjs/runtime/safe-failure.js +83 -0
  21. package/dist/cjs/server.js +9 -5
  22. package/dist/cjs/utils/clientGenerator.js +13 -9
  23. package/dist/cjs/utils/createHonoRoutes.js +9 -5
  24. package/dist/cjs/utils/crossProjectApiPlugin.js +9 -5
  25. package/dist/cjs/utils/crossProjectServerPolicy.js +104 -0
  26. package/dist/cjs/utils/effectClientGenerator.js +116 -488
  27. package/dist/cjs/utils/pluginGenerator.js +9 -5
  28. package/dist/cjs/utils/runtimeGenerator.js +9 -5
  29. package/dist/esm/loader.mjs +23 -0
  30. package/dist/esm/runtime/data-platform/index.mjs +33 -22
  31. package/dist/esm/runtime/effect/adapter.mjs +91 -89
  32. package/dist/esm/runtime/effect/context.mjs +3 -1
  33. package/dist/esm/runtime/effect/edge.mjs +83 -0
  34. package/dist/esm/runtime/effect/endpoint-contracts.mjs +68 -0
  35. package/dist/esm/runtime/effect/handler.mjs +470 -0
  36. package/dist/esm/runtime/effect/index.mjs +3 -437
  37. package/dist/esm/runtime/effect/module.mjs +113 -0
  38. package/dist/esm/runtime/effect/operation-context.mjs +65 -0
  39. package/dist/esm/runtime/effect-client/index.mjs +14 -2
  40. package/dist/esm/runtime/effect-client/runtime.mjs +228 -0
  41. package/dist/esm/runtime/hono/adapter.mjs +21 -9
  42. package/dist/esm/runtime/safe-failure.mjs +45 -0
  43. package/dist/esm/utils/clientGenerator.mjs +5 -5
  44. package/dist/esm/utils/crossProjectServerPolicy.mjs +50 -0
  45. package/dist/esm/utils/effectClientGenerator.mjs +105 -484
  46. package/dist/esm-node/loader.mjs +23 -0
  47. package/dist/esm-node/runtime/data-platform/index.mjs +33 -22
  48. package/dist/esm-node/runtime/effect/adapter.mjs +91 -89
  49. package/dist/esm-node/runtime/effect/context.mjs +3 -1
  50. package/dist/esm-node/runtime/effect/edge.mjs +84 -0
  51. package/dist/esm-node/runtime/effect/endpoint-contracts.mjs +69 -0
  52. package/dist/esm-node/runtime/effect/handler.mjs +471 -0
  53. package/dist/esm-node/runtime/effect/index.mjs +3 -437
  54. package/dist/esm-node/runtime/effect/module.mjs +114 -0
  55. package/dist/esm-node/runtime/effect/operation-context.mjs +66 -0
  56. package/dist/esm-node/runtime/effect-client/index.mjs +14 -2
  57. package/dist/esm-node/runtime/effect-client/runtime.mjs +229 -0
  58. package/dist/esm-node/runtime/hono/adapter.mjs +21 -9
  59. package/dist/esm-node/runtime/safe-failure.mjs +46 -0
  60. package/dist/esm-node/utils/clientGenerator.mjs +5 -5
  61. package/dist/esm-node/utils/crossProjectServerPolicy.mjs +52 -0
  62. package/dist/esm-node/utils/effectClientGenerator.mjs +105 -484
  63. package/dist/types/runtime/create-request/index.d.ts +1 -0
  64. package/dist/types/runtime/data-platform/index.d.ts +4 -0
  65. package/dist/types/runtime/effect/adapter.d.ts +25 -0
  66. package/dist/types/runtime/effect/context.d.ts +3 -6
  67. package/dist/types/runtime/effect/edge.d.ts +25 -0
  68. package/dist/types/runtime/effect/endpoint-contracts.d.ts +62 -0
  69. package/dist/types/runtime/effect/handler.d.ts +203 -0
  70. package/dist/types/runtime/effect/index.d.ts +2 -170
  71. package/dist/types/runtime/effect/module.d.ts +48 -0
  72. package/dist/types/runtime/effect/operation-context.d.ts +10 -0
  73. package/dist/types/runtime/effect-client/index.d.ts +6 -1
  74. package/dist/types/runtime/effect-client/runtime.d.ts +71 -0
  75. package/dist/types/runtime/hono/adapter.d.ts +3 -0
  76. package/dist/types/runtime/safe-failure.d.ts +1 -0
  77. package/dist/types/utils/createHonoRoutes.d.ts +3 -3
  78. package/dist/types/utils/crossProjectServerPolicy.d.ts +35 -0
  79. package/dist/types/utils/effectClientGenerator.d.ts +16 -2
  80. package/package.json +41 -20
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
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");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const SAFE_FAILURE_MESSAGES = {
31
+ 500: 'Internal Server Error',
32
+ 503: 'Service Unavailable'
33
+ };
34
+ const SAFE_FAILURE_CODES = {
35
+ 500: 'INTERNAL_SERVER_ERROR',
36
+ 503: 'SERVICE_UNAVAILABLE'
37
+ };
38
+ const readErrorProperty = (error, key)=>{
39
+ if ('object' != typeof error || null === error || !(key in error)) return;
40
+ return error[key];
41
+ };
42
+ const normalizeFailureStatus = (value)=>{
43
+ if ('number' != typeof value || !Number.isInteger(value)) return;
44
+ return value >= 400 && value <= 599 ? value : void 0;
45
+ };
46
+ const normalizeRetryAfter = (value)=>{
47
+ if ('number' == typeof value && Number.isFinite(value) && value >= 0) return String(Math.ceil(value));
48
+ if ('string' == typeof value) {
49
+ const trimmed = value.trim();
50
+ return trimmed.length > 0 ? trimmed : void 0;
51
+ }
52
+ if (value instanceof Date) return value.toUTCString();
53
+ };
54
+ const createSafeFailureResponse = (error)=>{
55
+ const status = normalizeFailureStatus(readErrorProperty(error, 'status')) ?? normalizeFailureStatus(readErrorProperty(error, 'statusCode')) ?? 500;
56
+ const retryAfter = 503 === status ? normalizeRetryAfter(readErrorProperty(error, 'retryAfter')) ?? normalizeRetryAfter(readErrorProperty(error, 'retryAfterSeconds')) ?? normalizeRetryAfter('number' == typeof readErrorProperty(error, 'retryAfterMs') ? readErrorProperty(error, 'retryAfterMs') / 1000 : void 0) : void 0;
57
+ const body = {
58
+ success: false,
59
+ error: {
60
+ code: SAFE_FAILURE_CODES[status] ?? 'REQUEST_FAILED',
61
+ message: SAFE_FAILURE_MESSAGES[status] ?? 'Request failed',
62
+ status
63
+ }
64
+ };
65
+ const headers = {
66
+ 'content-type': 'application/json; charset=utf-8'
67
+ };
68
+ if (void 0 !== retryAfter) headers['Retry-After'] = retryAfter;
69
+ return new Response(JSON.stringify(body), {
70
+ status,
71
+ headers
72
+ });
73
+ };
74
+ __webpack_require__.d(__webpack_exports__, {}, {
75
+ createSafeFailureResponse: createSafeFailureResponse
76
+ });
77
+ exports.createSafeFailureResponse = __webpack_exports__.createSafeFailureResponse;
78
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
79
+ "createSafeFailureResponse"
80
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
81
+ Object.defineProperty(exports, '__esModule', {
82
+ value: true
83
+ });
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
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");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
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");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -302,7 +306,7 @@ async function clientGenerator(draftOptions) {
302
306
  source: effectSource,
303
307
  relativeDistPath: draftOptions.relativeDistPath
304
308
  });
305
- const effectClientCode = await (0, external_effectClientGenerator_js_namespaceObject.generateEffectClientCode)({
309
+ const effectClientArtifacts = await (0, external_effectClientGenerator_js_namespaceObject.generateEffectClient)({
306
310
  appDir: draftOptions.appDir,
307
311
  apiDir: draftOptions.apiDir,
308
312
  resourcePath: effectEntryFile,
@@ -313,10 +317,10 @@ async function clientGenerator(draftOptions) {
313
317
  httpMethodDecider: draftOptions.httpMethodDecider,
314
318
  dataPlatformBatch: draftOptions.effectDataPlatformBatch
315
319
  });
316
- if (effectClientCode) {
320
+ if (effectClientArtifacts) {
317
321
  const targetTypeFile = effectFileDetails.targetDir.replace(/\.js$/, '.d.ts');
318
- await writeTargetFile(effectFileDetails.absTargetDir, effectClientCode);
319
- await writeTargetFile(external_path_default().resolve(targetTypeFile), (0, external_effectClientGenerator_js_namespaceObject.renderEffectClientDeclaration)());
322
+ await writeTargetFile(effectFileDetails.absTargetDir, effectClientArtifacts.code);
323
+ await writeTargetFile(external_path_default().resolve(targetTypeFile), effectClientArtifacts.declaration);
320
324
  generatedSourceList.push(effectFileDetails);
321
325
  }
322
326
  }
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
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");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
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");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -0,0 +1,104 @@
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
+ checkCrossProjectPolicyForRequest: ()=>checkCrossProjectPolicyForRequest,
41
+ checkCrossProjectPolicyResponse: ()=>checkCrossProjectPolicyResponse,
42
+ resolveAdapterCrossProjectPolicy: ()=>resolveAdapterCrossProjectPolicy
43
+ });
44
+ const bff_core_namespaceObject = require("@modern-js/bff-core");
45
+ const external_path_namespaceObject = require("path");
46
+ var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
47
+ const readNearestPackageVersion = (startDir)=>{
48
+ if (!startDir) return;
49
+ let current = external_path_default().resolve(startDir);
50
+ for(let depth = 0; depth < 10; depth += 1){
51
+ try {
52
+ const packageJson = require(external_path_default().join(current, 'package.json'));
53
+ if ('string' == typeof packageJson.version) return packageJson.version;
54
+ } catch {}
55
+ const parent = external_path_default().dirname(current);
56
+ if (parent === current) break;
57
+ current = parent;
58
+ }
59
+ };
60
+ const resolveAdapterCrossProjectPolicy = (api, handlers)=>{
61
+ const bff = api.getServerConfig()?.bff;
62
+ const { apiDirectory, appDirectory } = api.getServerContext();
63
+ return (0, bff_core_namespaceObject.resolveCrossProjectPolicy)({
64
+ crossProjectPolicy: bff?.crossProjectPolicy,
65
+ handlers,
66
+ requestId: bff?.requestId,
67
+ isCrossProjectServer: bff?.isCrossProjectServer,
68
+ operationVersion: (0, bff_core_namespaceObject.deriveOperationVersion)(readNearestPackageVersion(apiDirectory) ?? readNearestPackageVersion(appDirectory))
69
+ });
70
+ };
71
+ const DENIAL_HEADERS = {
72
+ 'content-type': 'application/json; charset=utf-8'
73
+ };
74
+ const checkCrossProjectPolicyResponse = (headers, policy)=>{
75
+ if (!policy?.enabled) return null;
76
+ const denial = (0, bff_core_namespaceObject.checkCrossProjectPolicy)(headers, policy);
77
+ if (!denial) return null;
78
+ return new Response(JSON.stringify(denial.body), {
79
+ status: denial.status,
80
+ headers: DENIAL_HEADERS
81
+ });
82
+ };
83
+ const toHeaderRecord = (headers)=>{
84
+ const record = {};
85
+ headers.forEach((value, key)=>{
86
+ record[key] = value;
87
+ });
88
+ return record;
89
+ };
90
+ const checkCrossProjectPolicyForRequest = (request, policy)=>{
91
+ if (!policy?.enabled) return null;
92
+ return checkCrossProjectPolicyResponse(toHeaderRecord(request.headers), policy);
93
+ };
94
+ exports.checkCrossProjectPolicyForRequest = __webpack_exports__.checkCrossProjectPolicyForRequest;
95
+ exports.checkCrossProjectPolicyResponse = __webpack_exports__.checkCrossProjectPolicyResponse;
96
+ exports.resolveAdapterCrossProjectPolicy = __webpack_exports__.resolveAdapterCrossProjectPolicy;
97
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
98
+ "checkCrossProjectPolicyForRequest",
99
+ "checkCrossProjectPolicyResponse",
100
+ "resolveAdapterCrossProjectPolicy"
101
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
102
+ Object.defineProperty(exports, '__esModule', {
103
+ value: true
104
+ });