vxrn 1.25.4 → 1.25.6
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/plugins/reactNativeDevServer.mjs +45 -14
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +45 -14
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +137 -72
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +136 -68
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.test.mjs +79 -3
- package/dist/utils/createNativeDevEngine.test.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.test.native.js +101 -4
- package/dist/utils/createNativeDevEngine.test.native.js.map +1 -1
- package/package.json +11 -11
- package/src/plugins/reactNativeDevServer.ts +57 -17
- package/src/utils/createNativeDevEngine.test.ts +95 -0
- package/src/utils/createNativeDevEngine.ts +156 -84
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts +17 -6
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -47,17 +47,17 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
if (url.startsWith("/hot")) {
|
|
50
|
+
const hmrUrl = new URL(url, `http://${req.headers.host || "localhost"}`);
|
|
51
|
+
const platform = validPlatforms[hmrUrl.searchParams.get("platform") || ""];
|
|
52
|
+
const clientId = hmrUrl.searchParams.get("clientId");
|
|
53
|
+
if (!platform || !clientId) {
|
|
54
|
+
socket.destroy();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
50
57
|
hmrWSS.handleUpgrade(req, socket, head, ws => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (msg.type === "hmr:module-registered" && msg.modules) {
|
|
55
|
-
const currentEngine = devEngines["ios"] || devEngines["android"];
|
|
56
|
-
if (currentEngine?.engine) {
|
|
57
|
-
await currentEngine.engine.registerModules("vxrn-dev", msg.modules);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
} catch {}
|
|
58
|
+
Object.assign(ws, {
|
|
59
|
+
vxrnClientId: clientId,
|
|
60
|
+
vxrnPlatform: platform
|
|
61
61
|
});
|
|
62
62
|
hmrWSS.emit("connection", ws, req);
|
|
63
63
|
});
|
|
@@ -75,15 +75,45 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
|
-
hmrWSS.on("connection", socket => {
|
|
78
|
+
hmrWSS.on("connection", async socket => {
|
|
79
|
+
const currentEngine = devEngines[socket.vxrnPlatform];
|
|
80
|
+
if (!currentEngine) {
|
|
81
|
+
socket.close(1013, "native dev engine unavailable");
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
await currentEngine.engine.registerClient(socket.vxrnClientId);
|
|
86
|
+
} catch (error) {
|
|
87
|
+
console.error("[hmr] failed to register native client", error);
|
|
88
|
+
socket.close(1011, "native HMR registration failed");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
79
91
|
addConnectedNativeClient();
|
|
80
|
-
socket.on("message", message => {
|
|
81
|
-
|
|
92
|
+
socket.on("message", async message => {
|
|
93
|
+
const value = message.toString();
|
|
94
|
+
if (value === "ping") {
|
|
82
95
|
socket.send("pong");
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
let update;
|
|
99
|
+
try {
|
|
100
|
+
update = JSON.parse(value);
|
|
101
|
+
} catch {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (update.type === "hmr:invalidate") {
|
|
105
|
+
currentEngine.engine.triggerFullBuild();
|
|
106
|
+
await currentEngine.engine.ensureLatestBuildOutput();
|
|
107
|
+
socket.send(JSON.stringify({
|
|
108
|
+
type: "hmr:reload"
|
|
109
|
+
}));
|
|
83
110
|
}
|
|
84
111
|
});
|
|
85
112
|
socket.on("close", () => {
|
|
86
113
|
removeConnectedNativeClient();
|
|
114
|
+
currentEngine.engine.removeClient(socket.vxrnClientId).catch(error => {
|
|
115
|
+
console.error("[hmr] failed to remove native client", error);
|
|
116
|
+
});
|
|
87
117
|
});
|
|
88
118
|
socket.on("error", error => {
|
|
89
119
|
console.error("[hmr] error", error);
|
|
@@ -137,7 +167,8 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
137
167
|
onHmrUpdate: update => {
|
|
138
168
|
const msg = JSON.stringify(update);
|
|
139
169
|
hmrWSS.clients.forEach(client => {
|
|
140
|
-
|
|
170
|
+
const nativeClient = client;
|
|
171
|
+
if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (update.type === "hmr:error" || nativeClient.vxrnClientId === update.clientId)) {
|
|
141
172
|
client.send(msg);
|
|
142
173
|
}
|
|
143
174
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","createDevMiddleware","createNativeDevEngine","getBoundPort","createReactNativeDevServerPlugin","options","name","configureServer","server","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","httpServer","on","req","socket","head","url","endpoint","startsWith","wss","handleUpgrade","ws","emit","
|
|
1
|
+
{"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","createDevMiddleware","createNativeDevEngine","getBoundPort","createReactNativeDevServerPlugin","options","name","configureServer","server","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","httpServer","on","req","socket","head","url","endpoint","startsWith","wss","handleUpgrade","ws","emit","hmrUrl","headers","platform","validPlatforms","searchParams","get","clientId","destroy","Object","assign","vxrnClientId","vxrnPlatform","currentEngine","devEngines","close","engine","registerClient","error","message","value","toString","send","update","JSON","parse","type","triggerFullBuild","ensureLatestBuildOutput","stringify","removeClient","catch","messageRaw","level","data","info","warn","ios","android","devEngineCreating","handleRNBundle","res","platformString","bundle","port","serverUrl","onHmrUpdate","msg","clients","forEach","client","nativeClient","readyState","err","getBundle","then","r","code","writeHead","end","Error","stack","String","next","split","endsWith","_req"],"sources":["../../src/plugins/reactNativeDevServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -85,17 +85,17 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
if (url.startsWith("/hot")) {
|
|
88
|
+
var hmrUrl = new URL(url, `http://${req.headers.host || "localhost"}`);
|
|
89
|
+
var platform = validPlatforms[hmrUrl.searchParams.get("platform") || ""];
|
|
90
|
+
var clientId = hmrUrl.searchParams.get("clientId");
|
|
91
|
+
if (!platform || !clientId) {
|
|
92
|
+
socket.destroy();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
88
95
|
hmrWSS.handleUpgrade(req, socket, head, function (ws) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (msg.type === "hmr:module-registered" && msg.modules) {
|
|
93
|
-
var currentEngine = devEngines["ios"] || devEngines["android"];
|
|
94
|
-
if (currentEngine === null || currentEngine === void 0 ? void 0 : currentEngine.engine) {
|
|
95
|
-
await currentEngine.engine.registerModules("vxrn-dev", msg.modules);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
} catch (unused) {}
|
|
96
|
+
Object.assign(ws, {
|
|
97
|
+
vxrnClientId: clientId,
|
|
98
|
+
vxrnPlatform: platform
|
|
99
99
|
});
|
|
100
100
|
hmrWSS.emit("connection", ws, req);
|
|
101
101
|
});
|
|
@@ -113,15 +113,45 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
|
-
hmrWSS.on("connection", function (socket) {
|
|
116
|
+
hmrWSS.on("connection", async function (socket) {
|
|
117
|
+
var currentEngine = devEngines[socket.vxrnPlatform];
|
|
118
|
+
if (!currentEngine) {
|
|
119
|
+
socket.close(1013, "native dev engine unavailable");
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
await currentEngine.engine.registerClient(socket.vxrnClientId);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error("[hmr] failed to register native client", error);
|
|
126
|
+
socket.close(1011, "native HMR registration failed");
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
117
129
|
addConnectedNativeClient();
|
|
118
|
-
socket.on("message", function (message) {
|
|
119
|
-
|
|
130
|
+
socket.on("message", async function (message) {
|
|
131
|
+
var value = message.toString();
|
|
132
|
+
if (value === "ping") {
|
|
120
133
|
socket.send("pong");
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
var update;
|
|
137
|
+
try {
|
|
138
|
+
update = JSON.parse(value);
|
|
139
|
+
} catch (unused) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (update.type === "hmr:invalidate") {
|
|
143
|
+
currentEngine.engine.triggerFullBuild();
|
|
144
|
+
await currentEngine.engine.ensureLatestBuildOutput();
|
|
145
|
+
socket.send(JSON.stringify({
|
|
146
|
+
type: "hmr:reload"
|
|
147
|
+
}));
|
|
121
148
|
}
|
|
122
149
|
});
|
|
123
150
|
socket.on("close", function () {
|
|
124
151
|
removeConnectedNativeClient();
|
|
152
|
+
currentEngine.engine.removeClient(socket.vxrnClientId).catch(function (error) {
|
|
153
|
+
console.error("[hmr] failed to remove native client", error);
|
|
154
|
+
});
|
|
125
155
|
});
|
|
126
156
|
socket.on("error", function (error) {
|
|
127
157
|
console.error("[hmr] error", error);
|
|
@@ -176,7 +206,8 @@ function createReactNativeDevServerPlugin(options) {
|
|
|
176
206
|
onHmrUpdate: function (update) {
|
|
177
207
|
var msg = JSON.stringify(update);
|
|
178
208
|
hmrWSS.clients.forEach(function (client) {
|
|
179
|
-
|
|
209
|
+
var nativeClient = client;
|
|
210
|
+
if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (update.type === "hmr:error" || nativeClient.vxrnClientId === update.clientId)) {
|
|
180
211
|
client.send(msg);
|
|
181
212
|
}
|
|
182
213
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","createDevMiddleware","createNativeDevEngine","getBoundPort","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","createReactNativeDevServerPlugin","options","name","configureServer","server","_server_httpServer","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","httpServer","on","req","socket","head","url","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","endpoint","_step","value","startsWith","wss","handleUpgrade","ws","emit","v","_iterator","iterator","next","done","_ret","err","return","
|
|
1
|
+
{"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","createDevMiddleware","createNativeDevEngine","getBoundPort","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","createReactNativeDevServerPlugin","options","name","configureServer","server","_server_httpServer","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","httpServer","on","req","socket","head","url","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","endpoint","_step","value","startsWith","wss","handleUpgrade","ws","emit","v","_iterator","iterator","next","done","_ret","err","return","hmrUrl","headers","platform","validPlatforms","searchParams","get","clientId","destroy","Object","assign","vxrnClientId","vxrnPlatform","currentEngine","devEngines","close","engine","registerClient","error","message","toString","send","update","JSON","parse","unused","type","triggerFullBuild","ensureLatestBuildOutput","stringify","removeClient","catch","messageRaw","_message_data_","level","data","info","warn","ios","android","devEngineCreating","handleRNBundle","res","platformString","bundle","port","serverUrl","onHmrUpdate","msg","clients","forEach","client","nativeClient","readyState"],"sources":["../../src/plugins/reactNativeDevServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -129,7 +129,7 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
129
129
|
function getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest) {
|
|
130
130
|
return [...(globalThis.__vxrnAddNativePlugins || []), serverFileExclusionPlugin(), environmentGuardPlugin(), hmrClientNoopPlugin(), cssStubPlugin(), viteImportGlobPlugin({
|
|
131
131
|
root
|
|
132
|
-
}), vxrnCompilerPlugin(platform, dev), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
|
|
132
|
+
}), vxrnCompilerPlugin(platform, dev, root), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
|
|
133
133
|
root,
|
|
134
134
|
platform,
|
|
135
135
|
assetsDest
|
|
@@ -269,18 +269,18 @@ async function createNativeDevEngine(options) {
|
|
|
269
269
|
outro: `
|
|
270
270
|
try {
|
|
271
271
|
var __WS = (init_WebSocket(), __toCommonJS(WebSocket_exports)).default;
|
|
272
|
-
var __hmrUrl = 'ws://${resolvedHost}:${port}/hot';
|
|
272
|
+
var __hmrUrl = 'ws://${resolvedHost}:${port}/hot?platform=${platform}&clientId=' + encodeURIComponent(__rolldown_runtime__.clientId);
|
|
273
273
|
var __hmrWS = new __WS(__hmrUrl);
|
|
274
274
|
__hmrWS.onmessage = function(event) {
|
|
275
275
|
try {
|
|
276
276
|
var msg = JSON.parse(event.data);
|
|
277
277
|
var g = typeof global !== 'undefined' ? global : globalThis;
|
|
278
278
|
if (msg.type === 'hmr:update' && msg.code) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
279
|
+
var applied = __rolldown_runtime__.applyHmrUpdate(msg.code, msg.changedIds, msg.seq);
|
|
280
|
+
if (!applied) {
|
|
281
|
+
var updateSettings = g.__turboModuleProxy ? g.__turboModuleProxy('DevSettings') : null;
|
|
282
|
+
if (updateSettings && updateSettings.reload) updateSettings.reload();
|
|
283
|
+
}
|
|
284
284
|
} else if (msg.type === 'hmr:reload') {
|
|
285
285
|
var ds = g.__turboModuleProxy ? g.__turboModuleProxy('DevSettings') : null;
|
|
286
286
|
if (ds && ds.reload) ds.reload();
|
|
@@ -289,7 +289,7 @@ try {
|
|
|
289
289
|
};
|
|
290
290
|
__hmrWS.onopen = function() {
|
|
291
291
|
if (typeof __rolldown_runtime__ !== 'undefined' && __rolldown_runtime__.setup) {
|
|
292
|
-
__rolldown_runtime__.setup(__hmrWS
|
|
292
|
+
__rolldown_runtime__.setup(__hmrWS);
|
|
293
293
|
}
|
|
294
294
|
};
|
|
295
295
|
__hmrWS.onerror = function(e) { console.warn('[vxrn] HMR connection error:', e.message || e); };
|
|
@@ -325,18 +325,18 @@ try {
|
|
|
325
325
|
});
|
|
326
326
|
return;
|
|
327
327
|
}
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
|
|
328
|
+
for (const {
|
|
329
|
+
clientId,
|
|
330
|
+
update
|
|
331
|
+
} of result.updates) if (update.type === "Patch" && update.code) onHmrUpdate?.({
|
|
332
|
+
type: "hmr:update",
|
|
333
|
+
clientId,
|
|
334
|
+
code: update.code,
|
|
335
|
+
changedIds: update.changedIds,
|
|
336
|
+
seq: update.seq
|
|
337
|
+
});else if (update.type === "FullReload") onHmrUpdate?.({
|
|
338
|
+
type: "hmr:reload",
|
|
339
|
+
clientId
|
|
340
340
|
});
|
|
341
341
|
},
|
|
342
342
|
rebuildStrategy: "never",
|
|
@@ -563,7 +563,7 @@ function cssStubPlugin() {
|
|
|
563
563
|
}
|
|
564
564
|
};
|
|
565
565
|
}
|
|
566
|
-
function vxrnCompilerPlugin(platform, dev) {
|
|
566
|
+
function vxrnCompilerPlugin(platform, dev, projectRoot = process.cwd()) {
|
|
567
567
|
let compiler = null;
|
|
568
568
|
const isRefreshCandidate = id => dev && !id.includes("node_modules") && !id.includes("__virtual-native-entry") && /\.[tj]sx?$/.test(id);
|
|
569
569
|
return {
|
|
@@ -577,6 +577,7 @@ function vxrnCompilerPlugin(platform, dev) {
|
|
|
577
577
|
const props = {
|
|
578
578
|
id,
|
|
579
579
|
code,
|
|
580
|
+
projectRoot,
|
|
580
581
|
development: dev,
|
|
581
582
|
environment: platform,
|
|
582
583
|
reactForRNVersion: "19"
|
|
@@ -765,26 +766,33 @@ var BaseDevRuntime = DevRuntime;
|
|
|
765
766
|
|
|
766
767
|
class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
767
768
|
constructor() {
|
|
768
|
-
var _shared = { _socket: null, _queue: [] };
|
|
769
769
|
var clientId = 'rn-' + Date.now() + '-' + Math.random().toString(36).slice(2);
|
|
770
|
-
super(
|
|
771
|
-
var s = JSON.stringify(msg);
|
|
772
|
-
if (_shared._socket && _shared._socket.readyState === 1) { _shared._socket.send(s); }
|
|
773
|
-
else { _shared._queue.push(s); }
|
|
774
|
-
}}, clientId);
|
|
775
|
-
this._shared = _shared;
|
|
770
|
+
super(clientId);
|
|
776
771
|
this._socket = null;
|
|
777
|
-
this._queue = [];
|
|
778
772
|
this.moduleHotContexts = {};
|
|
773
|
+
this.lastSeq = 0;
|
|
779
774
|
}
|
|
780
775
|
|
|
781
776
|
createModuleHotContext(moduleId) {
|
|
777
|
+
var runtime = this;
|
|
782
778
|
var ctx = {
|
|
783
779
|
acceptCallbacks: [],
|
|
784
|
-
accept: function(
|
|
785
|
-
if (
|
|
780
|
+
accept: function(deps, callback) {
|
|
781
|
+
if (typeof deps === 'function' || !deps) {
|
|
782
|
+
ctx.acceptCallbacks.push({
|
|
783
|
+
deps: [moduleId],
|
|
784
|
+
fn: function(modules) { if (typeof deps === 'function') deps(modules[0]); }
|
|
785
|
+
});
|
|
786
|
+
} else if (typeof deps === 'string') {
|
|
787
|
+
ctx.acceptCallbacks.push({
|
|
788
|
+
deps: [deps],
|
|
789
|
+
fn: function(modules) { if (callback) callback(modules[0]); }
|
|
790
|
+
});
|
|
791
|
+
} else if (Array.isArray(deps)) {
|
|
792
|
+
ctx.acceptCallbacks.push({ deps: deps, fn: callback || function() {} });
|
|
793
|
+
}
|
|
786
794
|
},
|
|
787
|
-
invalidate: function() {},
|
|
795
|
+
invalidate: function() { runtime.requestReload('module invalidated: ' + moduleId); },
|
|
788
796
|
on: function() {},
|
|
789
797
|
off: function() {},
|
|
790
798
|
send: function() {},
|
|
@@ -815,60 +823,117 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
815
823
|
return ctx;
|
|
816
824
|
}
|
|
817
825
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
+
isSelfAccepted(moduleId) {
|
|
827
|
+
var ctx = this.moduleHotContexts[moduleId];
|
|
828
|
+
return !!(ctx && ctx.acceptCallbacks.some(function(callback) {
|
|
829
|
+
return callback.deps.indexOf(moduleId) !== -1;
|
|
830
|
+
}));
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
acceptsDependency(parentId, moduleId) {
|
|
834
|
+
var ctx = this.moduleHotContexts[parentId];
|
|
835
|
+
return !!(ctx && ctx.acceptCallbacks.some(function(callback) {
|
|
836
|
+
return callback.deps.indexOf(moduleId) !== -1;
|
|
837
|
+
}));
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
findBoundaries(moduleId, traversed, updateSet, boundaries) {
|
|
841
|
+
if (traversed.has(moduleId)) return true;
|
|
842
|
+
traversed.add(moduleId);
|
|
843
|
+
updateSet.add(moduleId);
|
|
844
|
+
|
|
845
|
+
if (this.isSelfAccepted(moduleId)) {
|
|
846
|
+
boundaries.push({ boundary: moduleId, acceptedVia: moduleId });
|
|
847
|
+
return true;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
var importers = this.getImporters(moduleId).filter(function(importer) {
|
|
851
|
+
return this.isExecuted(importer);
|
|
852
|
+
}, this);
|
|
853
|
+
if (importers.length === 0) return false;
|
|
854
|
+
|
|
855
|
+
for (var i = 0; i < importers.length; i++) {
|
|
856
|
+
var importer = importers[i];
|
|
857
|
+
if (this.acceptsDependency(importer, moduleId)) {
|
|
858
|
+
boundaries.push({ boundary: importer, acceptedVia: moduleId });
|
|
859
|
+
} else if (!this.findBoundaries(importer, traversed, updateSet, boundaries)) {
|
|
860
|
+
return false;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
return true;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
applyHmrUpdate(code, changedIds, seq) {
|
|
867
|
+
if (seq !== this.lastSeq + 1) return false;
|
|
868
|
+
this.lastSeq = seq;
|
|
869
|
+
|
|
870
|
+
var traversed = new Set();
|
|
871
|
+
var updateSet = new Set();
|
|
872
|
+
var boundaries = [];
|
|
873
|
+
for (var i = 0; i < changedIds.length; i++) {
|
|
874
|
+
var changedId = changedIds[i];
|
|
875
|
+
if (!this.isExecuted(changedId)) continue;
|
|
876
|
+
if (!this.findBoundaries(changedId, traversed, updateSet, boundaries)) return false;
|
|
877
|
+
}
|
|
878
|
+
if (boundaries.length === 0) return true;
|
|
879
|
+
|
|
880
|
+
var callbacks = boundaries.map(function(item) {
|
|
881
|
+
var ctx = this.moduleHotContexts[item.boundary];
|
|
882
|
+
return {
|
|
883
|
+
boundary: item.boundary,
|
|
884
|
+
acceptedVia: item.acceptedVia,
|
|
885
|
+
callbacks: ctx ? ctx.acceptCallbacks.filter(function(callback) {
|
|
886
|
+
return callback.deps.indexOf(item.acceptedVia) !== -1;
|
|
887
|
+
}) : []
|
|
888
|
+
};
|
|
889
|
+
}, this);
|
|
890
|
+
|
|
891
|
+
if (globalThis.globalEvalWithSourceUrl) globalThis.globalEvalWithSourceUrl(code);
|
|
892
|
+
else (0, eval)(code);
|
|
893
|
+
|
|
894
|
+
var modulesToReplace = Array.from(updateSet);
|
|
895
|
+
for (var j = 0; j < modulesToReplace.length; j++) {
|
|
896
|
+
if (!this.hasFactory(modulesToReplace[j])) return false;
|
|
897
|
+
}
|
|
898
|
+
for (var k = 0; k < modulesToReplace.length; k++) {
|
|
899
|
+
this.removeModuleCache(modulesToReplace[k]);
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
for (var m = 0; m < callbacks.length; m++) {
|
|
903
|
+
var apply = callbacks[m];
|
|
904
|
+
this.initModule(apply.acceptedVia);
|
|
905
|
+
var freshExports = this.loadExports(apply.acceptedVia);
|
|
906
|
+
for (var n = 0; n < apply.callbacks.length; n++) {
|
|
907
|
+
apply.callbacks[n].fn([freshExports]);
|
|
826
908
|
}
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
// and the web route-update event has no equivalent on the native /hot
|
|
831
|
-
// socket, so this generic vxrn global is the bridge.
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
for (var p = 0; p < changedIds.length; p++) {
|
|
832
912
|
try {
|
|
833
|
-
if (globalThis.__VXRN_ON_MODULE_UPDATED__
|
|
913
|
+
if (globalThis.__VXRN_ON_MODULE_UPDATED__) {
|
|
914
|
+
globalThis.__VXRN_ON_MODULE_UPDATED__(changedIds[p]);
|
|
915
|
+
}
|
|
834
916
|
} catch (error) {
|
|
835
917
|
console.error('[vxrn HMR]: module update hook failed', error);
|
|
836
918
|
}
|
|
837
919
|
}
|
|
920
|
+
return true;
|
|
838
921
|
}
|
|
839
922
|
|
|
840
|
-
|
|
841
|
-
if (this._socket)
|
|
842
|
-
|
|
843
|
-
// also set the shared messenger socket so queued messages can flush
|
|
844
|
-
if (this._shared) this._shared._socket = socket;
|
|
845
|
-
|
|
846
|
-
var flushQueues = function() {
|
|
847
|
-
// flush messenger queue
|
|
848
|
-
if (this._shared && this._shared._queue.length) {
|
|
849
|
-
for (var i = 0; i < this._shared._queue.length; i++) socket.send(this._shared._queue[i]);
|
|
850
|
-
this._shared._queue = [];
|
|
851
|
-
}
|
|
852
|
-
// flush instance queue
|
|
853
|
-
for (var i = 0; i < this._queue.length; i++) socket.send(this._queue[i]);
|
|
854
|
-
this._queue = [];
|
|
855
|
-
}.bind(this);
|
|
856
|
-
|
|
857
|
-
if (socket.readyState === 1) {
|
|
858
|
-
flushQueues();
|
|
859
|
-
} else {
|
|
860
|
-
socket.addEventListener('open', function() {
|
|
861
|
-
flushQueues();
|
|
862
|
-
}, { once: true });
|
|
923
|
+
requestReload(reason) {
|
|
924
|
+
if (this._socket && this._socket.readyState === 1) {
|
|
925
|
+
this._socket.send(JSON.stringify({ type: 'hmr:invalidate', reason: reason }));
|
|
863
926
|
}
|
|
927
|
+
}
|
|
864
928
|
|
|
865
|
-
|
|
866
|
-
|
|
929
|
+
setup(socket) {
|
|
930
|
+
if (this._socket) return;
|
|
931
|
+
this._socket = socket;
|
|
867
932
|
}
|
|
868
933
|
}
|
|
869
934
|
|
|
870
935
|
globalThis.__rolldown_runtime__ = new ReactNativeDevRuntime();
|
|
871
936
|
`;
|
|
872
937
|
}
|
|
873
|
-
export { buildNativeBundle, createNativeDevEngine, getHermesSWCIncludes, getNativeTransformConfig, hmrClientNoopPlugin, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
938
|
+
export { buildNativeBundle, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeTransformConfig, hmrClientNoopPlugin, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
874
939
|
//# sourceMappingURL=createNativeDevEngine.mjs.map
|