@modern-js/plugin-bff 2.69.5 → 3.0.0-alpha.0

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 (76) hide show
  1. package/dist/cjs/cli.js +256 -272
  2. package/dist/cjs/constants.js +43 -34
  3. package/dist/cjs/index.js +55 -19
  4. package/dist/cjs/loader.js +69 -65
  5. package/dist/cjs/runtime/create-request/index.js +39 -29
  6. package/dist/cjs/runtime/hono/adapter.js +128 -126
  7. package/dist/cjs/runtime/hono/index.js +78 -30
  8. package/dist/cjs/runtime/hono/operators.js +64 -67
  9. package/dist/cjs/server.js +159 -165
  10. package/dist/cjs/utils/clientGenerator.js +204 -206
  11. package/dist/cjs/utils/createHonoRoutes.js +128 -144
  12. package/dist/cjs/utils/crossProjectApiPlugin.js +91 -81
  13. package/dist/cjs/utils/pluginGenerator.js +66 -54
  14. package/dist/cjs/utils/runtimeGenerator.js +67 -45
  15. package/dist/esm/cli.mjs +214 -0
  16. package/dist/esm/constants.mjs +11 -0
  17. package/dist/esm/loader.mjs +39 -0
  18. package/dist/esm/runtime/create-request/{index.js → index.mjs} +1 -5
  19. package/dist/esm/runtime/hono/adapter.mjs +95 -0
  20. package/dist/{esm-node/runtime/hono/index.js → esm/runtime/hono/index.mjs} +2 -4
  21. package/dist/esm/runtime/hono/operators.mjs +31 -0
  22. package/dist/esm/server.mjs +122 -0
  23. package/dist/esm/utils/clientGenerator.mjs +175 -0
  24. package/dist/esm/utils/createHonoRoutes.mjs +91 -0
  25. package/dist/esm/utils/crossProjectApiPlugin.mjs +34 -0
  26. package/dist/esm/utils/pluginGenerator.mjs +29 -0
  27. package/dist/esm/utils/runtimeGenerator.mjs +43 -0
  28. package/dist/esm-node/cli.mjs +214 -0
  29. package/dist/esm-node/constants.mjs +11 -0
  30. package/dist/esm-node/index.mjs +1 -0
  31. package/dist/esm-node/loader.mjs +39 -0
  32. package/dist/esm-node/runtime/create-request/{index.js → index.mjs} +1 -5
  33. package/dist/esm-node/runtime/hono/adapter.mjs +95 -0
  34. package/dist/{esm/runtime/hono/index.js → esm-node/runtime/hono/index.mjs} +3 -5
  35. package/dist/esm-node/runtime/hono/operators.mjs +31 -0
  36. package/dist/esm-node/server.mjs +122 -0
  37. package/dist/esm-node/utils/clientGenerator.mjs +175 -0
  38. package/dist/esm-node/utils/createHonoRoutes.mjs +91 -0
  39. package/dist/esm-node/utils/crossProjectApiPlugin.mjs +34 -0
  40. package/dist/esm-node/utils/pluginGenerator.mjs +29 -0
  41. package/dist/esm-node/utils/runtimeGenerator.mjs +43 -0
  42. package/dist/types/loader.d.ts +2 -2
  43. package/dist/types/runtime/hono/adapter.d.ts +3 -3
  44. package/dist/types/server.d.ts +2 -2
  45. package/dist/types/utils/runtimeGenerator.d.ts +2 -1
  46. package/package.json +53 -31
  47. package/rslib.config.mts +4 -0
  48. package/dist/cjs/helper.js +0 -48
  49. package/dist/esm/cli.js +0 -425
  50. package/dist/esm/constants.js +0 -14
  51. package/dist/esm/helper.js +0 -13
  52. package/dist/esm/index.js +0 -1
  53. package/dist/esm/loader.js +0 -75
  54. package/dist/esm/runtime/hono/adapter.js +0 -243
  55. package/dist/esm/runtime/hono/operators.js +0 -79
  56. package/dist/esm/server.js +0 -258
  57. package/dist/esm/utils/clientGenerator.js +0 -517
  58. package/dist/esm/utils/createHonoRoutes.js +0 -319
  59. package/dist/esm/utils/crossProjectApiPlugin.js +0 -49
  60. package/dist/esm/utils/pluginGenerator.js +0 -94
  61. package/dist/esm/utils/runtimeGenerator.js +0 -55
  62. package/dist/esm-node/cli.js +0 -246
  63. package/dist/esm-node/constants.js +0 -14
  64. package/dist/esm-node/helper.js +0 -14
  65. package/dist/esm-node/loader.js +0 -49
  66. package/dist/esm-node/runtime/hono/adapter.js +0 -103
  67. package/dist/esm-node/runtime/hono/operators.js +0 -46
  68. package/dist/esm-node/server.js +0 -142
  69. package/dist/esm-node/utils/clientGenerator.js +0 -192
  70. package/dist/esm-node/utils/createHonoRoutes.js +0 -120
  71. package/dist/esm-node/utils/crossProjectApiPlugin.js +0 -47
  72. package/dist/esm-node/utils/pluginGenerator.js +0 -31
  73. package/dist/esm-node/utils/runtimeGenerator.js +0 -35
  74. package/dist/types/helper.d.ts +0 -2
  75. package/types.d.ts +0 -3
  76. /package/dist/{esm-node/index.js → esm/index.mjs} +0 -0
