@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
@@ -1,144 +0,0 @@
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 register_exports = {};
30
- __export(register_exports, {
31
- enableRegister: () => enableRegister
32
- });
33
- module.exports = __toCommonJS(register_exports);
34
- var import_path = __toESM(require("path"));
35
- var import_server_utils = require("@modern-js/server-utils");
36
- var import_utils = require("@modern-js/utils");
37
- const debug = (0, import_utils.createDebugger)("server");
38
- const checkDep = (depName, paths) => {
39
- let packagePath = "";
40
- try {
41
- packagePath = require.resolve(depName, {
42
- paths
43
- });
44
- } catch (error) {
45
- }
46
- return Boolean(packagePath);
47
- };
48
- const enableRegister = (projectRoot, config) => {
49
- const registerDirs = [
50
- "./api",
51
- "./server",
52
- "./config/mock",
53
- "./shared"
54
- ];
55
- const TS_CONFIG_FILENAME = `tsconfig.json`;
56
- const tsconfigPath = import_path.default.resolve(projectRoot, TS_CONFIG_FILENAME);
57
- const isTsProject = import_utils.fs.existsSync(tsconfigPath);
58
- const existTsNode = checkDep("ts-node", [
59
- projectRoot
60
- ]);
61
- const existTsConfigPaths = checkDep("tsconfig-paths", [
62
- projectRoot
63
- ]);
64
- if (isTsProject && existTsNode && existTsConfigPaths) {
65
- var _config_output_distPath;
66
- debug("use ts-node");
67
- const distPath = ((_config_output_distPath = config.output.distPath) === null || _config_output_distPath === void 0 ? void 0 : _config_output_distPath.root) || "dist";
68
- const tsNode = require("ts-node");
69
- const tsConfigPaths = require("tsconfig-paths");
70
- const { alias } = config.source;
71
- const aliasConfig = (0, import_utils.getAliasConfig)(alias, {
72
- appDirectory: projectRoot,
73
- tsconfigPath
74
- });
75
- const { paths = {}, absoluteBaseUrl = "./" } = aliasConfig;
76
- const tsPaths = Object.keys(paths).reduce((o, key) => {
77
- let tsPath = paths[key];
78
- if (typeof tsPath === "string" && import_path.default.isAbsolute(tsPath)) {
79
- tsPath = import_path.default.relative(absoluteBaseUrl, tsPath);
80
- }
81
- if (typeof tsPath === "string") {
82
- tsPath = [
83
- tsPath
84
- ];
85
- }
86
- return {
87
- ...o,
88
- [`${key}`]: tsPath
89
- };
90
- }, {});
91
- tsConfigPaths.register({
92
- baseUrl: absoluteBaseUrl || "./",
93
- paths: tsPaths
94
- });
95
- const tsConfig = (0, import_utils.readTsConfigByFile)(tsconfigPath);
96
- const tsNodeOptions = tsConfig["ts-node"];
97
- tsNode.register({
98
- project: tsconfigPath,
99
- scope: true,
100
- // for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
101
- files: true,
102
- transpileOnly: true,
103
- ignore: [
104
- "(?:^|/)node_modules/",
105
- `(?:^|/)${distPath}/`
106
- ],
107
- ...tsNodeOptions
108
- });
109
- } else {
110
- var _config_tools, _config_server;
111
- debug("use @babel/register");
112
- const babelConfig = (0, import_server_utils.resolveBabelConfig)(projectRoot, {
113
- ...config.source,
114
- babelConfig: (_config_tools = config.tools) === null || _config_tools === void 0 ? void 0 : _config_tools.babel,
115
- server: {
116
- compiler: (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.compiler
117
- }
118
- }, {
119
- tsconfigPath
120
- });
121
- return require("@babel/register")({
122
- ...babelConfig,
123
- only: [
124
- function(filePath) {
125
- if (filePath.includes(`node_modules${import_path.default.sep}.modern-js`)) {
126
- return true;
127
- }
128
- return registerDirs.some((registerDir) => filePath.startsWith(import_path.default.join(projectRoot, registerDir)));
129
- }
130
- ],
131
- extensions: [
132
- ".js",
133
- ".ts"
134
- ],
135
- babelrc: false,
136
- configFile: false,
137
- root: projectRoot
138
- });
139
- }
140
- };
141
- // Annotate the CommonJS export names for ESM import in node:
142
- 0 && (module.exports = {
143
- enableRegister
144
- });
@@ -1,267 +0,0 @@
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 devServer_exports = {};
30
- __export(devServer_exports, {
31
- ModernDevServer: () => ModernDevServer
32
- });
33
- module.exports = __toCommonJS(devServer_exports);
34
- var import_http = require("http");
35
- var import_path = __toESM(require("path"));
36
- var import_https = require("https");
37
- var import_utils = require("@modern-js/utils");
38
- var import_prod_server = require("@modern-js/prod-server");
39
- var import_lodash = require("@modern-js/utils/lodash");
40
- var import_fileReader = require("@modern-js/runtime-utils/fileReader");
41
- var import_constants = require("../constants");
42
- var import_mock = require("../dev-tools/mock");
43
- var import_register = require("../dev-tools/register");
44
- var import_watcher = __toESM(require("../dev-tools/watcher"));
45
- var import_workerSSRRender = require("./workerSSRRender");
46
- class ModernDevServer extends import_prod_server.ModernServer {
47
- getDevOptions(options) {
48
- const devOptions = options.dev;
49
- const defaultOptions = (0, import_constants.getDefaultDevOptions)();
50
- return (0, import_lodash.merge)(defaultOptions, devOptions);
51
- }
52
- // Complete the preparation of services
53
- async onInit(runner, app) {
54
- this.runner = runner;
55
- const { dev } = this;
56
- const { middlewares: rsbuildMiddlewares, close, onHTTPUpgrade } = this.getMiddlewares();
57
- app.on("upgrade", onHTTPUpgrade);
58
- this.rsbuild.onDevCompileDone(({ stats }) => {
59
- if (stats.toJson({
60
- all: false
61
- }).name !== "server") {
62
- this.onRepack({
63
- routes: this.getRoutes()
64
- });
65
- }
66
- });
67
- await this.applyDefaultMiddlewares();
68
- this.addHandler((ctx, next) => rsbuildMiddlewares(ctx.req, ctx.res, next));
69
- this.closeCb.push(close);
70
- this.initFileReader();
71
- await super.onInit(runner, app);
72
- if (dev.watch) {
73
- this.startWatcher();
74
- app.on("close", async () => {
75
- var _this_watcher;
76
- await ((_this_watcher = this.watcher) === null || _this_watcher === void 0 ? void 0 : _this_watcher.close());
77
- });
78
- }
79
- }
80
- initFileReader() {
81
- var _this_dev;
82
- let isInit = false;
83
- if (((_this_dev = this.dev) === null || _this_dev === void 0 ? void 0 : _this_dev.writeToDisk) === false) {
84
- this.addHandler((ctx, next) => {
85
- var _ctx_res_locals;
86
- if (isInit) {
87
- return next();
88
- }
89
- isInit = true;
90
- if (!((_ctx_res_locals = ctx.res.locals) === null || _ctx_res_locals === void 0 ? void 0 : _ctx_res_locals.webpack)) {
91
- import_fileReader.fileReader.reset();
92
- return next();
93
- }
94
- const { devMiddleware: webpackDevMid } = ctx.res.locals.webpack;
95
- const { outputFileSystem } = webpackDevMid;
96
- if (outputFileSystem) {
97
- import_fileReader.fileReader.reset(outputFileSystem);
98
- } else {
99
- import_fileReader.fileReader.reset();
100
- }
101
- return next();
102
- });
103
- }
104
- }
105
- async close() {
106
- for (const cb of this.closeCb) {
107
- await cb();
108
- }
109
- }
110
- // override the ModernServer renderHandler logic
111
- getRenderHandler() {
112
- if (this.useSSRWorker) {
113
- var _this_conf_server, _conf_security;
114
- const { distDir, staticGenerate, conf, metaName } = this;
115
- const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
116
- const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
117
- return (0, import_prod_server.createRenderHandler)({
118
- ssrRender: import_workerSSRRender.workerSSRRender,
119
- distDir,
120
- staticGenerate,
121
- conf,
122
- forceCSR,
123
- nonce: (_conf_security = conf.security) === null || _conf_security === void 0 ? void 0 : _conf_security.nonce,
124
- metaName
125
- });
126
- }
127
- return super.getRenderHandler();
128
- }
129
- async applyDefaultMiddlewares() {
130
- const { pwd } = this;
131
- this.mockHandler = (0, import_mock.createMockHandler)({
132
- pwd
133
- });
134
- this.addHandler((ctx, next) => {
135
- if (this.mockHandler) {
136
- this.mockHandler(ctx, next);
137
- } else {
138
- next();
139
- }
140
- });
141
- }
142
- onRepack(options = {}) {
143
- if (Array.isArray(options.routes)) {
144
- this.router.reset(this.filterRoutes(options.routes));
145
- }
146
- this.cleanSSRCache();
147
- import_fileReader.fileReader.reset();
148
- this.runner.repack();
149
- super.onRepack(options);
150
- }
151
- async createHTTPServer(handler) {
152
- const { dev } = this;
153
- const devHttpsOption = typeof dev === "object" && dev.https;
154
- if (devHttpsOption) {
155
- const { genHttpsOptions } = require("../dev-tools/https");
156
- const httpsOptions = await genHttpsOptions(devHttpsOption, this.pwd);
157
- return (0, import_https.createServer)(httpsOptions, handler);
158
- } else {
159
- return (0, import_http.createServer)(handler);
160
- }
161
- }
162
- warmupSSRBundle() {
163
- }
164
- async onServerChange({ filepath, event }) {
165
- const { pwd } = this;
166
- const { mock } = import_prod_server.AGGRED_DIR;
167
- const mockPath = import_path.default.normalize(import_path.default.join(pwd, mock));
168
- this.runner.reset();
169
- if (filepath.startsWith(mockPath)) {
170
- this.mockHandler = (0, import_mock.createMockHandler)({
171
- pwd
172
- });
173
- } else {
174
- try {
175
- const success = this.runner.onApiChange([
176
- {
177
- filename: filepath,
178
- event
179
- }
180
- ]);
181
- if (success !== true) {
182
- await super.onServerChange({
183
- filepath
184
- });
185
- }
186
- } catch (e) {
187
- this.logger.error(e);
188
- }
189
- }
190
- }
191
- createContext(req, res) {
192
- return super.createContext(req, res, {
193
- etag: true,
194
- metaName: this.metaName
195
- });
196
- }
197
- setupStaticMiddleware(_) {
198
- return async (_context, next) => {
199
- return next();
200
- };
201
- }
202
- cleanSSRCache() {
203
- const { distDir } = this;
204
- const bundles = this.router.getBundles();
205
- bundles.forEach((bundle) => {
206
- const filepath = import_path.default.join(distDir, bundle);
207
- if (require.cache[filepath]) {
208
- delete require.cache[filepath];
209
- }
210
- });
211
- const loadable = import_path.default.join(distDir, import_utils.LOADABLE_STATS_FILE);
212
- if (require.cache[loadable]) {
213
- delete require.cache[loadable];
214
- }
215
- }
216
- startWatcher() {
217
- var _this_conf_server;
218
- const { pwd, distDir, appContext } = this;
219
- const { mock } = import_prod_server.AGGRED_DIR;
220
- const apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || import_utils.API_DIR;
221
- const sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || import_utils.SHARED_DIR;
222
- const defaultWatched = [
223
- `${mock}/**/*`,
224
- `${import_utils.SERVER_DIR}/**/*`,
225
- `${apiDir}/**`,
226
- `${sharedDir}/**/*`,
227
- `${distDir}/${import_utils.SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
228
- ];
229
- const watchOptions = (0, import_watcher.mergeWatchOptions)((_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.watchOptions);
230
- const defaultWatchedPaths = defaultWatched.map((p) => {
231
- const finalPath = import_path.default.isAbsolute(p) ? p : import_path.default.join(pwd, p);
232
- return import_path.default.normalize(finalPath);
233
- });
234
- const watcher = new import_watcher.default();
235
- watcher.createDepTree();
236
- watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
237
- if (filepath.includes("-server-loaders.js")) {
238
- delete require.cache[filepath];
239
- return;
240
- } else {
241
- watcher.updateDepTree();
242
- watcher.cleanDepCache(filepath);
243
- }
244
- this.onServerChange({
245
- filepath,
246
- event
247
- });
248
- });
249
- this.watcher = watcher;
250
- }
251
- constructor(options) {
252
- super(options);
253
- this.mockHandler = null;
254
- this.closeCb = [];
255
- this.appContext = options.appContext;
256
- this.workDir = this.pwd;
257
- this.useSSRWorker = Boolean(options.useSSRWorker);
258
- this.dev = this.getDevOptions(options);
259
- this.getMiddlewares = options.getMiddlewares;
260
- this.rsbuild = options.rsbuild;
261
- (0, import_register.enableRegister)(this.pwd, this.conf);
262
- }
263
- }
264
- // Annotate the CommonJS export names for ESM import in node:
265
- 0 && (module.exports = {
266
- ModernDevServer
267
- });