@modern-js/server 2.48.6 → 2.49.1

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 (80) hide show
  1. package/dist/cjs/createDevServer.js +95 -0
  2. package/dist/cjs/{server/index.js → helpers/devOptions.js} +11 -28
  3. package/dist/cjs/helpers/fileReader.js +51 -0
  4. package/dist/cjs/helpers/index.js +107 -0
  5. package/dist/cjs/{server/workerSSRRender.js → helpers/repack.js} +27 -21
  6. package/dist/cjs/helpers/utils.js +29 -0
  7. package/dist/cjs/index.js +3 -13
  8. package/dist/esm/createDevServer.js +99 -0
  9. package/dist/esm/helpers/devOptions.js +10 -0
  10. package/dist/esm/helpers/fileReader.js +45 -0
  11. package/dist/esm/helpers/index.js +119 -0
  12. package/dist/esm/helpers/repack.js +31 -0
  13. package/dist/esm/helpers/utils.js +5 -0
  14. package/dist/esm/index.js +2 -12
  15. package/dist/esm-node/createDevServer.js +61 -0
  16. package/dist/esm-node/helpers/devOptions.js +10 -0
  17. package/dist/esm-node/helpers/fileReader.js +27 -0
  18. package/dist/esm-node/helpers/index.js +69 -0
  19. package/dist/esm-node/helpers/repack.js +27 -0
  20. package/dist/esm-node/helpers/utils.js +5 -0
  21. package/dist/esm-node/index.js +2 -11
  22. package/dist/types/createDevServer.d.ts +6 -0
  23. package/dist/types/{constants.d.ts → helpers/constants.d.ts} +1 -1
  24. package/dist/types/helpers/devOptions.d.ts +4 -0
  25. package/dist/types/helpers/fileReader.d.ts +2 -0
  26. package/dist/types/helpers/index.d.ts +14 -0
  27. package/dist/types/helpers/repack.d.ts +3 -0
  28. package/dist/types/helpers/utils.d.ts +1 -0
  29. package/dist/types/index.d.ts +2 -6
  30. package/dist/types/types.d.ts +4 -11
  31. package/package.json +10 -11
  32. package/dist/cjs/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -61
  33. package/dist/cjs/dev-tools/dev-middleware/hmr-client/index.js +0 -159
  34. package/dist/cjs/dev-tools/dev-middleware/index.js +0 -90
  35. package/dist/cjs/dev-tools/dev-middleware/socketServer.js +0 -173
  36. package/dist/cjs/dev-tools/https/index.js +0 -54
  37. package/dist/cjs/dev-tools/mock/getMockData.js +0 -104
  38. package/dist/cjs/dev-tools/mock/index.js +0 -85
  39. package/dist/cjs/dev-tools/register/index.js +0 -144
  40. package/dist/cjs/server/devServer.js +0 -267
  41. package/dist/cjs/server/devServerOld.js +0 -346
  42. package/dist/esm/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -54
  43. package/dist/esm/dev-tools/dev-middleware/hmr-client/index.js +0 -162
  44. package/dist/esm/dev-tools/dev-middleware/index.js +0 -82
  45. package/dist/esm/dev-tools/dev-middleware/socketServer.js +0 -149
  46. package/dist/esm/dev-tools/https/index.js +0 -74
  47. package/dist/esm/dev-tools/mock/getMockData.js +0 -102
  48. package/dist/esm/dev-tools/mock/index.js +0 -88
  49. package/dist/esm/dev-tools/register/index.js +0 -109
  50. package/dist/esm/server/devServer.js +0 -449
  51. package/dist/esm/server/devServerOld.js +0 -519
  52. package/dist/esm/server/index.js +0 -45
  53. package/dist/esm/server/workerSSRRender.js +0 -43
  54. package/dist/esm-node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -36
  55. package/dist/esm-node/dev-tools/dev-middleware/hmr-client/index.js +0 -145
  56. package/dist/esm-node/dev-tools/dev-middleware/index.js +0 -60
  57. package/dist/esm-node/dev-tools/dev-middleware/socketServer.js +0 -143
  58. package/dist/esm-node/dev-tools/https/index.js +0 -30
  59. package/dist/esm-node/dev-tools/mock/getMockData.js +0 -80
  60. package/dist/esm-node/dev-tools/mock/index.js +0 -51
  61. package/dist/esm-node/dev-tools/register/index.js +0 -110
  62. package/dist/esm-node/server/devServer.js +0 -233
  63. package/dist/esm-node/server/devServerOld.js +0 -312
  64. package/dist/esm-node/server/index.js +0 -26
  65. package/dist/esm-node/server/workerSSRRender.js +0 -21
  66. package/dist/types/dev-tools/dev-middleware/hmr-client/createSocketUrl.d.ts +0 -7
  67. package/dist/types/dev-tools/dev-middleware/hmr-client/index.d.ts +0 -1
  68. package/dist/types/dev-tools/dev-middleware/index.d.ts +0 -21
  69. package/dist/types/dev-tools/dev-middleware/socketServer.d.ts +0 -25
  70. package/dist/types/dev-tools/https/index.d.ts +0 -7
  71. package/dist/types/dev-tools/mock/getMockData.d.ts +0 -18
  72. package/dist/types/dev-tools/mock/index.d.ts +0 -4
  73. package/dist/types/dev-tools/register/index.d.ts +0 -2
  74. package/dist/types/server/devServer.d.ts +0 -38
  75. package/dist/types/server/devServerOld.d.ts +0 -37
  76. package/dist/types/server/index.d.ts +0 -8
  77. package/dist/types/server/workerSSRRender.d.ts +0 -10
  78. /package/dist/cjs/{constants.js → helpers/constants.js} +0 -0
  79. /package/dist/esm/{constants.js → helpers/constants.js} +0 -0
  80. /package/dist/esm-node/{constants.js → helpers/constants.js} +0 -0
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var createDevServer_exports = {};
30
+ __export(createDevServer_exports, {
31
+ createDevServer: () => createDevServer
32
+ });
33
+ module.exports = __toCommonJS(createDevServer_exports);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_base = require("@modern-js/server-core/base");
36
+ var import_node = require("@modern-js/server-core/base/node");
37
+ var import_utils = require("@modern-js/utils");
38
+ var import_helpers = require("./helpers");
39
+ const createDevServer = async (options, initProdMiddlewares) => {
40
+ const { config, pwd, routes = [], getMiddlewares, rsbuild, appContext } = options;
41
+ const dev = (0, import_helpers.getDevOptions)(options);
42
+ const distDir = import_node_path.default.resolve(pwd, config.output.path || "dist");
43
+ const apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || import_utils.API_DIR;
44
+ const sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || import_utils.SHARED_DIR;
45
+ const prodServerOptions = {
46
+ ...options,
47
+ pwd: distDir
48
+ };
49
+ const server = (0, import_base.createServerBase)(prodServerOptions);
50
+ const closeCb = [];
51
+ await (0, import_node.registerMockHandlers)({
52
+ pwd,
53
+ server
54
+ });
55
+ const { middlewares: rsbuildMiddlewares, close, onHTTPUpgrade } = (getMiddlewares === null || getMiddlewares === void 0 ? void 0 : getMiddlewares()) || {};
56
+ close && closeCb.push(close);
57
+ rsbuildMiddlewares && server.all("*", (0, import_node.connectMid2HonoMid)(rsbuildMiddlewares));
58
+ server.use("*", (0, import_helpers.initFileReader)());
59
+ await server.init();
60
+ const nodeServer = (0, import_node.createNodeServer)(server.handle.bind(server));
61
+ rsbuild === null || rsbuild === void 0 ? void 0 : rsbuild.onDevCompileDone(({ stats }) => {
62
+ if (stats.toJson({
63
+ all: false
64
+ }).name !== "server") {
65
+ (0, import_helpers.onRepack)(distDir, server.runner, routes);
66
+ }
67
+ });
68
+ onHTTPUpgrade && nodeServer.on("upgrade", onHTTPUpgrade);
69
+ await server.runner.beforeServerInit({
70
+ app: nodeServer
71
+ });
72
+ await initProdMiddlewares(server, prodServerOptions);
73
+ if (dev.watch) {
74
+ const { watchOptions } = config.server;
75
+ const watcher = (0, import_helpers.startWatcher)({
76
+ pwd,
77
+ distDir,
78
+ apiDir,
79
+ sharedDir,
80
+ watchOptions,
81
+ server
82
+ });
83
+ closeCb.push(watcher.close.bind(watcher));
84
+ }
85
+ closeCb.length > 0 && nodeServer.on("close", () => {
86
+ closeCb.forEach((cb) => {
87
+ cb();
88
+ });
89
+ });
90
+ return nodeServer;
91
+ };
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ createDevServer
95
+ });
@@ -16,36 +16,19 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var server_exports = {};
20
- __export(server_exports, {
21
- DevServer: () => DevServer,
22
- DevServerForRsbuild: () => DevServerForRsbuild
19
+ var devOptions_exports = {};
20
+ __export(devOptions_exports, {
21
+ getDevOptions: () => getDevOptions
23
22
  });
24
- module.exports = __toCommonJS(server_exports);
25
- var import_prod_server = require("@modern-js/prod-server");
26
- var import_devServerOld = require("./devServerOld");
27
- var import_devServer = require("./devServer");
28
- const createDevServer = (options) => {
29
- return new import_devServerOld.ModernDevServer(options);
23
+ module.exports = __toCommonJS(devOptions_exports);
24
+ var import_lodash = require("@modern-js/utils/lodash");
25
+ var import_constants = require("./constants");
26
+ const getDevOptions = (options) => {
27
+ const devOptions = options.dev;
28
+ const defaultOptions = (0, import_constants.getDefaultDevOptions)();
29
+ return (0, import_lodash.merge)(defaultOptions, devOptions);
30
30
  };
31
- class DevServer extends import_prod_server.Server {
32
- constructor(options) {
33
- super(options);
34
- if (options.dev) {
35
- this.serverImpl = createDevServer;
36
- }
37
- }
38
- }
39
- class DevServerForRsbuild extends import_prod_server.Server {
40
- constructor(options) {
41
- super(options);
42
- if (options.dev) {
43
- this.serverImpl = (options2) => new import_devServer.ModernDevServer(options2);
44
- }
45
- }
46
- }
47
31
  // Annotate the CommonJS export names for ESM import in node:
48
32
  0 && (module.exports = {
49
- DevServer,
50
- DevServerForRsbuild
33
+ getDevOptions
51
34
  });
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var fileReader_exports = {};
20
+ __export(fileReader_exports, {
21
+ initFileReader: () => initFileReader
22
+ });
23
+ module.exports = __toCommonJS(fileReader_exports);
24
+ var import_fileReader = require("@modern-js/runtime-utils/fileReader");
25
+ const initFileReader = () => {
26
+ let isInit = false;
27
+ return async (ctx, next) => {
28
+ var _res_locals;
29
+ if (isInit) {
30
+ return next();
31
+ }
32
+ isInit = true;
33
+ const { res } = ctx.env.node;
34
+ if (!((_res_locals = res.locals) === null || _res_locals === void 0 ? void 0 : _res_locals.webpack)) {
35
+ import_fileReader.fileReader.reset();
36
+ return next();
37
+ }
38
+ const { devMiddleware: webpackDevMid } = res.locals.webpack;
39
+ const { outputFileSystem } = webpackDevMid;
40
+ if (outputFileSystem) {
41
+ import_fileReader.fileReader.reset(outputFileSystem);
42
+ } else {
43
+ import_fileReader.fileReader.reset();
44
+ }
45
+ return next();
46
+ };
47
+ };
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ initFileReader
51
+ });
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var helpers_exports = {};
31
+ __export(helpers_exports, {
32
+ startWatcher: () => startWatcher
33
+ });
34
+ module.exports = __toCommonJS(helpers_exports);
35
+ var import_path = __toESM(require("path"));
36
+ var import_utils = require("@modern-js/utils");
37
+ var import_base = require("@modern-js/server-core/base");
38
+ var import_node = require("@modern-js/server-core/base/node");
39
+ var import_watcher = __toESM(require("../dev-tools/watcher"));
40
+ var import_utils2 = require("./utils");
41
+ __reExport(helpers_exports, require("./repack"), module.exports);
42
+ __reExport(helpers_exports, require("./devOptions"), module.exports);
43
+ __reExport(helpers_exports, require("./fileReader"), module.exports);
44
+ async function onServerChange({ pwd, filepath, event, server }) {
45
+ const { mock } = import_base.AGGRED_DIR;
46
+ const mockPath = import_path.default.normalize(import_path.default.join(pwd, mock));
47
+ const { runner } = server;
48
+ runner.reset();
49
+ if (filepath.startsWith(mockPath)) {
50
+ await (0, import_node.registerMockHandlers)({
51
+ pwd,
52
+ server
53
+ });
54
+ import_utils.logger.info("Finish registering the mock handlers");
55
+ } else {
56
+ try {
57
+ await runner.onApiChange([
58
+ {
59
+ filename: filepath,
60
+ event
61
+ }
62
+ ]);
63
+ (0, import_utils2.debug)(`Finish reload server, trigger by ${filepath} ${event}`);
64
+ } catch (e) {
65
+ import_utils.logger.error(e);
66
+ }
67
+ }
68
+ }
69
+ function startWatcher({ pwd, distDir, apiDir, sharedDir, watchOptions, server }) {
70
+ const { mock } = import_base.AGGRED_DIR;
71
+ const defaultWatched = [
72
+ `${mock}/**/*`,
73
+ `${import_utils.SERVER_DIR}/**/*`,
74
+ `${apiDir}/**`,
75
+ `${sharedDir}/**/*`,
76
+ `${distDir}/${import_utils.SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
77
+ ];
78
+ const mergedWatchOptions = (0, import_watcher.mergeWatchOptions)(watchOptions);
79
+ const defaultWatchedPaths = defaultWatched.map((p) => {
80
+ const finalPath = import_path.default.isAbsolute(p) ? p : import_path.default.join(pwd, p);
81
+ return import_path.default.normalize(finalPath);
82
+ });
83
+ const watcher = new import_watcher.default();
84
+ watcher.createDepTree();
85
+ watcher.listen(defaultWatchedPaths, mergedWatchOptions, (filepath, event) => {
86
+ if (filepath.includes("-server-loaders.js")) {
87
+ delete require.cache[filepath];
88
+ } else {
89
+ watcher.updateDepTree();
90
+ watcher.cleanDepCache(filepath);
91
+ }
92
+ onServerChange({
93
+ pwd,
94
+ filepath,
95
+ event,
96
+ server
97
+ });
98
+ });
99
+ return watcher;
100
+ }
101
+ // Annotate the CommonJS export names for ESM import in node:
102
+ 0 && (module.exports = {
103
+ startWatcher,
104
+ ...require("./repack"),
105
+ ...require("./devOptions"),
106
+ ...require("./fileReader")
107
+ });
@@ -26,30 +26,36 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var workerSSRRender_exports = {};
30
- __export(workerSSRRender_exports, {
31
- workerSSRRender: () => workerSSRRender
29
+ var repack_exports = {};
30
+ __export(repack_exports, {
31
+ onRepack: () => onRepack
32
32
  });
33
- module.exports = __toCommonJS(workerSSRRender_exports);
34
- var import_axios = __toESM(require("axios"));
33
+ module.exports = __toCommonJS(repack_exports);
34
+ var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
- const PORT = 9230;
37
- async function workerSSRRender(ctx, renderOptions, _runner) {
38
- const { headers, params } = ctx;
39
- const { urlPath } = renderOptions.route;
40
- const url = urlPath.startsWith("/") ? `http://0.0.0.0:${PORT}${urlPath}` : `http://0.0.0.0:${PORT}/${urlPath}`;
41
- const resposne = await import_axios.default.get(url, {
42
- timeout: 5e3,
43
- responseType: "text",
44
- headers,
45
- params
36
+ var import_fileReader = require("@modern-js/runtime-utils/fileReader");
37
+ const getBundles = (routes) => {
38
+ return routes.filter((route) => route.isSSR).map((route) => route.bundle);
39
+ };
40
+ const cleanSSRCache = (distDir, routes) => {
41
+ const bundles = getBundles(routes);
42
+ bundles.forEach((bundle) => {
43
+ const filepath = import_path.default.join(distDir, bundle);
44
+ if (require.cache[filepath]) {
45
+ delete require.cache[filepath];
46
+ }
46
47
  });
47
- return {
48
- content: resposne.data,
49
- contentType: import_utils.mime.contentType("html")
50
- };
51
- }
48
+ const loadable = import_path.default.join(distDir, import_utils.LOADABLE_STATS_FILE);
49
+ if (require.cache[loadable]) {
50
+ delete require.cache[loadable];
51
+ }
52
+ };
53
+ const onRepack = (distDir, runner, routes) => {
54
+ cleanSSRCache(distDir, routes);
55
+ import_fileReader.fileReader.reset();
56
+ runner.repack();
57
+ };
52
58
  // Annotate the CommonJS export names for ESM import in node:
53
59
  0 && (module.exports = {
54
- workerSSRRender
60
+ onRepack
55
61
  });
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var utils_exports = {};
20
+ __export(utils_exports, {
21
+ debug: () => debug
22
+ });
23
+ module.exports = __toCommonJS(utils_exports);
24
+ var import_utils = require("@modern-js/utils");
25
+ const debug = (0, import_utils.createDebugger)("server");
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ debug
29
+ });
package/dist/cjs/index.js CHANGED
@@ -18,21 +18,11 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var src_exports = {};
20
20
  __export(src_exports, {
21
- Server: () => import_server.DevServer,
22
- ServerForRsbuild: () => import_server.DevServerForRsbuild,
23
- default: () => src_default
21
+ createDevServer: () => import_createDevServer.createDevServer
24
22
  });
25
23
  module.exports = __toCommonJS(src_exports);
26
- var import_server = require("./server");
27
- var src_default = (options) => {
28
- if (options == null) {
29
- throw new Error("can not start server without options");
30
- }
31
- const server = new import_server.DevServer(options);
32
- return server.init();
33
- };
24
+ var import_createDevServer = require("./createDevServer");
34
25
  // Annotate the CommonJS export names for ESM import in node:
35
26
  0 && (module.exports = {
36
- Server,
37
- ServerForRsbuild
27
+ createDevServer
38
28
  });
@@ -0,0 +1,99 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
+ import path from "node:path";
6
+ import { createServerBase } from "@modern-js/server-core/base";
7
+ import { registerMockHandlers, createNodeServer, connectMid2HonoMid } from "@modern-js/server-core/base/node";
8
+ import { API_DIR, SHARED_DIR } from "@modern-js/utils";
9
+ import { startWatcher, onRepack, getDevOptions, initFileReader } from "./helpers";
10
+ var createDevServer = function() {
11
+ var _ref = _async_to_generator(function(options, initProdMiddlewares) {
12
+ var config, pwd, _options_routes, routes, getMiddlewares, rsbuild, appContext, dev, distDir, apiDir, sharedDir, prodServerOptions, server, closeCb, _ref2, rsbuildMiddlewares, close, onHTTPUpgrade, nodeServer, watchOptions, watcher;
13
+ return _ts_generator(this, function(_state) {
14
+ switch (_state.label) {
15
+ case 0:
16
+ config = options.config, pwd = options.pwd, _options_routes = options.routes, routes = _options_routes === void 0 ? [] : _options_routes, getMiddlewares = options.getMiddlewares, rsbuild = options.rsbuild, appContext = options.appContext;
17
+ dev = getDevOptions(options);
18
+ distDir = path.resolve(pwd, config.output.path || "dist");
19
+ apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || API_DIR;
20
+ sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || SHARED_DIR;
21
+ prodServerOptions = _object_spread_props(_object_spread({}, options), {
22
+ pwd: distDir
23
+ });
24
+ server = createServerBase(prodServerOptions);
25
+ closeCb = [];
26
+ return [
27
+ 4,
28
+ registerMockHandlers({
29
+ pwd,
30
+ server
31
+ })
32
+ ];
33
+ case 1:
34
+ _state.sent();
35
+ _ref2 = (getMiddlewares === null || getMiddlewares === void 0 ? void 0 : getMiddlewares()) || {}, rsbuildMiddlewares = _ref2.middlewares, close = _ref2.close, onHTTPUpgrade = _ref2.onHTTPUpgrade;
36
+ close && closeCb.push(close);
37
+ rsbuildMiddlewares && server.all("*", connectMid2HonoMid(rsbuildMiddlewares));
38
+ server.use("*", initFileReader());
39
+ return [
40
+ 4,
41
+ server.init()
42
+ ];
43
+ case 2:
44
+ _state.sent();
45
+ nodeServer = createNodeServer(server.handle.bind(server));
46
+ rsbuild === null || rsbuild === void 0 ? void 0 : rsbuild.onDevCompileDone(function(param) {
47
+ var stats = param.stats;
48
+ if (stats.toJson({
49
+ all: false
50
+ }).name !== "server") {
51
+ onRepack(distDir, server.runner, routes);
52
+ }
53
+ });
54
+ onHTTPUpgrade && nodeServer.on("upgrade", onHTTPUpgrade);
55
+ return [
56
+ 4,
57
+ server.runner.beforeServerInit({
58
+ app: nodeServer
59
+ })
60
+ ];
61
+ case 3:
62
+ _state.sent();
63
+ return [
64
+ 4,
65
+ initProdMiddlewares(server, prodServerOptions)
66
+ ];
67
+ case 4:
68
+ _state.sent();
69
+ if (dev.watch) {
70
+ watchOptions = config.server.watchOptions;
71
+ watcher = startWatcher({
72
+ pwd,
73
+ distDir,
74
+ apiDir,
75
+ sharedDir,
76
+ watchOptions,
77
+ server
78
+ });
79
+ closeCb.push(watcher.close.bind(watcher));
80
+ }
81
+ closeCb.length > 0 && nodeServer.on("close", function() {
82
+ closeCb.forEach(function(cb) {
83
+ cb();
84
+ });
85
+ });
86
+ return [
87
+ 2,
88
+ nodeServer
89
+ ];
90
+ }
91
+ });
92
+ });
93
+ return function createDevServer2(options, initProdMiddlewares) {
94
+ return _ref.apply(this, arguments);
95
+ };
96
+ }();
97
+ export {
98
+ createDevServer
99
+ };
@@ -0,0 +1,10 @@
1
+ import { merge } from "@modern-js/utils/lodash";
2
+ import { getDefaultDevOptions } from "./constants";
3
+ var getDevOptions = function(options) {
4
+ var devOptions = options.dev;
5
+ var defaultOptions = getDefaultDevOptions();
6
+ return merge(defaultOptions, devOptions);
7
+ };
8
+ export {
9
+ getDevOptions
10
+ };
@@ -0,0 +1,45 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { fileReader } from "@modern-js/runtime-utils/fileReader";
4
+ var initFileReader = function() {
5
+ var isInit = false;
6
+ return function() {
7
+ var _ref = _async_to_generator(function(ctx, next) {
8
+ var _res_locals, res, _res_locals_webpack, webpackDevMid, outputFileSystem;
9
+ return _ts_generator(this, function(_state) {
10
+ if (isInit) {
11
+ return [
12
+ 2,
13
+ next()
14
+ ];
15
+ }
16
+ isInit = true;
17
+ res = ctx.env.node.res;
18
+ if (!((_res_locals = res.locals) === null || _res_locals === void 0 ? void 0 : _res_locals.webpack)) {
19
+ fileReader.reset();
20
+ return [
21
+ 2,
22
+ next()
23
+ ];
24
+ }
25
+ _res_locals_webpack = res.locals.webpack, webpackDevMid = _res_locals_webpack.devMiddleware;
26
+ outputFileSystem = webpackDevMid.outputFileSystem;
27
+ if (outputFileSystem) {
28
+ fileReader.reset(outputFileSystem);
29
+ } else {
30
+ fileReader.reset();
31
+ }
32
+ return [
33
+ 2,
34
+ next()
35
+ ];
36
+ });
37
+ });
38
+ return function(ctx, next) {
39
+ return _ref.apply(this, arguments);
40
+ };
41
+ }();
42
+ };
43
+ export {
44
+ initFileReader
45
+ };