vxrn 1.26.1 → 2.0.0-beta.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -73,6 +73,7 @@ function createReactNativeDevServerPlugin(options) {
73
73
  var devEngines = {};
74
74
  var devEngineCreating = {};
75
75
  var warnedProdBundleRequest = /* @__PURE__ */new Set();
76
+ var pendingReloadPlatforms = /* @__PURE__ */new Set();
76
77
  var devToolsSocketEndpoints = ["/inspector/device", "/inspector/debug"];
77
78
  var reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`;
78
79
  var {
@@ -208,6 +209,11 @@ function createReactNativeDevServerPlugin(options) {
208
209
  return;
209
210
  }
210
211
  addConnectedNativeClient();
212
+ if (pendingReloadPlatforms.has(socket.vxrnPlatform)) {
213
+ socket.send(JSON.stringify({
214
+ type: "hmr:reload"
215
+ }));
216
+ }
211
217
  socket.on("message", function (message) {
212
218
  var value = message.toString();
213
219
  if (value === "ping") {
@@ -236,115 +242,6 @@ function createReactNativeDevServerPlugin(options) {
236
242
  console.error("[hmr] error", error);
237
243
  });
238
244
  });
239
- var reloadNativeClients = function (platform) {
240
- var reload = JSON.stringify({
241
- type: "hmr:reload"
242
- });
243
- hmrWSS.clients.forEach(function (client) {
244
- var nativeClient = client;
245
- if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform) {
246
- nativeClient.send(reload);
247
- }
248
- });
249
- };
250
- var deletionTimer;
251
- var addTimer;
252
- var addedFiles = /* @__PURE__ */new Set();
253
- server.watcher.on("add", function (file) {
254
- if (file.split("/").some(function (segment) {
255
- return segment.startsWith(".");
256
- })) return;
257
- addedFiles.add(file);
258
- clearTimeout(addTimer);
259
- addTimer = setTimeout(function () {
260
- var files = [...addedFiles];
261
- addedFiles.clear();
262
- var _iteratorNormalCompletion = true,
263
- _didIteratorError = false,
264
- _iteratorError = void 0;
265
- try {
266
- var _loop = function () {
267
- var platform = _step.value;
268
- var devEngine = devEngines[platform];
269
- if (!devEngine) return "continue";
270
- var _iteratorNormalCompletion2 = true,
271
- _didIteratorError2 = false,
272
- _iteratorError2 = void 0;
273
- try {
274
- var _loop2 = function () {
275
- var added = _step1.value;
276
- devEngine.handleAddedFile(added).catch(function (error) {
277
- console.error(`[vxrn] handling added ${added} for ${platform} failed`, error);
278
- });
279
- };
280
- for (var _iterator2 = files[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop2();
281
- } catch (err) {
282
- _didIteratorError2 = true;
283
- _iteratorError2 = err;
284
- } finally {
285
- try {
286
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
287
- _iterator2.return();
288
- }
289
- } finally {
290
- if (_didIteratorError2) {
291
- throw _iteratorError2;
292
- }
293
- }
294
- }
295
- };
296
- for (var _iterator = Object.keys(devEngines)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
297
- } catch (err) {
298
- _didIteratorError = true;
299
- _iteratorError = err;
300
- } finally {
301
- try {
302
- if (!_iteratorNormalCompletion && _iterator.return != null) {
303
- _iterator.return();
304
- }
305
- } finally {
306
- if (_didIteratorError) {
307
- throw _iteratorError;
308
- }
309
- }
310
- }
311
- }, 50);
312
- });
313
- server.watcher.on("unlink", function (file) {
314
- if (file.split("/").some(function (segment) {
315
- return segment.startsWith(".");
316
- })) return;
317
- clearTimeout(deletionTimer);
318
- deletionTimer = setTimeout(function () {
319
- var _iteratorNormalCompletion = true,
320
- _didIteratorError = false,
321
- _iteratorError = void 0;
322
- try {
323
- for (var _iterator = Object.keys(devEngines)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
324
- var platform = _step.value;
325
- var devEngine = devEngines[platform];
326
- if (!devEngine) continue;
327
- devEngines[platform] = null;
328
- devEngineCreating[platform] = null;
329
- devEngine.close().catch(function () {});
330
- reloadNativeClients(platform);
331
- }
332
- } catch (err) {
333
- _didIteratorError = true;
334
- _iteratorError = err;
335
- } finally {
336
- try {
337
- if (!_iteratorNormalCompletion && _iterator.return != null) {
338
- _iterator.return();
339
- }
340
- } finally {
341
- if (_didIteratorError) {
342
- throw _iteratorError;
343
- }
344
- }
345
- }
346
- }, 500);
347
- });
348
245
  clientWSS.on("connection", function (socket) {
349
246
  socket.on("message", function (messageRaw) {
350
247
  var message = JSON.parse(messageRaw.toString());
@@ -366,9 +263,9 @@ function createReactNativeDevServerPlugin(options) {
366
263
  });
367
264
  });
368
265
  var getDevEngine = async function (platform) {
369
- if (!devEngines[platform]) {
266
+ while (!devEngines[platform]) {
370
267
  if (!devEngineCreating[platform]) {
371
- devEngineCreating[platform] = async function () {
268
+ var creating = async function () {
372
269
  try {
373
270
  console.info(`[vxrn] creating rolldown DevEngine for ${platform}...`);
374
271
  devEngines[platform] = await createNativeDevEngine({
@@ -380,6 +277,9 @@ function createReactNativeDevServerPlugin(options) {
380
277
  onHmrUpdate: function (update) {
381
278
  var msg = JSON.stringify(update);
382
279
  var target = "clientId" in update ? update.clientId : void 0;
280
+ if (update.type === "hmr:reload" && !target) {
281
+ pendingReloadPlatforms.add(platform);
282
+ }
383
283
  hmrWSS.clients.forEach(function (client) {
384
284
  var nativeClient = client;
385
285
  if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (!target || nativeClient.vxrnClientId === target)) {
@@ -389,11 +289,11 @@ function createReactNativeDevServerPlugin(options) {
389
289
  }
390
290
  });
391
291
  console.info(`[vxrn] rolldown DevEngine ready for ${platform}`);
392
- } catch (err) {
292
+ } finally {
393
293
  devEngineCreating[platform] = null;
394
- throw err;
395
294
  }
396
295
  }();
296
+ devEngineCreating[platform] = creating;
397
297
  }
398
298
  await devEngineCreating[platform];
399
299
  }
@@ -412,7 +312,11 @@ function createReactNativeDevServerPlugin(options) {
412
312
  }
413
313
  try {
414
314
  var bundle = await (await getDevEngine(platform)).getBundle();
315
+ res.once("finish", function () {
316
+ return pendingReloadPlatforms.delete(platform);
317
+ });
415
318
  res.writeHead(200, {
319
+ "Cache-Control": "no-store",
416
320
  "Content-Type": "text/javascript"
417
321
  });
418
322
  res.end(bundle.code);
@@ -1 +1 @@
1
- {"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","readFile","createDevMiddleware","createNativeDevEngine","getBoundPort","getNativeFramePlatform","isNativeBundleFrame","symbolicateNativeStack","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","getNativeAssetContentType","type","toLowerCase","createReactNativeDevServerPlugin","options","name","configureServer","server","_server_httpServer","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","validPlatforms","ios","android","devEngines","devEngineCreating","warnedProdBundleRequest","Set","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","req","res","next","method","rawUrl","url","rawPathname","split","startsWith","headers","platform","searchParams","get","engine","pathname","decodeURIComponent","unused","writeHead","end","asset","getAsset","contents","filePath","String","byteLength","error","Error","message","httpServer","on","socket","head","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","endpoint","_step","value","wss","handleUpgrade","ws","emit","v","_iterator","iterator","done","_ret","err","return","hmrUrl","clientId","destroy","Object","assign","vxrnClientId","vxrnPlatform","currentEngine","close","registerClient","toString","send","update","JSON","parse","stringify","removeClient","catch","reloadNativeClients","reload","clients","forEach","client","nativeClient","readyState","deletionTimer","addTimer","addedFiles","watcher","file","some","segment","add","clearTimeout","setTimeout","files","clear","devEngine","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop2","added","_step1","handleAddedFile","_iterator2","keys","messageRaw","_message_data_","level","data","info","warn","getDevEngine","port","serverUrl"],"sources":["../../src/plugins/reactNativeDevServer.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,eAAA,QAAuC;AAChD,SAASC,mBAAA,QAA2B;AACpC,SAAAC,wBAAA,EAAAC,2BAAA;AAAA,SACEC,GAAA;AAAA,SACAC,QAAA;AAAA,SACKC,mBAAA;AAEP,SAASC,qBAAW;AACpB,SAASC,YAAA,QAAgB;AACzB,SAASC,sBAAA,EAAAC,mBAA2B,EAAAC,sBAAA;AACpC,SAASC,YAAAC,IAAA,EAAAC,KAAA;EACT,IAAAA,KAAS,mBAAoBC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IAC7B,SAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA;EACE;IACA,OAAAA,IAAA,YAAAC,KAAA;EACA;AAAA;AAeK,SAASG,SAAAC,GAAA;EACd,uBAAa;;EAAe,OACrBA,GAAA,WAAAH,MAAA,oBAAAG,GAAA,CAAAC,WAAA,KAAAJ,MAAA,qBAAAG,GAAA;AACH;AAAO,SACJE,0BAAAC,IAAA;EACH,QAAAA,IAAO,CAAAC,WAAA;IACT,KAAK;MACL,OAAK;IACH,UAAO;MACT,OAAK;IACH,WAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT;MACE,OAAO;IACX;MACF;IAEO;MAKL,OAAO;EAAA;AACC;AAGJ,SAAAC,gCAA+BA,CAAAC,OAAA;EAC/B;IACAC,IAAA,mCAAqC;IACrCC,eAAMA,CAAAC,MAAY,EAAI;MACtB,IAAAC,kBAAmB;MACnB;QAAMC;MAAA,IAAAF,MAAA,CAAAG,MAAgE,CAAAH,MAAA;MAAA,IACpE;QAAAI;MAAK,IAAAJ,MAAA,CAAAG,MAAA;MAAA,IACLE,MAAA,GAAS,IAAAhC,eAAA;QACXiC,QAAA;MACA;MAIA,IAAAC,SAAM,OAAAlC,eAA8D;QACpEiC,QAAM;MAEN;MACA,IAAAE,UAAM,GAAAlC,mBAAyB;MAC/B,IAAAmC,cAAQ,GAAY;QAClBC,GAAA;QACAC,OAAA,EAAQ;MAAA;MACc,IACpBC,UAAA;MAA8B,IAChCC,iBAAA;MACF,IAACC,uBAAA,sBAAAC,GAAA;MAKD,IAAAC,uBAAuB,GAAO,CAC5B,mBAAmB,EAEnB,kBAAe,CACf;MACA,IAAAC,sBAAiB,aAAWf,IAAa,IAAArB,YAAY,CAAAmB,MAAA;MAErD;QAAAkB,UAAY;QAAIC;MAAY,IAAUxC,mBAAoB;QAE1DyC,aAAM,EAAAH,sBAA8B;QACpCI,MAAM,EAAAC,OAAS;QACfC,oBAAoB;UAEpBC,4BAAI;QACJ;MACE;MAAyCxB,MAC3C,CAAAyB,WAAQ,CAAAC,GAAA,iBAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA;QACN,IAAAF,GAAI,CAAAG,MAAA,KAAU,KAAO,IAAAH,GAAA,CAAAG,MAAA,KAAgB,eAAcD,IAAA;QACnD,IAAAE,MAAQ,GAAAJ,GAAA,CAAAK,GAAA;QACR,IAAAC,WAAA,GAAAF,MAAA,CAAAG,KAAA;QACF,KAAAD,WAAA,CAAAE,UAAA,qBAAAN,IAAA;QAEA,IAAAG,GAAM,OAAQvD,GAAA,CAAAsD,MAAO,YAASJ,GAAA,CAAUS,OAAI,CAAAlC,IAAA,eAAuB;QACnE,IAAImC,QAAQ,GAAA5B,cAAA,CAAAuB,GAAA,CAAAM,YAAA,CAAAC,GAAA;QACV,IAAAC,MAAI,GAAAH,QAAe,GAAEzB,UAAA,CAAAyB,QAAgB,SAAa,CAAC;QACnD,KAAAG,MAAQ,SAAAX,IAAA;QACR,IAAAY,QAAA;QACF;UAEAA,QAAI,GAAAC,kBAAA,CAAAT,WAAA;QACF,SAAMU,MAAA;UACNf,GAAA,CAAIgB,SAAA,CAAU,KAAK;YACjB;UAAiB,EACjB;UAA4ChB,GAC5C,CAAAiB,GAAA,4BAAgB;UAClB;QACA;QACF,IAAAC,KAAS,GAAAN,MAAO,CAAAO,QAAA,CAAAN,QAAA,EAAAT,GAAA,CAAAM,YAAA,CAAAC,GAAA;QACd,KAAAO,KAAQ;UAAAlB,GACN,CAAAgB,SAAA;YACF;UACA;UACAhB,GAAA,CAAIiB,GAAA,CAAI;UACV;QACD;QAED;UAGA,IAAOG,QAAA,GAAY,MAAGtE,QAAW,CAACoE,KAAK,CAAAG,QAAQ;UAC7CrB,GAAA,CAAMgB,SAAM,CAAI;YAGhB,eAAW,YAAY;YACrB,gBAAQ,EAAWM,MAAA,CAAQF,QAAG,CAAAG,UAAA;YAC5B,cAAY,EAAA1D,yBAA2B,CAAAqD,KAAA,CAAApD,IAAA;UACvC;UACEkC,GAAA,CAAAiB,GAAA,CAAIlB,GAAA,CAAAG,MAAK,WAAc,GAAI,KAAG,IAAAkB,QAAA;QAAA,SAC/BI,KAAA;UACD9B,OAAA,CAAA8B,KAAA,wCAAAX,QAAA,KAAAxD,WAAA,CAAAmE,KAAA,EAAAC,KAAA,IAAAD,KAAA,CAAAE,OAAA,GAAAJ,MAAA,CAAAE,KAAA;UACFxB,GAAA,CAAAgB,SAAA;YACF;UAGA,EAAI;UACFhB,GAAA,CAAAiB,GAAM,8BAAsB,CAAU;QACtC;MACA;MACA7C,MAAA,CAAAyB,WAAK,CAAAC,GAAa,CAAAR,UAAU;MAC1B,CAAAjB,kBAAO,GAAQD,MAAA,CAAAuD,UAAA,cAAAtD,kBAAA,uBAAAA,kBAAA,CAAAuD,EAAA,sBAAA7B,GAAA,EAAA8B,MAAA,EAAAC,IAAA;QACf,IAAA1B,GAAA,GAAAL,GAAA,CAAAK,GAAA;QAAA,IACF2B,yBAAA;UAAAC,iBAAA;UAAAC,cAAA;QACA;UACE,IAAAC,KAAO,YAAAA,CAAA,EAAW;YAAA,IAChBC,QAAA,GAAAC,KAAc,CAAAC,KAAA;YAAA,IACdjC,GAAA,CAAAG,UAAc,CAAA4B,QAAA;cACf,IAAAG,GAAA,GAAA/C,kBAAA,CAAA4C,QAAA;cACDG,GAAA,CAAAC,aAAY,CAAAxC,GAAA,EAAA8B,MAAkB,EAAGC,IAAA,YAAAU,EAAA;gBAClCF,GAAA,CAAAG,IAAA,eAAAD,EAAA,EAAAzC,GAAA;cACD;cACF;gBAGI2C,CAAA,OAAQ;cACV;YACE;UACF,CAAC;UACD,SAAAC,SAAA,GAAAvD,uBAAA,CAAA5B,MAAA,CAAAoF,QAAA,KAAAR,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAO,SAAA,CAAA1C,IAAA,IAAA4C,IAAA,GAAAd,yBAAA;YACF,IAAAe,IAAA,GAAAZ,KAAA;YAGI,IAAAxE,QAAQ,CAAAoF,IAAA,MAAa,iBAAAA,IAAA,CAAAJ,CAAA;UACvB;QACE,SAAAK,GAAA,EAAU;UACZf,iBAAC;UACHC,cAAA,GAAAc,GAAA;QACD;UAED,IAAO;YACL,IAAM,CAAAhB,yBAA2B,IAAAY,SAAO,CAAAK,MAAY;cAC/CL,SAAA,CAAAK,MAAe;YAClB;UACA;YACF,IAAAhB,iBAAA;cAEI,MAAAC,cAAA;YACF;UACF;QACE;QACA,IAAA7B,GAAA,CAAAG,UAAa,OAAM;UACnB,IAAA0C,MAAA,OAAApG,GAAA,CAAAuD,GAAA,YAAAL,GAAA,CAAAS,OAAA,CAAAlC,IAAA;UACF,IAAAmC,QAAA,GAAA5B,cAAA,CAAAoE,MAAA,CAAAvC,YAAA,CAAAC,GAAA;UACA,IAAAuC,QAAA,GAAAD,MAAA,CAAAvC,YAAyB,CAAAC,GAAA;UAEzB,KAAOF,QAAG,KAAAyC,QAAY;YACpBrB,MAAM,CAAAsB,OAAQ;YACd;UACE;UACA1E,MAAA,CAAA8D,aAAA,CAAAxC,GAAA,EAAA8B,MAAA,EAAAC,IAAA,YAAAU,EAAA;YACFY,MAAA,CAAAC,MAAA,CAAAb,EAAA;cAEIc,YAAA,EAAAJ,QAAA;cACAK,YAAA,EAAA9C;YACF;YACFhC,MAAQ,CAAAgE,IAAA,eAAAD,EAAA,EAAAzC,GAAA;UACN;UACF;QACA;QAIE,IAAAK,GAAA,KAAO,UAAU,IAAAA,GAAA,CAAAG,UAAkB,YAAa,CAAC,EAAC;UACpD3B,UAAA,CAAA2D,aAAA,CAAAxC,GAAA,EAAA8B,MAAA,EAAAC,IAAA,YAAAU,EAAA;YACD5D,UAAA,CAAA6D,IAAA,eAAAD,EAAA,EAAAzC,GAAA;UAED;UACE;QACA;QACE,IAAAK,GAAA,KAAQ,WAAM;UAChBzB,SAAC,CAAA4D,aAAA,CAAAxC,GAAA,EAAA8B,MAAA,EAAAC,IAAA,YAAAU,EAAA;YACF7D,SAAA,CAAA8D,IAAA,eAAAD,EAAA,EAAAzC,GAAA;UAED;QACE;MAAkC,EACpC;MACFtB,MAAC,CAAAmD,EAAA,+BAAAC,MAAA;QAED,IAAM2B,aAAA,GAAAxE,UAAuB,CAAA6C,MAAA,CAAA0B,YAAqB;QAChD,KAAAC,aAAe,EAAK;UACpB3B,MAAO,CAAA4B,KAAA,CAAQ,qCAAoB;UACjC;QACA;QACE;UACF,MAAAD,aAAA,CAAA5C,MAAA,CAAA8C,cAAA,CAAA7B,MAAA,CAAAyB,YAAA;QACF,CAAC,QAAA9B,KAAA;UACH9B,OAAA,CAAA8B,KAAA,2CAAAA,KAAA;UAYIK,MAAA,CAAA4B,KAAA;UACA;QACJ;QACA9G,wBAA0B;QACxBkF,MAAI,CAAAD,EAAK,UAAS,EAAE,UAAMF,OAAA,EAAY;UACtC,IAAAW,KAAW,GAAAX,OAAQ,CAAAiC,QAAA;UACnB,IAAAtB,KAAA,KAAa,MAAQ;YACrBR,MAAA,CAAW+B,IAAA,OAAW;YACpB;UACA;UACA,IAAAC,MAAA;UACE;YACAA,MAAK,GAAAC,IAAA,CAAAC,KAAW,CAAA1B,KAAA;UAChB,SAAAtB,MAAW;YACT;UACE;UAA4E,IAC9E8C,MAAC,CAAA/F,IAAA;YACH+D,MAAA,CAAA+B,IAAA,CAAAE,IAAA,CAAAE,SAAA;cACFlG,IAAA;YACC,CAAE;UACN;QACD;QAIE+D,MAAI,CAAAD,EAAK,QAAM,EAAG,YAAQ;UAE1BhF,2BAA0B;UAC1B4G,aAAA,CAAgB5C,MAAA,CAAAqD,YAAiB,CAAApC,MAAA,CAAAyB,YAAA,EAAAY,KAAA,WAAA1C,KAAA;YAC/B9B,OAAA,CAAA8B,KAAW,uCAAqC,EAAAA,KAAA;UAC9C;QACA;QACAK,MAAA,CAAAD,EAAA,QAAW,YAAYJ,KAAA;UACvB9B,OAAA,CAAA8B,KAAA,cAAkB,EAAQA,KAAI;QAC9B;MAA8B;MAC9B,IAAA2C,mBAAA,GAAoB,SAAAA,CAAQ1D,QAAA;QAAA,IAC9B2D,MAAA,GAAAN,IAAA,CAAAE,SAAA;UACFlG,IAAM;QACP;QAEDW,MAAA,CAAA4F,OAAa,CAAAC,OAAA,WAAeC,MAAW;UACrC,IAAAC,YAAU,GAAWD,MAAC;UACpB,IAAAC,YAAgB,CAAAC,UAAW,UAAAD,YAAqB,CAAAjB,YAAA,KAAA9C,QAAA;YAEhD+D,YAAQ,CAAAZ,IAAQ,CAAAQ,MAAM;UAAA;QAGlB;MAEmB;MACf,IAAAM,aAEF;MACA,IAAAC,QAAA;MAAA,IAAAC,UACF,sBAAAzF,GAAA;MAEAf,MAAA,CAAAyG,OAAA,CAAAjD,EAAQ,kBAAAkD,IAAA;QAAA,IAAAA,IACN,CAAAxE,KAAA,MAAOyE,IAAA,WAAQC,OAAU;UAAmC,OAC5DA,OAAG,CAAAzE,UAAQ;QAAA;QAEbqE,UAAA,CAAAK,GAAA,CAAAH,IAAA;QAAAI,YACF,CAAAP,QAAA;QAAAA,QAEA,GAAAQ,UAAS;UACP,IAAAC,KAAA,GAAQ,CACV,GAAAR,UAAA,CACF;UACDA,UAAA,CAAAS,KAAA;UACF,IAAAtD,yBAAA;YAAAC,iBAAA;YAAAC,cAAA;UAED,IAAM;YACA,IAACC,KAAA,GAAW,SAAAA,CAAA,EAAW;cAErB,IAACzB,QAAA,GAAA2B,KAAkB,CAAAC,KAAA;cACrB,IAAAiD,SAAA,GAAkBtG,UAAQ,CAAAyB,QAAK;cAC7B,IAAI,CAAA6E,SAAA;cACF,IAAAC,0BAAa;gBAAAC,kBAA0C,QAAQ;gBAAAC,eAAK;cACpE;gBAAmD,IACjDC,MAAA,YAAAA,CAAA;kBACA,IAAAC,KAAM,GAAAC,MAAA,CAAavD,KAAA;kBACnBiD,SAAM,CAAAO,eAAgB,CAAAF,KAAA,EAAWzB,KAAA,WAAO1C,KAAA;oBACxC9B,OAAA,CAAA8B,KAAA,0BAAAmE,KAAA,QAAAlF,QAAA,WAAAe,KAAA;kBACA;gBAAgH;gBAE9G,SAAAsE,UAAY,GAAKV,KAAA,CAAA5H,MAAU,CAAAoF,QAAM,KAAAgD,MAAA,IAAAL,0BAAA,IAAAK,MAAA,GAAAE,UAAA,CAAA7F,IAAA,IAAA4C,IAAA,GAAA0C,0BAAA,SAAAG,MAAA;cAGjC,SAAA3C,GAAM;gBACNyC,kBAAO,GAAQ;gBACbC,eAAM,GAAA1C,GAAA;cACN;gBAKE;kBAAe,IACjB,CAAAwC,0BAAA,IAAAO,UAAA,CAAA9C,MAAA;oBACF8C,UAAC,CAAA9C,MAAA;kBACH;gBACF,CAAC;kBACD,IAAAwC,kBAAa;oBACf,MAASC,eAAK;kBAEZ;gBACA;cACF;YACF;YACF,SAAA9C,SAAA,GAAAS,MAAA,CAAA2C,IAAA,CAAA/G,UAAA,EAAAxB,MAAA,CAAAoF,QAAA,KAAAR,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAO,SAAA,CAAA1C,IAAA,IAAA4C,IAAA,GAAAd,yBAAA,SAAAG,KAAA;UACA,SAAMa,GAAA;YACRf,iBAAA;YACAC,cAAkB,GAAAc,GAAA;UACpB;YAGM;cACE,KAAAhB,yBAAwB,IAAUY,SAAI,CAAAK,MAAY,IAAE;gBACpDL,SAAA,CAAAK,MAAiB;cACjB;YAEF,CAAC;cACH,IAAAhB,iBAAA;gBACF,MAAAC,cAAA;cAOE;YAGA;UACA;QAAQ,KACN;MAAkB;MACpB7D,MACF,CAAAyG,OAAA,CAAAjD,EAAA,qBAAAkD,IAAA;QAEA,IAAIA,IAAA,CAAAxE,KAAA,MAAAyE,IAAA,WAAAC,OAAA;UACF,OAAMA,OAAA,CAASzE,UAAO,IAAM;QAE5B;QACA2E,YAAQ,CAAAR,aAAW;QACrBA,aAAS,GAAKS,UAAA;UACZ,IAAApD,yBAAc;YAAAC,iBAAqC;YAAAC,cAAA;UACnD;YACA,SAAQU,SAAA,GAAAS,MAAA,CAAA2C,IAAA,CAAA/G,UAAA,EAAAxB,MAAA,CAAAoF,QAAA,KAAAR,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAO,SAAA,CAAA1C,IAAA,IAAA4C,IAAA,GAAAd,yBAAA;cACN,IAAAtB,QAAA,GAAA2B,KAAA,CAAAC,KAAA;cAAA,IAAAiD,SAAA,GAAAtG,UAAA,CAAAyB,QAAA;cAAA,KAAA6E,SAAA;cACFtG,UAAA,CAAAyB,QAAA;cACIxB,iBAAiB,CAAAwB,QAAA,QAAgB;cACjC6E,SAAI,CAAA7B,KAAA,GAAAS,KAAe,aAAY,CACrC;cACFC,mBAAA,CAAA1D,QAAA;YAGA;UACE,EAAI,OAAIsC,GAAK;YACXf,iBAAe,GAAK,IAAK;YAC3BC,cAAO,GAAAc,GAAA;UACL,UAAK;YACP;cACD,KAAAhB,yBAAA,IAAAY,SAAA,CAAAK,MAAA;gBAIML,SAAY,CAAAK,MAAI;cACjB;YACF,UAAM;cACN,IAAAhB,iBAAiB,EAAS;gBACpB,MAAAC,cAA4C;cAChD;YACF;UACA;QACA,MAAI,CAAC;MACH;MAA8DtD,SAChE,CAAAiD,EAAA,yBAAAC,MAAA;QAEAA,MAAA,CAAAD,EAAM,sBAAoBoE,UAAM;UAChC,IAAItE,OAAC,GAAAoC,IAAa,CAAAC,KAAA,CAAAiC,UAAA,CAAArC,QAAA;UAGhB,QAAIjC,OAAA,CAAU5D,IAAA;YACd,KAAI,YAAS;cAAA;gBACb,IAAAmI,cAAA;gBACF,IAAAvE,OAAA,CAAAwE,KAAA,iBAAAD,cAAA,GAAAvE,OAAA,CAAAyE,IAAA,iBAAAF,cAAA,uBAAAA,cAAA,CAAA1F,UAAA;kBAEM;gBACN;gBACIb,OAAC,CAAA0G,IAAU,aAAA1E,OAAA,CAAAwE,KAAA,wBAAAxE,OAAA,CAAAwE,KAAA,UAAAxE,OAAA,CAAAyE,IAAA;gBACb;cAAU;YAEV;cAAA;gBACFzG,OAAA,CAAA2G,IAAA,kCAAA3E,OAAA;cAEA;UACA;QACA;MAAiE,EACnE;MACE,IAAA4E,YAAQ,GAAM,eAAAA,CAAA7F,QAAA;QACd,KAAAzB,UAAI,CAAUyB,QAAO;UACrB,IAAI,CAAAxB,iBAAA,CAAAwB,QAAA;YACFxB,iBAAe,CAAAwB,QAAA;cACb;gBACDf,OAAA,CAAA0G,IAAA,2CAAA3F,QAAA;gBACHzB,UAAA,CAAAyB,QAAA,UAAAzD,qBAAA;kBACFwB,IAAA;kBACD+H,IAAA,EAAAtJ,YAAA,CAAAmB,MAAA;kBACHE,IAAA,SAAAA,IAAA,gBAAAA,IAAA;kBACFmC,QAAA;kBACF+F,SAAA,mBAAAlI,IAAA,iBAAAA,IAAA,iBAAAA,IAAA,kBAAArB,YAAA,CAAAmB,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["WebSocketServer","createMessageSocket","addConnectedNativeClient","removeConnectedNativeClient","URL","readFile","createDevMiddleware","createNativeDevEngine","getBoundPort","getNativeFramePlatform","isNativeBundleFrame","symbolicateNativeStack","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","getNativeAssetContentType","type","toLowerCase","createReactNativeDevServerPlugin","options","name","configureServer","server","_server_httpServer","host","config","root","hmrWSS","noServer","clientWSS","messageWSS","validPlatforms","ios","android","devEngines","devEngineCreating","warnedProdBundleRequest","Set","pendingReloadPlatforms","devToolsSocketEndpoints","reactNativeDevToolsUrl","middleware","websocketEndpoints","serverBaseUrl","logger","console","unstable_experiments","enableStandaloneFuseboxShell","middlewares","use","req","res","next","method","rawUrl","url","rawPathname","split","startsWith","headers","platform","searchParams","get","engine","pathname","decodeURIComponent","unused","writeHead","end","asset","getAsset","contents","filePath","String","byteLength","error","Error","message","httpServer","on","socket","head","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","endpoint","_step","value","wss","handleUpgrade","ws","emit","v","_iterator","iterator","done","_ret","err","return","hmrUrl","clientId","destroy","Object","assign","vxrnClientId","vxrnPlatform","currentEngine","close","registerClient","has","send","JSON","stringify","toString","update","parse","removeClient","catch","messageRaw","_message_data_","level","data","info","warn","getDevEngine","creating","port","serverUrl","onHmrUpdate","msg","target","add","clients","forEach","client","nativeClient","readyState","handleRNBundle","platformString","bundle","getBundle","once","delete","code","stack","_req_url","endsWith"],"sources":["../../src/plugins/reactNativeDevServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { basename, dirname, extname, join, relative, resolve } from "node:path";
3
- import { copyFileSync, mkdirSync, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
3
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, statSync, watch, writeFileSync } from "node:fs";
4
4
  import { pathToFileURL } from "node:url";
5
5
  import micromatch from "micromatch";
6
6
  import { loadEnv, normalizePath } from "vite";
@@ -252,7 +252,9 @@ async function createNativeDevEngine(options) {
252
252
  let bundlePromise = null;
253
253
  const resolvedHost = host === "0.0.0.0" ? "localhost" : host;
254
254
  const virtualEntry = nativeVirtualEntryPlugin(root, {
255
- dev: true
255
+ dev: true,
256
+ platform,
257
+ dynamicRoutes: true
256
258
  });
257
259
  let engineWork = Promise.resolve();
258
260
  const queueEngineWork = work => {
@@ -298,30 +300,18 @@ try {
298
300
  };
299
301
  let outputProcessed = Promise.resolve();
300
302
  let engine;
301
- const rebuildIfNewRoute = async files => {
303
+ let routeWatcher;
304
+ const rebuildIfRouteGraphChanged = () => queueEngineWork(async () => {
302
305
  const {
303
- routeRoot,
304
306
  files: knownRoutes,
305
- isRouteFile
307
+ scanFiles,
308
+ updateFiles
306
309
  } = virtualEntry.routes;
307
- const routeRootPrefix = `${normalizePath(routeRoot)}/`;
308
- if (!files.some(file => {
309
- const normalized = normalizePath(file);
310
- if (isRouteFile(normalized)) return !knownRoutes.has(normalized);
311
- return normalized.startsWith(routeRootPrefix) && statSync(file, {
312
- throwIfNoEntry: false
313
- })?.isDirectory() === true;
314
- })) return false;
315
- await queueEngineWork(async () => {
316
- engine.triggerFullBuild();
317
- await engine.ensureLatestBuildOutput();
318
- await outputProcessed;
319
- });
320
- onHmrUpdate?.({
321
- type: "hmr:reload"
322
- });
310
+ const currentRoutes = scanFiles();
311
+ if (!(currentRoutes.size !== knownRoutes.size || [...currentRoutes].some(route => !knownRoutes.has(route)))) return false;
312
+ updateFiles(currentRoutes);
323
313
  return true;
324
- };
314
+ });
325
315
  engine = await dev(inputOptions, outputOptions, {
326
316
  onOutput: async result => {
327
317
  let finishOutput = () => {};
@@ -342,7 +332,7 @@ try {
342
332
  });
343
333
  return;
344
334
  }
345
- if (await rebuildIfNewRoute(result.changedFiles)) return;
335
+ if (await rebuildIfRouteGraphChanged()) return;
346
336
  for (const {
347
337
  clientId,
348
338
  update
@@ -398,6 +388,29 @@ try {
398
388
  }
399
389
  }
400
390
  await engine.run();
391
+ let routeWatchTarget = virtualEntry.routes.routeRoot;
392
+ while (!statSync(routeWatchTarget, {
393
+ throwIfNoEntry: false
394
+ })?.isDirectory()) {
395
+ const parent = dirname(routeWatchTarget);
396
+ if (parent === routeWatchTarget) break;
397
+ routeWatchTarget = parent;
398
+ }
399
+ const normalizedRouteRoot = normalizePath(virtualEntry.routes.routeRoot);
400
+ routeWatcher = watch(routeWatchTarget, {
401
+ recursive: true
402
+ }, (_eventType, file) => {
403
+ if (file === null) return;
404
+ const changed = normalizePath(resolve(routeWatchTarget, file.toString()));
405
+ if (changed !== normalizedRouteRoot && !changed.startsWith(`${normalizedRouteRoot}/`)) return;
406
+ rebuildIfRouteGraphChanged().catch(error => {
407
+ console.error(`[vxrn] rebuilding the native route map failed`, error);
408
+ });
409
+ });
410
+ routeWatcher.on("error", error => {
411
+ console.error(`[vxrn] watching the native route map failed`, error);
412
+ });
413
+ await rebuildIfRouteGraphChanged();
401
414
  return {
402
415
  engine,
403
416
  async getBundle() {
@@ -432,10 +445,8 @@ try {
432
445
  return assetRegistry.resolve(pathname, hash);
433
446
  },
434
447
  async close() {
448
+ routeWatcher?.close();
435
449
  await engine.close();
436
- },
437
- async handleAddedFile(file) {
438
- await rebuildIfNewRoute([file]);
439
450
  }
440
451
  };
441
452
  }
@@ -477,7 +488,8 @@ async function buildNativeBundle(options) {
477
488
  ".js": "jsx"
478
489
  },
479
490
  plugins: [...(entryFile ? [] : [nativeVirtualEntryPlugin(root, {
480
- dev
491
+ dev,
492
+ platform
481
493
  }).plugin]), ...getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest, void 0, sourcemap, userPlugins), nativeBundlePostProcessPlugin()],
482
494
  output: getNativeOutputOptions(prelude, sourcemap, minify)
483
495
  })).output.find(o => o.type === "chunk" && o.isEntry);
@@ -491,6 +503,7 @@ async function buildNativeBundle(options) {
491
503
  const VIRTUAL_NATIVE_ENTRY = "virtual:native-entry";
492
504
  function nativeVirtualEntryPlugin(root, opts) {
493
505
  const isDev = opts?.dev !== false;
506
+ const useDynamicRouteRegistry = opts.dynamicRoutes === true;
494
507
  const resolvedId = normalizePath(resolve(root, "__virtual-native-entry.tsx"));
495
508
  const entryConfig = globalThis.__vxrnNativeEntryConfig || {};
496
509
  const routerRoot = entryConfig.routerRoot || "app";
@@ -505,8 +518,7 @@ function nativeVirtualEntryPlugin(root, opts) {
505
518
  return `import ${JSON.stringify(resolved)};`;
506
519
  })();
507
520
  const routeGlobs = [`./${routerRoot}/**/*.tsx`, `./${routerRoot}/**/*.ts`, `!./${routerRoot}/**/*+api.*`, `!./${routerRoot}/**/*.test.*`, `!./${routerRoot}/**/*.d.ts`, `!./${routerRoot}/**/*.server.*`, `!./${routerRoot}/**/_middleware.*`, `!./${routerRoot}/**/*.web.*`, ...(entryConfig.ignoredRouteFiles || []).map(pattern => `!./${routerRoot}/${pattern}`)];
508
- const entryCode = `
509
- ${isDev ? `
521
+ const refreshSetup = isDev ? `
510
522
  // react-refresh/runtime MUST initialize before React loads
511
523
  import RefreshRuntime from 'react-refresh/runtime';
512
524
  RefreshRuntime.injectIntoGlobalHook(globalThis);
@@ -515,22 +527,25 @@ globalThis.$RefreshReg$ = function(type, id) {
515
527
  RefreshRuntime.register(type, id);
516
528
  };
517
529
  globalThis.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
518
- ` : ""}
530
+ ` : "";
531
+ const entryCode = () => `
532
+ ${refreshSetup}
519
533
  import * as ReactNativeInitializeCore from 'react-native/Libraries/Core/InitializeCore';
520
534
  import NativeWebSocket from 'react-native/Libraries/WebSocket/WebSocket';
535
+ import DevSettings from 'react-native/Libraries/Utilities/DevSettings';
521
536
  ${setupFileImport}
537
+ ${routeImports}
522
538
  import { createApp } from 'one';
523
539
 
524
540
  void ReactNativeInitializeCore;
525
541
  globalThis.WebSocket = NativeWebSocket;
542
+ globalThis.__VXRN_RELOAD_NATIVE_DEV_BUNDLE__ = function(reason) {
543
+ DevSettings.reload(reason);
544
+ };
526
545
 
527
- var _routes = import.meta.glob(${JSON.stringify(routeGlobs)}, { exhaustive: true });
528
- // fix route keys: One expects '/${routerRoot}/...' prefix but import.meta.glob returns './${routerRoot}/...'
529
- var routes = {};
530
- Object.keys(_routes).forEach(function(key) {
531
- var normalizedKey = key.replace(/^\\.\\//, '');
532
- routes['/' + normalizedKey] = _routes[key];
533
- });
546
+ // React Native reloads a dev bundle in the existing JS runtime. Advance One's
547
+ // route-cache version so a full reload cannot reuse the previous context.
548
+ globalThis.__vxrnVersion = (globalThis.__vxrnVersion || 0) + 1;
534
549
 
535
550
  createApp({
536
551
  routes: routes,
@@ -538,6 +553,8 @@ createApp({
538
553
  flags: ${JSON.stringify(flags)},
539
554
  linking: ${JSON.stringify(linking)},
540
555
  });
556
+
557
+ ${routeHmr}
541
558
  `;
542
559
  const routeRoot = resolve(root, routerRoot);
543
560
  const stripDot = pattern => pattern.replace(/^\.\//, "");
@@ -547,11 +564,61 @@ createApp({
547
564
  const relativeToRoot = normalizePath(relative(root, file));
548
565
  return micromatch.isMatch(relativeToRoot, includeGlobs) && !micromatch.isMatch(relativeToRoot, excludeGlobs);
549
566
  };
567
+ const scanFiles = () => {
568
+ const files = /* @__PURE__ */new Set();
569
+ const walkRouteRoot = dir => {
570
+ for (const entry of readdirSync(dir, {
571
+ withFileTypes: true
572
+ })) {
573
+ const child = resolve(dir, entry.name);
574
+ if (entry.isDirectory()) walkRouteRoot(child);else if (isRouteFile(child)) files.add(normalizePath(child));
575
+ }
576
+ };
577
+ if (statSync(routeRoot, {
578
+ throwIfNoEntry: false
579
+ })?.isDirectory()) walkRouteRoot(routeRoot);
580
+ return files;
581
+ };
582
+ const registrySpecifier = `./node_modules/.vxrn/native-routes-${opts.platform}.mjs`;
583
+ const registryPath = resolve(root, registrySpecifier);
550
584
  const routes = {
551
585
  routeRoot,
552
586
  files: /* @__PURE__ */new Set(),
553
- isRouteFile
587
+ isRouteFile,
588
+ scanFiles,
589
+ updateFiles(files) {
590
+ routes.files = files;
591
+ if (!useDynamicRouteRegistry) return;
592
+ const source = `export const routes = {
593
+ ${[...files].sort().map(file => {
594
+ const routeKey = `/${normalizePath(relative(root, file))}`;
595
+ let importPath = normalizePath(relative(dirname(registryPath), file));
596
+ if (!importPath.startsWith(".")) importPath = `./${importPath}`;
597
+ return ` ${JSON.stringify(routeKey)}: () => import(${JSON.stringify(importPath)})`;
598
+ }).join(",\n")}
599
+ }
600
+ `;
601
+ mkdirSync(dirname(registryPath), {
602
+ recursive: true
603
+ });
604
+ if (!existsSync(registryPath) || readFileSync(registryPath, "utf8") !== source) writeFileSync(registryPath, source);
605
+ }
554
606
  };
607
+ routes.updateFiles(routes.scanFiles());
608
+ const routeImports = useDynamicRouteRegistry ? `import { routes } from ${JSON.stringify(registrySpecifier)};` : `var _routes = import.meta.glob(${JSON.stringify(routeGlobs)}, { exhaustive: true });
609
+ // fix route keys: One expects '/${routerRoot}/...' prefix but import.meta.glob returns './${routerRoot}/...'
610
+ var routes = {};
611
+ Object.keys(_routes).forEach(function(key) {
612
+ var normalizedKey = key.replace(/^\\.\\//, '');
613
+ routes['/' + normalizedKey] = _routes[key];
614
+ });`;
615
+ const routeHmr = useDynamicRouteRegistry ? `if (import.meta.hot) {
616
+ import.meta.hot.accept(${JSON.stringify(registrySpecifier)}, function(next) {
617
+ if (globalThis.__VXRN_UPDATE_NATIVE_ROUTES__) {
618
+ globalThis.__VXRN_UPDATE_NATIVE_ROUTES__(next.routes);
619
+ }
620
+ });
621
+ }` : "";
555
622
  return {
556
623
  routes,
557
624
  plugin: {
@@ -561,20 +628,7 @@ createApp({
561
628
  },
562
629
  load(id) {
563
630
  if (id !== resolvedId) return;
564
- routes.files.clear();
565
- const walkRouteRoot = dir => {
566
- this.addWatchFile(dir);
567
- for (const entry of readdirSync(dir, {
568
- withFileTypes: true
569
- })) {
570
- const child = resolve(dir, entry.name);
571
- if (entry.isDirectory()) walkRouteRoot(child);else if (isRouteFile(child)) routes.files.add(normalizePath(child));
572
- }
573
- };
574
- if (statSync(routeRoot, {
575
- throwIfNoEntry: false
576
- })?.isDirectory()) walkRouteRoot(routeRoot);else this.addWatchFile(dirname(routeRoot));
577
- return entryCode;
631
+ return entryCode();
578
632
  }
579
633
  }
580
634
  };
@@ -1256,11 +1310,13 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
1256
1310
  }
1257
1311
  }
1258
1312
 
1259
- reload() {
1260
- var proxy = globalThis.__turboModuleProxy
1261
- ? globalThis.__turboModuleProxy('DevSettings')
1262
- : globalThis.nativeModuleProxy && globalThis.nativeModuleProxy.DevSettings;
1263
- if (proxy && proxy.reload) proxy.reload();
1313
+ reload(reason) {
1314
+ var reloadNativeBundle = globalThis.__VXRN_RELOAD_NATIVE_DEV_BUNDLE__;
1315
+ if (typeof reloadNativeBundle === 'function') {
1316
+ reloadNativeBundle(reason);
1317
+ return;
1318
+ }
1319
+ console.error('[vxrn HMR]: DevSettings.reload is unavailable');
1264
1320
  }
1265
1321
 
1266
1322
  setup(socket) {
@@ -1282,10 +1338,10 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
1282
1338
  if (message.type === 'hmr:update') {
1283
1339
  // a patch that cannot be applied in place is the reload signal
1284
1340
  if (!runtime.applyHmrUpdate(message.code, message.changedIds, message.seq)) {
1285
- runtime.reload();
1341
+ runtime.reload('native HMR update could not be applied');
1286
1342
  }
1287
1343
  } else if (message.type === 'hmr:reload') {
1288
- runtime.reload();
1344
+ runtime.reload('native route map changed');
1289
1345
  }
1290
1346
  } catch (error) {
1291
1347
  console.error('[vxrn HMR]: failed to apply update', error);