@modern-js/server 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.
Files changed (62) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/dist/js/modern/constants.js +10 -9
  3. package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +14 -20
  4. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -19
  5. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +134 -184
  6. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  7. package/dist/js/modern/dev-tools/dev-middleware/index.js +65 -60
  8. package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +33 -59
  9. package/dist/js/modern/dev-tools/https/global.d.js +0 -0
  10. package/dist/js/modern/dev-tools/https/index.js +28 -5
  11. package/dist/js/modern/dev-tools/mock/getMockData.js +71 -45
  12. package/dist/js/modern/dev-tools/mock/index.js +34 -15
  13. package/dist/js/modern/dev-tools/register/index.js +71 -55
  14. package/dist/js/modern/dev-tools/watcher/dependency-tree.js +25 -34
  15. package/dist/js/modern/dev-tools/watcher/index.js +51 -33
  16. package/dist/js/modern/dev-tools/watcher/stats-cache.js +13 -20
  17. package/dist/js/modern/index.js +7 -4
  18. package/dist/js/modern/server/dev-server.js +194 -216
  19. package/dist/js/modern/server/index.js +7 -4
  20. package/dist/js/node/constants.js +27 -14
  21. package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +36 -24
  22. package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +31 -24
  23. package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +56 -98
  24. package/dist/js/node/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  25. package/dist/js/node/dev-tools/dev-middleware/index.js +94 -72
  26. package/dist/js/node/dev-tools/dev-middleware/socket-server.js +57 -66
  27. package/dist/js/node/dev-tools/https/global.d.js +0 -0
  28. package/dist/js/node/dev-tools/https/index.js +52 -13
  29. package/dist/js/node/dev-tools/mock/getMockData.js +88 -51
  30. package/dist/js/node/dev-tools/mock/index.js +62 -28
  31. package/dist/js/node/dev-tools/register/index.js +98 -65
  32. package/dist/js/node/dev-tools/watcher/dependency-tree.js +50 -43
  33. package/dist/js/node/dev-tools/watcher/index.js +79 -47
  34. package/dist/js/node/dev-tools/watcher/stats-cache.js +40 -30
  35. package/dist/js/node/index.js +25 -15
  36. package/dist/js/node/server/dev-server.js +235 -236
  37. package/dist/js/node/server/index.js +26 -11
  38. package/dist/js/treeshaking/constants.js +21 -0
  39. package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +74 -0
  40. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +51 -0
  41. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +157 -0
  42. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/types.d.js +1 -0
  43. package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +363 -0
  44. package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +209 -0
  45. package/dist/js/treeshaking/dev-tools/https/global.d.js +1 -0
  46. package/dist/js/treeshaking/dev-tools/https/index.js +161 -0
  47. package/dist/js/treeshaking/dev-tools/mock/getMockData.js +327 -0
  48. package/dist/js/treeshaking/dev-tools/mock/index.js +191 -0
  49. package/dist/js/treeshaking/dev-tools/register/index.js +153 -0
  50. package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +150 -0
  51. package/dist/js/treeshaking/dev-tools/watcher/index.js +200 -0
  52. package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +128 -0
  53. package/dist/js/treeshaking/index.js +9 -0
  54. package/dist/js/treeshaking/server/dev-server.js +800 -0
  55. package/dist/js/treeshaking/server/index.js +92 -0
  56. package/dist/js/treeshaking/types.js +1 -0
  57. package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
  58. package/dist/types/dev-tools/watcher/dependency-tree.d.ts +2 -0
  59. package/dist/types/dev-tools/watcher/index.d.ts +1 -17
  60. package/dist/types/index.d.ts +2 -0
  61. package/package.json +19 -16
  62. package/temp-fix-hmr.js +483 -0
