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