@@ -1,319 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
3
- import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
4
- import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
5
- import { _ as _type_of } from "@swc/helpers/_/_type_of";
6
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
7
- import { HttpMetadata, ResponseMetaType, ValidationError, isWithMetaHandler } from "@modern-js/bff-core";
8
- import { parse } from "@modern-js/create-request/qs";
9
- import typeIs from "type-is";
10
- var createHonoRoutes = function() {
11
- var handlerInfos = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
12
- return handlerInfos.map(function(param) {
13
- var routePath = param.routePath, handler = param.handler, httpMethod = param.httpMethod;
14
- var routeMiddlwares = Reflect.getMetadata("middleware", handler) || [];
15
- var honoHandler = createHonoHandler(handler);
16
- return {
17
- method: httpMethod.toLowerCase(),
18
- path: routePath,
19
- handler: routeMiddlwares.length > 0 ? _to_consumable_array(routeMiddlwares).concat([
20
- honoHandler
21
- ]) : honoHandler
22
- };
23
- });
24
- };
25
- var handleResponseMeta = function(c, handler) {
26
- var responseMeta = Reflect.getMetadata(HttpMetadata.Response, handler);
27
- if (Array.isArray(responseMeta)) {
28
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
29
- try {
30
- for (var _iterator = responseMeta[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
31
- var meta = _step.value;
32
- switch (meta.type) {
33
- case ResponseMetaType.Headers:
34
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
35
- try {
36
- for (var _iterator1 = Object.entries(meta.value)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
37
- var _step_value = _sliced_to_array(_step1.value, 2), key = _step_value[0], value = _step_value[1];
38
- c.header(key, value);
39
- }
40
- } catch (err) {
41
- _didIteratorError1 = true;
42
- _iteratorError1 = err;
43
- } finally {
44
- try {
45
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
46
- _iterator1.return();
47
- }
48
- } finally {
49
- if (_didIteratorError1) {
50
- throw _iteratorError1;
51
- }
52
- }
53
- }
54
- break;
55
- case ResponseMetaType.Redirect:
56
- return c.redirect(meta.value);
57
- case ResponseMetaType.StatusCode:
58
- c.status(meta.value);
59
- break;
60
- default:
61
- break;
62
- }
63
- }
64
- } catch (err) {
65
- _didIteratorError = true;
66
- _iteratorError = err;
67
- } finally {
68
- try {
69
- if (!_iteratorNormalCompletion && _iterator.return != null) {
70
- _iterator.return();
71
- }
72
- } finally {
73
- if (_didIteratorError) {
74
- throw _iteratorError;
75
- }
76
- }
77
- }
78
- }
79
- return null;
80
- };
81
- var createHonoHandler = function(handler) {
82
- return function() {
83
- var _ref = _async_to_generator(function(c) {
84
- var input, response, result, error, _routePath_match, routePath, paramNames, params, args, body;
85
- return _ts_generator(this, function(_state) {
86
- switch (_state.label) {
87
- case 0:
88
- return [
89
- 4,
90
- getHonoInput(c)
91
- ];
92
- case 1:
93
- input = _state.sent();
94
- if (!isWithMetaHandler(handler))
95
- return [
96
- 3,
97
- 6
98
- ];
99
- _state.label = 2;
100
- case 2:
101
- _state.trys.push([
102
- 2,
103
- 4,
104
- ,
105
- 5
106
- ]);
107
- response = handleResponseMeta(c, handler);
108
- if (response) {
109
- return [
110
- 2,
111
- response
112
- ];
113
- }
114
- if (c.finalized)
115
- return [
116
- 2
117
- ];
118
- return [
119
- 4,
120
- handler(input)
121
- ];
122
- case 3:
123
- result = _state.sent();
124
- if (_instanceof(result, Response)) {
125
- return [
126
- 2,
127
- result
128
- ];
129
- }
130
- return [
131
- 2,
132
- result && (typeof result === "undefined" ? "undefined" : _type_of(result)) === "object" ? c.json(result) : c.body(result)
133
- ];
134
- case 4:
135
- error = _state.sent();
136
- if (_instanceof(error, ValidationError)) {
137
- c.status(error.status);
138
- return [
139
- 2,
140
- c.json({
141
- message: error.message
142
- })
143
- ];
144
- }
145
- throw error;
146
- case 5:
147
- return [
148
- 3,
149
- 10
150
- ];
151
- case 6:
152
- routePath = c.req.routePath;
153
- paramNames = ((_routePath_match = routePath.match(/:\w+/g)) === null || _routePath_match === void 0 ? void 0 : _routePath_match.map(function(s) {
154
- return s.slice(1);
155
- })) || [];
156
- params = Object.fromEntries(paramNames.map(function(name) {
157
- return [
158
- name,
159
- input.params[name]
160
- ];
161
- }));
162
- args = Object.values(params).concat(input);
163
- return [
164
- 4,
165
- handler.apply(void 0, _to_consumable_array(args))
166
- ];
167
- case 7:
168
- body = _state.sent();
169
- if (!c.finalized)
170
- return [
171
- 3,
172
- 9
173
- ];
174
- return [
175
- 4,
176
- Promise.resolve()
177
- ];
178
- case 8:
179
- return [
180
- 2,
181
- _state.sent()
182
- ];
183
- case 9:
184
- if (typeof body !== "undefined") {
185
- if (_instanceof(body, Response)) {
186
- return [
187
- 2,
188
- body
189
- ];
190
- }
191
- return [
192
- 2,
193
- c.json(body)
194
- ];
195
- }
196
- _state.label = 10;
197
- case 10:
198
- return [
199
- 2
200
- ];
201
- }
202
- });
203
- });
204
- return function(c) {
205
- return _ref.apply(this, arguments);
206
- };
207
- }();
208
- };
209
- var getHonoInput = function() {
210
- var _ref = _async_to_generator(function(c) {
211
- var draft, contentType, error;
212
- return _ts_generator(this, function(_state) {
213
- switch (_state.label) {
214
- case 0:
215
- draft = {
216
- params: c.req.param(),
217
- query: parse(c.req.query()),
218
- headers: c.req.header(),
219
- cookies: c.req.header("cookie")
220
- };
221
- _state.label = 1;
222
- case 1:
223
- _state.trys.push([
224
- 1,
225
- 10,
226
- ,
227
- 11
228
- ]);
229
- contentType = c.req.header("content-type") || "";
230
- if (!typeIs.is(contentType, [
231
- "application/json"
232
- ]))
233
- return [
234
- 3,
235
- 3
236
- ];
237
- return [
238
- 4,
239
- c.req.json()
240
- ];
241
- case 2:
242
- draft.data = _state.sent();
243
- return [
244
- 3,
245
- 9
246
- ];
247
- case 3:
248
- if (!typeIs.is(contentType, [
249
- "multipart/form-data"
250
- ]))
251
- return [
252
- 3,
253
- 5
254
- ];
255
- return [
256
- 4,
257
- c.req.parseBody()
258
- ];
259
- case 4:
260
- draft.formData = _state.sent();
261
- return [
262
- 3,
263
- 9
264
- ];
265
- case 5:
266
- if (!typeIs.is(contentType, [
267
- "application/x-www-form-urlencoded"
268
- ]))
269
- return [
270
- 3,
271
- 7
272
- ];
273
- return [
274
- 4,
275
- c.req.parseBody()
276
- ];
277
- case 6:
278
- draft.formUrlencoded = _state.sent();
279
- return [
280
- 3,
281
- 9
282
- ];
283
- case 7:
284
- return [
285
- 4,
286
- c.req.json()
287
- ];
288
- case 8:
289
- draft.body = _state.sent();
290
- _state.label = 9;
291
- case 9:
292
- return [
293
- 3,
294
- 11
295
- ];
296
- case 10:
297
- error = _state.sent();
298
- draft.body = null;
299
- return [
300
- 3,
301
- 11
302
- ];
303
- case 11:
304
- return [
305
- 2,
306
- draft
307
- ];
308
- }
309
- });
310
- });
311
- return function getHonoInput2(c) {
312
- return _ref.apply(this, arguments);
313
- };
314
- }();
315
- var createHonoRoutes_default = createHonoRoutes;
316
- export {
317
- createHonoHandler,
318
- createHonoRoutes_default as default
319
- };
@@ -1,49 +0,0 @@
1
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
- import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
- import path from "path";
4
- var PACKAGE_NAME = "{packageName}";
5
- var PREFIX = "{prefix}";
6
- var API_DIR = "{apiDirectory}";
7
- var LAMBDA_DIR = "{lambdaDirectory}";
8
- var DIST_DIR = "{distDirectory}";
9
- var NODE_MODULES = "node_modules";
10
- var crossProjectApiPlugin = function() {
11
- return {
12
- name: "@modern-js/plugin-independent-bff",
13
- post: [
14
- "@modern-js/plugin-bff"
15
- ],
16
- setup: function(api) {
17
- return {
18
- config: function config() {
19
- var _api_useAppContext = api.useAppContext(), originAppDirectory = _api_useAppContext.appDirectory;
20
- var sdkPath = path.join(originAppDirectory, NODE_MODULES, PACKAGE_NAME);
21
- var sdkDistPath = path.join(sdkPath, DIST_DIR);
22
- var apiDirectory = path.join(sdkDistPath, API_DIR);
23
- var lambdaDirectory = path.resolve(sdkDistPath, LAMBDA_DIR);
24
- var appContext = api.useAppContext();
25
- api.setAppContext(_object_spread_props(_object_spread({}, appContext), {
26
- apiDirectory,
27
- lambdaDirectory
28
- }));
29
- var config2 = api.useConfigContext();
30
- config2.bff = _object_spread_props(_object_spread({}, config2.bff), {
31
- prefix: PREFIX,
32
- isCrossProjectServer: true
33
- });
34
- return {};
35
- }
36
- };
37
- }
38
- };
39
- };
40
- var crossProjectApiPlugin_default = crossProjectApiPlugin;
41
- export {
42
- API_DIR,
43
- DIST_DIR,
44
- LAMBDA_DIR,
45
- PACKAGE_NAME,
46
- PREFIX,
47
- crossProjectApiPlugin,
48
- crossProjectApiPlugin_default as default
49
- };
@@ -1,94 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
- import path from "path";
4
- import { fs, logger } from "@modern-js/utils";
5
- import { API_DIR, DIST_DIR, LAMBDA_DIR, PACKAGE_NAME, PREFIX } from "./crossProjectApiPlugin";
6
- function replaceContent(source, packageName, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath) {
7
- var updatedSource = source.replace(new RegExp(PACKAGE_NAME, "g"), packageName).replace(new RegExp(PREFIX, "g"), prefix).replace(new RegExp(DIST_DIR, "g"), relativeDistPath).replace(new RegExp(API_DIR, "g"), relativeApiPath).replace(new RegExp(LAMBDA_DIR, "g"), relativeLambdaPath);
8
- return updatedSource;
9
- }
10
- function pluginGenerator(_) {
11
- return _pluginGenerator.apply(this, arguments);
12
- }
13
- function _pluginGenerator() {
14
- _pluginGenerator = _async_to_generator(function(param) {
15
- var prefix, appDirectory, relativeDistPath, relativeApiPath, relativeLambdaPath, packageContent, packageJson, pluginDir, pluginPath, pluginTemplate, updatedPlugin, typeContent, pluginTypePath, error;
16
- return _ts_generator(this, function(_state) {
17
- switch (_state.label) {
18
- case 0:
19
- prefix = param.prefix, appDirectory = param.appDirectory, relativeDistPath = param.relativeDistPath, relativeApiPath = param.relativeApiPath, relativeLambdaPath = param.relativeLambdaPath;
20
- _state.label = 1;
21
- case 1:
22
- _state.trys.push([
23
- 1,
24
- 8,
25
- ,
26
- 9
27
- ]);
28
- return [
29
- 4,
30
- fs.readFile(path.resolve(appDirectory, "./package.json"), "utf8")
31
- ];
32
- case 2:
33
- packageContent = _state.sent();
34
- packageJson = JSON.parse(packageContent);
35
- pluginDir = path.resolve(appDirectory, "./".concat(relativeDistPath), "plugin");
36
- pluginPath = path.join(pluginDir, "index.js");
37
- return [
38
- 4,
39
- fs.readFile(path.resolve(__dirname, "crossProjectApiPlugin.js"), "utf8")
40
- ];
41
- case 3:
42
- pluginTemplate = _state.sent();
43
- updatedPlugin = replaceContent(pluginTemplate, packageJson.name, prefix, relativeDistPath, relativeApiPath, relativeLambdaPath);
44
- return [
45
- 4,
46
- fs.ensureFile(pluginPath)
47
- ];
48
- case 4:
49
- _state.sent();
50
- return [
51
- 4,
52
- fs.writeFile(pluginPath, updatedPlugin)
53
- ];
54
- case 5:
55
- _state.sent();
56
- typeContent = "import type { AppTools, CliPlugin } from '@modern-js/app-tools';\n export declare const crossProjectApiPlugin: () => CliPlugin<AppTools>";
57
- pluginTypePath = path.join(pluginDir, "index.d.ts");
58
- return [
59
- 4,
60
- fs.ensureFile(pluginTypePath)
61
- ];
62
- case 6:
63
- _state.sent();
64
- return [
65
- 4,
66
- fs.writeFile(pluginTypePath, typeContent)
67
- ];
68
- case 7:
69
- _state.sent();
70
- logger.info("Api plugin generate succeed");
71
- return [
72
- 3,
73
- 9
74
- ];
75
- case 8:
76
- error = _state.sent();
77
- logger.error("Api plugin generate failed:", error);
78
- return [
79
- 3,
80
- 9
81
- ];
82
- case 9:
83
- return [
84
- 2
85
- ];
86
- }
87
- });
88
- });
89
- return _pluginGenerator.apply(this, arguments);
90
- }
91
- var pluginGenerator_default = pluginGenerator;
92
- export {
93
- pluginGenerator_default as default
94
- };
@@ -1,55 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
- import path from "path";
4
- import { fs } from "@modern-js/utils";
5
- function runtimeGenerator(_) {
6
- return _runtimeGenerator.apply(this, arguments);
7
- }
8
- function _runtimeGenerator() {
9
- _runtimeGenerator = _async_to_generator(function(param) {
10
- var runtime, appDirectory, relativeDistPath, pluginDir, source, pluginPath, tsSource, pluginTypePath;
11
- return _ts_generator(this, function(_state) {
12
- switch (_state.label) {
13
- case 0:
14
- runtime = param.runtime, appDirectory = param.appDirectory, relativeDistPath = param.relativeDistPath;
15
- pluginDir = path.resolve(appDirectory, "./".concat(relativeDistPath), "runtime");
16
- source = "import { configure as _configure } from '".concat(runtime, "'\n const configure = (options) => {\n return _configure({\n ...options,\n requestId: '").concat(process.env.npm_package_name, "',\n });\n }\n export { configure }\n ");
17
- pluginPath = path.join(pluginDir, "index.js");
18
- return [
19
- 4,
20
- fs.ensureFile(pluginPath)
21
- ];
22
- case 1:
23
- _state.sent();
24
- return [
25
- 4,
26
- fs.writeFile(pluginPath, source)
27
- ];
28
- case 2:
29
- _state.sent();
30
- tsSource = "type IOptions<F = typeof fetch> = {\n request?: F;\n interceptor?: (request: F) => F;\n allowedHeaders?: string[];\n setDomain?: (ops?: {\n target: 'node' | 'browser';\n requestId: string;\n }) => string;\n requestId?: string;\n };\n export declare const configure: (options: IOptions) => void;";
31
- pluginTypePath = path.join(pluginDir, "index.d.ts");
32
- return [
33
- 4,
34
- fs.ensureFile(pluginTypePath)
35
- ];
36
- case 3:
37
- _state.sent();
38
- return [
39
- 4,
40
- fs.writeFile(pluginTypePath, tsSource)
41
- ];
42
- case 4:
43
- _state.sent();
44
- return [
45
- 2
46
- ];
47
- }
48
- });
49
- });
50
- return _runtimeGenerator.apply(this, arguments);
51
- }
52
- var runtimeGenerator_default = runtimeGenerator;
53
- export {
54
- runtimeGenerator_default as default
55
- };