@@ -1,59 +1,71 @@
1
- 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; }
2
- 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; }
3
- 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; }
4
- import { EventEmitter } from 'events';
5
- import webpackDevMiddleware from '@modern-js/utils/webpack-dev-middleware';
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+ import { EventEmitter } from "events";
38
+ import webpackDevMiddleware from "@modern-js/utils/webpack-dev-middleware";
6
39
  import DevServerPlugin from "./dev-server-plugin";
7
40
  import SocketServer from "./socket-server";
8
41
  const noop = () => {
9
- // noop
10
42
  };
11
- export default class DevMiddleware extends EventEmitter {
12
- constructor({
13
- compiler,
14
- dev,
15
- devMiddleware
16
- }) {
43
+ class DevMiddleware extends EventEmitter {
44
+ constructor({ compiler, dev, devMiddleware }) {
17
45
  super();
18
- _defineProperty(this, "middleware", void 0);
19
- _defineProperty(this, "compiler", void 0);
20
- _defineProperty(this, "devOptions", void 0);
21
- _defineProperty(this, "socketServer", void 0);
22
46
  this.compiler = compiler;
23
47
  this.devOptions = dev;
24
-
25
- // init socket server
26
48
  this.socketServer = new SocketServer(dev);
27
-
28
- // Todo: should remove after abstract dev middleware
29
49
  if (this.compiler) {
30
- // setup compiler in server, also add dev-middleware to handler static file in memory
31
- // set up plugin to each compiler
32
50
  this.setupDevServerPlugin();
33
- // register hooks for each compilation, update socket stats if recompiled
34
51
  this.setupHooks();
35
- // start dev middleware
36
52
  this.middleware = this.setupDevMiddleware(devMiddleware);
37
53
  }
38
54
  }
39
55
  init(app) {
40
- app.on('listening', () => {
56
+ app.on("listening", () => {
41
57
  this.socketServer.prepare(app);
42
58
  });
43
- app.on('close', async () => {
44
- var _this$middleware;
45
- (_this$middleware = this.middleware) === null || _this$middleware === void 0 ? void 0 : _this$middleware.close(noop);
59
+ app.on("close", () => __async(this, null, function* () {
60
+ var _a;
61
+ (_a = this.middleware) == null ? void 0 : _a.close(noop);
46
62
  this.socketServer.close();
47
- });
63
+ }));
48
64
  }
49
65
  setupDevServerPlugin() {
50
- const {
51
- devOptions
52
- } = this;
53
-
54
- // apply dev server to client compiler, add hmr client to entry.
66
+ const { devOptions } = this;
55
67
  if (this.compiler.compilers) {
56
- this.compiler.compilers.forEach(target => {
68
+ this.compiler.compilers.forEach((target) => {
57
69
  if (this.isClientCompiler(target)) {
58
70
  new DevServerPlugin(devOptions).apply(target);
59
71
  }
@@ -67,22 +79,18 @@ export default class DevMiddleware extends EventEmitter {
67
79
  }
68
80
  setupHooks() {
69
81
  const invalidPlugin = () => {
70
- this.socketServer.sockWrite('invalid');
82
+ this.socketServer.sockWrite("invalid");
71
83
  };
72
- const addHooks = compiler => {
73
- if (compiler.name === 'server') {
84
+ const addHooks = (compiler) => {
85
+ if (compiler.name === "server") {
74
86
  return;
75
87
  }
76
- const {
77
- compile,
78
- invalid,
79
- done
80
- } = compiler.hooks;
81
- compile.tap('modern-dev-server', invalidPlugin);
82
- invalid.tap('modern-dev-server', invalidPlugin);
83
- done.tap('modern-dev-server', stats => {
88
+ const { compile, invalid, done } = compiler.hooks;
89
+ compile.tap("modern-dev-server", invalidPlugin);
90
+ invalid.tap("modern-dev-server", invalidPlugin);
91
+ done.tap("modern-dev-server", (stats) => {
84
92
  this.socketServer.updateStats(stats);
85
- this.emit('change', stats);
93
+ this.emit("change", stats);
86
94
  });
87
95
  };
88
96
  if (this.compiler.compilers) {
@@ -92,27 +100,24 @@ export default class DevMiddleware extends EventEmitter {
92
100
  }
93
101
  }
94
102
  setupDevMiddleware(devMiddleware = webpackDevMiddleware) {
95
- const {
96
- devOptions
97
- } = this;
98
- const middleware = devMiddleware(this.compiler, _objectSpread({
103
+ const { devOptions } = this;
104
+ const middleware = devMiddleware(this.compiler, __spreadValues({
99
105
  headers: devOptions.headers,
100
106
  stats: false
101
107
  }, devOptions.devMiddleware));
102
108
  return middleware;
103
109
  }
104
110
  isClientCompiler(compiler) {
105
- const {
106
- target
107
- } = compiler.options;
108
-
109
- // if target not contains `node`, it's a client compiler
111
+ const { target } = compiler.options;
110
112
  if (target) {
111
113
  if (Array.isArray(target)) {
112
- return !target.includes('node');
114
+ return !target.includes("node");
113
115
  }
114
- return target !== 'node';
116
+ return target !== "node";
115
117
  }
116
- return compiler.name === 'client';
118
+ return compiler.name === "client";
117
119
  }
118
- }
120
+ }
121
+ export {
122
+ DevMiddleware as default
123
+ };
@@ -1,53 +1,42 @@
1
- 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; }
2
- import ws from 'ws';
3
- import { logger } from '@modern-js/utils';
4
- export default class SocketServer {
1
+ import ws from "ws";
2
+ import { logger } from "@modern-js/utils";
3
+ class SocketServer {
5
4
  constructor(options) {
6
- _defineProperty(this, "wsServer", void 0);
7
- _defineProperty(this, "sockets", []);
8
- _defineProperty(this, "options", void 0);
9
- _defineProperty(this, "app", void 0);
10
- _defineProperty(this, "stats", void 0);
11
- _defineProperty(this, "timer", null);
5
+ this.sockets = [];
6
+ this.timer = null;
12
7
  this.options = options;
13
8
  }
14
-
15
- // create socket, install socket handler, bind socket event
16
9
  prepare(app) {
17
- var _this$options$client;
10
+ var _a;
18
11
  this.app = app;
19
12
  this.wsServer = new ws.Server({
20
13
  noServer: true,
21
- path: (_this$options$client = this.options.client) === null || _this$options$client === void 0 ? void 0 : _this$options$client.path
14
+ path: (_a = this.options.client) == null ? void 0 : _a.path
22
15
  });
23
-
24
- // listen upgrade event to handle socket
25
- this.app.on('upgrade', (req, sock, head) => {
16
+ this.app.on("upgrade", (req, sock, head) => {
26
17
  if (!this.wsServer.shouldHandle(req)) {
27
18
  return;
28
19
  }
29
- this.wsServer.handleUpgrade(req, sock, head, connection => {
30
- this.wsServer.emit('connection', connection, req);
20
+ this.wsServer.handleUpgrade(req, sock, head, (connection) => {
21
+ this.wsServer.emit("connection", connection, req);
31
22
  });
32
23
  });
33
- this.wsServer.on('error', err => {
34
- // only dev server, use default logger
24
+ this.wsServer.on("error", (err) => {
35
25
  logger.error(err);
36
26
  });
37
27
  this.timer = setInterval(() => {
38
- this.wsServer.clients.forEach(socket => {
28
+ this.wsServer.clients.forEach((socket) => {
39
29
  const extWs = socket;
40
30
  if (!extWs.isAlive) {
41
31
  extWs.terminate();
42
32
  } else {
43
33
  extWs.isAlive = false;
44
34
  extWs.ping(() => {
45
- // empty
46
35
  });
47
36
  }
48
37
  });
49
- }, 30000);
50
- this.wsServer.on('connection', socket => {
38
+ }, 3e4);
39
+ this.wsServer.on("connection", (socket) => {
51
40
  this.onConnect(socket);
52
41
  });
53
42
  }
@@ -55,24 +44,16 @@ export default class SocketServer {
55
44
  this.stats = stats;
56
45
  this.sendStats();
57
46
  }
58
-
59
- // write message to each socket
60
47
  sockWrite(type, data) {
61
- this.sockets.forEach(socket => {
62
- this.send(socket, JSON.stringify({
63
- type,
64
- data
65
- }));
48
+ this.sockets.forEach((socket) => {
49
+ this.send(socket, JSON.stringify({ type, data }));
66
50
  });
67
51
  }
68
52
  singleWrite(socket, type, data) {
69
- this.send(socket, JSON.stringify({
70
- type,
71
- data
72
- }));
53
+ this.send(socket, JSON.stringify({ type, data }));
73
54
  }
74
55
  close() {
75
- this.sockets.forEach(socket => {
56
+ this.sockets.forEach((socket) => {
76
57
  socket.close();
77
58
  });
78
59
  if (this.timer) {
@@ -83,33 +64,29 @@ export default class SocketServer {
83
64
  onConnect(socket) {
84
65
  const connection = socket;
85
66
  connection.isAlive = true;
86
- connection.on('pong', () => {
67
+ connection.on("pong", () => {
87
68
  connection.isAlive = true;
88
69
  });
89
70
  if (!connection) {
90
71
  return;
91
72
  }
92
73
  this.sockets.push(connection);
93
- connection.on('close', () => {
74
+ connection.on("close", () => {
94
75
  const idx = this.sockets.indexOf(connection);
95
76
  if (idx >= 0) {
96
77
  this.sockets.splice(idx, 1);
97
78
  }
98
79
  });
99
- if (this.options.hot || this.options.hot === 'only') {
100
- this.singleWrite(connection, 'hot');
80
+ if (this.options.hot || this.options.hot === "only") {
81
+ this.singleWrite(connection, "hot");
101
82
  }
102
83
  if (this.options.liveReload) {
103
- this.singleWrite(connection, 'liveReload');
84
+ this.singleWrite(connection, "liveReload");
104
85
  }
105
-
106
- // send first stats to active client sock if stats exist
107
86
  if (this.stats) {
108
87
  this.sendStats(true);
109
88
  }
110
89
  }
111
-
112
- // get standard stats
113
90
  getStats() {
114
91
  const curStats = this.stats;
115
92
  if (!curStats) {
@@ -125,34 +102,31 @@ export default class SocketServer {
125
102
  };
126
103
  return curStats.toJson(defaultStats);
127
104
  }
128
-
129
- // determine what message should send by stats
130
105
  sendStats(force = false) {
131
106
  const stats = this.getStats();
132
-
133
- // this should never happened
134
107
  if (!stats) {
135
108
  return null;
136
109
  }
137
- const shouldEmit = !force && stats && (!stats.errors || stats.errors.length === 0) && stats.assets && stats.assets.every(asset => !asset.emitted);
110
+ const shouldEmit = !force && stats && (!stats.errors || stats.errors.length === 0) && stats.assets && stats.assets.every((asset) => !asset.emitted);
138
111
  if (shouldEmit) {
139
- return this.sockWrite('still-ok');
112
+ return this.sockWrite("still-ok");
140
113
  }
141
- this.sockWrite('hash', stats.hash);
114
+ this.sockWrite("hash", stats.hash);
142
115
  if (stats.errors && stats.errors.length > 0) {
143
- return this.sockWrite('errors', stats.errors);
116
+ return this.sockWrite("errors", stats.errors);
144
117
  } else if (stats.warnings && stats.warnings.length > 0) {
145
- return this.sockWrite('warnings', stats.warnings);
118
+ return this.sockWrite("warnings", stats.warnings);
146
119
  } else {
147
- return this.sockWrite('ok');
120
+ return this.sockWrite("ok");
148
121
  }
149
122
  }
150
-
151
- // send message to connecting socket
152
123
  send(connection, message) {
153
124
  if (connection.readyState !== 1) {
154
125
  return;
155
126
  }
156
127
  connection.send(message);
157
128
  }
158
- }
129
+ }
130
+ export {
131
+ SocketServer as default
132
+ };
File without changes
@@ -1,9 +1,32 @@
1
- import * as devcert from 'devcert';
2
- export const genHttpsOptions = async userOptions => {
3
- const httpsOptions = typeof userOptions === 'boolean' ? {} : userOptions;
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import * as devcert from "devcert";
22
+ const genHttpsOptions = (userOptions) => __async(void 0, null, function* () {
23
+ const httpsOptions = typeof userOptions === "boolean" ? {} : userOptions;
4
24
  if (!httpsOptions.key || !httpsOptions.cert) {
5
- const selfsign = await devcert.certificateFor(['localhost']);
25
+ const selfsign = yield devcert.certificateFor(["localhost"]);
6
26
  return selfsign;
7
27
  }
8
28
  return httpsOptions;
9
- };
29
+ });
30
+ export {
31
+ genHttpsOptions
32
+ };
@@ -1,48 +1,78 @@
1
- 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; }
2
- 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; }
3
- 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; }
4
- import { compatRequire } from '@modern-js/utils';
5
- import { match } from 'path-to-regexp';
6
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
- const VALID_METHODS = ['get', 'post', 'put', 'delete', 'patch'];
8
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
- const BODY_PARSED_METHODS = ['post', 'put', 'delete', 'patch'];
10
- const createFunctionDataHandler = (method, handler) => async (context, next) => {
11
- const {
12
- req,
13
- res
14
- } = context;
15
- return handler(req, res, next);
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
16
18
  };
17
- const createStaticDataHandler = (method, handler) => context => {
18
- const {
19
- res
20
- } = context;
21
- res.setHeader('Content-Type', 'application/json');
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+ import { compatRequire } from "@modern-js/utils";
41
+ import { match } from "path-to-regexp";
42
+ const VALID_METHODS = ["get", "post", "put", "delete", "patch"];
43
+ const BODY_PARSED_METHODS = ["post", "put", "delete", "patch"];
44
+ const createFunctionDataHandler = (method, handler) => (context, next) => __async(void 0, null, function* () {
45
+ const { req, res } = context;
46
+ return handler(req, res, next);
47
+ });
48
+ const createStaticDataHandler = (method, handler) => (context) => {
49
+ const { res } = context;
50
+ res.setHeader("Content-Type", "application/json");
22
51
  res.end(JSON.stringify(handler));
23
52
  };
24
- const allowTypes = ['object', 'function'];
25
- const normalizeConfig = mockConfig => Object.keys(mockConfig).reduce((acc, key) => {
53
+ const allowTypes = ["object", "function"];
54
+ const normalizeConfig = (mockConfig) => Object.keys(mockConfig).reduce((acc, key) => {
26
55
  const handler = mockConfig[key];
27
56
  const type = typeof handler;
28
57
  if (!allowTypes.includes(type)) {
29
- throw new Error(`mock value of ${key} should be object or function, but got ${type}`);
58
+ throw new Error(
59
+ `mock value of ${key} should be object or function, but got ${type}`
60
+ );
30
61
  }
31
62
  const meta = parseKey(key);
32
- if (type === 'object') {
33
- acc.push(_objectSpread(_objectSpread({}, meta), {}, {
63
+ if (type === "object") {
64
+ acc.push(__spreadProps(__spreadValues({}, meta), {
34
65
  handler: createStaticDataHandler(meta.method, handler)
35
66
  }));
36
67
  } else {
37
- acc.push(_objectSpread(_objectSpread({}, meta), {}, {
68
+ acc.push(__spreadProps(__spreadValues({}, meta), {
38
69
  handler: createFunctionDataHandler(meta.method, handler)
39
70
  }));
40
71
  }
41
72
  return acc;
42
73
  }, []);
43
- const _blank = ' ';
44
- const parseKey = key => {
45
- // 'Method /pathname' | '/pathname'
74
+ const _blank = " ";
75
+ const parseKey = (key) => {
46
76
  const splitted = key.split(_blank).filter(Boolean);
47
77
  if (splitted.length > 1) {
48
78
  const [method, pathname] = splitted;
@@ -51,31 +81,23 @@ const parseKey = key => {
51
81
  path: pathname
52
82
  };
53
83
  }
54
-
55
- // default return get method
56
84
  return {
57
- method: 'get',
85
+ method: "get",
58
86
  path: key
59
87
  };
60
88
  };
61
- export default (filepath => {
89
+ var getMockData_default = (filepath) => {
62
90
  const mockModule = compatRequire(filepath);
63
91
  if (!mockModule) {
64
92
  throw new Error(`Mock file ${filepath} parsed failed!`);
65
93
  }
66
94
  const data = normalizeConfig(mockModule);
67
95
  return data;
68
- });
69
- export const getMatched = (context, mockApiList) => {
70
- const {
71
- path: targetPathname,
72
- method: targetMethod
73
- } = context;
74
- const matched = mockApiList.find(mockApi => {
75
- const {
76
- method,
77
- path: pathname
78
- } = mockApi;
96
+ };
97
+ const getMatched = (context, mockApiList) => {
98
+ const { path: targetPathname, method: targetMethod } = context;
99
+ const matched = mockApiList.find((mockApi) => {
100
+ const { method, path: pathname } = mockApi;
79
101
  if (method.toLowerCase() === targetMethod.toLowerCase()) {
80
102
  return match(pathname, {
81
103
  encode: encodeURI,
@@ -85,4 +107,8 @@ export const getMatched = (context, mockApiList) => {
85
107
  return false;
86
108
  });
87
109
  return matched;
88
- };
110
+ };
111
+ export {
112
+ getMockData_default as default,
113
+ getMatched
114
+ };
@@ -1,12 +1,30 @@
1
- import path from 'path';
2
- import { fs } from '@modern-js/utils';
3
- import { AGGRED_DIR } from '@modern-js/prod-server';
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import path from "path";
22
+ import { fs } from "@modern-js/utils";
23
+ import { AGGRED_DIR } from "@modern-js/prod-server";
4
24
  import getMockData, { getMatched } from "./getMockData";
5
- export const createMockHandler = ({
6
- pwd
7
- }) => {
8
- const exts = ['.ts', '.js'];
9
- let filepath = '';
25
+ const createMockHandler = ({ pwd }) => {
26
+ const exts = [".ts", ".js"];
27
+ let filepath = "";
10
28
  for (const ext of exts) {
11
29
  const maybeMatch = path.join(pwd, `${AGGRED_DIR.mock}/index${ext}`);
12
30
  if (fs.existsSync(maybeMatch)) {
@@ -21,15 +39,16 @@ export const createMockHandler = ({
21
39
  if (!apiList || apiList.length === 0) {
22
40
  return null;
23
41
  }
24
- return async (context, next) => {
25
- const {
26
- res
27
- } = context;
42
+ return (context, next) => __async(void 0, null, function* () {
43
+ const { res } = context;
28
44
  const matched = getMatched(context, apiList);
29
45
  if (!matched) {
30
46
  return next();
31
47
  }
32
- res.setHeader('Access-Control-Allow-Origin', '*');
48
+ res.setHeader("Access-Control-Allow-Origin", "*");
33
49
  return matched.handler(context, next);
34
- };
35
- };
50
+ });
51
+ };
52
+ export {
53
+ createMockHandler
54
+ };