@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.
@@ -1,35 +1,92 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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
- exports.isNormalMethod = exports.createRouteHandler = void 0;
7
- require("reflect-metadata");
8
- var _bffCore = require("@modern-js/bff-core");
9
- var _bffRuntime = require("@modern-js/bff-runtime");
10
- var _typeIs = _interopRequireDefault(require("type-is"));
11
- var _formidable = _interopRequireDefault(require("formidable"));
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; }
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(_bffCore.HttpMetadata.Response, handler);
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 _bffCore.ResponseMetaType.Headers:
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 _bffCore.ResponseMetaType.Redirect:
86
+ case import_bff_core.ResponseMetaType.Redirect:
30
87
  res.redirect(metaValue);
31
88
  break;
32
- case _bffCore.ResponseMetaType.StatusCode:
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 = async (req, res, next) => {
43
- const input = await getInputFromRequest(req);
44
- if ((0, _bffCore.isWithMetaHandler)(handler)) {
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 = await handler(input);
51
- if (result && typeof result === 'object') {
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 _bffCore.ValidationError) {
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, _bffRuntime.isSchemaHandler)(handler)) {
66
- const result = await handler(input);
67
- if (result.type !== 'HandleSuccess') {
68
- if (result.type === 'InputValidationError') {
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 = await handler(...args);
84
-
85
- // this should never happen
136
+ const body = yield handler(...args);
86
137
  if (res.headersSent) {
87
- // eslint-disable-next-line consistent-return
88
- return await Promise.resolve();
138
+ return yield Promise.resolve();
89
139
  }
90
- if (typeof body !== 'undefined') {
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(apiHandler, Object.getOwnPropertyDescriptors(handler));
147
+ });
148
+ Object.defineProperties(
149
+ apiHandler,
150
+ Object.getOwnPropertyDescriptors(handler)
151
+ );
101
152
  return apiHandler;
102
153
  };
103
- exports.createRouteHandler = createRouteHandler;
104
- const isNormalMethod = httpMethod => _bffCore.httpMethods.includes(httpMethod);
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, _typeIs.default)(request, ['application/json'])) {
162
+ if ((0, import_type_is.default)(request, ["application/json"])) {
114
163
  draft.data = request.body;
115
- } else if ((0, _typeIs.default)(request, ['multipart/form-data'])) {
116
- draft.formData = await resolveFormData(request);
117
- } else if ((0, _typeIs.default)(request, ['application/x-www-form-urlencoded'])) {
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, _formidable.default)({
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(_objectSpread(_objectSpread({}, fields), files));
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,3 @@
1
+ import { createStorage } from "@modern-js/bff-core";
2
+ var ref = createStorage(), run = ref.run, useContext = ref.useContext;
3
+ export { run, useContext };
@@ -0,0 +1,4 @@
1
+ import plugin from "./plugin";
2
+ export * from "./context";
3
+ var src_default = plugin;
4
+ export { src_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 };