@modern-js/server 3.5.0 → 3.6.0

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.
@@ -43,7 +43,10 @@ const external_node_path_namespaceObject = require("node:path");
43
43
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
44
44
  const server_core_namespaceObject = require("@modern-js/server-core");
45
45
  const node_namespaceObject = require("@modern-js/server-core/node");
46
+ const utils_namespaceObject = require("@modern-js/utils");
46
47
  const external_dev_js_namespaceObject = require("./dev.js");
48
+ const reloadManager_js_namespaceObject = require("./dev-tools/reloadManager.js");
49
+ const runtimeOptions_js_namespaceObject = require("./dev-tools/runtimeOptions.js");
47
50
  const index_js_namespaceObject = require("./helpers/index.js");
48
51
  async function createDevServer(options, applyPlugins) {
49
52
  const { config, pwd, serverConfigPath, builder } = options;
@@ -62,33 +65,76 @@ async function createDevServer(options, applyPlugins) {
62
65
  ...options.plugins || []
63
66
  ]
64
67
  };
65
- const server = (0, server_core_namespaceObject.createServerBase)(prodServerOptions);
66
- const devHttpsOption = 'object' == typeof dev && dev.https;
67
- const isHttp2 = !!devHttpsOption;
68
- let nodeServer;
69
- if (devHttpsOption) {
70
- const { genHttpsOptions } = await import("./dev-tools/https/index.js");
71
- const httpsOptions = await genHttpsOptions(devHttpsOption, pwd);
72
- nodeServer = await (0, node_namespaceObject.createNodeServer)(server.handle.bind(server), httpsOptions, isHttp2);
73
- } else nodeServer = await (0, node_namespaceObject.createNodeServer)(server.handle.bind(server));
74
- const promise = (0, index_js_namespaceObject.getDevAssetPrefix)(builder);
75
68
  let compiler = null;
76
69
  builder?.onAfterCreateCompiler((context)=>{
77
70
  compiler = context.compiler;
78
71
  });
72
+ const assetPrefixPromise = (0, index_js_namespaceObject.getDevAssetPrefix)(builder);
79
73
  const builderDevServer = await builder?.createDevServer({
80
74
  runCompile: options.runCompile
81
75
  });
