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
|
@@ -10,6 +10,7 @@ import { basename, dirname, extname, join, relative, resolve } from 'node:path'
|
|
|
10
10
|
import { copyFileSync, existsSync, mkdirSync, readFileSync } from 'node:fs'
|
|
11
11
|
import { pathToFileURL } from 'node:url'
|
|
12
12
|
import type { InputOptions, OutputOptions, Plugin, RolldownOutput } from 'rolldown'
|
|
13
|
+
import type { DevEngine } from 'rolldown/experimental'
|
|
13
14
|
import { normalizePath } from 'vite'
|
|
14
15
|
import { DEFAULT_ASSET_EXTS } from '../constants/defaults'
|
|
15
16
|
import { getNativePrelude } from '../runtime/native-prelude'
|
|
@@ -47,11 +48,22 @@ interface NativeDevEngineOptions {
|
|
|
47
48
|
platform: 'ios' | 'android'
|
|
48
49
|
serverUrl?: string
|
|
49
50
|
plugins?: Plugin[]
|
|
50
|
-
onHmrUpdate?: (update:
|
|
51
|
+
onHmrUpdate?: (update: NativeHmrUpdate) => void
|
|
51
52
|
}
|
|
52
53
|
|
|
54
|
+
export type NativeHmrUpdate =
|
|
55
|
+
| {
|
|
56
|
+
type: 'hmr:update'
|
|
57
|
+
clientId: string
|
|
58
|
+
code: string
|
|
59
|
+
changedIds: string[]
|
|
60
|
+
seq: number
|
|
61
|
+
}
|
|
62
|
+
| { type: 'hmr:reload'; clientId: string }
|
|
63
|
+
| { type: 'hmr:error' }
|
|
64
|
+
|
|
53
65
|
interface NativeDevEngineResult {
|
|
54
|
-
engine:
|
|
66
|
+
engine: DevEngine
|
|
55
67
|
getBundle: () => Promise<{ code: string }>
|
|
56
68
|
close: () => Promise<void>
|
|
57
69
|
}
|
|
@@ -227,7 +239,7 @@ function getNativePlugins(
|
|
|
227
239
|
// flowStripPlugin so react-native's Flow `.js` specs reach codegen with their
|
|
228
240
|
// type argument intact. stripping Flow first would erase it (which is why the
|
|
229
241
|
// codegen "didn't run for <Component>" warning fired).
|
|
230
|
-
vxrnCompilerPlugin(platform, dev),
|
|
242
|
+
vxrnCompilerPlugin(platform, dev, root),
|
|
231
243
|
// strip Flow from any react-native / @react-native `.js` the compiler didn't
|
|
232
244
|
// handle, the guaranteed safety net before rolldown's oxc core parse (which
|
|
233
245
|
// can't parse Flow). now downstream of the compiler, so codegen sees the types.
|
|
@@ -450,18 +462,18 @@ export async function createNativeDevEngine(
|
|
|
450
462
|
outro: `
|
|
451
463
|
try {
|
|
452
464
|
var __WS = (init_WebSocket(), __toCommonJS(WebSocket_exports)).default;
|
|
453
|
-
var __hmrUrl = 'ws://${resolvedHost}:${port}/hot';
|
|
465
|
+
var __hmrUrl = 'ws://${resolvedHost}:${port}/hot?platform=${platform}&clientId=' + encodeURIComponent(__rolldown_runtime__.clientId);
|
|
454
466
|
var __hmrWS = new __WS(__hmrUrl);
|
|
455
467
|
__hmrWS.onmessage = function(event) {
|
|
456
468
|
try {
|
|
457
469
|
var msg = JSON.parse(event.data);
|
|
458
470
|
var g = typeof global !== 'undefined' ? global : globalThis;
|
|
459
471
|
if (msg.type === 'hmr:update' && msg.code) {
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
}
|
|
472
|
+
var applied = __rolldown_runtime__.applyHmrUpdate(msg.code, msg.changedIds, msg.seq);
|
|
473
|
+
if (!applied) {
|
|
474
|
+
var updateSettings = g.__turboModuleProxy ? g.__turboModuleProxy('DevSettings') : null;
|
|
475
|
+
if (updateSettings && updateSettings.reload) updateSettings.reload();
|
|
476
|
+
}
|
|
465
477
|
} else if (msg.type === 'hmr:reload') {
|
|
466
478
|
var ds = g.__turboModuleProxy ? g.__turboModuleProxy('DevSettings') : null;
|
|
467
479
|
if (ds && ds.reload) ds.reload();
|
|
@@ -470,7 +482,7 @@ try {
|
|
|
470
482
|
};
|
|
471
483
|
__hmrWS.onopen = function() {
|
|
472
484
|
if (typeof __rolldown_runtime__ !== 'undefined' && __rolldown_runtime__.setup) {
|
|
473
|
-
__rolldown_runtime__.setup(__hmrWS
|
|
485
|
+
__rolldown_runtime__.setup(__hmrWS);
|
|
474
486
|
}
|
|
475
487
|
};
|
|
476
488
|
__hmrWS.onerror = function(e) { console.warn('[vxrn] HMR connection error:', e.message || e); };
|
|
@@ -515,44 +527,35 @@ try {
|
|
|
515
527
|
onHmrUpdate?.({ type: 'hmr:error' })
|
|
516
528
|
return
|
|
517
529
|
}
|
|
518
|
-
const
|
|
519
|
-
for (const item of updates) {
|
|
520
|
-
const update = item.update || item
|
|
530
|
+
for (const { clientId, update } of result.updates) {
|
|
521
531
|
if (update.type === 'Patch' && update.code) {
|
|
522
|
-
onHmrUpdate?.({
|
|
532
|
+
onHmrUpdate?.({
|
|
533
|
+
type: 'hmr:update',
|
|
534
|
+
clientId,
|
|
535
|
+
code: update.code,
|
|
536
|
+
changedIds: update.changedIds,
|
|
537
|
+
seq: update.seq,
|
|
538
|
+
})
|
|
523
539
|
} else if (update.type === 'FullReload') {
|
|
524
|
-
onHmrUpdate?.({ type: 'hmr:reload' })
|
|
540
|
+
onHmrUpdate?.({ type: 'hmr:reload', clientId })
|
|
525
541
|
}
|
|
526
542
|
}
|
|
527
|
-
|
|
528
|
-
if (updates.length === 0) {
|
|
529
|
-
onHmrUpdate?.({ type: 'hmr:reload' })
|
|
530
|
-
}
|
|
531
543
|
},
|
|
532
544
|
|
|
533
|
-
//
|
|
534
|
-
//
|
|
535
|
-
// getBundle() does that ask. keeping 'never' here avoids rebuilding on every
|
|
536
|
-
// patch, which is the whole point of hmr.
|
|
545
|
+
// patches update the registered client runtime directly. a full bundle rebuild
|
|
546
|
+
// is only needed when the runtime requests a reload.
|
|
537
547
|
rebuildStrategy: 'never',
|
|
538
548
|
watch: {},
|
|
539
549
|
})
|
|
540
550
|
|
|
541
551
|
await engine.run()
|
|
542
552
|
|
|
543
|
-
// modules are registered via WebSocket messages from the HMR client
|
|
544
|
-
// (the devMode runtime sends hmr:module-registered messages)
|
|
545
|
-
|
|
546
553
|
return {
|
|
547
554
|
engine,
|
|
548
555
|
|
|
549
556
|
async getBundle() {
|
|
550
|
-
//
|
|
551
|
-
//
|
|
552
|
-
// so returning it early was safe. under 1.2 nothing rebuilds on its own, so
|
|
553
|
-
// an early return hands back the bundle built at startup forever: edit a
|
|
554
|
-
// component, take a full reload, and the device still gets the old code.
|
|
555
|
-
// that is what broke fast refresh on native in 1.25.0.
|
|
557
|
+
// a runtime invalidation marks the full output stale before reloading. pull
|
|
558
|
+
// that output before serving the cached bundle to the restarted app.
|
|
556
559
|
await engine.ensureLatestBuildOutput()
|
|
557
560
|
if (currentBundle) return currentBundle
|
|
558
561
|
if (!bundlePromise) {
|
|
@@ -894,7 +897,11 @@ function cssStubPlugin(): Plugin {
|
|
|
894
897
|
* react-native codegen, react compiler, and react-refresh (dev only) —
|
|
895
898
|
* same pipeline as metro, single babel pass per file.
|
|
896
899
|
*/
|
|
897
|
-
export function vxrnCompilerPlugin(
|
|
900
|
+
export function vxrnCompilerPlugin(
|
|
901
|
+
platform: string,
|
|
902
|
+
dev: boolean,
|
|
903
|
+
projectRoot = process.cwd()
|
|
904
|
+
): Plugin {
|
|
898
905
|
let compiler: typeof import('@vxrn/compiler') | null = null
|
|
899
906
|
|
|
900
907
|
// whether a file is a user file that should get react-refresh wiring
|
|
@@ -918,6 +925,7 @@ export function vxrnCompilerPlugin(platform: string, dev: boolean): Plugin {
|
|
|
918
925
|
const props = {
|
|
919
926
|
id,
|
|
920
927
|
code,
|
|
928
|
+
projectRoot,
|
|
921
929
|
development: dev,
|
|
922
930
|
environment: platform as 'ios' | 'android',
|
|
923
931
|
reactForRNVersion: '19' as const,
|
|
@@ -1150,33 +1158,40 @@ function hermesCompatSWCPlugin(dev: boolean): Plugin {
|
|
|
1150
1158
|
|
|
1151
1159
|
// --- HMR runtime ---
|
|
1152
1160
|
|
|
1153
|
-
function getHmrRuntimeSource(): string {
|
|
1161
|
+
export function getHmrRuntimeSource(): string {
|
|
1154
1162
|
return `
|
|
1155
1163
|
// vxrn HMR runtime for rolldown devMode
|
|
1156
1164
|
var BaseDevRuntime = DevRuntime;
|
|
1157
1165
|
|
|
1158
1166
|
class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
1159
1167
|
constructor() {
|
|
1160
|
-
var _shared = { _socket: null, _queue: [] };
|
|
1161
1168
|
var clientId = 'rn-' + Date.now() + '-' + Math.random().toString(36).slice(2);
|
|
1162
|
-
super(
|
|
1163
|
-
var s = JSON.stringify(msg);
|
|
1164
|
-
if (_shared._socket && _shared._socket.readyState === 1) { _shared._socket.send(s); }
|
|
1165
|
-
else { _shared._queue.push(s); }
|
|
1166
|
-
}}, clientId);
|
|
1167
|
-
this._shared = _shared;
|
|
1169
|
+
super(clientId);
|
|
1168
1170
|
this._socket = null;
|
|
1169
|
-
this._queue = [];
|
|
1170
1171
|
this.moduleHotContexts = {};
|
|
1172
|
+
this.lastSeq = 0;
|
|
1171
1173
|
}
|
|
1172
1174
|
|
|
1173
1175
|
createModuleHotContext(moduleId) {
|
|
1176
|
+
var runtime = this;
|
|
1174
1177
|
var ctx = {
|
|
1175
1178
|
acceptCallbacks: [],
|
|
1176
|
-
accept: function(
|
|
1177
|
-
if (
|
|
1179
|
+
accept: function(deps, callback) {
|
|
1180
|
+
if (typeof deps === 'function' || !deps) {
|
|
1181
|
+
ctx.acceptCallbacks.push({
|
|
1182
|
+
deps: [moduleId],
|
|
1183
|
+
fn: function(modules) { if (typeof deps === 'function') deps(modules[0]); }
|
|
1184
|
+
});
|
|
1185
|
+
} else if (typeof deps === 'string') {
|
|
1186
|
+
ctx.acceptCallbacks.push({
|
|
1187
|
+
deps: [deps],
|
|
1188
|
+
fn: function(modules) { if (callback) callback(modules[0]); }
|
|
1189
|
+
});
|
|
1190
|
+
} else if (Array.isArray(deps)) {
|
|
1191
|
+
ctx.acceptCallbacks.push({ deps: deps, fn: callback || function() {} });
|
|
1192
|
+
}
|
|
1178
1193
|
},
|
|
1179
|
-
invalidate: function() {},
|
|
1194
|
+
invalidate: function() { runtime.requestReload('module invalidated: ' + moduleId); },
|
|
1180
1195
|
on: function() {},
|
|
1181
1196
|
off: function() {},
|
|
1182
1197
|
send: function() {},
|
|
@@ -1207,55 +1222,112 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
1207
1222
|
return ctx;
|
|
1208
1223
|
}
|
|
1209
1224
|
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1225
|
+
isSelfAccepted(moduleId) {
|
|
1226
|
+
var ctx = this.moduleHotContexts[moduleId];
|
|
1227
|
+
return !!(ctx && ctx.acceptCallbacks.some(function(callback) {
|
|
1228
|
+
return callback.deps.indexOf(moduleId) !== -1;
|
|
1229
|
+
}));
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
acceptsDependency(parentId, moduleId) {
|
|
1233
|
+
var ctx = this.moduleHotContexts[parentId];
|
|
1234
|
+
return !!(ctx && ctx.acceptCallbacks.some(function(callback) {
|
|
1235
|
+
return callback.deps.indexOf(moduleId) !== -1;
|
|
1236
|
+
}));
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
findBoundaries(moduleId, traversed, updateSet, boundaries) {
|
|
1240
|
+
if (traversed.has(moduleId)) return true;
|
|
1241
|
+
traversed.add(moduleId);
|
|
1242
|
+
updateSet.add(moduleId);
|
|
1243
|
+
|
|
1244
|
+
if (this.isSelfAccepted(moduleId)) {
|
|
1245
|
+
boundaries.push({ boundary: moduleId, acceptedVia: moduleId });
|
|
1246
|
+
return true;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
var importers = this.getImporters(moduleId).filter(function(importer) {
|
|
1250
|
+
return this.isExecuted(importer);
|
|
1251
|
+
}, this);
|
|
1252
|
+
if (importers.length === 0) return false;
|
|
1253
|
+
|
|
1254
|
+
for (var i = 0; i < importers.length; i++) {
|
|
1255
|
+
var importer = importers[i];
|
|
1256
|
+
if (this.acceptsDependency(importer, moduleId)) {
|
|
1257
|
+
boundaries.push({ boundary: importer, acceptedVia: moduleId });
|
|
1258
|
+
} else if (!this.findBoundaries(importer, traversed, updateSet, boundaries)) {
|
|
1259
|
+
return false;
|
|
1218
1260
|
}
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1261
|
+
}
|
|
1262
|
+
return true;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
applyHmrUpdate(code, changedIds, seq) {
|
|
1266
|
+
if (seq !== this.lastSeq + 1) return false;
|
|
1267
|
+
this.lastSeq = seq;
|
|
1268
|
+
|
|
1269
|
+
var traversed = new Set();
|
|
1270
|
+
var updateSet = new Set();
|
|
1271
|
+
var boundaries = [];
|
|
1272
|
+
for (var i = 0; i < changedIds.length; i++) {
|
|
1273
|
+
var changedId = changedIds[i];
|
|
1274
|
+
if (!this.isExecuted(changedId)) continue;
|
|
1275
|
+
if (!this.findBoundaries(changedId, traversed, updateSet, boundaries)) return false;
|
|
1276
|
+
}
|
|
1277
|
+
if (boundaries.length === 0) return true;
|
|
1278
|
+
|
|
1279
|
+
var callbacks = boundaries.map(function(item) {
|
|
1280
|
+
var ctx = this.moduleHotContexts[item.boundary];
|
|
1281
|
+
return {
|
|
1282
|
+
boundary: item.boundary,
|
|
1283
|
+
acceptedVia: item.acceptedVia,
|
|
1284
|
+
callbacks: ctx ? ctx.acceptCallbacks.filter(function(callback) {
|
|
1285
|
+
return callback.deps.indexOf(item.acceptedVia) !== -1;
|
|
1286
|
+
}) : []
|
|
1287
|
+
};
|
|
1288
|
+
}, this);
|
|
1289
|
+
|
|
1290
|
+
if (globalThis.globalEvalWithSourceUrl) globalThis.globalEvalWithSourceUrl(code);
|
|
1291
|
+
else (0, eval)(code);
|
|
1292
|
+
|
|
1293
|
+
var modulesToReplace = Array.from(updateSet);
|
|
1294
|
+
for (var j = 0; j < modulesToReplace.length; j++) {
|
|
1295
|
+
if (!this.hasFactory(modulesToReplace[j])) return false;
|
|
1296
|
+
}
|
|
1297
|
+
for (var k = 0; k < modulesToReplace.length; k++) {
|
|
1298
|
+
this.removeModuleCache(modulesToReplace[k]);
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
for (var m = 0; m < callbacks.length; m++) {
|
|
1302
|
+
var apply = callbacks[m];
|
|
1303
|
+
this.initModule(apply.acceptedVia);
|
|
1304
|
+
var freshExports = this.loadExports(apply.acceptedVia);
|
|
1305
|
+
for (var n = 0; n < apply.callbacks.length; n++) {
|
|
1306
|
+
apply.callbacks[n].fn([freshExports]);
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
for (var p = 0; p < changedIds.length; p++) {
|
|
1224
1311
|
try {
|
|
1225
|
-
if (globalThis.__VXRN_ON_MODULE_UPDATED__
|
|
1312
|
+
if (globalThis.__VXRN_ON_MODULE_UPDATED__) {
|
|
1313
|
+
globalThis.__VXRN_ON_MODULE_UPDATED__(changedIds[p]);
|
|
1314
|
+
}
|
|
1226
1315
|
} catch (error) {
|
|
1227
1316
|
console.error('[vxrn HMR]: module update hook failed', error);
|
|
1228
1317
|
}
|
|
1229
1318
|
}
|
|
1319
|
+
return true;
|
|
1230
1320
|
}
|
|
1231
1321
|
|
|
1232
|
-
|
|
1233
|
-
if (this._socket)
|
|
1234
|
-
|
|
1235
|
-
// also set the shared messenger socket so queued messages can flush
|
|
1236
|
-
if (this._shared) this._shared._socket = socket;
|
|
1237
|
-
|
|
1238
|
-
var flushQueues = function() {
|
|
1239
|
-
// flush messenger queue
|
|
1240
|
-
if (this._shared && this._shared._queue.length) {
|
|
1241
|
-
for (var i = 0; i < this._shared._queue.length; i++) socket.send(this._shared._queue[i]);
|
|
1242
|
-
this._shared._queue = [];
|
|
1243
|
-
}
|
|
1244
|
-
// flush instance queue
|
|
1245
|
-
for (var i = 0; i < this._queue.length; i++) socket.send(this._queue[i]);
|
|
1246
|
-
this._queue = [];
|
|
1247
|
-
}.bind(this);
|
|
1248
|
-
|
|
1249
|
-
if (socket.readyState === 1) {
|
|
1250
|
-
flushQueues();
|
|
1251
|
-
} else {
|
|
1252
|
-
socket.addEventListener('open', function() {
|
|
1253
|
-
flushQueues();
|
|
1254
|
-
}, { once: true });
|
|
1322
|
+
requestReload(reason) {
|
|
1323
|
+
if (this._socket && this._socket.readyState === 1) {
|
|
1324
|
+
this._socket.send(JSON.stringify({ type: 'hmr:invalidate', reason: reason }));
|
|
1255
1325
|
}
|
|
1326
|
+
}
|
|
1256
1327
|
|
|
1257
|
-
|
|
1258
|
-
|
|
1328
|
+
setup(socket) {
|
|
1329
|
+
if (this._socket) return;
|
|
1330
|
+
this._socket = socket;
|
|
1259
1331
|
}
|
|
1260
1332
|
}
|
|
1261
1333
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactNativeDevServer.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAiB,MAAM,MAAM,CAAA;AAO1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"reactNativeDevServer.d.ts","sourceRoot":"","sources":["../../src/plugins/reactNativeDevServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAiB,MAAM,MAAM,CAAA;AAO1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAiBnE,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAAC,CACrF,GACA,MAAM,CAqPR"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* https://github.com/leegeunhyeok/rollipop
|
|
7
7
|
*/
|
|
8
8
|
import type { Plugin } from 'rolldown';
|
|
9
|
+
import type { DevEngine } from 'rolldown/experimental';
|
|
9
10
|
/** SWC `env.include` for Hermes-compatible downleveling; see HERMES_CLASS_TRANSFORMS. */
|
|
10
11
|
export declare function getHermesSWCIncludes(dev: boolean): string[];
|
|
11
12
|
interface NativeDevEngineOptions {
|
|
@@ -15,13 +16,22 @@ interface NativeDevEngineOptions {
|
|
|
15
16
|
platform: 'ios' | 'android';
|
|
16
17
|
serverUrl?: string;
|
|
17
18
|
plugins?: Plugin[];
|
|
18
|
-
onHmrUpdate?: (update:
|
|
19
|
-
type: string;
|
|
20
|
-
code?: string;
|
|
21
|
-
}) => void;
|
|
19
|
+
onHmrUpdate?: (update: NativeHmrUpdate) => void;
|
|
22
20
|
}
|
|
21
|
+
export type NativeHmrUpdate = {
|
|
22
|
+
type: 'hmr:update';
|
|
23
|
+
clientId: string;
|
|
24
|
+
code: string;
|
|
25
|
+
changedIds: string[];
|
|
26
|
+
seq: number;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'hmr:reload';
|
|
29
|
+
clientId: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'hmr:error';
|
|
32
|
+
};
|
|
23
33
|
interface NativeDevEngineResult {
|
|
24
|
-
engine:
|
|
34
|
+
engine: DevEngine;
|
|
25
35
|
getBundle: () => Promise<{
|
|
26
36
|
code: string;
|
|
27
37
|
}>;
|
|
@@ -102,6 +112,7 @@ export declare function hmrClientNoopPlugin(): Plugin;
|
|
|
102
112
|
* react-native codegen, react compiler, and react-refresh (dev only) —
|
|
103
113
|
* same pipeline as metro, single babel pass per file.
|
|
104
114
|
*/
|
|
105
|
-
export declare function vxrnCompilerPlugin(platform: string, dev: boolean): Plugin;
|
|
115
|
+
export declare function vxrnCompilerPlugin(platform: string, dev: boolean, projectRoot?: string): Plugin;
|
|
116
|
+
export declare function getHmrRuntimeSource(): string;
|
|
106
117
|
export {};
|
|
107
118
|
//# sourceMappingURL=createNativeDevEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNativeDevEngine.d.ts","sourceRoot":"","sources":["../../src/utils/createNativeDevEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAA+B,MAAM,EAAkB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"createNativeDevEngine.d.ts","sourceRoot":"","sources":["../../src/utils/createNativeDevEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAA+B,MAAM,EAAkB,MAAM,UAAU,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AA0BtD,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAE3D;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA;AAEzB,UAAU,qBAAqB;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAuBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM;;;;;;;;EAqHb;AAgGD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhE;AAoDD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA4LhC;AAID,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8DzC;AA4KD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAuB5C;AAoBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,OAAO,EACZ,WAAW,SAAgB,GAC1B,MAAM,CAyGR;AAwJD,wBAAgB,mBAAmB,IAAI,MAAM,CA+K5C"}
|