@bleedingdev/modern-js-server 3.5.0-ultramodern.10 → 3.5.0-ultramodern.100
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.
- package/dist/cjs/createDevServer.js +66 -20
- package/dist/cjs/dev-tools/reloadManager.js +226 -0
- package/dist/cjs/dev-tools/runtimeOptions.js +73 -0
- package/dist/cjs/dev-tools/watcher/dependencyTree.js +14 -2
- package/dist/cjs/dev.js +67 -34
- package/dist/cjs/helpers/index.js +26 -65
- package/dist/cjs/helpers/mock.js +21 -9
- package/dist/esm/createDevServer.mjs +67 -21
- package/dist/esm/dev-tools/reloadManager.mjs +185 -0
- package/dist/esm/dev-tools/runtimeOptions.mjs +35 -0
- package/dist/esm/dev-tools/watcher/dependencyTree.mjs +4 -2
- package/dist/esm/dev.mjs +64 -34
- package/dist/esm/helpers/index.mjs +5 -38
- package/dist/esm/helpers/mock.mjs +15 -9
- package/dist/esm-node/createDevServer.mjs +67 -21
- package/dist/esm-node/dev-tools/reloadManager.mjs +186 -0
- package/dist/esm-node/dev-tools/runtimeOptions.mjs +36 -0
- package/dist/esm-node/dev-tools/watcher/dependencyTree.mjs +4 -2
- package/dist/esm-node/dev.mjs +64 -34
- package/dist/esm-node/helpers/index.mjs +5 -38
- package/dist/esm-node/helpers/mock.mjs +15 -9
- package/dist/types/dev-tools/reloadManager.d.ts +88 -0
- package/dist/types/dev-tools/runtimeOptions.d.ts +27 -0
- package/dist/types/dev.d.ts +61 -2
- package/dist/types/helpers/index.d.ts +9 -4
- package/dist/types/helpers/mock.d.ts +4 -2
- package/package.json +14 -16
- package/rstest.config.mts +1 -0
|
@@ -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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
+
});
|
|
@@ -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)=>{
|
|
@@ -31,6 +40,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
40
|
DependencyTree: ()=>DependencyTree,
|
|
32
41
|
defaultIgnores: ()=>defaultIgnores
|
|
33
42
|
});
|
|
43
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
44
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
34
45
|
const external_minimatch_namespaceObject = require("minimatch");
|
|
35
46
|
const defaultIgnores = [
|
|
36
47
|
'**/coverage/**',
|
|
@@ -74,8 +85,9 @@ class DependencyTree {
|
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
87
|
shouldIgnore(path) {
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
const matchPath = path && external_node_path_default().isAbsolute(path) ? external_node_path_default().relative(process.cwd(), path) : path;
|
|
89
|
+
return !matchPath || Boolean(this.ignore.find((rule)=>external_minimatch_namespaceObject.match([
|
|
90
|
+
matchPath
|
|
79
91
|
], rule, {
|
|
80
92
|
dot: true
|
|
81
93
|
}).length > 0));
|
package/dist/cjs/dev.js
CHANGED
|
@@ -28,45 +28,20 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
|
|
31
|
+
devRuntimeMiddlewarePlugin: ()=>devRuntimeMiddlewarePlugin,
|
|
32
|
+
setupDevInfra: ()=>setupDevInfra
|
|
32
33
|
});
|
|
33
34
|
const node_namespaceObject = require("@modern-js/server-core/node");
|
|
34
35
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
35
36
|
const index_js_namespaceObject = require("./helpers/index.js");
|
|
36
|
-
const
|
|
37
|
+
const devRuntimeMiddlewarePlugin = (options, compiler)=>({
|
|
37
38
|
name: '@modern-js/plugin-dev',
|
|
38
39
|
setup (api) {
|
|
39
|
-
const {
|
|
40
|
-
const closeCb = [];
|
|
40
|
+
const { pwd, builderDevServer } = options;
|
|
41
41
|
const dev = (0, index_js_namespaceObject.getDevOptions)(options.dev);
|
|
42
42
|
api.onPrepare(async ()=>{
|
|
43
|
-
const { middlewares: builderMiddlewares
|
|
44
|
-
|
|
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
|
-
});
|
|
43
|
+
const { middlewares: builderMiddlewares } = builderDevServer || {};
|
|
44
|
+
const { middlewares } = api.getServerContext();
|
|
70
45
|
const before = [];
|
|
71
46
|
const after = [];
|
|
72
47
|
const { setupMiddlewares = [] } = dev;
|
|
@@ -84,7 +59,7 @@ const devPlugin = (options, compiler)=>({
|
|
|
84
59
|
handler: (0, node_namespaceObject.connectMid2HonoMid)(middleware)
|
|
85
60
|
});
|
|
86
61
|
});
|
|
87
|
-
const mockMiddleware = await (0, index_js_namespaceObject.getMockMiddleware)(pwd);
|
|
62
|
+
const mockMiddleware = await (0, index_js_namespaceObject.getMockMiddleware)(pwd, options.config?.dev?.mockDir);
|
|
88
63
|
middlewares.push({
|
|
89
64
|
name: 'mock-dev',
|
|
90
65
|
handler: mockMiddleware
|
|
@@ -106,9 +81,67 @@ const devPlugin = (options, compiler)=>({
|
|
|
106
81
|
});
|
|
107
82
|
}
|
|
108
83
|
});
|
|
109
|
-
|
|
84
|
+
function setupDevInfra({ config, pwd, distDir, apiDir, sharedDir, builder, builderDevServer, getRuntimeServer, onFileChange, onClose, nodeServer }) {
|
|
85
|
+
const { close, connectWebSocket } = builderDevServer || {};
|
|
86
|
+
const closeCb = [];
|
|
87
|
+
close && closeCb.push(close);
|
|
88
|
+
connectWebSocket && nodeServer && connectWebSocket({
|
|
89
|
+
server: nodeServer
|
|
90
|
+
});
|
|
91
|
+
builder?.onDevCompileDone(({ stats })=>{
|
|
92
|
+
if ('server' !== stats.toJson({
|
|
93
|
+
all: false
|
|
94
|
+
}).name) {
|
|
95
|
+
const runtimeServer = getRuntimeServer();
|
|
96
|
+
if (runtimeServer) (0, index_js_namespaceObject.onRepack)(distDir, runtimeServer.hooks);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const { watchOptions } = config.server;
|
|
100
|
+
const mockDir = config.dev?.mockDir;
|
|
101
|
+
const mockPath = (0, index_js_namespaceObject.resolveMockDirectory)(pwd, mockDir);
|
|
102
|
+
const watcher = (0, index_js_namespaceObject.startWatcher)({
|
|
103
|
+
pwd,
|
|
104
|
+
distDir,
|
|
105
|
+
apiDir: apiDir || utils_namespaceObject.API_DIR,
|
|
106
|
+
sharedDir: sharedDir || utils_namespaceObject.SHARED_DIR,
|
|
107
|
+
mockDir,
|
|
108
|
+
watchOptions,
|
|
109
|
+
onChange: (filepath, event)=>{
|
|
110
|
+
const runtimeServer = getRuntimeServer();
|
|
111
|
+
if (runtimeServer && !(0, index_js_namespaceObject.isPathInsideDirectory)(filepath, mockPath)) {
|
|
112
|
+
const fileChangeEvent = {
|
|
113
|
+
type: 'file-change',
|
|
114
|
+
payload: [
|
|
115
|
+
{
|
|
116
|
+
filename: filepath,
|
|
117
|
+
event
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
};
|
|
121
|
+
Promise.resolve(runtimeServer.hooks.onReset.call({
|
|
122
|
+
event: fileChangeEvent
|
|
123
|
+
})).catch((error)=>utils_namespaceObject.logger.error(error));
|
|
124
|
+
}
|
|
125
|
+
onFileChange(filepath, event);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
closeCb.push(watcher.close.bind(watcher));
|
|
129
|
+
onClose && closeCb.push(onClose);
|
|
130
|
+
const close$ = ()=>{
|
|
131
|
+
closeCb.forEach((cb)=>{
|
|
132
|
+
cb();
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
closeCb.length > 0 && nodeServer?.on('close', close$);
|
|
136
|
+
return {
|
|
137
|
+
close: close$
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
exports.devRuntimeMiddlewarePlugin = __webpack_exports__.devRuntimeMiddlewarePlugin;
|
|
141
|
+
exports.setupDevInfra = __webpack_exports__.setupDevInfra;
|
|
110
142
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
111
|
-
"
|
|
143
|
+
"devRuntimeMiddlewarePlugin",
|
|
144
|
+
"setupDevInfra"
|
|
112
145
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
113
146
|
Object.defineProperty(exports, '__esModule', {
|
|
114
147
|
value: true
|