82
- server.addPlugins([
83
- (0, external_dev_js_namespaceObject.devPlugin)({
84
- ...options,
85
- builderDevServer
86
- }, compiler)
87
- ]);
88
- const assetPrefix = await promise;
89
- if (assetPrefix) prodServerOptions.config.output.assetPrefix = assetPrefix;
90
- await applyPlugins(server, prodServerOptions, nodeServer);
91
- await server.init();
76
+ const assetPrefix = await assetPrefixPromise;
77
+ let currentRuntimeServer;
78
+ let nodeServer;
79
+ const buildRuntimeServer = async ()=>{
80
+ const freshServerConfig = await (0, node_namespaceObject.loadServerRuntimeConfig)(serverConfigPath) || {};
81
+ const runtimeOptions = (0, runtimeOptions_js_namespaceObject.createRuntimeServerOptions)({
82
+ ...prodServerOptions,
83
+ serverConfig: {
84
+ ...freshServerConfig,
85
+ ...options.serverConfig
86
+ },
87
+ plugins: [
88
+ ...freshServerConfig.plugins || [],
89
+ ...options.plugins || []
90
+ ]
91
+ }, assetPrefix);
92
+ const runtimeServer = (0, server_core_namespaceObject.createServerBase)(runtimeOptions);
93
+ runtimeServer.addPlugins([
94
+ (0, external_dev_js_namespaceObject.devRuntimeMiddlewarePlugin)({
95
+ ...options,
96
+ builderDevServer
97
+ }, compiler)
98
+ ]);
99
+ await applyPlugins(runtimeServer, runtimeOptions, nodeServer);
100
+ await runtimeServer.init();
101
+ currentRuntimeServer = runtimeServer;
102
+ return runtimeServer.handle;
103
+ };
104
+ const pendingReloadFiles = new Set();
105
+ const reloadManager = (0, reloadManager_js_namespaceObject.createReloadManager)({
106
+ build: buildRuntimeServer,
107
+ onReload: ()=>{
108
+ const files = Array.from(pendingReloadFiles);
109
+ pendingReloadFiles.clear();
110
+ utils_namespaceObject.logger.info(files.length > 0 ? `Server runtime reloaded (${files.join(', ')})` : 'Server runtime reloaded');
111
+ }
112
+ });
113
+ const devHttpsOption = 'object' == typeof dev && dev.https;
114
+ const isHttp2 = !!devHttpsOption;
115
+ if (devHttpsOption) {
116
+ const { genHttpsOptions } = await import("./dev-tools/https/index.js");
117
+ const httpsOptions = await genHttpsOptions(devHttpsOption, pwd);
118
+ nodeServer = await (0, node_namespaceObject.createNodeServer)(reloadManager.handle, httpsOptions, isHttp2);
119
+ } else nodeServer = await (0, node_namespaceObject.createNodeServer)(reloadManager.handle);
120
+ reloadManager.setHandle(await buildRuntimeServer());
121
+ (0, external_dev_js_namespaceObject.setupDevInfra)({
122
+ config,
123
+ pwd,
124
+ distDir,
125
+ apiDir: options.appContext?.apiDirectory,
126
+ sharedDir: options.appContext?.sharedDirectory,
127
+ builder,
128
+ builderDevServer,
129
+ compiler,
130
+ nodeServer,
131
+ getRuntimeServer: ()=>currentRuntimeServer,
132
+ onFileChange: (filepath)=>{
133
+ pendingReloadFiles.add(external_node_path_default().relative(pwd, filepath));
134
+ reloadManager.schedule();
135
+ },
136
+ onClose: ()=>reloadManager.close()
137
+ });
92
138
  const afterListen = async ()=>{
93
139
  await builderDevServer?.afterListen();
94
140
  };
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ ReloadManager: ()=>ReloadManager,
32
+ createReloadManager: ()=>createReloadManager
33
+ });
34
+ const utils_namespaceObject = require("@modern-js/utils");
35
+ function _check_private_redeclaration(obj, privateCollection) {
36
+ if (privateCollection.has(obj)) throw new TypeError("Cannot initialize the same private elements twice on an object");
37
+ }
38
+ function _class_apply_descriptor_get(receiver, descriptor) {
39
+ if (descriptor.get) return descriptor.get.call(receiver);
40
+ return descriptor.value;
41
+ }
42
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
43
+ if (descriptor.set) descriptor.set.call(receiver, value);
44
+ else {
45
+ if (!descriptor.writable) throw new TypeError("attempted to set read only private field");
46
+ descriptor.value = value;
47
+ }
48
+ }
49
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
50
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
51
+ return privateMap.get(receiver);
52
+ }
53
+ function _class_private_field_get(receiver, privateMap) {
54
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
55
+ return _class_apply_descriptor_get(receiver, descriptor);
56
+ }
57
+ function _class_private_field_init(obj, privateMap, value) {
58
+ _check_private_redeclaration(obj, privateMap);
59
+ privateMap.set(obj, value);
60
+ }
61
+ function _class_private_field_set(receiver, privateMap, value) {
62
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
63
+ _class_apply_descriptor_set(receiver, descriptor, value);
64
+ return value;
65
+ }
66
+ function _class_private_method_get(receiver, privateSet, fn) {
67
+ if (!privateSet.has(receiver)) throw new TypeError("attempted to get private field on non-instance");
68
+ return fn;
69
+ }
70
+ function _class_private_method_init(obj, privateSet) {
71
+ _check_private_redeclaration(obj, privateSet);
72
+ privateSet.add(obj);
73
+ }
74
+ const DEFAULT_DEBOUNCE_MS = 300;
75
+ const notReadyHandle = ()=>new Response('Dev server is starting…', {
76
+ status: 503,
77
+ headers: {
78
+ 'content-type': 'text/plain; charset=utf-8'
79
+ }
80
+ });
81
+ var _current = /*#__PURE__*/ new WeakMap(), _build = /*#__PURE__*/ new WeakMap(), _debounceMs = /*#__PURE__*/ new WeakMap(), _onReload = /*#__PURE__*/ new WeakMap(), _onError = /*#__PURE__*/ new WeakMap(), _onReloadError = /*#__PURE__*/ new WeakMap(), _debounceTimer = /*#__PURE__*/ new WeakMap(), _running = /*#__PURE__*/ new WeakMap(), _pending = /*#__PURE__*/ new WeakMap(), _runningPromise = /*#__PURE__*/ new WeakMap(), _closed = /*#__PURE__*/ new WeakMap(), _runLoop = /*#__PURE__*/ new WeakSet(), _reportBuildError = /*#__PURE__*/ new WeakSet(), _reportReloadCallbackError = /*#__PURE__*/ new WeakSet();
82
+ class ReloadManager {
83
+ setHandle(handle) {
84
+ _class_private_field_set(this, _current, handle);
85
+ }
86
+ get handle() {
87
+ return (request, ...args)=>_class_private_field_get(this, _current).call(this, request, ...args);
88
+ }
89
+ get currentHandle() {
90
+ return _class_private_field_get(this, _current);
91
+ }
92
+ get isReloading() {
93
+ return _class_private_field_get(this, _running);
94
+ }
95
+ schedule() {
96
+ if (_class_private_field_get(this, _closed)) return;
97
+ if (_class_private_field_get(this, _debounceTimer)) clearTimeout(_class_private_field_get(this, _debounceTimer));
98
+ _class_private_field_set(this, _debounceTimer, setTimeout(()=>{
99
+ _class_private_field_set(this, _debounceTimer, null);
100
+ this.reloadNow();
101
+ }, _class_private_field_get(this, _debounceMs)));
102
+ }
103
+ async reloadNow() {
104
+ if (_class_private_field_get(this, _closed)) return;
105
+ if (_class_private_field_get(this, _running)) {
106
+ _class_private_field_set(this, _pending, true);
107
+ return _class_private_field_get(this, _runningPromise) ?? Promise.resolve();
108
+ }
109
+ _class_private_field_set(this, _running, true);
110
+ _class_private_field_set(this, _runningPromise, _class_private_method_get(this, _runLoop, runLoop).call(this));
111
+ try {
112
+ await _class_private_field_get(this, _runningPromise);
113
+ } finally{
114
+ _class_private_field_set(this, _running, false);
115
+ _class_private_field_set(this, _runningPromise, null);
116
+ }
117
+ }
118
+ close() {
119
+ _class_private_field_set(this, _closed, true);
120
+ _class_private_field_set(this, _pending, false);
121
+ if (_class_private_field_get(this, _debounceTimer)) {
122
+ clearTimeout(_class_private_field_get(this, _debounceTimer));
123
+ _class_private_field_set(this, _debounceTimer, null);
124
+ }
125
+ }
126
+ constructor(options){
127
+ _class_private_method_init(this, _runLoop);
128
+ _class_private_method_init(this, _reportBuildError);
129
+ _class_private_method_init(this, _reportReloadCallbackError);
130
+ _class_private_field_init(this, _current, {
131
+ writable: true,
132
+ value: void 0
133
+ });
134
+ _class_private_field_init(this, _build, {
135
+ writable: true,
136
+ value: void 0
137
+ });
138
+ _class_private_field_init(this, _debounceMs, {
139
+ writable: true,
140
+ value: void 0
141
+ });
142
+ _class_private_field_init(this, _onReload, {
143
+ writable: true,
144
+ value: void 0
145
+ });
146
+ _class_private_field_init(this, _onError, {
147
+ writable: true,
148
+ value: void 0
149
+ });
150
+ _class_private_field_init(this, _onReloadError, {
151
+ writable: true,
152
+ value: void 0
153
+ });
154
+ _class_private_field_init(this, _debounceTimer, {
155
+ writable: true,
156
+ value: void 0
157
+ });
158
+ _class_private_field_init(this, _running, {
159
+ writable: true,
160
+ value: void 0
161
+ });
162
+ _class_private_field_init(this, _pending, {
163
+ writable: true,
164
+ value: void 0
165
+ });
166
+ _class_private_field_init(this, _runningPromise, {
167
+ writable: true,
168
+ value: void 0
169
+ });
170
+ _class_private_field_init(this, _closed, {
171
+ writable: true,
172
+ value: void 0
173
+ });
174
+ _class_private_field_set(this, _debounceTimer, null);
175
+ _class_private_field_set(this, _running, false);
176
+ _class_private_field_set(this, _pending, false);
177
+ _class_private_field_set(this, _runningPromise, null);
178
+ _class_private_field_set(this, _closed, false);
179
+ _class_private_field_set(this, _current, options.initialHandle ?? notReadyHandle);
180
+ _class_private_field_set(this, _build, options.build);
181
+ _class_private_field_set(this, _debounceMs, options.debounceMs ?? DEFAULT_DEBOUNCE_MS);
182
+ _class_private_field_set(this, _onReload, options.onReload);
183
+ _class_private_field_set(this, _onError, options.onError);
184
+ _class_private_field_set(this, _onReloadError, options.onReloadError);
185
+ }
186
+ }
187
+ async function runLoop() {
188
+ var _this, _this1;
189
+ do {
190
+ _class_private_field_set(this, _pending, false);
191
+ let next;
192
+ try {
193
+ next = await _class_private_field_get(this, _build).call(this);
194
+ } catch (error) {
195
+ _class_private_method_get(this, _reportBuildError, reportBuildError).call(this, error);
196
+ continue;
197
+ }
198
+ if (_class_private_field_get(this, _closed)) return;
199
+ _class_private_field_set(this, _current, next);
200
+ try {
201
+ null == (_this = _class_private_field_get(_this1 = this, _onReload)) || _this.call(_this1, next);
202
+ } catch (callbackError) {
203
+ _class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, callbackError);
204
+ }
205
+ }while (_class_private_field_get(this, _pending) && !_class_private_field_get(this, _closed));
206
+ }
207
+ function reportBuildError(error) {
208
+ if (_class_private_field_get(this, _onError)) _class_private_field_get(this, _onError).call(this, error);
209
+ else utils_namespaceObject.logger.error(`[dev-server] runtime reload build failed, keep serving previous handle:\n${error instanceof Error ? error.stack ?? error.message : error}`);
210
+ }
211
+ function reportReloadCallbackError(error) {
212
+ if (_class_private_field_get(this, _onReloadError)) _class_private_field_get(this, _onReloadError).call(this, error);
213
+ else utils_namespaceObject.logger.warn(`[dev-server] onReload callback failed after a successful swap (handle is already active):\n${error instanceof Error ? error.stack ?? error.message : error}`);
214
+ }
215
+ function createReloadManager(options) {
216
+ return new ReloadManager(options);
217
+ }
218
+ exports.ReloadManager = __webpack_exports__.ReloadManager;
219
+ exports.createReloadManager = __webpack_exports__.createReloadManager;
220
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
221
+ "ReloadManager",
222
+ "createReloadManager"
223
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
224
+ Object.defineProperty(exports, '__esModule', {
225
+ value: true
226
+ });
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ function createRuntimeServerOptions(base, assetPrefix) {
31
+ const baseConfig = base.config ?? {};
32
+ const baseOutput = baseConfig.output ?? {};
33
+ const baseServerConfig = base.serverConfig ?? {};
34
+ return {
35
+ ...base,
36
+ config: {
37
+ ...baseConfig,
38
+ output: {
39
+ ...baseOutput,
40
+ ...assetPrefix ? {
41
+ assetPrefix
42
+ } : {}
43
+ }
44
+ },
45
+ serverConfig: {
46
+ ...baseServerConfig,
47
+ middlewares: [
48
+ ...baseServerConfig.middlewares ?? []
49
+ ],
50
+ renderMiddlewares: [
51
+ ...baseServerConfig.renderMiddlewares ?? []
52
+ ],
53
+ ...baseServerConfig.plugins ? {
54
+ plugins: [
55
+ ...baseServerConfig.plugins
56
+ ]
57
+ } : {}
58
+ },
59
+ plugins: [
60
+ ...base.plugins ?? []
61
+ ]
62
+ };
63
+ }
64
+ __webpack_require__.d(__webpack_exports__, {
65
+ createRuntimeServerOptions: ()=>createRuntimeServerOptions
66
+ });
67
+ exports.createRuntimeServerOptions = __webpack_exports__.createRuntimeServerOptions;
68
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
69
+ "createRuntimeServerOptions"
70
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
71
+ Object.defineProperty(exports, '__esModule', {
72
+ value: true
73
+ });
package/dist/cjs/dev.js CHANGED
@@ -1,5 +1,14 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
3
12
  (()=>{
4
13
  __webpack_require__.d = (exports1, getters, values)=>{
5
14
  var define = (defs, kind)=>{
@@ -28,45 +37,23 @@ var __webpack_require__ = {};
28
37
  var __webpack_exports__ = {};
29
38
  __webpack_require__.r(__webpack_exports__);
30
39
  __webpack_require__.d(__webpack_exports__, {
31
- devPlugin: ()=>devPlugin
40
+ devRuntimeMiddlewarePlugin: ()=>devRuntimeMiddlewarePlugin,
41
+ setupDevInfra: ()=>setupDevInfra
32
42
  });
43
+ const external_node_path_namespaceObject = require("node:path");
44
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
45
+ const server_core_namespaceObject = require("@modern-js/server-core");
33
46
  const node_namespaceObject = require("@modern-js/server-core/node");
34
47
  const utils_namespaceObject = require("@modern-js/utils");
35
48
  const index_js_namespaceObject = require("./helpers/index.js");
36
- const devPlugin = (options, compiler)=>({
49
+ const devRuntimeMiddlewarePlugin = (options, compiler)=>({
37
50
  name: '@modern-js/plugin-dev',
38
51
  setup (api) {
39
- const { config, pwd, builder, builderDevServer } = options;
40
- const closeCb = [];
52
+ const { pwd, builderDevServer } = options;
41
53
  const dev = (0, index_js_namespaceObject.getDevOptions)(options.dev);
42
54
  api.onPrepare(async ()=>{
43
- const { middlewares: builderMiddlewares, close, connectWebSocket } = builderDevServer || {};
44
- close && closeCb.push(close);
45
- const { middlewares, distDirectory, nodeServer, apiDirectory, sharedDirectory, serverBase } = api.getServerContext();
46
- connectWebSocket && nodeServer && connectWebSocket({
47
- server: nodeServer
48
- });
49
- const hooks = api.getHooks();
50
- builder?.onDevCompileDone(({ stats })=>{
51
- if ('server' !== stats.toJson({
52
- all: false
53
- }).name) (0, index_js_namespaceObject.onRepack)(distDirectory, hooks);
54
- });
55
- const { watchOptions } = config.server;
56
- const watcher = (0, index_js_namespaceObject.startWatcher)({
57
- pwd,
58
- distDir: distDirectory,
59
- apiDir: apiDirectory || utils_namespaceObject.API_DIR,
60
- sharedDir: sharedDirectory || utils_namespaceObject.SHARED_DIR,
61
- watchOptions,
62
- server: serverBase
63
- });
64
- closeCb.push(watcher.close.bind(watcher));
65
- closeCb.length > 0 && nodeServer?.on('close', ()=>{
66
- closeCb.forEach((cb)=>{
67
- cb();
68
- });
69
- });
55
+ const { middlewares: builderMiddlewares } = builderDevServer || {};
56
+ const { middlewares } = api.getServerContext();
70
57
  const before = [];
71
58
  const after = [];
72
59
  const { setupMiddlewares = [] } = dev;
@@ -106,9 +93,65 @@ const devPlugin = (options, compiler)=>({
106
93
  });
107
94
  }
108
95
  });
109
- exports.devPlugin = __webpack_exports__.devPlugin;
96
+ function setupDevInfra({ config, pwd, distDir, apiDir, sharedDir, builder, builderDevServer, getRuntimeServer, onFileChange, onClose, nodeServer }) {
97
+ const { close, connectWebSocket } = builderDevServer || {};
98
+ const closeCb = [];
99
+ close && closeCb.push(close);
100
+ connectWebSocket && nodeServer && connectWebSocket({
101
+ server: nodeServer
102
+ });
103
+ builder?.onDevCompileDone(({ stats })=>{
104
+ if ('server' !== stats.toJson({
105
+ all: false
106
+ }).name) {
107
+ const runtimeServer = getRuntimeServer();
108
+ if (runtimeServer) (0, index_js_namespaceObject.onRepack)(distDir, runtimeServer.hooks);
109
+ }
110
+ });
111
+ const { watchOptions } = config.server;
112
+ const mockPath = external_node_path_default().normalize(external_node_path_default().join(pwd, server_core_namespaceObject.AGGRED_DIR.mock));
113
+ const watcher = (0, index_js_namespaceObject.startWatcher)({
114
+ pwd,
115
+ distDir,
116
+ apiDir: apiDir || utils_namespaceObject.API_DIR,
117
+ sharedDir: sharedDir || utils_namespaceObject.SHARED_DIR,
118
+ watchOptions,
119
+ onChange: (filepath, event)=>{
120
+ const runtimeServer = getRuntimeServer();
121
+ if (runtimeServer && !filepath.startsWith(mockPath)) {
122
+ const fileChangeEvent = {
123
+ type: 'file-change',
124
+ payload: [
125
+ {
126
+ filename: filepath,
127
+ event
128
+ }
129
+ ]
130
+ };
131
+ Promise.resolve(runtimeServer.hooks.onReset.call({
132
+ event: fileChangeEvent
133
+ })).catch((error)=>utils_namespaceObject.logger.error(error));
134
+ }
135
+ onFileChange(filepath, event);
136
+ }
137
+ });
138
+ closeCb.push(watcher.close.bind(watcher));
139
+ onClose && closeCb.push(onClose);
140
+ const close$ = ()=>{
141
+ closeCb.forEach((cb)=>{
142
+ cb();
143
+ });
144
+ };
145
+ closeCb.length > 0 && nodeServer?.on('close', close$);
146
+ return {
147
+ close: close$
148
+ };
149
+ }
150
+ exports.devRuntimeMiddlewarePlugin = __webpack_exports__.devRuntimeMiddlewarePlugin;
151
+ exports.setupDevInfra = __webpack_exports__.setupDevInfra;
110
152
  for(var __rspack_i in __webpack_exports__)if (-1 === [
111
- "devPlugin"
153
+ "devRuntimeMiddlewarePlugin",
154
+ "setupDevInfra"
112
155
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
113
156
  Object.defineProperty(exports, '__esModule', {
114
157
  value: true
@@ -15,9 +15,6 @@ var __webpack_modules__ = {
15
15
  "./repack" (module) {
16
16
  module.exports = require("./repack.js");
17
17
  },
18
- "./utils" (module) {
19
- module.exports = require("./utils.js");
20
- },
21
18
  "@modern-js/server-core" (module) {
22
19
  module.exports = require("@modern-js/server-core");
23
20
  },
@@ -81,61 +78,35 @@ var __webpack_exports__ = {};
81
78
  var _modern_js_utils__rspack_import_2 = __webpack_require__("@modern-js/utils");
82
79
  var _dev_tools_watcher__rspack_import_3 = __webpack_require__("../dev-tools/watcher");
83
80
  var _dev_tools_watcher__rspack_import_3_default = /*#__PURE__*/ __webpack_require__.n(_dev_tools_watcher__rspack_import_3);
84
- var _mock__rspack_import_4 = __webpack_require__("./mock");
85
- var _utils__rspack_import_5 = __webpack_require__("./utils");
86
- var _repack__rspack_import_6 = __webpack_require__("./repack");
81
+ var _repack__rspack_import_4 = __webpack_require__("./repack");
87
82
  var __rspack_reexport = {};
88
- for(const __rspack_import_key in _repack__rspack_import_6)if ([
83
+ for(const __rspack_import_key in _repack__rspack_import_4)if ([
89
84
  "startWatcher",
90
85
  "default"
91
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_repack__rspack_import_6[__rspack_import_key];
86
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_repack__rspack_import_4[__rspack_import_key];
92
87
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
93
- var _devOptions__rspack_import_7 = __webpack_require__("./devOptions");
88
+ var _devOptions__rspack_import_5 = __webpack_require__("./devOptions");
94
89
  var __rspack_reexport = {};
95
- for(const __rspack_import_key in _devOptions__rspack_import_7)if ([
90
+ for(const __rspack_import_key in _devOptions__rspack_import_5)if ([
96
91
  "startWatcher",
97
92
  "default"
98
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_devOptions__rspack_import_7[__rspack_import_key];
93
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_devOptions__rspack_import_5[__rspack_import_key];
99
94
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
100
- var _fileReader__rspack_import_8 = __webpack_require__("./fileReader");
95
+ var _fileReader__rspack_import_6 = __webpack_require__("./fileReader");
101
96
  var __rspack_reexport = {};
102
- for(const __rspack_import_key in _fileReader__rspack_import_8)if ([
97
+ for(const __rspack_import_key in _fileReader__rspack_import_6)if ([
103
98
  "startWatcher",
104
99
  "default"
105
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_fileReader__rspack_import_8[__rspack_import_key];
100
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_fileReader__rspack_import_6[__rspack_import_key];
106
101
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
102
+ var _mock__rspack_import_7 = __webpack_require__("./mock");
107
103
  var __rspack_reexport = {};
108
- for(const __rspack_import_key in _mock__rspack_import_4)if ([
104
+ for(const __rspack_import_key in _mock__rspack_import_7)if ([
109
105
  "startWatcher",
110
106
  "default"
111
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_mock__rspack_import_4[__rspack_import_key];
107
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_mock__rspack_import_7[__rspack_import_key];
112
108
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
113
- async function onServerChange({ pwd, filepath, event, server }) {
114
- const { mock } = _modern_js_server_core__rspack_import_1.AGGRED_DIR;
115
- const mockPath = path__rspack_import_0_default().normalize(path__rspack_import_0_default().join(pwd, mock));
116
- const { hooks } = server;
117
- if (filepath.startsWith(mockPath)) {
118
- await (0, _mock__rspack_import_4.initOrUpdateMockMiddlewares)(pwd);
119
- _modern_js_utils__rspack_import_2.logger.info('Finish update the mock handlers');
120
- } else try {
121
- const fileChangeEvent = {
122
- type: 'file-change',
123
- payload: [
124
- {
125
- filename: filepath,
126
- event
127
- }
128
- ]
129
- };
130
- await hooks.onReset.call({
131
- event: fileChangeEvent
132
- });
133
- (0, _utils__rspack_import_5.debug)(`Finish reload server, trigger by ${filepath} ${event}`);
134
- } catch (e) {
135
- _modern_js_utils__rspack_import_2.logger.error(e);
136
- }
137
- }
138
- function startWatcher({ pwd, distDir, apiDir, sharedDir, watchOptions, server }) {
109
+ function startWatcher({ pwd, distDir, apiDir, sharedDir, watchOptions, onChange }) {
139
110
  const { mock } = _modern_js_server_core__rspack_import_1.AGGRED_DIR;
140
111
  const defaultWatched = [
141
112
  `${mock}/**/*`,
@@ -155,12 +126,7 @@ var __webpack_exports__ = {};
155
126
  if (filepath.includes('-server-loaders.js')) return void delete require.cache[filepath];
156
127
  watcher.updateDepTree();
157
128
  watcher.cleanDepCache(filepath);
158
- onServerChange({
159
- pwd,
160
- filepath,
161
- event,
162
- server
163
- });
129
+ onChange(filepath, event);
164
130
  });
165
131
  return watcher;
166
132
  }
@@ -78,7 +78,7 @@ const getMockModule = async (pwd)=>{
78
78
  }
79
79
  }
80
80
  if (!mockFilePath) return;
81
- const { default: mockHandlers, config } = await import(mockFilePath);
81
+ const { default: mockHandlers, config } = await (0, utils_namespaceObject.compatibleRequire)(mockFilePath, false);
82
82
  const enable = config?.enable;
83
83
  if (false === enable) return;
84
84
  if (!mockHandlers) throw new Error(`Mock file ${mockFilePath} parsed failed!`);