@modern-js/plugin-express 2.0.0-beta.2 → 2.0.0-beta.4
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.
- package/CHANGELOG.md +86 -0
- package/dist/js/modern/cli/index.js +34 -23
- package/dist/js/modern/context.js +4 -4
- package/dist/js/modern/index.js +4 -1
- package/dist/js/modern/plugin.js +105 -108
- package/dist/js/modern/registerRoutes.js +7 -8
- package/dist/js/modern/runtime/hook.js +4 -1
- package/dist/js/modern/runtime/index.js +8 -4
- package/dist/js/modern/runtime/operators.js +55 -41
- package/dist/js/modern/utils.js +82 -45
- package/dist/js/node/cli/index.js +57 -30
- package/dist/js/node/context.js +24 -12
- package/dist/js/node/index.js +31 -22
- package/dist/js/node/plugin.js +136 -124
- package/dist/js/node/registerRoutes.js +27 -16
- package/dist/js/node/runtime/hook.js +22 -7
- package/dist/js/node/runtime/index.js +25 -44
- package/dist/js/node/runtime/operators.js +74 -48
- package/dist/js/node/utils.js +106 -59
- package/dist/js/treeshaking/cli/index.js +49 -0
- package/dist/js/treeshaking/context.js +3 -0
- package/dist/js/treeshaking/index.js +4 -0
- package/dist/js/treeshaking/plugin.js +379 -0
- package/dist/js/treeshaking/registerRoutes.js +17 -0
- package/dist/js/treeshaking/runtime/hook.js +4 -0
- package/dist/js/treeshaking/runtime/index.js +5 -0
- package/dist/js/treeshaking/runtime/operators.js +197 -0
- package/dist/js/treeshaking/utils.js +514 -0
- package/dist/types/cli/index.d.ts +2 -0
- package/dist/types/plugin.d.ts +2 -0
- package/package.json +9 -14
- package/types.d.ts +2 -0
package/dist/js/node/utils.js
CHANGED
|
@@ -1,35 +1,92 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
createRouteHandler: () => createRouteHandler,
|
|
27
|
+
isNormalMethod: () => isNormalMethod
|
|
5
28
|
});
|
|
6
|
-
|
|
7
|
-
require("reflect-metadata");
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
30
|
+
var import_reflect_metadata = require("reflect-metadata");
|
|
31
|
+
var import_bff_core = require("@modern-js/bff-core");
|
|
32
|
+
var import_bff_runtime = require("@modern-js/bff-runtime");
|
|
33
|
+
var import_type_is = __toESM(require("type-is"));
|
|
34
|
+
var import_formidable = __toESM(require("formidable"));
|
|
35
|
+
var __defProp2 = Object.defineProperty;
|
|
36
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
37
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
38
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
39
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
40
|
+
var __spreadValues = (a, b) => {
|
|
41
|
+
for (var prop in b || (b = {}))
|
|
42
|
+
if (__hasOwnProp2.call(b, prop))
|
|
43
|
+
__defNormalProp(a, prop, b[prop]);
|
|
44
|
+
if (__getOwnPropSymbols)
|
|
45
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
46
|
+
if (__propIsEnum.call(b, prop))
|
|
47
|
+
__defNormalProp(a, prop, b[prop]);
|
|
48
|
+
}
|
|
49
|
+
return a;
|
|
50
|
+
};
|
|
51
|
+
var __async = (__this, __arguments, generator) => {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
var fulfilled = (value) => {
|
|
54
|
+
try {
|
|
55
|
+
step(generator.next(value));
|
|
56
|
+
} catch (e) {
|
|
57
|
+
reject(e);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var rejected = (value) => {
|
|
61
|
+
try {
|
|
62
|
+
step(generator.throw(value));
|
|
63
|
+
} catch (e) {
|
|
64
|
+
reject(e);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
68
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
69
|
+
});
|
|
70
|
+
};
|
|
16
71
|
const handleResponseMeta = (res, handler) => {
|
|
17
|
-
const responseMeta = Reflect.getMetadata(
|
|
72
|
+
const responseMeta = Reflect.getMetadata(
|
|
73
|
+
import_bff_core.HttpMetadata.Response,
|
|
74
|
+
handler
|
|
75
|
+
);
|
|
18
76
|
if (Array.isArray(responseMeta)) {
|
|
19
77
|
for (const meta of responseMeta) {
|
|
20
78
|
const metaType = meta.type;
|
|
21
79
|
const metaValue = meta.value;
|
|
22
80
|
switch (metaType) {
|
|
23
|
-
case
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
81
|
+
case import_bff_core.ResponseMetaType.Headers:
|
|
25
82
|
for (const [key, value] of Object.entries(metaValue)) {
|
|
26
83
|
res.append(key, value);
|
|
27
84
|
}
|
|
28
85
|
break;
|
|
29
|
-
case
|
|
86
|
+
case import_bff_core.ResponseMetaType.Redirect:
|
|
30
87
|
res.redirect(metaValue);
|
|
31
88
|
break;
|
|
32
|
-
case
|
|
89
|
+
case import_bff_core.ResponseMetaType.StatusCode:
|
|
33
90
|
res.status(metaValue);
|
|
34
91
|
break;
|
|
35
92
|
default:
|
|
@@ -38,99 +95,89 @@ const handleResponseMeta = (res, handler) => {
|
|
|
38
95
|
}
|
|
39
96
|
}
|
|
40
97
|
};
|
|
41
|
-
const createRouteHandler = handler => {
|
|
42
|
-
const apiHandler =
|
|
43
|
-
const input =
|
|
44
|
-
if ((0,
|
|
98
|
+
const createRouteHandler = (handler) => {
|
|
99
|
+
const apiHandler = (req, res, next) => __async(void 0, null, function* () {
|
|
100
|
+
const input = yield getInputFromRequest(req);
|
|
101
|
+
if ((0, import_bff_core.isWithMetaHandler)(handler)) {
|
|
45
102
|
try {
|
|
46
103
|
handleResponseMeta(res, handler);
|
|
47
104
|
if (res.headersSent) {
|
|
48
105
|
return;
|
|
49
106
|
}
|
|
50
|
-
const result =
|
|
51
|
-
if (result && typeof result ===
|
|
52
|
-
// eslint-disable-next-line consistent-return
|
|
107
|
+
const result = yield handler(input);
|
|
108
|
+
if (result && typeof result === "object") {
|
|
53
109
|
return res.json(result);
|
|
54
110
|
}
|
|
55
111
|
} catch (error) {
|
|
56
|
-
if (error instanceof
|
|
112
|
+
if (error instanceof import_bff_core.ValidationError) {
|
|
57
113
|
res.status(error.status);
|
|
58
|
-
// eslint-disable-next-line consistent-return
|
|
59
114
|
return res.json({
|
|
60
115
|
message: error.message
|
|
61
116
|
});
|
|
62
117
|
}
|
|
63
118
|
throw error;
|
|
64
119
|
}
|
|
65
|
-
} else if ((0,
|
|
66
|
-
const result =
|
|
67
|
-
if (result.type !==
|
|
68
|
-
if (result.type ===
|
|
120
|
+
} else if ((0, import_bff_runtime.isSchemaHandler)(handler)) {
|
|
121
|
+
const result = yield handler(input);
|
|
122
|
+
if (result.type !== "HandleSuccess") {
|
|
123
|
+
if (result.type === "InputValidationError") {
|
|
69
124
|
res.status(400);
|
|
70
125
|
} else {
|
|
71
126
|
res.status(500);
|
|
72
127
|
}
|
|
73
|
-
// eslint-disable-next-line consistent-return
|
|
74
128
|
return res.json(result.message);
|
|
75
129
|
} else {
|
|
76
130
|
res.status(200);
|
|
77
|
-
// eslint-disable-next-line consistent-return
|
|
78
131
|
return res.json(result.value);
|
|
79
132
|
}
|
|
80
133
|
} else {
|
|
81
134
|
const args = Object.values(input.params).concat(input);
|
|
82
135
|
try {
|
|
83
|
-
const body =
|
|
84
|
-
|
|
85
|
-
// this should never happen
|
|
136
|
+
const body = yield handler(...args);
|
|
86
137
|
if (res.headersSent) {
|
|
87
|
-
|
|
88
|
-
return await Promise.resolve();
|
|
138
|
+
return yield Promise.resolve();
|
|
89
139
|
}
|
|
90
|
-
if (typeof body !==
|
|
91
|
-
// eslint-disable-next-line consistent-return
|
|
140
|
+
if (typeof body !== "undefined") {
|
|
92
141
|
return res.json(body);
|
|
93
142
|
}
|
|
94
143
|
} catch (e) {
|
|
95
|
-
// eslint-disable-next-line consistent-return
|
|
96
144
|
return next(e);
|
|
97
145
|
}
|
|
98
146
|
}
|
|
99
|
-
};
|
|
100
|
-
Object.defineProperties(
|
|
147
|
+
});
|
|
148
|
+
Object.defineProperties(
|
|
149
|
+
apiHandler,
|
|
150
|
+
Object.getOwnPropertyDescriptors(handler)
|
|
151
|
+
);
|
|
101
152
|
return apiHandler;
|
|
102
153
|
};
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
exports.isNormalMethod = isNormalMethod;
|
|
106
|
-
const getInputFromRequest = async request => {
|
|
154
|
+
const isNormalMethod = (httpMethod) => import_bff_core.httpMethods.includes(httpMethod);
|
|
155
|
+
const getInputFromRequest = (request) => __async(void 0, null, function* () {
|
|
107
156
|
const draft = {
|
|
108
157
|
params: request.params,
|
|
109
158
|
query: request.query,
|
|
110
159
|
headers: request.headers,
|
|
111
160
|
cookies: request.headers.cookie
|
|
112
161
|
};
|
|
113
|
-
if ((0,
|
|
162
|
+
if ((0, import_type_is.default)(request, ["application/json"])) {
|
|
114
163
|
draft.data = request.body;
|
|
115
|
-
} else if ((0,
|
|
116
|
-
draft.formData =
|
|
117
|
-
} else if ((0,
|
|
164
|
+
} else if ((0, import_type_is.default)(request, ["multipart/form-data"])) {
|
|
165
|
+
draft.formData = yield resolveFormData(request);
|
|
166
|
+
} else if ((0, import_type_is.default)(request, ["application/x-www-form-urlencoded"])) {
|
|
118
167
|
draft.formUrlencoded = request.body;
|
|
119
168
|
} else {
|
|
120
169
|
draft.body = request.body;
|
|
121
170
|
}
|
|
122
171
|
return draft;
|
|
123
|
-
};
|
|
124
|
-
const resolveFormData = request => {
|
|
125
|
-
const form = (0,
|
|
126
|
-
multiples: true
|
|
127
|
-
});
|
|
172
|
+
});
|
|
173
|
+
const resolveFormData = (request) => {
|
|
174
|
+
const form = (0, import_formidable.default)({ multiples: true });
|
|
128
175
|
return new Promise((resolve, reject) => {
|
|
129
176
|
form.parse(request, (err, fields, files) => {
|
|
130
177
|
if (err) {
|
|
131
178
|
reject(err);
|
|
132
179
|
}
|
|
133
|
-
resolve(
|
|
180
|
+
resolve(__spreadValues(__spreadValues({}, fields), files));
|
|
134
181
|
});
|
|
135
182
|
});
|
|
136
|
-
};
|
|
183
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { createRuntimeExportsUtils } from "@modern-js/utils";
|
|
3
|
+
import { getRelativeRuntimePath } from "@modern-js/bff-core";
|
|
4
|
+
var cli_default = function() {
|
|
5
|
+
return {
|
|
6
|
+
name: "@modern-js/plugin-express",
|
|
7
|
+
setup: function(api) {
|
|
8
|
+
var bffExportsUtils;
|
|
9
|
+
var useAppContext = api.useAppContext;
|
|
10
|
+
var runtimeModulePath = path.resolve(__dirname, "../runtime");
|
|
11
|
+
return {
|
|
12
|
+
config: function config() {
|
|
13
|
+
var appContext = useAppContext();
|
|
14
|
+
var appDirectory = appContext.appDirectory;
|
|
15
|
+
bffExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, "server");
|
|
16
|
+
var serverRuntimePath = bffExportsUtils.getPath();
|
|
17
|
+
var relativeRuntimePath = getRelativeRuntimePath(appDirectory, serverRuntimePath);
|
|
18
|
+
if (process.env.NODE_ENV === "production") {
|
|
19
|
+
return {
|
|
20
|
+
source: {
|
|
21
|
+
alias: {
|
|
22
|
+
"@modern-js/runtime/server": relativeRuntimePath,
|
|
23
|
+
"@modern-js/runtime/express": relativeRuntimePath
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
} else {
|
|
28
|
+
return {
|
|
29
|
+
source: {
|
|
30
|
+
alias: {
|
|
31
|
+
"@modern-js/runtime/server": serverRuntimePath,
|
|
32
|
+
"@modern-js/runtime/express": serverRuntimePath
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
addRuntimeExports: function addRuntimeExports(input) {
|
|
39
|
+
var currentFile = bffExportsUtils.getPath();
|
|
40
|
+
var relativeRuntimeModulePath = path.relative(path.dirname(currentFile), runtimeModulePath);
|
|
41
|
+
var relativeFramePath = path.relative(path.dirname(currentFile), require.resolve("express"));
|
|
42
|
+
bffExportsUtils.addExport("const pluginRuntime = require('".concat(relativeRuntimeModulePath, "');\n const express = require('").concat(relativeFramePath, "')\n module.exports = {\n express: express,\n ...pluginRuntime\n }\n "));
|
|
43
|
+
return input;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export { cli_default as default };
|
|
@@ -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 };
|