@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,233 +0,0 @@
1
- import { createServer } from "http";
2
- import path from "path";
3
- import { createServer as createHttpsServer } from "https";
4
- import { API_DIR, SERVER_BUNDLE_DIRECTORY, SERVER_DIR, SHARED_DIR, LOADABLE_STATS_FILE } from "@modern-js/utils";
5
- import { ModernServer, AGGRED_DIR, createRenderHandler } from "@modern-js/prod-server";
6
- import { merge as deepMerge } from "@modern-js/utils/lodash";
7
- import { fileReader } from "@modern-js/runtime-utils/fileReader";
8
- import { getDefaultDevOptions } from "../constants";
9
- import { createMockHandler } from "../dev-tools/mock";
10
- import { enableRegister } from "../dev-tools/register";
11
- import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
12
- import { workerSSRRender } from "./workerSSRRender";
13
- class ModernDevServer extends ModernServer {
14
- getDevOptions(options) {
15
- const devOptions = options.dev;
16
- const defaultOptions = getDefaultDevOptions();
17
- return deepMerge(defaultOptions, devOptions);
18
- }
19
- // Complete the preparation of services
20
- async onInit(runner, app) {
21
- this.runner = runner;
22
- const { dev } = this;
23
- const { middlewares: rsbuildMiddlewares, close, onHTTPUpgrade } = this.getMiddlewares();
24
- app.on("upgrade", onHTTPUpgrade);
25
- this.rsbuild.onDevCompileDone(({ stats }) => {
26
- if (stats.toJson({
27
- all: false
28
- }).name !== "server") {
29
- this.onRepack({
30
- routes: this.getRoutes()
31
- });
32
- }
33
- });
34
- await this.applyDefaultMiddlewares();
35
- this.addHandler((ctx, next) => rsbuildMiddlewares(ctx.req, ctx.res, next));
36
- this.closeCb.push(close);
37
- this.initFileReader();
38
- await super.onInit(runner, app);
39
- if (dev.watch) {
40
- this.startWatcher();
41
- app.on("close", async () => {
42
- var _this_watcher;
43
- await ((_this_watcher = this.watcher) === null || _this_watcher === void 0 ? void 0 : _this_watcher.close());
44
- });
45
- }
46
- }
47
- initFileReader() {
48
- var _this_dev;
49
- let isInit = false;
50
- if (((_this_dev = this.dev) === null || _this_dev === void 0 ? void 0 : _this_dev.writeToDisk) === false) {
51
- this.addHandler((ctx, next) => {
52
- var _ctx_res_locals;
53
- if (isInit) {
54
- return next();
55
- }
56
- isInit = true;
57
- if (!((_ctx_res_locals = ctx.res.locals) === null || _ctx_res_locals === void 0 ? void 0 : _ctx_res_locals.webpack)) {
58
- fileReader.reset();
59
- return next();
60
- }
61
- const { devMiddleware: webpackDevMid } = ctx.res.locals.webpack;
62
- const { outputFileSystem } = webpackDevMid;
63
- if (outputFileSystem) {
64
- fileReader.reset(outputFileSystem);
65
- } else {
66
- fileReader.reset();
67
- }
68
- return next();
69
- });
70
- }
71
- }
72
- async close() {
73
- for (const cb of this.closeCb) {
74
- await cb();
75
- }
76
- }
77
- // override the ModernServer renderHandler logic
78
- getRenderHandler() {
79
- if (this.useSSRWorker) {
80
- var _this_conf_server, _conf_security;
81
- const { distDir, staticGenerate, conf, metaName } = this;
82
- const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
83
- const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
84
- return createRenderHandler({
85
- ssrRender: workerSSRRender,
86
- distDir,
87
- staticGenerate,
88
- conf,
89
- forceCSR,
90
- nonce: (_conf_security = conf.security) === null || _conf_security === void 0 ? void 0 : _conf_security.nonce,
91
- metaName
92
- });
93
- }
94
- return super.getRenderHandler();
95
- }
96
- async applyDefaultMiddlewares() {
97
- const { pwd } = this;
98
- this.mockHandler = createMockHandler({
99
- pwd
100
- });
101
- this.addHandler((ctx, next) => {
102
- if (this.mockHandler) {
103
- this.mockHandler(ctx, next);
104
- } else {
105
- next();
106
- }
107
- });
108
- }
109
- onRepack(options = {}) {
110
- if (Array.isArray(options.routes)) {
111
- this.router.reset(this.filterRoutes(options.routes));
112
- }
113
- this.cleanSSRCache();
114
- fileReader.reset();
115
- this.runner.repack();
116
- super.onRepack(options);
117
- }
118
- async createHTTPServer(handler) {
119
- const { dev } = this;
120
- const devHttpsOption = typeof dev === "object" && dev.https;
121
- if (devHttpsOption) {
122
- const { genHttpsOptions } = require("../dev-tools/https");
123
- const httpsOptions = await genHttpsOptions(devHttpsOption, this.pwd);
124
- return createHttpsServer(httpsOptions, handler);
125
- } else {
126
- return createServer(handler);
127
- }
128
- }
129
- warmupSSRBundle() {
130
- }
131
- async onServerChange({ filepath, event }) {
132
- const { pwd } = this;
133
- const { mock } = AGGRED_DIR;
134
- const mockPath = path.normalize(path.join(pwd, mock));
135
- this.runner.reset();
136
- if (filepath.startsWith(mockPath)) {
137
- this.mockHandler = createMockHandler({
138
- pwd
139
- });
140
- } else {
141
- try {
142
- const success = this.runner.onApiChange([
143
- {
144
- filename: filepath,
145
- event
146
- }
147
- ]);
148
- if (success !== true) {
149
- await super.onServerChange({
150
- filepath
151
- });
152
- }
153
- } catch (e) {
154
- this.logger.error(e);
155
- }
156
- }
157
- }
158
- createContext(req, res) {
159
- return super.createContext(req, res, {
160
- etag: true,
161
- metaName: this.metaName
162
- });
163
- }
164
- setupStaticMiddleware(_) {
165
- return async (_context, next) => {
166
- return next();
167
- };
168
- }
169
- cleanSSRCache() {
170
- const { distDir } = this;
171
- const bundles = this.router.getBundles();
172
- bundles.forEach((bundle) => {
173
- const filepath = path.join(distDir, bundle);
174
- if (require.cache[filepath]) {
175
- delete require.cache[filepath];
176
- }
177
- });
178
- const loadable = path.join(distDir, LOADABLE_STATS_FILE);
179
- if (require.cache[loadable]) {
180
- delete require.cache[loadable];
181
- }
182
- }
183
- startWatcher() {
184
- var _this_conf_server;
185
- const { pwd, distDir, appContext } = this;
186
- const { mock } = AGGRED_DIR;
187
- const apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || API_DIR;
188
- const sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || SHARED_DIR;
189
- const defaultWatched = [
190
- `${mock}/**/*`,
191
- `${SERVER_DIR}/**/*`,
192
- `${apiDir}/**`,
193
- `${sharedDir}/**/*`,
194
- `${distDir}/${SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
195
- ];
196
- const watchOptions = mergeWatchOptions((_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.watchOptions);
197
- const defaultWatchedPaths = defaultWatched.map((p) => {
198
- const finalPath = path.isAbsolute(p) ? p : path.join(pwd, p);
199
- return path.normalize(finalPath);
200
- });
201
- const watcher = new Watcher();
202
- watcher.createDepTree();
203
- watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
204
- if (filepath.includes("-server-loaders.js")) {
205
- delete require.cache[filepath];
206
- return;
207
- } else {
208
- watcher.updateDepTree();
209
- watcher.cleanDepCache(filepath);
210
- }
211
- this.onServerChange({
212
- filepath,
213
- event
214
- });
215
- });
216
- this.watcher = watcher;
217
- }
218
- constructor(options) {
219
- super(options);
220
- this.mockHandler = null;
221
- this.closeCb = [];
222
- this.appContext = options.appContext;
223
- this.workDir = this.pwd;
224
- this.useSSRWorker = Boolean(options.useSSRWorker);
225
- this.dev = this.getDevOptions(options);
226
- this.getMiddlewares = options.getMiddlewares;
227
- this.rsbuild = options.rsbuild;
228
- enableRegister(this.pwd, this.conf);
229
- }
230
- }
231
- export {
232
- ModernDevServer
233
- };
@@ -1,312 +0,0 @@
1
- import { createServer } from "http";
2
- import path from "path";
3
- import { createServer as createHttpsServer } from "https";
4
- import { API_DIR, SERVER_BUNDLE_DIRECTORY, SERVER_DIR, SHARED_DIR, LOADABLE_STATS_FILE } from "@modern-js/utils";
5
- import { createProxyHandler, ModernServer, AGGRED_DIR, createRenderHandler } from "@modern-js/prod-server";
6
- import { merge as deepMerge } from "@modern-js/utils/lodash";
7
- import { fileReader } from "@modern-js/runtime-utils/fileReader";
8
- import { getDefaultDevOptions } from "../constants";
9
- import { createMockHandler } from "../dev-tools/mock";
10
- import { enableRegister } from "../dev-tools/register";
11
- import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
12
- import DevMiddleware from "../dev-tools/dev-middleware";
13
- import { workerSSRRender } from "./workerSSRRender";
14
- class ModernDevServer extends ModernServer {
15
- getDevOptions(options) {
16
- const devOptions = typeof options.dev === "boolean" ? {} : options.dev;
17
- const defaultOptions = getDefaultDevOptions();
18
- return deepMerge(defaultOptions, devOptions);
19
- }
20
- addMiddlewareHandler(handlers) {
21
- handlers.forEach((handler) => {
22
- this.addHandler((ctx, next) => {
23
- const { req, res } = ctx;
24
- return handler(req, res, next);
25
- });
26
- });
27
- }
28
- applySetupMiddlewares() {
29
- const setupMiddlewares = this.dev.setupMiddlewares || [];
30
- const serverOptions = {
31
- sockWrite: (type, data) => this.devMiddleware.sockWrite(type, data)
32
- };
33
- const befores = [];
34
- const afters = [];
35
- setupMiddlewares.forEach((handler) => {
36
- handler({
37
- unshift: (...handlers) => befores.unshift(...handlers),
38
- push: (...handlers) => afters.push(...handlers)
39
- }, serverOptions);
40
- });
41
- return {
42
- befores,
43
- afters
44
- };
45
- }
46
- // Complete the preparation of services
47
- async onInit(runner, app) {
48
- this.runner = runner;
49
- const { dev } = this;
50
- const { befores, afters } = this.applySetupMiddlewares();
51
- const beforeHandlers = this.dev.before || [];
52
- this.addMiddlewareHandler([
53
- ...beforeHandlers,
54
- ...befores
55
- ]);
56
- await this.applyDefaultMiddlewares(app);
57
- const afterHandlers = this.dev.after || [];
58
- this.addMiddlewareHandler([
59
- ...afters,
60
- ...afterHandlers
61
- ]);
62
- this.initFileReader();
63
- await super.onInit(runner, app);
64
- if (dev.watch) {
65
- this.startWatcher();
66
- app.on("close", async () => {
67
- var _this_watcher;
68
- await ((_this_watcher = this.watcher) === null || _this_watcher === void 0 ? void 0 : _this_watcher.close());
69
- });
70
- }
71
- }
72
- // override the ModernServer renderHandler logic
73
- getRenderHandler() {
74
- if (this.useSSRWorker) {
75
- var _this_conf_server, _conf_security;
76
- const { distDir, staticGenerate, conf, metaName } = this;
77
- const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
78
- const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
79
- return createRenderHandler({
80
- ssrRender: workerSSRRender,
81
- distDir,
82
- staticGenerate,
83
- conf,
84
- forceCSR,
85
- nonce: (_conf_security = conf.security) === null || _conf_security === void 0 ? void 0 : _conf_security.nonce,
86
- metaName
87
- });
88
- }
89
- return super.getRenderHandler();
90
- }
91
- initFileReader() {
92
- var _this_dev_devMiddleware, _this_dev;
93
- let isInit = false;
94
- if (((_this_dev = this.dev) === null || _this_dev === void 0 ? void 0 : (_this_dev_devMiddleware = _this_dev.devMiddleware) === null || _this_dev_devMiddleware === void 0 ? void 0 : _this_dev_devMiddleware.writeToDisk) === false) {
95
- this.addHandler((ctx, next) => {
96
- var _ctx_res_locals;
97
- if (isInit) {
98
- return next();
99
- }
100
- isInit = true;
101
- if (!((_ctx_res_locals = ctx.res.locals) === null || _ctx_res_locals === void 0 ? void 0 : _ctx_res_locals.webpack)) {
102
- fileReader.reset();
103
- return next();
104
- }
105
- const { devMiddleware: webpackDevMid } = ctx.res.locals.webpack;
106
- const { outputFileSystem } = webpackDevMid;
107
- if (outputFileSystem) {
108
- fileReader.reset(outputFileSystem);
109
- } else {
110
- fileReader.reset();
111
- }
112
- return next();
113
- });
114
- }
115
- }
116
- async applyDefaultMiddlewares(app) {
117
- const { pwd, dev, devMiddleware, conf } = this;
118
- const isUseStreamingSSR = (routes) => routes === null || routes === void 0 ? void 0 : routes.some((r) => r.isStream === true);
119
- const isUseSSRPreload = () => {
120
- const { server: { ssr, ssrByEntries } } = conf;
121
- const checkUsePreload = (ssr2) => typeof ssr2 === "object" && Boolean(ssr2.preload);
122
- return checkUsePreload(ssr) || Object.values(ssrByEntries || {}).some((ssr2) => checkUsePreload(ssr2));
123
- };
124
- if (!isUseStreamingSSR(this.getRoutes()) && !isUseSSRPreload() && dev.compress) {
125
- const { default: compression } = await import("http-compression");
126
- this.addHandler((ctx, next) => {
127
- compression({
128
- gzip: true,
129
- brotli: false
130
- })(ctx.req, ctx.res, next);
131
- });
132
- }
133
- this.addHandler((ctx, next) => {
134
- ctx.res.setHeader("Access-Control-Allow-Origin", "*");
135
- if (ctx.path.includes("hot-update")) {
136
- ctx.res.setHeader("Access-Control-Allow-Credentials", "false");
137
- }
138
- const confHeaders = dev.headers;
139
- if (confHeaders) {
140
- for (const [key, value] of Object.entries(confHeaders)) {
141
- ctx.res.setHeader(key, value);
142
- }
143
- }
144
- next();
145
- });
146
- this.mockHandler = createMockHandler({
147
- pwd
148
- });
149
- this.addHandler((ctx, next) => {
150
- if (this.mockHandler) {
151
- this.mockHandler(ctx, next);
152
- } else {
153
- next();
154
- }
155
- });
156
- if (dev.proxy) {
157
- const { handlers, handleUpgrade } = createProxyHandler(dev.proxy);
158
- app && handleUpgrade(app);
159
- handlers.forEach((handler) => {
160
- this.addHandler(handler);
161
- });
162
- }
163
- devMiddleware.init(app);
164
- devMiddleware.on("change", (stats) => {
165
- if (stats.toJson({
166
- all: false
167
- }).name !== "server") {
168
- this.onRepack({
169
- routes: this.getRoutes()
170
- });
171
- }
172
- });
173
- this.addHandler((ctx, next) => {
174
- const { req, res } = ctx;
175
- if (devMiddleware.middleware) {
176
- devMiddleware.middleware(req, res, next);
177
- } else {
178
- next();
179
- }
180
- });
181
- if (dev.historyApiFallback) {
182
- const { default: connectHistoryApiFallback } = await import("connect-history-api-fallback");
183
- const historyApiFallbackMiddleware = connectHistoryApiFallback(typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback);
184
- this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
185
- }
186
- }
187
- onRepack(options = {}) {
188
- if (Array.isArray(options.routes)) {
189
- this.router.reset(this.filterRoutes(options.routes));
190
- }
191
- this.cleanSSRCache();
192
- fileReader.reset();
193
- this.runner.repack();
194
- super.onRepack(options);
195
- }
196
- async createHTTPServer(handler) {
197
- const { dev } = this;
198
- const devHttpsOption = typeof dev === "object" && dev.https;
199
- if (devHttpsOption) {
200
- const { genHttpsOptions } = require("../dev-tools/https");
201
- const httpsOptions = await genHttpsOptions(devHttpsOption, this.pwd);
202
- return createHttpsServer(httpsOptions, handler);
203
- } else {
204
- return createServer(handler);
205
- }
206
- }
207
- warmupSSRBundle() {
208
- }
209
- async onServerChange({ filepath, event }) {
210
- const { pwd } = this;
211
- const { mock } = AGGRED_DIR;
212
- const mockPath = path.normalize(path.join(pwd, mock));
213
- this.runner.reset();
214
- if (filepath.startsWith(mockPath)) {
215
- this.mockHandler = createMockHandler({
216
- pwd
217
- });
218
- } else {
219
- try {
220
- const success = this.runner.onApiChange([
221
- {
222
- filename: filepath,
223
- event
224
- }
225
- ]);
226
- if (success !== true) {
227
- await super.onServerChange({
228
- filepath
229
- });
230
- }
231
- } catch (e) {
232
- this.logger.error(e);
233
- }
234
- }
235
- }
236
- createContext(req, res) {
237
- return super.createContext(req, res, {
238
- etag: true,
239
- metaName: this.metaName
240
- });
241
- }
242
- setupStaticMiddleware(_) {
243
- return async (context, next) => {
244
- return next();
245
- };
246
- }
247
- cleanSSRCache() {
248
- const { distDir } = this;
249
- const bundles = this.router.getBundles();
250
- bundles.forEach((bundle) => {
251
- const filepath = path.join(distDir, bundle);
252
- if (require.cache[filepath]) {
253
- delete require.cache[filepath];
254
- }
255
- });
256
- const loadable = path.join(distDir, LOADABLE_STATS_FILE);
257
- if (require.cache[loadable]) {
258
- delete require.cache[loadable];
259
- }
260
- }
261
- startWatcher() {
262
- var _this_conf_server;
263
- const { pwd, distDir, appContext } = this;
264
- const { mock } = AGGRED_DIR;
265
- const apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || API_DIR;
266
- const sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || SHARED_DIR;
267
- const defaultWatched = [
268
- `${mock}/**/*`,
269
- `${SERVER_DIR}/**/*`,
270
- `${apiDir}/**`,
271
- `${sharedDir}/**/*`,
272
- `${distDir}/${SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
273
- ];
274
- const watchOptions = mergeWatchOptions((_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.watchOptions);
275
- const defaultWatchedPaths = defaultWatched.map((p) => {
276
- const finalPath = path.isAbsolute(p) ? p : path.join(pwd, p);
277
- return path.normalize(finalPath);
278
- });
279
- const watcher = new Watcher();
280
- watcher.createDepTree();
281
- watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
282
- if (filepath.includes("-server-loaders.js")) {
283
- delete require.cache[filepath];
284
- return;
285
- } else {
286
- watcher.updateDepTree();
287
- watcher.cleanDepCache(filepath);
288
- }
289
- this.onServerChange({
290
- filepath,
291
- event
292
- });
293
- });
294
- this.watcher = watcher;
295
- }
296
- constructor(options) {
297
- super(options);
298
- this.mockHandler = null;
299
- this.appContext = options.appContext;
300
- this.workDir = this.pwd;
301
- this.useSSRWorker = Boolean(options.useSSRWorker);
302
- this.dev = this.getDevOptions(options);
303
- this.devMiddleware = new DevMiddleware({
304
- dev: this.dev,
305
- devMiddleware: options.devMiddleware
306
- });
307
- enableRegister(this.pwd, this.conf);
308
- }
309
- }
310
- export {
311
- ModernDevServer
312
- };
@@ -1,26 +0,0 @@
1
- import { Server } from "@modern-js/prod-server";
2
- import { ModernDevServer } from "./devServerOld";
3
- import { ModernDevServer as ModernDevServerForRsbuild } from "./devServer";
4
- const createDevServer = (options) => {
5
- return new ModernDevServer(options);
6
- };
7
- class DevServer extends Server {
8
- constructor(options) {
9
- super(options);
10
- if (options.dev) {
11
- this.serverImpl = createDevServer;
12
- }
13
- }
14
- }
15
- class DevServerForRsbuild extends Server {
16
- constructor(options) {
17
- super(options);
18
- if (options.dev) {
19
- this.serverImpl = (options2) => new ModernDevServerForRsbuild(options2);
20
- }
21
- }
22
- }
23
- export {
24
- DevServer,
25
- DevServerForRsbuild
26
- };
@@ -1,21 +0,0 @@
1
- import axios from "axios";
2
- import { mime } from "@modern-js/utils";
3
- const PORT = 9230;
4
- async function workerSSRRender(ctx, renderOptions, _runner) {
5
- const { headers, params } = ctx;
6
- const { urlPath } = renderOptions.route;
7
- const url = urlPath.startsWith("/") ? `http://0.0.0.0:${PORT}${urlPath}` : `http://0.0.0.0:${PORT}/${urlPath}`;
8
- const resposne = await axios.get(url, {
9
- timeout: 5e3,
10
- responseType: "text",
11
- headers,
12
- params
13
- });
14
- return {
15
- content: resposne.data,
16
- contentType: mime.contentType("html")
17
- };
18
- }
19
- export {
20
- workerSSRRender
21
- };
@@ -1,7 +0,0 @@
1
- export declare function createSocketUrl(resourceQuery: string): string;
2
- export declare function formatURL({ port, protocol, hostname, pathname, }: {
3
- port: string;
4
- protocol: string;
5
- hostname: string;
6
- pathname: string;
7
- }): string;
@@ -1,21 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node/http" />
4
- /// <reference types="@modern-js/prod-server/src/type" />
5
- import { Server } from 'http';
6
- import { EventEmitter } from 'events';
7
- import { DevServerOptions, DevMiddlewareAPI, DevMiddleware as CustomDevMiddleware } from '../../types';
8
- type Options = {
9
- dev: DevServerOptions;
10
- devMiddleware?: CustomDevMiddleware;
11
- };
12
- export default class DevMiddleware extends EventEmitter {
13
- middleware?: DevMiddlewareAPI;
14
- private devOptions;
15
- private socketServer;
16
- constructor({ dev, devMiddleware }: Options);
17
- init(app: Server): void;
18
- sockWrite(type: string, data?: Record<string, any> | string | boolean): void;
19
- private setupDevMiddleware;
20
- }
21
- export {};
@@ -1,25 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node/http" />
3
- /// <reference types="@modern-js/prod-server/src/type" />
4
- import { Server } from 'http';
5
- import ws from 'ws';
6
- import type webpack from 'webpack';
7
- import type { DevServerOptions } from '../../types';
8
- export default class SocketServer {
9
- private wsServer;
10
- private readonly sockets;
11
- private readonly options;
12
- private app?;
13
- private stats?;
14
- private timer;
15
- constructor(options: DevServerOptions);
16
- prepare(app: Server): void;
17
- updateStats(stats: webpack.Stats): void;
18
- sockWrite(type: string, data?: Record<string, any> | string | boolean): void;
19
- singleWrite(socket: ws, type: string, data?: Record<string, any> | string | boolean): void;
20
- close(): void;
21
- private onConnect;
22
- private getStats;
23
- private sendStats;
24
- private send;
25
- }
@@ -1,7 +0,0 @@
1
- /// <reference types="node" />
2
- import type Buffer from 'buffer';
3
- import type { DevServerHttpsOptions } from '../../types';
4
- export declare const genHttpsOptions: (userOptions: DevServerHttpsOptions, pwd: string) => Promise<{
5
- key?: Buffer | string;
6
- cert?: Buffer | string;
7
- }>;
@@ -1,18 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node/http" />
3
- /// <reference types="@modern-js/prod-server/src/type" />
4
- import { IncomingMessage, ServerResponse } from 'http';
5
- import type { ModernServerContext, NextFunction } from '@modern-js/types';
6
- export type MockConfig = Record<string, {
7
- data: any;
8
- } | ((req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void>)>;
9
- export type MockApi = {
10
- method: string;
11
- path: string;
12
- handler: ReturnType<typeof createFunctionDataHandler | typeof createStaticDataHandler>;
13
- };
14
- declare const createFunctionDataHandler: (method: string, handler: (req: IncomingMessage, res: ServerResponse, next: NextFunction) => void) => (context: ModernServerContext, next: NextFunction) => Promise<void>;
15
- declare const createStaticDataHandler: (method: string, handler: Record<string, any>) => (context: ModernServerContext) => void;
16
- declare const _default: (mockConfig: MockConfig) => MockApi[];
17
- export default _default;
18
- export declare const getMatched: (context: ModernServerContext, mockApiList: MockApi[]) => MockApi | undefined;
@@ -1,4 +0,0 @@
1
- import type { ModernServerContext, NextFunction } from '@modern-js/types';
2
- export declare const createMockHandler: ({ pwd }: {
3
- pwd: string;
4
- }) => ((context: ModernServerContext, next: NextFunction) => Promise<void>) | null;
@@ -1,2 +0,0 @@
1
- import { ModernServerOptions } from '@modern-js/prod-server';
2
- export declare const enableRegister: (projectRoot: string, config: ModernServerOptions['config']) => any;