@modern-js/server 2.56.0 → 2.56.2

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.
@@ -36,7 +36,7 @@ var import_server_core = require("@modern-js/server-core");
36
36
  var import_node = require("@modern-js/server-core/node");
37
37
  var import_helpers = require("./helpers");
38
38
  var import_dev = require("./dev");
39
- const createDevServer = async (options, applyPlugins) => {
39
+ async function createDevServer(options, applyPlugins) {
40
40
  const { config, pwd, serverConfigFile, serverConfigPath } = options;
41
41
  const dev = (0, import_helpers.getDevOptions)(options);
42
42
  const distDir = import_node_path.default.resolve(pwd, config.output.path || "dist");
@@ -63,8 +63,16 @@ const createDevServer = async (options, applyPlugins) => {
63
63
  ]);
64
64
  await applyPlugins(server, prodServerOptions, nodeServer);
65
65
  await server.init();
66
+ nodeServer.listen({
67
+ host: dev.host || "127.0.0.1",
68
+ port: dev.port || "8080"
69
+ }, (err) => {
70
+ if (err) {
71
+ throw err;
72
+ }
73
+ });
66
74
  return nodeServer;
67
- };
75
+ }
68
76
  // Annotate the CommonJS export names for ESM import in node:
69
77
  0 && (module.exports = {
70
78
  createDevServer
package/dist/cjs/dev.js CHANGED
@@ -27,17 +27,21 @@ var import_helpers = require("./helpers");
27
27
  const devPlugin = (options) => ({
28
28
  name: "@modern-js/plugin-dev",
29
29
  setup(api) {
30
- const { getMiddlewares, rsbuild, config, pwd } = options;
30
+ const { config, pwd, builder } = options;
31
31
  const closeCb = [];
32
- const { middlewares: rsbuildMiddlewares, close, onHTTPUpgrade } = (getMiddlewares === null || getMiddlewares === void 0 ? void 0 : getMiddlewares()) || {};
33
- close && closeCb.push(close);
34
32
  const dev = (0, import_helpers.getDevOptions)(options);
35
33
  return {
36
34
  async prepare() {
35
+ var _dev_after, _dev_before;
36
+ const builderDevServer = await (builder === null || builder === void 0 ? void 0 : builder.createDevServer({
37
+ runCompile: options.runCompile
38
+ }));
39
+ const { middlewares: builderMiddlewares, close, onHTTPUpgrade } = builderDevServer || {};
40
+ close && closeCb.push(close);
37
41
  const { middlewares, distDirectory, nodeServer, apiDirectory, sharedDirectory, serverBase } = api.useAppContext();
38
42
  onHTTPUpgrade && (nodeServer === null || nodeServer === void 0 ? void 0 : nodeServer.on("upgrade", onHTTPUpgrade));
39
43
  const runner = api.useHookRunners();
40
- rsbuild === null || rsbuild === void 0 ? void 0 : rsbuild.onDevCompileDone(({ stats }) => {
44
+ builder === null || builder === void 0 ? void 0 : builder.onDevCompileDone(({ stats }) => {
41
45
  if (stats.toJson({
42
46
  all: false
43
47
  }).name !== "server") {
@@ -61,16 +65,45 @@ const devPlugin = (options) => ({
61
65
  cb();
62
66
  });
63
67
  }));
64
- await (0, import_helpers.registerMockHandlers)({
65
- pwd,
66
- server: serverBase
68
+ const before = [];
69
+ const after = [];
70
+ const { setupMiddlewares = [] } = dev;
71
+ if (((_dev_after = dev.after) === null || _dev_after === void 0 ? void 0 : _dev_after.length) || ((_dev_before = dev.before) === null || _dev_before === void 0 ? void 0 : _dev_before.length)) {
72
+ setupMiddlewares.push((middlewares2) => {
73
+ middlewares2.unshift(...dev.before || []);
74
+ middlewares2.push(...dev.after || []);
75
+ });
76
+ }
77
+ setupMiddlewares.forEach((handler) => {
78
+ handler({
79
+ unshift: (...handlers) => before.unshift(...handlers),
80
+ push: (...handlers) => after.push(...handlers)
81
+ }, {
82
+ sockWrite: () => {
83
+ }
84
+ });
67
85
  });
68
- if (rsbuildMiddlewares) {
86
+ before.forEach((middleware, index) => {
69
87
  middlewares.push({
70
- name: "rsbuild-dev",
71
- handler: (0, import_node.connectMid2HonoMid)(rsbuildMiddlewares)
88
+ name: `before-dev-server-${index}`,
89
+ handler: (0, import_node.connectMid2HonoMid)(middleware)
72
90
  });
73
- }
91
+ });
92
+ const mockMiddleware = await (0, import_helpers.getMockMiddleware)(pwd);
93
+ middlewares.push({
94
+ name: "mock-dev",
95
+ handler: mockMiddleware
96
+ });
97
+ builderMiddlewares && middlewares.push({
98
+ name: "rsbuild-dev",
99
+ handler: (0, import_node.connectMid2HonoMid)(builderMiddlewares)
100
+ });
101
+ after.forEach((middleware, index) => {
102
+ middlewares.push({
103
+ name: `after-dev-server-${index}`,
104
+ handler: (0, import_node.connectMid2HonoMid)(middleware)
105
+ });
106
+ });
74
107
  middlewares.push({
75
108
  name: "init-file-reader",
76
109
  handler: (0, import_helpers.initFileReader)()
@@ -47,11 +47,8 @@ async function onServerChange({ pwd, filepath, event, server }) {
47
47
  const mockPath = import_path.default.normalize(import_path.default.join(pwd, mock));
48
48
  const { runner } = server;
49
49
  if (filepath.startsWith(mockPath)) {
50
- await (0, import_mock.registerMockHandlers)({
51
- pwd,
52
- server
53
- });
54
- import_utils.logger.info("Finish registering the mock handlers");
50
+ await (0, import_mock.initOrUpdateMockMiddlewares)(pwd);
51
+ import_utils.logger.info("Finish update the mock handlers");
55
52
  } else {
56
53
  try {
57
54
  const fileChangeEvent = {
@@ -28,13 +28,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var mock_exports = {};
30
30
  __export(mock_exports, {
31
- registerMockHandlers: () => registerMockHandlers
31
+ getMatched: () => getMatched,
32
+ getMockMiddleware: () => getMockMiddleware,
33
+ initOrUpdateMockMiddlewares: () => initOrUpdateMockMiddlewares
32
34
  });
33
35
  module.exports = __toCommonJS(mock_exports);
34
36
  var import_node_path = __toESM(require("node:path"));
35
37
  var import_utils = require("@modern-js/utils");
36
38
  var import_server_core = require("@modern-js/server-core");
37
39
  var import_node = require("@modern-js/server-core/node");
40
+ var import_path_to_regexp = require("path-to-regexp");
41
+ let mockAPIs = [];
42
+ let mockConfig;
38
43
  const parseKey = (key) => {
39
44
  const _blank = " ";
40
45
  const splitted = key.split(_blank).filter(Boolean);
@@ -50,8 +55,7 @@ const parseKey = (key) => {
50
55
  path: key
51
56
  };
52
57
  };
53
- const mockHandlerRegistry = /* @__PURE__ */ new Map();
54
- const registerMockHandlers = async ({ pwd, server }) => {
58
+ const getMockModule = async (pwd) => {
55
59
  const exts = [
56
60
  ".ts",
57
61
  ".js"
@@ -65,54 +69,72 @@ const registerMockHandlers = async ({ pwd, server }) => {
65
69
  }
66
70
  }
67
71
  if (!mockFilePath) {
68
- return null;
72
+ return void 0;
69
73
  }
70
- const { default: mockModule, config } = await Promise.resolve().then(() => __toESM(require(mockFilePath)));
74
+ const { default: mockHandlers, config } = await Promise.resolve().then(() => __toESM(require(mockFilePath)));
71
75
  const enable = config === null || config === void 0 ? void 0 : config.enable;
72
76
  if (enable === false) {
73
- return;
77
+ return void 0;
74
78
  }
75
- if (!mockModule) {
79
+ if (!mockHandlers) {
76
80
  throw new Error(`Mock file ${mockFilePath} parsed failed!`);
77
81
  }
78
- Object.entries(mockModule).forEach(([key, handler]) => {
82
+ return {
83
+ mockHandlers,
84
+ config
85
+ };
86
+ };
87
+ const getMatched = (request, mockApis) => {
88
+ const { path: targetPathname, method: targetMethod } = request;
89
+ const matched = mockApis.find((mockApi) => {
90
+ const { method, path: pathname } = mockApi;
91
+ if (method.toLowerCase() === targetMethod.toLowerCase()) {
92
+ return (0, import_path_to_regexp.match)(pathname, {
93
+ encode: encodeURI,
94
+ decode: decodeURIComponent
95
+ })(targetPathname);
96
+ }
97
+ return false;
98
+ });
99
+ return matched;
100
+ };
101
+ async function initOrUpdateMockMiddlewares(pwd) {
102
+ const mockModule = await getMockModule(pwd);
103
+ mockConfig = mockModule === null || mockModule === void 0 ? void 0 : mockModule.config;
104
+ mockAPIs = Object.entries((mockModule === null || mockModule === void 0 ? void 0 : mockModule.mockHandlers) || {}).map(([key, handler]) => {
79
105
  const { method, path: path2 } = parseKey(key);
80
- const methodName = method.toLowerCase();
81
- const handlerId = `${methodName}-${path2}`;
82
- const mockInfo = mockHandlerRegistry.get(handlerId);
83
- if (mockInfo) {
84
- mockInfo.handler = handler;
85
- } else {
86
- mockHandlerRegistry.set(handlerId, {
87
- handler,
88
- isRegistered: false
89
- });
106
+ return {
107
+ method,
108
+ path: path2,
109
+ handler
110
+ };
111
+ });
112
+ }
113
+ async function getMockMiddleware(pwd) {
114
+ await initOrUpdateMockMiddlewares(pwd);
115
+ const mockMiddleware = async (c, next) => {
116
+ if (typeof (mockConfig === null || mockConfig === void 0 ? void 0 : mockConfig.enable) === "function") {
117
+ const isEnabled = mockConfig.enable(c.env.node.req, c.env.node.res);
118
+ if (!isEnabled) {
119
+ return next();
120
+ }
90
121
  }
91
- if (typeof server[methodName] === "function") {
92
- const mockHandler = async (c, next) => {
93
- var _mockHandlerRegistry_get;
94
- if (typeof enable === "function") {
95
- const isEnabled = enable(c.env.node.req, c.env.node.res);
96
- if (!isEnabled) {
97
- return next();
98
- }
99
- }
100
- const handler2 = (_mockHandlerRegistry_get = mockHandlerRegistry.get(handlerId)) === null || _mockHandlerRegistry_get === void 0 ? void 0 : _mockHandlerRegistry_get.handler;
101
- if (typeof handler2 === "function") {
102
- await (0, import_node.connectMid2HonoMid)(handler2)(c, next);
103
- } else {
104
- return c.json(handler2);
105
- }
106
- };
107
- const handlerInfo = mockHandlerRegistry.get(handlerId);
108
- if (handlerInfo && !(handlerInfo === null || handlerInfo === void 0 ? void 0 : handlerInfo.isRegistered)) {
109
- server[methodName](path2, mockHandler);
110
- handlerInfo.isRegistered = true;
122
+ const matchedMockAPI = getMatched(c.req, mockAPIs);
123
+ if (matchedMockAPI) {
124
+ const { handler } = matchedMockAPI;
125
+ if (typeof handler === "function") {
126
+ return await (0, import_node.connectMid2HonoMid)(handler)(c, next);
127
+ } else {
128
+ return c.json(handler);
111
129
  }
112
130
  }
113
- });
114
- };
131
+ return next();
132
+ };
133
+ return mockMiddleware;
134
+ }
115
135
  // Annotate the CommonJS export names for ESM import in node:
116
136
  0 && (module.exports = {
117
- registerMockHandlers
137
+ getMatched,
138
+ getMockMiddleware,
139
+ initOrUpdateMockMiddlewares
118
140
  });
@@ -7,8 +7,11 @@ import { createServerBase } from "@modern-js/server-core";
7
7
  import { createNodeServer, loadServerRuntimeConfig } from "@modern-js/server-core/node";
8
8
  import { getDevOptions } from "./helpers";
9
9
  import { devPlugin } from "./dev";
10
- var createDevServer = function() {
11
- var _ref = _async_to_generator(function(options, applyPlugins) {
10
+ function createDevServer(options, applyPlugins) {
11
+ return _createDevServer.apply(this, arguments);
12
+ }
13
+ function _createDevServer() {
14
+ _createDevServer = _async_to_generator(function(options, applyPlugins) {
12
15
  var config, pwd, serverConfigFile, serverConfigPath, dev, distDir, serverConfig, prodServerOptions, server, devHttpsOption, nodeServer, genHttpsOptions, httpsOptions;
13
16
  return _ts_generator(this, function(_state) {
14
17
  switch (_state.label) {
@@ -76,6 +79,14 @@ var createDevServer = function() {
76
79
  ];
77
80
  case 8:
78
81
  _state.sent();
82
+ nodeServer.listen({
83
+ host: dev.host || "127.0.0.1",
84
+ port: dev.port || "8080"
85
+ }, function(err) {
86
+ if (err) {
87
+ throw err;
88
+ }
89
+ });
79
90
  return [
80
91
  2,
81
92
  nodeServer
@@ -83,10 +94,8 @@ var createDevServer = function() {
83
94
  }
84
95
  });
85
96
  });
86
- return function createDevServer2(options, applyPlugins) {
87
- return _ref.apply(this, arguments);
88
- };
89
- }();
97
+ return _createDevServer.apply(this, arguments);
98
+ }
90
99
  export {
91
100
  createDevServer
92
101
  };
package/dist/esm/dev.js CHANGED
@@ -1,28 +1,37 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
2
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
4
  import { connectMid2HonoMid } from "@modern-js/server-core/node";
4
5
  import { API_DIR, SHARED_DIR } from "@modern-js/utils";
5
- import { startWatcher, onRepack, getDevOptions, initFileReader, registerMockHandlers } from "./helpers";
6
+ import { startWatcher, onRepack, getDevOptions, initFileReader, getMockMiddleware } from "./helpers";
6
7
  var devPlugin = function(options) {
7
8
  return {
8
9
  name: "@modern-js/plugin-dev",
9
10
  setup: function setup(api) {
10
- var getMiddlewares = options.getMiddlewares, rsbuild = options.rsbuild, config = options.config, pwd = options.pwd;
11
+ var config = options.config, pwd = options.pwd, builder = options.builder;
11
12
  var closeCb = [];
12
- var _ref = (getMiddlewares === null || getMiddlewares === void 0 ? void 0 : getMiddlewares()) || {}, rsbuildMiddlewares = _ref.middlewares, close = _ref.close, onHTTPUpgrade = _ref.onHTTPUpgrade;
13
- close && closeCb.push(close);
14
13
  var dev = getDevOptions(options);
15
14
  return {
16
15
  prepare: function prepare() {
17
16
  return _async_to_generator(function() {
18
- var _api_useAppContext, middlewares, distDirectory, nodeServer, apiDirectory, sharedDirectory, serverBase, runner, watchOptions, watcher;
17
+ var _dev_after, _dev_before, builderDevServer, _ref, builderMiddlewares, close, onHTTPUpgrade, _api_useAppContext, middlewares, distDirectory, nodeServer, apiDirectory, sharedDirectory, serverBase, runner, watchOptions, watcher, before, after, _dev_setupMiddlewares, setupMiddlewares, mockMiddleware;
19
18
  return _ts_generator(this, function(_state) {
20
19
  switch (_state.label) {
21
20
  case 0:
21
+ return [
22
+ 4,
23
+ builder === null || builder === void 0 ? void 0 : builder.createDevServer({
24
+ runCompile: options.runCompile
25
+ })
26
+ ];
27
+ case 1:
28
+ builderDevServer = _state.sent();
29
+ _ref = builderDevServer || {}, builderMiddlewares = _ref.middlewares, close = _ref.close, onHTTPUpgrade = _ref.onHTTPUpgrade;
30
+ close && closeCb.push(close);
22
31
  _api_useAppContext = api.useAppContext(), middlewares = _api_useAppContext.middlewares, distDirectory = _api_useAppContext.distDirectory, nodeServer = _api_useAppContext.nodeServer, apiDirectory = _api_useAppContext.apiDirectory, sharedDirectory = _api_useAppContext.sharedDirectory, serverBase = _api_useAppContext.serverBase;
23
32
  onHTTPUpgrade && (nodeServer === null || nodeServer === void 0 ? void 0 : nodeServer.on("upgrade", onHTTPUpgrade));
24
33
  runner = api.useHookRunners();
25
- rsbuild === null || rsbuild === void 0 ? void 0 : rsbuild.onDevCompileDone(function(param) {
34
+ builder === null || builder === void 0 ? void 0 : builder.onDevCompileDone(function(param) {
26
35
  var stats = param.stats;
27
36
  if (stats.toJson({
28
37
  all: false
@@ -47,21 +56,62 @@ var devPlugin = function(options) {
47
56
  cb();
48
57
  });
49
58
  }));
59
+ before = [];
60
+ after = [];
61
+ _dev_setupMiddlewares = dev.setupMiddlewares, setupMiddlewares = _dev_setupMiddlewares === void 0 ? [] : _dev_setupMiddlewares;
62
+ if (((_dev_after = dev.after) === null || _dev_after === void 0 ? void 0 : _dev_after.length) || ((_dev_before = dev.before) === null || _dev_before === void 0 ? void 0 : _dev_before.length)) {
63
+ setupMiddlewares.push(function(middlewares2) {
64
+ var _middlewares, _middlewares1;
65
+ (_middlewares = middlewares2).unshift.apply(_middlewares, _to_consumable_array(dev.before || []));
66
+ (_middlewares1 = middlewares2).push.apply(_middlewares1, _to_consumable_array(dev.after || []));
67
+ });
68
+ }
69
+ setupMiddlewares.forEach(function(handler) {
70
+ var _before, _after;
71
+ handler({
72
+ unshift: function() {
73
+ for (var _len = arguments.length, handlers = new Array(_len), _key = 0; _key < _len; _key++) {
74
+ handlers[_key] = arguments[_key];
75
+ }
76
+ return (_before = before).unshift.apply(_before, _to_consumable_array(handlers));
77
+ },
78
+ push: function() {
79
+ for (var _len = arguments.length, handlers = new Array(_len), _key = 0; _key < _len; _key++) {
80
+ handlers[_key] = arguments[_key];
81
+ }
82
+ return (_after = after).push.apply(_after, _to_consumable_array(handlers));
83
+ }
84
+ }, {
85
+ sockWrite: function() {
86
+ }
87
+ });
88
+ });
89
+ before.forEach(function(middleware, index) {
90
+ middlewares.push({
91
+ name: "before-dev-server-".concat(index),
92
+ handler: connectMid2HonoMid(middleware)
93
+ });
94
+ });
50
95
  return [
51
96
  4,
52
- registerMockHandlers({
53
- pwd,
54
- server: serverBase
55
- })
97
+ getMockMiddleware(pwd)
56
98
  ];
57
- case 1:
58
- _state.sent();
59
- if (rsbuildMiddlewares) {
99
+ case 2:
100
+ mockMiddleware = _state.sent();
101
+ middlewares.push({
102
+ name: "mock-dev",
103
+ handler: mockMiddleware
104
+ });
105
+ builderMiddlewares && middlewares.push({
106
+ name: "rsbuild-dev",
107
+ handler: connectMid2HonoMid(builderMiddlewares)
108
+ });
109
+ after.forEach(function(middleware, index) {
60
110
  middlewares.push({
61
- name: "rsbuild-dev",
62
- handler: connectMid2HonoMid(rsbuildMiddlewares)
111
+ name: "after-dev-server-".concat(index),
112
+ handler: connectMid2HonoMid(middleware)
63
113
  });
64
- }
114
+ });
65
115
  middlewares.push({
66
116
  name: "init-file-reader",
67
117
  handler: initFileReader()
@@ -5,7 +5,7 @@ import { SERVER_BUNDLE_DIRECTORY, SERVER_DIR, logger } from "@modern-js/utils";
5
5
  import { AGGRED_DIR } from "@modern-js/server-core";
6
6
  import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
7
7
  import { debug } from "./utils";
8
- import { registerMockHandlers } from "./mock";
8
+ import { initOrUpdateMockMiddlewares } from "./mock";
9
9
  export * from "./repack";
10
10
  export * from "./devOptions";
11
11
  export * from "./fileReader";
@@ -30,14 +30,11 @@ function _onServerChange() {
30
30
  ];
31
31
  return [
32
32
  4,
33
- registerMockHandlers({
34
- pwd,
35
- server
36
- })
33
+ initOrUpdateMockMiddlewares(pwd)
37
34
  ];
38
35
  case 1:
39
36
  _state.sent();
40
- logger.info("Finish registering the mock handlers");
37
+ logger.info("Finish update the mock handlers");
41
38
  return [
42
39
  3,
43
40
  5
@@ -5,6 +5,9 @@ import path from "node:path";
5
5
  import { fs } from "@modern-js/utils";
6
6
  import { AGGRED_DIR } from "@modern-js/server-core";
7
7
  import { connectMid2HonoMid } from "@modern-js/server-core/node";
8
+ import { match } from "path-to-regexp";
9
+ var mockAPIs = [];
10
+ var mockConfig;
8
11
  var parseKey = function(key) {
9
12
  var _blank = " ";
10
13
  var splitted = key.split(_blank).filter(Boolean);
@@ -20,14 +23,12 @@ var parseKey = function(key) {
20
23
  path: key
21
24
  };
22
25
  };
23
- var mockHandlerRegistry = /* @__PURE__ */ new Map();
24
- var registerMockHandlers = function() {
25
- var _ref = _async_to_generator(function(param) {
26
- var pwd, server, exts, mockFilePath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, ext, maybeMatch, err, _ref2, mockModule, config, enable;
26
+ var getMockModule = function() {
27
+ var _ref = _async_to_generator(function(pwd) {
28
+ var exts, mockFilePath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, ext, maybeMatch, err, _ref2, mockHandlers, config, enable;
27
29
  return _ts_generator(this, function(_state) {
28
30
  switch (_state.label) {
29
31
  case 0:
30
- pwd = param.pwd, server = param.server;
31
32
  exts = [
32
33
  ".ts",
33
34
  ".js"
@@ -101,7 +102,7 @@ var registerMockHandlers = function() {
101
102
  if (!mockFilePath) {
102
103
  return [
103
104
  2,
104
- null
105
+ void 0
105
106
  ];
106
107
  }
107
108
  return [
@@ -109,95 +110,157 @@ var registerMockHandlers = function() {
109
110
  import(mockFilePath)
110
111
  ];
111
112
  case 9:
112
- _ref2 = _state.sent(), mockModule = _ref2.default, config = _ref2.config;
113
+ _ref2 = _state.sent(), mockHandlers = _ref2.default, config = _ref2.config;
113
114
  enable = config === null || config === void 0 ? void 0 : config.enable;
114
115
  if (enable === false) {
115
116
  return [
116
- 2
117
+ 2,
118
+ void 0
117
119
  ];
118
120
  }
119
- if (!mockModule) {
121
+ if (!mockHandlers) {
120
122
  throw new Error("Mock file ".concat(mockFilePath, " parsed failed!"));
121
123
  }
122
- Object.entries(mockModule).forEach(function(param2) {
123
- var _param = _sliced_to_array(param2, 2), key = _param[0], handler = _param[1];
124
- var _parseKey = parseKey(key), method = _parseKey.method, _$path = _parseKey.path;
125
- var methodName = method.toLowerCase();
126
- var handlerId = "".concat(methodName, "-").concat(_$path);
127
- var mockInfo = mockHandlerRegistry.get(handlerId);
128
- if (mockInfo) {
129
- mockInfo.handler = handler;
130
- } else {
131
- mockHandlerRegistry.set(handlerId, {
132
- handler,
133
- isRegistered: false
134
- });
124
+ return [
125
+ 2,
126
+ {
127
+ mockHandlers,
128
+ config
135
129
  }
136
- if (typeof server[methodName] === "function") {
137
- var mockHandler = function() {
138
- var _ref3 = _async_to_generator(function(c, next) {
139
- var _mockHandlerRegistry_get, isEnabled, handler2;
140
- return _ts_generator(this, function(_state2) {
141
- switch (_state2.label) {
142
- case 0:
143
- if (typeof enable === "function") {
144
- isEnabled = enable(c.env.node.req, c.env.node.res);
145
- if (!isEnabled) {
146
- return [
147
- 2,
148
- next()
149
- ];
150
- }
151
- }
152
- handler2 = (_mockHandlerRegistry_get = mockHandlerRegistry.get(handlerId)) === null || _mockHandlerRegistry_get === void 0 ? void 0 : _mockHandlerRegistry_get.handler;
153
- if (!(typeof handler2 === "function"))
154
- return [
155
- 3,
156
- 2
157
- ];
158
- return [
159
- 4,
160
- connectMid2HonoMid(handler2)(c, next)
161
- ];
162
- case 1:
163
- _state2.sent();
164
- return [
165
- 3,
166
- 3
167
- ];
168
- case 2:
130
+ ];
131
+ }
132
+ });
133
+ });
134
+ return function getMockModule2(pwd) {
135
+ return _ref.apply(this, arguments);
136
+ };
137
+ }();
138
+ var getMatched = function(request, mockApis) {
139
+ var targetPathname = request.path, targetMethod = request.method;
140
+ var matched = mockApis.find(function(mockApi) {
141
+ var method = mockApi.method, pathname = mockApi.path;
142
+ if (method.toLowerCase() === targetMethod.toLowerCase()) {
143
+ return match(pathname, {
144
+ encode: encodeURI,
145
+ decode: decodeURIComponent
146
+ })(targetPathname);
147
+ }
148
+ return false;
149
+ });
150
+ return matched;
151
+ };
152
+ function initOrUpdateMockMiddlewares(pwd) {
153
+ return _initOrUpdateMockMiddlewares.apply(this, arguments);
154
+ }
155
+ function _initOrUpdateMockMiddlewares() {
156
+ _initOrUpdateMockMiddlewares = _async_to_generator(function(pwd) {
157
+ var mockModule;
158
+ return _ts_generator(this, function(_state) {
159
+ switch (_state.label) {
160
+ case 0:
161
+ return [
162
+ 4,
163
+ getMockModule(pwd)
164
+ ];
165
+ case 1:
166
+ mockModule = _state.sent();
167
+ mockConfig = mockModule === null || mockModule === void 0 ? void 0 : mockModule.config;
168
+ mockAPIs = Object.entries((mockModule === null || mockModule === void 0 ? void 0 : mockModule.mockHandlers) || {}).map(function(param) {
169
+ var _param = _sliced_to_array(param, 2), key = _param[0], handler = _param[1];
170
+ var _parseKey = parseKey(key), method = _parseKey.method, path2 = _parseKey.path;
171
+ return {
172
+ method,
173
+ path: path2,
174
+ handler
175
+ };
176
+ });
177
+ return [
178
+ 2
179
+ ];
180
+ }
181
+ });
182
+ });
183
+ return _initOrUpdateMockMiddlewares.apply(this, arguments);
184
+ }
185
+ function getMockMiddleware(pwd) {
186
+ return _getMockMiddleware.apply(this, arguments);
187
+ }
188
+ function _getMockMiddleware() {
189
+ _getMockMiddleware = _async_to_generator(function(pwd) {
190
+ var mockMiddleware;
191
+ return _ts_generator(this, function(_state) {
192
+ switch (_state.label) {
193
+ case 0:
194
+ return [
195
+ 4,
196
+ initOrUpdateMockMiddlewares(pwd)
197
+ ];
198
+ case 1:
199
+ _state.sent();
200
+ mockMiddleware = function() {
201
+ var _ref = _async_to_generator(function(c, next) {
202
+ var isEnabled, matchedMockAPI, handler;
203
+ return _ts_generator(this, function(_state2) {
204
+ switch (_state2.label) {
205
+ case 0:
206
+ if (typeof (mockConfig === null || mockConfig === void 0 ? void 0 : mockConfig.enable) === "function") {
207
+ isEnabled = mockConfig.enable(c.env.node.req, c.env.node.res);
208
+ if (!isEnabled) {
169
209
  return [
170
210
  2,
171
- c.json(handler2)
172
- ];
173
- case 3:
174
- return [
175
- 2
211
+ next()
176
212
  ];
213
+ }
177
214
  }
178
- });
179
- });
180
- return function mockHandler2(c, next) {
181
- return _ref3.apply(this, arguments);
182
- };
183
- }();
184
- var handlerInfo = mockHandlerRegistry.get(handlerId);
185
- if (handlerInfo && !(handlerInfo === null || handlerInfo === void 0 ? void 0 : handlerInfo.isRegistered)) {
186
- server[methodName](_$path, mockHandler);
187
- handlerInfo.isRegistered = true;
188
- }
189
- }
190
- });
215
+ matchedMockAPI = getMatched(c.req, mockAPIs);
216
+ if (!matchedMockAPI)
217
+ return [
218
+ 3,
219
+ 3
220
+ ];
221
+ handler = matchedMockAPI.handler;
222
+ if (!(typeof handler === "function"))
223
+ return [
224
+ 3,
225
+ 2
226
+ ];
227
+ return [
228
+ 4,
229
+ connectMid2HonoMid(handler)(c, next)
230
+ ];
231
+ case 1:
232
+ return [
233
+ 2,
234
+ _state2.sent()
235
+ ];
236
+ case 2:
237
+ return [
238
+ 2,
239
+ c.json(handler)
240
+ ];
241
+ case 3:
242
+ return [
243
+ 2,
244
+ next()
245
+ ];
246
+ }
247
+ });
248
+ });
249
+ return function mockMiddleware2(c, next) {
250
+ return _ref.apply(this, arguments);
251
+ };
252
+ }();
191
253
  return [
192
- 2
254
+ 2,
255
+ mockMiddleware
193
256
  ];
194
257
  }
195
258
  });
196
259
  });
197
- return function registerMockHandlers2(_) {
198
- return _ref.apply(this, arguments);
199
- };
200
- }();
260
+ return _getMockMiddleware.apply(this, arguments);
261
+ }
201
262
  export {
202
- registerMockHandlers
263
+ getMatched,
264
+ getMockMiddleware,
265
+ initOrUpdateMockMiddlewares
203
266
  };
@@ -3,7 +3,7 @@ import { createServerBase } from "@modern-js/server-core";
3
3
  import { createNodeServer, loadServerRuntimeConfig } from "@modern-js/server-core/node";
4
4
  import { getDevOptions } from "./helpers";
5
5
  import { devPlugin } from "./dev";
6
- const createDevServer = async (options, applyPlugins) => {
6
+ async function createDevServer(options, applyPlugins) {
7
7
  const { config, pwd, serverConfigFile, serverConfigPath } = options;
8
8
  const dev = getDevOptions(options);
9
9
  const distDir = path.resolve(pwd, config.output.path || "dist");
@@ -30,8 +30,16 @@ const createDevServer = async (options, applyPlugins) => {
30
30
  ]);
31
31
  await applyPlugins(server, prodServerOptions, nodeServer);
32
32
  await server.init();
33
+ nodeServer.listen({
34
+ host: dev.host || "127.0.0.1",
35
+ port: dev.port || "8080"
36
+ }, (err) => {
37
+ if (err) {
38
+ throw err;
39
+ }
40
+ });
33
41
  return nodeServer;
34
- };
42
+ }
35
43
  export {
36
44
  createDevServer
37
45
  };
@@ -1,20 +1,24 @@
1
1
  import { connectMid2HonoMid } from "@modern-js/server-core/node";
2
2
  import { API_DIR, SHARED_DIR } from "@modern-js/utils";
3
- import { startWatcher, onRepack, getDevOptions, initFileReader, registerMockHandlers } from "./helpers";
3
+ import { startWatcher, onRepack, getDevOptions, initFileReader, getMockMiddleware } from "./helpers";
4
4
  const devPlugin = (options) => ({
5
5
  name: "@modern-js/plugin-dev",
6
6
  setup(api) {
7
- const { getMiddlewares, rsbuild, config, pwd } = options;
7
+ const { config, pwd, builder } = options;
8
8
  const closeCb = [];
9
- const { middlewares: rsbuildMiddlewares, close, onHTTPUpgrade } = (getMiddlewares === null || getMiddlewares === void 0 ? void 0 : getMiddlewares()) || {};
10
- close && closeCb.push(close);
11
9
  const dev = getDevOptions(options);
12
10
  return {
13
11
  async prepare() {
12
+ var _dev_after, _dev_before;
13
+ const builderDevServer = await (builder === null || builder === void 0 ? void 0 : builder.createDevServer({
14
+ runCompile: options.runCompile
15
+ }));
16
+ const { middlewares: builderMiddlewares, close, onHTTPUpgrade } = builderDevServer || {};
17
+ close && closeCb.push(close);
14
18
  const { middlewares, distDirectory, nodeServer, apiDirectory, sharedDirectory, serverBase } = api.useAppContext();
15
19
  onHTTPUpgrade && (nodeServer === null || nodeServer === void 0 ? void 0 : nodeServer.on("upgrade", onHTTPUpgrade));
16
20
  const runner = api.useHookRunners();
17
- rsbuild === null || rsbuild === void 0 ? void 0 : rsbuild.onDevCompileDone(({ stats }) => {
21
+ builder === null || builder === void 0 ? void 0 : builder.onDevCompileDone(({ stats }) => {
18
22
  if (stats.toJson({
19
23
  all: false
20
24
  }).name !== "server") {
@@ -38,16 +42,45 @@ const devPlugin = (options) => ({
38
42
  cb();
39
43
  });
40
44
  }));
41
- await registerMockHandlers({
42
- pwd,
43
- server: serverBase
45
+ const before = [];
46
+ const after = [];
47
+ const { setupMiddlewares = [] } = dev;
48
+ if (((_dev_after = dev.after) === null || _dev_after === void 0 ? void 0 : _dev_after.length) || ((_dev_before = dev.before) === null || _dev_before === void 0 ? void 0 : _dev_before.length)) {
49
+ setupMiddlewares.push((middlewares2) => {
50
+ middlewares2.unshift(...dev.before || []);
51
+ middlewares2.push(...dev.after || []);
52
+ });
53
+ }
54
+ setupMiddlewares.forEach((handler) => {
55
+ handler({
56
+ unshift: (...handlers) => before.unshift(...handlers),
57
+ push: (...handlers) => after.push(...handlers)
58
+ }, {
59
+ sockWrite: () => {
60
+ }
61
+ });
44
62
  });
45
- if (rsbuildMiddlewares) {
63
+ before.forEach((middleware, index) => {
46
64
  middlewares.push({
47
- name: "rsbuild-dev",
48
- handler: connectMid2HonoMid(rsbuildMiddlewares)
65
+ name: `before-dev-server-${index}`,
66
+ handler: connectMid2HonoMid(middleware)
49
67
  });
50
- }
68
+ });
69
+ const mockMiddleware = await getMockMiddleware(pwd);
70
+ middlewares.push({
71
+ name: "mock-dev",
72
+ handler: mockMiddleware
73
+ });
74
+ builderMiddlewares && middlewares.push({
75
+ name: "rsbuild-dev",
76
+ handler: connectMid2HonoMid(builderMiddlewares)
77
+ });
78
+ after.forEach((middleware, index) => {
79
+ middlewares.push({
80
+ name: `after-dev-server-${index}`,
81
+ handler: connectMid2HonoMid(middleware)
82
+ });
83
+ });
51
84
  middlewares.push({
52
85
  name: "init-file-reader",
53
86
  handler: initFileReader()
@@ -3,7 +3,7 @@ import { SERVER_BUNDLE_DIRECTORY, SERVER_DIR, logger } from "@modern-js/utils";
3
3
  import { AGGRED_DIR } from "@modern-js/server-core";
4
4
  import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
5
5
  import { debug } from "./utils";
6
- import { registerMockHandlers } from "./mock";
6
+ import { initOrUpdateMockMiddlewares } from "./mock";
7
7
  export * from "./repack";
8
8
  export * from "./devOptions";
9
9
  export * from "./fileReader";
@@ -13,11 +13,8 @@ async function onServerChange({ pwd, filepath, event, server }) {
13
13
  const mockPath = path.normalize(path.join(pwd, mock));
14
14
  const { runner } = server;
15
15
  if (filepath.startsWith(mockPath)) {
16
- await registerMockHandlers({
17
- pwd,
18
- server
19
- });
20
- logger.info("Finish registering the mock handlers");
16
+ await initOrUpdateMockMiddlewares(pwd);
17
+ logger.info("Finish update the mock handlers");
21
18
  } else {
22
19
  try {
23
20
  const fileChangeEvent = {
@@ -2,6 +2,9 @@ import path from "node:path";
2
2
  import { fs } from "@modern-js/utils";
3
3
  import { AGGRED_DIR } from "@modern-js/server-core";
4
4
  import { connectMid2HonoMid } from "@modern-js/server-core/node";
5
+ import { match } from "path-to-regexp";
6
+ let mockAPIs = [];
7
+ let mockConfig;
5
8
  const parseKey = (key) => {
6
9
  const _blank = " ";
7
10
  const splitted = key.split(_blank).filter(Boolean);
@@ -17,8 +20,7 @@ const parseKey = (key) => {
17
20
  path: key
18
21
  };
19
22
  };
20
- const mockHandlerRegistry = /* @__PURE__ */ new Map();
21
- const registerMockHandlers = async ({ pwd, server }) => {
23
+ const getMockModule = async (pwd) => {
22
24
  const exts = [
23
25
  ".ts",
24
26
  ".js"
@@ -32,53 +34,71 @@ const registerMockHandlers = async ({ pwd, server }) => {
32
34
  }
33
35
  }
34
36
  if (!mockFilePath) {
35
- return null;
37
+ return void 0;
36
38
  }
37
- const { default: mockModule, config } = await import(mockFilePath);
39
+ const { default: mockHandlers, config } = await import(mockFilePath);
38
40
  const enable = config === null || config === void 0 ? void 0 : config.enable;
39
41
  if (enable === false) {
40
- return;
42
+ return void 0;
41
43
  }
42
- if (!mockModule) {
44
+ if (!mockHandlers) {
43
45
  throw new Error(`Mock file ${mockFilePath} parsed failed!`);
44
46
  }
45
- Object.entries(mockModule).forEach(([key, handler]) => {
47
+ return {
48
+ mockHandlers,
49
+ config
50
+ };
51
+ };
52
+ const getMatched = (request, mockApis) => {
53
+ const { path: targetPathname, method: targetMethod } = request;
54
+ const matched = mockApis.find((mockApi) => {
55
+ const { method, path: pathname } = mockApi;
56
+ if (method.toLowerCase() === targetMethod.toLowerCase()) {
57
+ return match(pathname, {
58
+ encode: encodeURI,
59
+ decode: decodeURIComponent
60
+ })(targetPathname);
61
+ }
62
+ return false;
63
+ });
64
+ return matched;
65
+ };
66
+ async function initOrUpdateMockMiddlewares(pwd) {
67
+ const mockModule = await getMockModule(pwd);
68
+ mockConfig = mockModule === null || mockModule === void 0 ? void 0 : mockModule.config;
69
+ mockAPIs = Object.entries((mockModule === null || mockModule === void 0 ? void 0 : mockModule.mockHandlers) || {}).map(([key, handler]) => {
46
70
  const { method, path: path2 } = parseKey(key);
47
- const methodName = method.toLowerCase();
48
- const handlerId = `${methodName}-${path2}`;
49
- const mockInfo = mockHandlerRegistry.get(handlerId);
50
- if (mockInfo) {
51
- mockInfo.handler = handler;
52
- } else {
53
- mockHandlerRegistry.set(handlerId, {
54
- handler,
55
- isRegistered: false
56
- });
71
+ return {
72
+ method,
73
+ path: path2,
74
+ handler
75
+ };
76
+ });
77
+ }
78
+ async function getMockMiddleware(pwd) {
79
+ await initOrUpdateMockMiddlewares(pwd);
80
+ const mockMiddleware = async (c, next) => {
81
+ if (typeof (mockConfig === null || mockConfig === void 0 ? void 0 : mockConfig.enable) === "function") {
82
+ const isEnabled = mockConfig.enable(c.env.node.req, c.env.node.res);
83
+ if (!isEnabled) {
84
+ return next();
85
+ }
57
86
  }
58
- if (typeof server[methodName] === "function") {
59
- const mockHandler = async (c, next) => {
60
- var _mockHandlerRegistry_get;
61
- if (typeof enable === "function") {
62
- const isEnabled = enable(c.env.node.req, c.env.node.res);
63
- if (!isEnabled) {
64
- return next();
65
- }
66
- }
67
- const handler2 = (_mockHandlerRegistry_get = mockHandlerRegistry.get(handlerId)) === null || _mockHandlerRegistry_get === void 0 ? void 0 : _mockHandlerRegistry_get.handler;
68
- if (typeof handler2 === "function") {
69
- await connectMid2HonoMid(handler2)(c, next);
70
- } else {
71
- return c.json(handler2);
72
- }
73
- };
74
- const handlerInfo = mockHandlerRegistry.get(handlerId);
75
- if (handlerInfo && !(handlerInfo === null || handlerInfo === void 0 ? void 0 : handlerInfo.isRegistered)) {
76
- server[methodName](path2, mockHandler);
77
- handlerInfo.isRegistered = true;
87
+ const matchedMockAPI = getMatched(c.req, mockAPIs);
88
+ if (matchedMockAPI) {
89
+ const { handler } = matchedMockAPI;
90
+ if (typeof handler === "function") {
91
+ return await connectMid2HonoMid(handler)(c, next);
92
+ } else {
93
+ return c.json(handler);
78
94
  }
79
95
  }
80
- });
81
- };
96
+ return next();
97
+ };
98
+ return mockMiddleware;
99
+ }
82
100
  export {
83
- registerMockHandlers
101
+ getMatched,
102
+ getMockMiddleware,
103
+ initOrUpdateMockMiddlewares
84
104
  };
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
- import { Server as NodeServer } from 'node:http';
3
- import { ServerBaseOptions } from '@modern-js/server-core';
2
+ /// <reference types="node" />
4
3
  import { ApplyPlugins, ModernDevServerOptions } from './types';
5
- export type { ModernDevServerOptions } from './types';
6
- export declare const createDevServer: <O extends ServerBaseOptions>(options: ModernDevServerOptions<O>, applyPlugins: ApplyPlugins<O>) => Promise<NodeServer>;
4
+ export declare function createDevServer(options: ModernDevServerOptions, applyPlugins: ApplyPlugins): Promise<(import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>) & {
5
+ getRequestListener: () => (req: import("http").IncomingMessage, res: import("http").ServerResponse) => Promise<void>;
6
+ getRequestHandler: () => import("@modern-js/server-core/dist/types/types").RequestHandler;
7
+ }>;
@@ -1,4 +1,5 @@
1
1
  import { ModernDevServerOptions } from '../types';
2
2
  export declare const getDevOptions: (options: ModernDevServerOptions) => import("@modern-js/types/server/devServer").DevServerOptions & Pick<import("@modern-js/types/server/devServer").DevServerOptions, "watch" | "https"> & {
3
- writeToDisk?: boolean | ((filename: string) => boolean) | undefined;
3
+ port?: number | undefined;
4
+ host?: string | undefined;
4
5
  };
@@ -1,5 +1,17 @@
1
- import { type ServerBase } from '@modern-js/server-core';
2
- export declare const registerMockHandlers: ({ pwd, server, }: {
3
- pwd: string;
4
- server: ServerBase;
5
- }) => Promise<null | undefined>;
1
+ /// <reference types="node" />
2
+ import { IncomingMessage, ServerResponse } from 'node:http';
3
+ import { NextFunction } from '@modern-js/types';
4
+ import { type Middleware, InternalRequest } from '@modern-js/server-core';
5
+ /** Types: Mock */
6
+ type MockHandler = {
7
+ data: any;
8
+ } | ((req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void> | void);
9
+ type MockAPI = {
10
+ method: string;
11
+ path: string;
12
+ handler: MockHandler;
13
+ };
14
+ export declare const getMatched: (request: InternalRequest, mockApis: MockAPI[]) => MockAPI | undefined;
15
+ export declare function initOrUpdateMockMiddlewares(pwd: string): Promise<void>;
16
+ export declare function getMockMiddleware(pwd: string): Promise<Middleware>;
17
+ export {};
@@ -1,2 +1,2 @@
1
1
  export { createDevServer } from './createDevServer';
2
- export type { ModernDevServerOptions } from './createDevServer';
2
+ export type { ModernDevServerOptions } from './types';
@@ -1,52 +1,18 @@
1
1
  /// <reference types="node" />
2
- /// <reference types="node" />
3
- import type { IncomingMessage, ServerResponse } from 'http';
4
- import type { Socket } from 'net';
5
- import type { DevServerOptions, DevServerHttpsOptions, NextFunction } from '@modern-js/types';
6
- import type { RsbuildInstance } from '@rsbuild/core';
2
+ import type { UniBuilderInstance } from '@modern-js/uni-builder';
3
+ import type { DevServerOptions, DevServerHttpsOptions } from '@modern-js/types';
7
4
  import { NodeServer, ServerBase, ServerBaseOptions } from '@modern-js/server-core';
8
5
  export type { DevServerOptions, DevServerHttpsOptions };
9
- type Middleware = (req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void>;
10
- export type DevMiddlewareAPI = Middleware & {
11
- close: (callback: (err: Error | null | undefined) => void) => any;
12
- };
13
- export type MiddlewareCallbacks = {
14
- onInvalid: () => void;
15
- onDone: (stats: any) => void;
16
- };
17
- export type DevMiddlewareOptions = {
18
- /** To ensure HMR works, the devMiddleware need inject the hmr client path into page when HMR enable. */
19
- hmrClientPath?: string;
20
- /** The options need by compiler middleware (like webpackMiddleware) */
21
- headers?: Record<string, string | string[]>;
22
- writeToDisk?: boolean | ((filename: string) => boolean);
23
- stats?: boolean;
24
- /** should trigger when compiler hook called */
25
- callbacks: MiddlewareCallbacks;
26
- /** whether use Server Side Render */
27
- serverSideRender?: boolean;
28
- };
29
- /**
30
- * The modern/server do nothing about compiler, the devMiddleware need do such things to ensure dev works well:
31
- * - Call compiler.watch (normally did by webpack-dev-middleware).
32
- * - Inject the hmr client path into page (the hmr client modern/server already provide).
33
- * - Notify server when compiler hooks are triggered.
34
- */
35
- export type DevMiddleware = (options: DevMiddlewareOptions) => DevMiddlewareAPI;
36
6
  export type ExtraOptions = {
37
7
  dev: Pick<DevServerOptions, 'watch' | 'https'> & {
38
- writeToDisk?: boolean | ((filename: string) => boolean);
8
+ port?: number;
9
+ host?: string;
39
10
  };
11
+ runCompile?: boolean;
40
12
  /** compat, the default value is modern.server-runtime.config.ts */
41
13
  serverConfigFile?: string;
42
14
  serverConfigPath?: string;
43
- useSSRWorker?: boolean;
44
- rsbuild: RsbuildInstance;
45
- getMiddlewares?: () => {
46
- middlewares: (req: IncomingMessage, res: ServerResponse, next: NextFunction) => void;
47
- onHTTPUpgrade: (req: IncomingMessage, socket: Socket, head: any) => void;
48
- close: () => Promise<void>;
49
- };
15
+ builder?: UniBuilderInstance;
50
16
  };
51
17
  export type ModernDevServerOptions<O extends ServerBaseOptions = ServerBaseOptions> = O & ExtraOptions;
52
18
  export type ApplyPlugins<O extends ServerBaseOptions = ServerBaseOptions> = (server: ServerBase, options: O, nodeServer?: NodeServer) => Promise<void>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.56.0",
18
+ "version": "2.56.2",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -48,14 +48,13 @@
48
48
  "minimatch": "^3.0.4",
49
49
  "path-to-regexp": "^6.2.0",
50
50
  "ws": "^8.13.0",
51
- "@modern-js/runtime-utils": "2.56.0",
52
- "@modern-js/server-utils": "2.56.0",
53
- "@modern-js/types": "2.56.0",
54
- "@modern-js/utils": "2.56.0",
55
- "@modern-js/server-core": "2.56.0"
51
+ "@modern-js/runtime-utils": "2.56.2",
52
+ "@modern-js/server-utils": "2.56.2",
53
+ "@modern-js/types": "2.56.2",
54
+ "@modern-js/utils": "2.56.2",
55
+ "@modern-js/server-core": "2.56.2"
56
56
  },
57
57
  "devDependencies": {
58
- "@rsbuild/core": "1.0.1-beta.3",
59
58
  "@types/connect-history-api-fallback": "^1.3.5",
60
59
  "@types/jest": "^29",
61
60
  "@types/minimatch": "^3.0.5",
@@ -68,8 +67,9 @@
68
67
  "typescript": "^5",
69
68
  "webpack": "^5.93.0",
70
69
  "websocket": "^1",
71
- "@scripts/build": "2.56.0",
72
- "@scripts/jest-config": "2.56.0"
70
+ "@modern-js/uni-builder": "2.56.2",
71
+ "@scripts/jest-config": "2.56.2",
72
+ "@scripts/build": "2.56.2"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "devcert": "^1.2.2",