@bleedingdev/modern-js-server 3.8.3-ultramodern.1 → 3.8.3-ultramodern.3
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 +10 -4
- package/dist/cjs/dev-tools/reloadManager.js +14 -2
- package/dist/esm/createDevServer.mjs +10 -4
- package/dist/esm/dev-tools/reloadManager.mjs +14 -2
- package/dist/esm-node/createDevServer.mjs +10 -4
- package/dist/esm-node/dev-tools/reloadManager.mjs +14 -2
- package/dist/types/dev-tools/reloadManager.d.ts +3 -1
- package/package.json +9 -9
|
@@ -43,6 +43,7 @@ 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 runtime_lifecycle_namespaceObject = require("@modern-js/server-runtime-extensions/runtime-lifecycle");
|
|
46
47
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
47
48
|
const external_dev_js_namespaceObject = require("./dev.js");
|
|
48
49
|
const reloadManager_js_namespaceObject = require("./dev-tools/reloadManager.js");
|
|
@@ -75,6 +76,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
75
76
|
});
|
|
76
77
|
const assetPrefix = await assetPrefixPromise;
|
|
77
78
|
let currentRuntimeServer;
|
|
79
|
+
let nextRuntimeServer;
|
|
78
80
|
let nodeServer;
|
|
79
81
|
const buildRuntimeServer = async ()=>{
|
|
80
82
|
const freshServerConfig = await (0, node_namespaceObject.loadServerRuntimeConfig)(serverConfigPath) || {};
|
|
@@ -96,15 +98,18 @@ async function createDevServer(options, applyPlugins) {
|
|
|
96
98
|
builderDevServer
|
|
97
99
|
}, compiler)
|
|
98
100
|
]);
|
|
99
|
-
await
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
const handle = await (0, runtime_lifecycle_namespaceObject.initializeDisposableServerRuntime)(runtimeServer, runtimeServer.handle, async ()=>{
|
|
102
|
+
await applyPlugins(runtimeServer, runtimeOptions, nodeServer);
|
|
103
|
+
await runtimeServer.init();
|
|
104
|
+
});
|
|
105
|
+
nextRuntimeServer = runtimeServer;
|
|
106
|
+
return handle;
|
|
103
107
|
};
|
|
104
108
|
const pendingReloadFiles = new Set();
|
|
105
109
|
const reloadManager = (0, reloadManager_js_namespaceObject.createReloadManager)({
|
|
106
110
|
build: buildRuntimeServer,
|
|
107
111
|
onReload: ()=>{
|
|
112
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
108
113
|
const files = Array.from(pendingReloadFiles);
|
|
109
114
|
pendingReloadFiles.clear();
|
|
110
115
|
utils_namespaceObject.logger.info(files.length > 0 ? `Server runtime reloaded (${files.join(', ')})` : 'Server runtime reloaded');
|
|
@@ -118,6 +123,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
118
123
|
nodeServer = await (0, node_namespaceObject.createNodeServer)(reloadManager.handle, httpsOptions, isHttp2);
|
|
119
124
|
} else nodeServer = await (0, node_namespaceObject.createNodeServer)(reloadManager.handle);
|
|
120
125
|
reloadManager.setHandle(await buildRuntimeServer());
|
|
126
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
121
127
|
(0, external_dev_js_namespaceObject.setupDevInfra)({
|
|
122
128
|
config,
|
|
123
129
|
pwd,
|
|
@@ -78,7 +78,7 @@ const notReadyHandle = ()=>new Response('Dev server is starting…', {
|
|
|
78
78
|
'content-type': 'text/plain; charset=utf-8'
|
|
79
79
|
}
|
|
80
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();
|
|
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(), _dispose = /*#__PURE__*/ new WeakSet();
|
|
82
82
|
class ReloadManager {
|
|
83
83
|
setHandle(handle) {
|
|
84
84
|
_class_private_field_set(this, _current, handle);
|
|
@@ -116,17 +116,20 @@ class ReloadManager {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
close() {
|
|
119
|
+
if (_class_private_field_get(this, _closed)) return;
|
|
119
120
|
_class_private_field_set(this, _closed, true);
|
|
120
121
|
_class_private_field_set(this, _pending, false);
|
|
121
122
|
if (_class_private_field_get(this, _debounceTimer)) {
|
|
122
123
|
clearTimeout(_class_private_field_get(this, _debounceTimer));
|
|
123
124
|
_class_private_field_set(this, _debounceTimer, null);
|
|
124
125
|
}
|
|
126
|
+
_class_private_method_get(this, _dispose, dispose).call(this, _class_private_field_get(this, _current));
|
|
125
127
|
}
|
|
126
128
|
constructor(options){
|
|
127
129
|
_class_private_method_init(this, _runLoop);
|
|
128
130
|
_class_private_method_init(this, _reportBuildError);
|
|
129
131
|
_class_private_method_init(this, _reportReloadCallbackError);
|
|
132
|
+
_class_private_method_init(this, _dispose);
|
|
130
133
|
_class_private_field_init(this, _current, {
|
|
131
134
|
writable: true,
|
|
132
135
|
value: void 0
|
|
@@ -195,13 +198,15 @@ async function runLoop() {
|
|
|
195
198
|
_class_private_method_get(this, _reportBuildError, reportBuildError).call(this, error);
|
|
196
199
|
continue;
|
|
197
200
|
}
|
|
198
|
-
if (_class_private_field_get(this, _closed)) return;
|
|
201
|
+
if (_class_private_field_get(this, _closed)) return void await _class_private_method_get(this, _dispose, dispose).call(this, next);
|
|
202
|
+
const previous = _class_private_field_get(this, _current);
|
|
199
203
|
_class_private_field_set(this, _current, next);
|
|
200
204
|
try {
|
|
201
205
|
null == (_this = _class_private_field_get(_this1 = this, _onReload)) || _this.call(_this1, next);
|
|
202
206
|
} catch (callbackError) {
|
|
203
207
|
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, callbackError);
|
|
204
208
|
}
|
|
209
|
+
await _class_private_method_get(this, _dispose, dispose).call(this, previous);
|
|
205
210
|
}while (_class_private_field_get(this, _pending) && !_class_private_field_get(this, _closed));
|
|
206
211
|
}
|
|
207
212
|
function reportBuildError(error) {
|
|
@@ -212,6 +217,13 @@ function reportReloadCallbackError(error) {
|
|
|
212
217
|
if (_class_private_field_get(this, _onReloadError)) _class_private_field_get(this, _onReloadError).call(this, error);
|
|
213
218
|
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
219
|
}
|
|
220
|
+
async function dispose(handle) {
|
|
221
|
+
try {
|
|
222
|
+
await handle.dispose?.();
|
|
223
|
+
} catch (error) {
|
|
224
|
+
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, error);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
215
227
|
function createReloadManager(options) {
|
|
216
228
|
return new ReloadManager(options);
|
|
217
229
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import node_path from "node:path";
|
|
2
2
|
import { createServerBase } from "@modern-js/server-core";
|
|
3
3
|
import { createNodeServer, loadServerRuntimeConfig } from "@modern-js/server-core/node";
|
|
4
|
+
import { initializeDisposableServerRuntime } from "@modern-js/server-runtime-extensions/runtime-lifecycle";
|
|
4
5
|
import { logger } from "@modern-js/utils";
|
|
5
6
|
import { devRuntimeMiddlewarePlugin, setupDevInfra } from "./dev.mjs";
|
|
6
7
|
import { createReloadManager } from "./dev-tools/reloadManager.mjs";
|
|
@@ -33,6 +34,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
33
34
|
});
|
|
34
35
|
const assetPrefix = await assetPrefixPromise;
|
|
35
36
|
let currentRuntimeServer;
|
|
37
|
+
let nextRuntimeServer;
|
|
36
38
|
let nodeServer;
|
|
37
39
|
const buildRuntimeServer = async ()=>{
|
|
38
40
|
const freshServerConfig = await loadServerRuntimeConfig(serverConfigPath) || {};
|
|
@@ -54,15 +56,18 @@ async function createDevServer(options, applyPlugins) {
|
|
|
54
56
|
builderDevServer
|
|
55
57
|
}, compiler)
|
|
56
58
|
]);
|
|
57
|
-
await
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const handle = await initializeDisposableServerRuntime(runtimeServer, runtimeServer.handle, async ()=>{
|
|
60
|
+
await applyPlugins(runtimeServer, runtimeOptions, nodeServer);
|
|
61
|
+
await runtimeServer.init();
|
|
62
|
+
});
|
|
63
|
+
nextRuntimeServer = runtimeServer;
|
|
64
|
+
return handle;
|
|
61
65
|
};
|
|
62
66
|
const pendingReloadFiles = new Set();
|
|
63
67
|
const reloadManager = createReloadManager({
|
|
64
68
|
build: buildRuntimeServer,
|
|
65
69
|
onReload: ()=>{
|
|
70
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
66
71
|
const files = Array.from(pendingReloadFiles);
|
|
67
72
|
pendingReloadFiles.clear();
|
|
68
73
|
logger.info(files.length > 0 ? `Server runtime reloaded (${files.join(', ')})` : 'Server runtime reloaded');
|
|
@@ -76,6 +81,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
76
81
|
nodeServer = await createNodeServer(reloadManager.handle, httpsOptions, isHttp2);
|
|
77
82
|
} else nodeServer = await createNodeServer(reloadManager.handle);
|
|
78
83
|
reloadManager.setHandle(await buildRuntimeServer());
|
|
84
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
79
85
|
setupDevInfra({
|
|
80
86
|
config,
|
|
81
87
|
pwd,
|
|
@@ -45,7 +45,7 @@ const notReadyHandle = ()=>new Response('Dev server is starting…', {
|
|
|
45
45
|
'content-type': 'text/plain; charset=utf-8'
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
-
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();
|
|
48
|
+
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(), _dispose = /*#__PURE__*/ new WeakSet();
|
|
49
49
|
class ReloadManager {
|
|
50
50
|
setHandle(handle) {
|
|
51
51
|
_class_private_field_set(this, _current, handle);
|
|
@@ -83,17 +83,20 @@ class ReloadManager {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
close() {
|
|
86
|
+
if (_class_private_field_get(this, _closed)) return;
|
|
86
87
|
_class_private_field_set(this, _closed, true);
|
|
87
88
|
_class_private_field_set(this, _pending, false);
|
|
88
89
|
if (_class_private_field_get(this, _debounceTimer)) {
|
|
89
90
|
clearTimeout(_class_private_field_get(this, _debounceTimer));
|
|
90
91
|
_class_private_field_set(this, _debounceTimer, null);
|
|
91
92
|
}
|
|
93
|
+
_class_private_method_get(this, _dispose, dispose).call(this, _class_private_field_get(this, _current));
|
|
92
94
|
}
|
|
93
95
|
constructor(options){
|
|
94
96
|
_class_private_method_init(this, _runLoop);
|
|
95
97
|
_class_private_method_init(this, _reportBuildError);
|
|
96
98
|
_class_private_method_init(this, _reportReloadCallbackError);
|
|
99
|
+
_class_private_method_init(this, _dispose);
|
|
97
100
|
_class_private_field_init(this, _current, {
|
|
98
101
|
writable: true,
|
|
99
102
|
value: void 0
|
|
@@ -162,13 +165,15 @@ async function runLoop() {
|
|
|
162
165
|
_class_private_method_get(this, _reportBuildError, reportBuildError).call(this, error);
|
|
163
166
|
continue;
|
|
164
167
|
}
|
|
165
|
-
if (_class_private_field_get(this, _closed)) return;
|
|
168
|
+
if (_class_private_field_get(this, _closed)) return void await _class_private_method_get(this, _dispose, dispose).call(this, next);
|
|
169
|
+
const previous = _class_private_field_get(this, _current);
|
|
166
170
|
_class_private_field_set(this, _current, next);
|
|
167
171
|
try {
|
|
168
172
|
null == (_this = _class_private_field_get(_this1 = this, _onReload)) || _this.call(_this1, next);
|
|
169
173
|
} catch (callbackError) {
|
|
170
174
|
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, callbackError);
|
|
171
175
|
}
|
|
176
|
+
await _class_private_method_get(this, _dispose, dispose).call(this, previous);
|
|
172
177
|
}while (_class_private_field_get(this, _pending) && !_class_private_field_get(this, _closed))
|
|
173
178
|
}
|
|
174
179
|
function reportBuildError(error) {
|
|
@@ -179,6 +184,13 @@ function reportReloadCallbackError(error) {
|
|
|
179
184
|
if (_class_private_field_get(this, _onReloadError)) _class_private_field_get(this, _onReloadError).call(this, error);
|
|
180
185
|
else logger.warn(`[dev-server] onReload callback failed after a successful swap (handle is already active):\n${error instanceof Error ? error.stack ?? error.message : error}`);
|
|
181
186
|
}
|
|
187
|
+
async function dispose(handle) {
|
|
188
|
+
try {
|
|
189
|
+
await handle.dispose?.();
|
|
190
|
+
} catch (error) {
|
|
191
|
+
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, error);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
182
194
|
function createReloadManager(options) {
|
|
183
195
|
return new ReloadManager(options);
|
|
184
196
|
}
|
|
@@ -2,6 +2,7 @@ import "node:module";
|
|
|
2
2
|
import node_path from "node:path";
|
|
3
3
|
import { createServerBase } from "@modern-js/server-core";
|
|
4
4
|
import { createNodeServer, loadServerRuntimeConfig } from "@modern-js/server-core/node";
|
|
5
|
+
import { initializeDisposableServerRuntime } from "@modern-js/server-runtime-extensions/runtime-lifecycle";
|
|
5
6
|
import { logger } from "@modern-js/utils";
|
|
6
7
|
import { devRuntimeMiddlewarePlugin, setupDevInfra } from "./dev.mjs";
|
|
7
8
|
import { createReloadManager } from "./dev-tools/reloadManager.mjs";
|
|
@@ -34,6 +35,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
34
35
|
});
|
|
35
36
|
const assetPrefix = await assetPrefixPromise;
|
|
36
37
|
let currentRuntimeServer;
|
|
38
|
+
let nextRuntimeServer;
|
|
37
39
|
let nodeServer;
|
|
38
40
|
const buildRuntimeServer = async ()=>{
|
|
39
41
|
const freshServerConfig = await loadServerRuntimeConfig(serverConfigPath) || {};
|
|
@@ -55,15 +57,18 @@ async function createDevServer(options, applyPlugins) {
|
|
|
55
57
|
builderDevServer
|
|
56
58
|
}, compiler)
|
|
57
59
|
]);
|
|
58
|
-
await
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
const handle = await initializeDisposableServerRuntime(runtimeServer, runtimeServer.handle, async ()=>{
|
|
61
|
+
await applyPlugins(runtimeServer, runtimeOptions, nodeServer);
|
|
62
|
+
await runtimeServer.init();
|
|
63
|
+
});
|
|
64
|
+
nextRuntimeServer = runtimeServer;
|
|
65
|
+
return handle;
|
|
62
66
|
};
|
|
63
67
|
const pendingReloadFiles = new Set();
|
|
64
68
|
const reloadManager = createReloadManager({
|
|
65
69
|
build: buildRuntimeServer,
|
|
66
70
|
onReload: ()=>{
|
|
71
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
67
72
|
const files = Array.from(pendingReloadFiles);
|
|
68
73
|
pendingReloadFiles.clear();
|
|
69
74
|
logger.info(files.length > 0 ? `Server runtime reloaded (${files.join(', ')})` : 'Server runtime reloaded');
|
|
@@ -77,6 +82,7 @@ async function createDevServer(options, applyPlugins) {
|
|
|
77
82
|
nodeServer = await createNodeServer(reloadManager.handle, httpsOptions, isHttp2);
|
|
78
83
|
} else nodeServer = await createNodeServer(reloadManager.handle);
|
|
79
84
|
reloadManager.setHandle(await buildRuntimeServer());
|
|
85
|
+
currentRuntimeServer = nextRuntimeServer;
|
|
80
86
|
setupDevInfra({
|
|
81
87
|
config,
|
|
82
88
|
pwd,
|
|
@@ -46,7 +46,7 @@ const notReadyHandle = ()=>new Response('Dev server is starting…', {
|
|
|
46
46
|
'content-type': 'text/plain; charset=utf-8'
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
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();
|
|
49
|
+
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(), _dispose = /*#__PURE__*/ new WeakSet();
|
|
50
50
|
class ReloadManager {
|
|
51
51
|
setHandle(handle) {
|
|
52
52
|
_class_private_field_set(this, _current, handle);
|
|
@@ -84,17 +84,20 @@ class ReloadManager {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
close() {
|
|
87
|
+
if (_class_private_field_get(this, _closed)) return;
|
|
87
88
|
_class_private_field_set(this, _closed, true);
|
|
88
89
|
_class_private_field_set(this, _pending, false);
|
|
89
90
|
if (_class_private_field_get(this, _debounceTimer)) {
|
|
90
91
|
clearTimeout(_class_private_field_get(this, _debounceTimer));
|
|
91
92
|
_class_private_field_set(this, _debounceTimer, null);
|
|
92
93
|
}
|
|
94
|
+
_class_private_method_get(this, _dispose, dispose).call(this, _class_private_field_get(this, _current));
|
|
93
95
|
}
|
|
94
96
|
constructor(options){
|
|
95
97
|
_class_private_method_init(this, _runLoop);
|
|
96
98
|
_class_private_method_init(this, _reportBuildError);
|
|
97
99
|
_class_private_method_init(this, _reportReloadCallbackError);
|
|
100
|
+
_class_private_method_init(this, _dispose);
|
|
98
101
|
_class_private_field_init(this, _current, {
|
|
99
102
|
writable: true,
|
|
100
103
|
value: void 0
|
|
@@ -163,13 +166,15 @@ async function runLoop() {
|
|
|
163
166
|
_class_private_method_get(this, _reportBuildError, reportBuildError).call(this, error);
|
|
164
167
|
continue;
|
|
165
168
|
}
|
|
166
|
-
if (_class_private_field_get(this, _closed)) return;
|
|
169
|
+
if (_class_private_field_get(this, _closed)) return void await _class_private_method_get(this, _dispose, dispose).call(this, next);
|
|
170
|
+
const previous = _class_private_field_get(this, _current);
|
|
167
171
|
_class_private_field_set(this, _current, next);
|
|
168
172
|
try {
|
|
169
173
|
null == (_this = _class_private_field_get(_this1 = this, _onReload)) || _this.call(_this1, next);
|
|
170
174
|
} catch (callbackError) {
|
|
171
175
|
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, callbackError);
|
|
172
176
|
}
|
|
177
|
+
await _class_private_method_get(this, _dispose, dispose).call(this, previous);
|
|
173
178
|
}while (_class_private_field_get(this, _pending) && !_class_private_field_get(this, _closed));
|
|
174
179
|
}
|
|
175
180
|
function reportBuildError(error) {
|
|
@@ -180,6 +185,13 @@ function reportReloadCallbackError(error) {
|
|
|
180
185
|
if (_class_private_field_get(this, _onReloadError)) _class_private_field_get(this, _onReloadError).call(this, error);
|
|
181
186
|
else logger.warn(`[dev-server] onReload callback failed after a successful swap (handle is already active):\n${error instanceof Error ? error.stack ?? error.message : error}`);
|
|
182
187
|
}
|
|
188
|
+
async function dispose(handle) {
|
|
189
|
+
try {
|
|
190
|
+
await handle.dispose?.();
|
|
191
|
+
} catch (error) {
|
|
192
|
+
_class_private_method_get(this, _reportReloadCallbackError, reportReloadCallbackError).call(this, error);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
183
195
|
function createReloadManager(options) {
|
|
184
196
|
return new ReloadManager(options);
|
|
185
197
|
}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* A request handle compatible with `ServerBase.handle` (Hono's `app.fetch`)
|
|
3
3
|
* and the handler accepted by `createNodeServer`.
|
|
4
4
|
*/
|
|
5
|
-
export type ReloadableHandle = (request: Request, ...args: any[]) => Response | Promise<Response
|
|
5
|
+
export type ReloadableHandle = ((request: Request, ...args: any[]) => Response | Promise<Response>) & {
|
|
6
|
+
dispose?: () => void | Promise<void>;
|
|
7
|
+
};
|
|
6
8
|
export interface ReloadManagerOptions {
|
|
7
9
|
/**
|
|
8
10
|
* The handle used before the first successful build. Optional: when omitted
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"modern",
|
|
18
18
|
"modern.js"
|
|
19
19
|
],
|
|
20
|
-
"version": "3.8.3-ultramodern.
|
|
20
|
+
"version": "3.8.3-ultramodern.3",
|
|
21
21
|
"types": "./dist/types/index.d.ts",
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"exports": {
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.8.3-ultramodern.
|
|
42
|
-
"@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.8.3-ultramodern.
|
|
43
|
-
"@modern-js/server-
|
|
44
|
-
"@modern-js/
|
|
45
|
-
"@modern-js/
|
|
41
|
+
"@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.8.3-ultramodern.3",
|
|
42
|
+
"@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.8.3-ultramodern.3",
|
|
43
|
+
"@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.8.3-ultramodern.3",
|
|
44
|
+
"@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.8.3-ultramodern.3",
|
|
45
|
+
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.8.3-ultramodern.3",
|
|
46
|
+
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.8.3-ultramodern.3",
|
|
46
47
|
"@swc/helpers": "^0.5.23",
|
|
47
|
-
"axios": "^1.18.1",
|
|
48
48
|
"connect-history-api-fallback": "^2.0.0",
|
|
49
49
|
"http-compression": "1.1.3",
|
|
50
50
|
"minimatch": "^10.2.5",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"ws": "^8.21.3"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.8.3-ultramodern.
|
|
55
|
+
"@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.8.3-ultramodern.3",
|
|
56
56
|
"@rslib/core": "0.23.2",
|
|
57
57
|
"@scripts/rstest-config": "2.66.0",
|
|
58
58
|
"@types/connect-history-api-fallback": "^1.5.4",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
82
|
"scripts": {
|
|
83
|
-
"build": "rslib build
|
|
83
|
+
"build": "rslib build",
|
|
84
84
|
"dev": "rslib build --watch",
|
|
85
85
|
"test": "rstest"
|
|
86
86
|
}
|