@modern-js/plugin-express 2.0.0-beta.3 → 2.0.0-beta.6

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.
@@ -0,0 +1,379 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import * as path from "path";
126
+ import express from "express";
127
+ import cookieParser from "cookie-parser";
128
+ import { fs, createDebugger, compatRequire } from "@modern-js/utils";
129
+ import finalhandler from "finalhandler";
130
+ import { run } from "./context";
131
+ import registerRoutes from "./registerRoutes";
132
+ var debug = createDebugger("express");
133
+ var findAppModule = function() {
134
+ var _ref = _asyncToGenerator(function(apiDir) {
135
+ var exts, paths, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, filename, err;
136
+ return __generator(this, function(_state) {
137
+ switch(_state.label){
138
+ case 0:
139
+ exts = [
140
+ ".ts",
141
+ ".js"
142
+ ];
143
+ paths = exts.map(function(ext) {
144
+ return path.resolve(apiDir, "app".concat(ext));
145
+ });
146
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
147
+ _state.label = 1;
148
+ case 1:
149
+ _state.trys.push([
150
+ 1,
151
+ 6,
152
+ 7,
153
+ 8
154
+ ]);
155
+ _iterator = paths[Symbol.iterator]();
156
+ _state.label = 2;
157
+ case 2:
158
+ if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
159
+ 3,
160
+ 5
161
+ ];
162
+ filename = _step.value;
163
+ return [
164
+ 4,
165
+ fs.pathExists(filename)
166
+ ];
167
+ case 3:
168
+ if (_state.sent()) {
169
+ delete require.cache[filename];
170
+ return [
171
+ 2,
172
+ [
173
+ compatRequire(filename),
174
+ require(filename)
175
+ ]
176
+ ];
177
+ }
178
+ _state.label = 4;
179
+ case 4:
180
+ _iteratorNormalCompletion = true;
181
+ return [
182
+ 3,
183
+ 2
184
+ ];
185
+ case 5:
186
+ return [
187
+ 3,
188
+ 8
189
+ ];
190
+ case 6:
191
+ err = _state.sent();
192
+ _didIteratorError = true;
193
+ _iteratorError = err;
194
+ return [
195
+ 3,
196
+ 8
197
+ ];
198
+ case 7:
199
+ try {
200
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
201
+ _iterator.return();
202
+ }
203
+ } finally{
204
+ if (_didIteratorError) {
205
+ throw _iteratorError;
206
+ }
207
+ }
208
+ return [
209
+ 7
210
+ ];
211
+ case 8:
212
+ return [
213
+ 2,
214
+ []
215
+ ];
216
+ }
217
+ });
218
+ });
219
+ return function findAppModule(apiDir) {
220
+ return _ref.apply(this, arguments);
221
+ };
222
+ }();
223
+ var initMiddlewares = function(middleware, app) {
224
+ middleware.forEach(function(middlewareItem) {
225
+ var middlewareFunc = typeof middlewareItem === "string" ? compatRequire(middlewareItem) : middlewareItem;
226
+ app.use(middlewareFunc);
227
+ });
228
+ };
229
+ var useRun = function(app) {
230
+ app.use(function(req, res, next) {
231
+ run({
232
+ req: req,
233
+ res: res
234
+ }, next);
235
+ });
236
+ };
237
+ var initApp = function(app) {
238
+ app.use(cookieParser());
239
+ app.use(express.text());
240
+ app.use(express.urlencoded({
241
+ extended: true
242
+ }));
243
+ app.use(express.json());
244
+ return app;
245
+ };
246
+ var plugin_default = function() {
247
+ return {
248
+ name: "@modern-js/plugin-express",
249
+ pre: [
250
+ "@modern-js/plugin-bff"
251
+ ],
252
+ post: [
253
+ "@modern-js/plugin-server"
254
+ ],
255
+ setup: function(api) {
256
+ return {
257
+ prepareApiServer: function prepareApiServer(param) {
258
+ var pwd = param.pwd, config = param.config;
259
+ return _asyncToGenerator(function() {
260
+ var app, apiDir, appContext, apiHandlerInfos, mode, appModule, hooks, middleware, afterLambdaRegisted, middleware1;
261
+ return __generator(this, function(_state) {
262
+ switch(_state.label){
263
+ case 0:
264
+ apiDir = path.join(pwd, "./api");
265
+ appContext = api.useAppContext();
266
+ apiHandlerInfos = appContext.apiHandlerInfos;
267
+ mode = appContext.apiMode;
268
+ if (!(mode === "framework")) return [
269
+ 3,
270
+ 2
271
+ ];
272
+ return [
273
+ 4,
274
+ findAppModule(apiDir)
275
+ ];
276
+ case 1:
277
+ appModule = _state.sent();
278
+ app = appModule[0];
279
+ hooks = appModule[1];
280
+ if (!app || !app.use) {
281
+ app = express();
282
+ }
283
+ initApp(app);
284
+ if (config) {
285
+ middleware = config.middleware;
286
+ initMiddlewares(middleware, app);
287
+ }
288
+ useRun(app);
289
+ registerRoutes(app, apiHandlerInfos);
290
+ if (hooks) {
291
+ afterLambdaRegisted = hooks.afterLambdaRegisted;
292
+ if (afterLambdaRegisted) {
293
+ afterLambdaRegisted(app);
294
+ }
295
+ }
296
+ return [
297
+ 3,
298
+ 3
299
+ ];
300
+ case 2:
301
+ if (mode === "function") {
302
+ app = express();
303
+ initApp(app);
304
+ if (config) {
305
+ middleware1 = config.middleware;
306
+ initMiddlewares(middleware1, app);
307
+ }
308
+ useRun(app);
309
+ registerRoutes(app, apiHandlerInfos);
310
+ } else {
311
+ throw new Error("mode must be function or framework");
312
+ }
313
+ _state.label = 3;
314
+ case 3:
315
+ return [
316
+ 2,
317
+ function(req, res) {
318
+ return new Promise(function(resolve, reject) {
319
+ var handler = function(err) {
320
+ if (err) {
321
+ return reject(err);
322
+ }
323
+ return finalhandler(req, res, {})(null);
324
+ };
325
+ res.on("finish", function(err) {
326
+ if (err) {
327
+ return reject(err);
328
+ }
329
+ return resolve();
330
+ });
331
+ return app(req, res, handler);
332
+ });
333
+ }
334
+ ];
335
+ }
336
+ });
337
+ })();
338
+ },
339
+ prepareWebServer: function prepareWebServer(param, next) {
340
+ var config = param.config;
341
+ var ref;
342
+ var userConfig = api.useConfigContext();
343
+ if (userConfig === null || userConfig === void 0 ? void 0 : (ref = userConfig.server) === null || ref === void 0 ? void 0 : ref.disableFrameworkExt) {
344
+ return next();
345
+ }
346
+ var app = express();
347
+ initApp(app);
348
+ if (config) {
349
+ var middleware = config.middleware;
350
+ debug("web middleware", middleware);
351
+ initMiddlewares(middleware, app);
352
+ }
353
+ return function(ctx) {
354
+ return new Promise(function(resolve, reject) {
355
+ var _source = ctx.source, req = _source.req, res = _source.res;
356
+ var handler = function(err) {
357
+ if (err) {
358
+ return reject(err);
359
+ }
360
+ if (res.headersSent && res.statusCode !== 200) {
361
+ finalhandler(req, res, {})(null);
362
+ }
363
+ return resolve();
364
+ };
365
+ res.on("finish", function(err) {
366
+ if (err) {
367
+ return reject(err);
368
+ }
369
+ return resolve();
370
+ });
371
+ return app(req, res, handler);
372
+ });
373
+ };
374
+ }
375
+ };
376
+ }
377
+ };
378
+ };
379
+ export { plugin_default as default };
@@ -0,0 +1,17 @@
1
+ import "reflect-metadata";
2
+ import { createRouteHandler } from "./utils";
3
+ var registerRoutes = function(app, handlerInfos) {
4
+ handlerInfos.forEach(function(param) {
5
+ var routePath = param.routePath, handler = param.handler, httpMethod = param.httpMethod;
6
+ var routeHandler = createRouteHandler(handler);
7
+ var method = httpMethod.toLowerCase();
8
+ var routeMiddlwares = Reflect.getMetadata("middleware", handler) || [];
9
+ if (routeMiddlwares.length > 0) {
10
+ app[method](routePath, routeMiddlwares, routeHandler);
11
+ } else {
12
+ app[method](routePath, routeHandler);
13
+ }
14
+ });
15
+ };
16
+ var registerRoutes_default = registerRoutes;
17
+ export { registerRoutes_default as default };
@@ -0,0 +1,4 @@
1
+ var hook = function(attacher) {
2
+ return attacher;
3
+ };
4
+ export { hook };
@@ -0,0 +1,5 @@
1
+ export * from "@modern-js/bff-core";
2
+ import { useContext } from "../context";
3
+ import { hook } from "./hook";
4
+ export * from "./operators";
5
+ export { hook, useContext };
@@ -0,0 +1,197 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g;
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import { useContext } from "../context";
126
+ var Pipe = function(func) {
127
+ return {
128
+ name: "pipe",
129
+ execute: function execute(executeHelper, next) {
130
+ return _asyncToGenerator(function() {
131
+ var inputs, ctx, res, isPiped, end, output;
132
+ return __generator(this, function(_state) {
133
+ switch(_state.label){
134
+ case 0:
135
+ inputs = executeHelper.inputs;
136
+ ctx = useContext();
137
+ res = ctx.res;
138
+ if (!(typeof func === "function")) return [
139
+ 3,
140
+ 3
141
+ ];
142
+ isPiped = true;
143
+ end = function(value) {
144
+ isPiped = false;
145
+ if (typeof value === "function") {
146
+ value(res);
147
+ return;
148
+ }
149
+ return value;
150
+ };
151
+ return [
152
+ 4,
153
+ func(inputs, end)
154
+ ];
155
+ case 1:
156
+ output = _state.sent();
157
+ if (!isPiped) {
158
+ if (output) {
159
+ return [
160
+ 2,
161
+ executeHelper.result = output
162
+ ];
163
+ } else {
164
+ return [
165
+ 2
166
+ ];
167
+ }
168
+ }
169
+ executeHelper.inputs = output;
170
+ return [
171
+ 4,
172
+ next()
173
+ ];
174
+ case 2:
175
+ _state.sent();
176
+ _state.label = 3;
177
+ case 3:
178
+ return [
179
+ 2
180
+ ];
181
+ }
182
+ });
183
+ })();
184
+ }
185
+ };
186
+ };
187
+ var Middleware = function(middleware) {
188
+ return {
189
+ name: "middleware",
190
+ metadata: function metadata(helper) {
191
+ var middlewares = helper.getMetadata("pipe") || [];
192
+ middlewares.push(middleware);
193
+ helper.setMetadata("middleware", middlewares);
194
+ }
195
+ };
196
+ };
197
+ export { Middleware, Pipe };