vxrn 1.25.8 → 1.25.9
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/config/getViteServerConfig.mjs +6 -0
- package/dist/config/getViteServerConfig.mjs.map +1 -1
- package/dist/config/getViteServerConfig.native.js +6 -0
- package/dist/config/getViteServerConfig.native.js.map +1 -1
- package/dist/config/getViteServerConfig.test.mjs +26 -0
- package/dist/config/getViteServerConfig.test.mjs.map +1 -0
- package/dist/config/getViteServerConfig.test.native.js +26 -0
- package/dist/config/getViteServerConfig.test.native.js.map +1 -0
- package/dist/exports/dev.mjs +26 -1
- package/dist/exports/dev.mjs.map +1 -1
- package/dist/exports/dev.native.js +26 -1
- package/dist/exports/dev.native.js.map +1 -1
- package/dist/plugins/reactNativeDevServer.mjs +80 -7
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +80 -7
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/runtime/native-prelude.mjs +7 -0
- package/dist/runtime/native-prelude.mjs.map +1 -1
- package/dist/runtime/native-prelude.native.js +7 -0
- package/dist/runtime/native-prelude.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +302 -197
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +410 -221
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.test.mjs +536 -6
- package/dist/utils/createNativeDevEngine.test.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.test.native.js +559 -6
- package/dist/utils/createNativeDevEngine.test.native.js.map +1 -1
- package/package.json +11 -11
- package/src/config/getViteServerConfig.test.ts +29 -0
- package/src/config/getViteServerConfig.ts +11 -0
- package/src/exports/dev.ts +34 -3
- package/src/plugins/reactNativeDevServer.ts +89 -12
- package/src/runtime/native-prelude.ts +7 -0
- package/src/utils/createNativeDevEngine.test.ts +682 -5
- package/src/utils/createNativeDevEngine.ts +516 -229
- package/types/config/getViteServerConfig.d.ts.map +1 -1
- package/types/config/getViteServerConfig.test.d.ts +2 -0
- package/types/config/getViteServerConfig.test.d.ts.map +1 -0
- package/types/exports/dev.d.ts.map +1 -1
- package/types/plugins/reactNativeDevServer.d.ts +1 -0
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
- package/types/runtime/native-prelude.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts +40 -2
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import { createHash } from "crypto";
|
|
1
2
|
import { basename, dirname, extname, join, relative, resolve } from "path";
|
|
2
|
-
import { copyFileSync,
|
|
3
|
+
import { copyFileSync, mkdirSync, readFileSync, readdirSync, realpathSync } from "fs";
|
|
3
4
|
import { pathToFileURL } from "url";
|
|
4
|
-
import { normalizePath } from "vite";
|
|
5
|
+
import { loadEnv, normalizePath } from "vite";
|
|
5
6
|
import { DEFAULT_ASSET_EXTS } from "../constants/defaults.native.js";
|
|
6
7
|
import { getNativePrelude } from "../runtime/native-prelude.native.js";
|
|
7
8
|
function _instanceof(left, right) {
|
|
8
9
|
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);else return left instanceof right;
|
|
9
10
|
}
|
|
10
11
|
var FLOW_FILE_PATTERN = /node_modules[\\/](?:react-native|@react-native)[\\/].*\.js$/;
|
|
11
|
-
var HERMES_CLASS_TRANSFORMS = ["transform-classes", "transform-parameters", "transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object"];
|
|
12
|
-
var
|
|
12
|
+
var HERMES_CLASS_TRANSFORMS = ["transform-classes", "transform-parameters", "transform-block-scoping", "transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object"];
|
|
13
|
+
var HERMES_ASYNC_TRANSFORMS = ["transform-async-to-generator"];
|
|
13
14
|
function getHermesSWCIncludes(dev) {
|
|
14
|
-
return [...HERMES_CLASS_TRANSFORMS, ...
|
|
15
|
+
return [...HERMES_CLASS_TRANSFORMS, ...HERMES_ASYNC_TRANSFORMS];
|
|
15
16
|
}
|
|
16
17
|
function getResolveExtensions(platform) {
|
|
17
18
|
var platformExts = platform === "ios" ? [".ios.tsx", ".ios.ts", ".ios.jsx", ".ios.js"] : [".android.tsx", ".android.ts", ".android.jsx", ".android.js"];
|
|
@@ -22,7 +23,7 @@ function getResolveExtensions(platform) {
|
|
|
22
23
|
function getNativeResolveConfig(platform) {
|
|
23
24
|
return {
|
|
24
25
|
extensions: getResolveExtensions(platform),
|
|
25
|
-
conditionNames: ["react-native"
|
|
26
|
+
conditionNames: ["react-native"],
|
|
26
27
|
mainFields: ["react-native", "module", "main"]
|
|
27
28
|
};
|
|
28
29
|
}
|
|
@@ -57,43 +58,28 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
57
58
|
})
|
|
58
59
|
};
|
|
59
60
|
}();
|
|
60
|
-
var envDefines = function () {
|
|
61
|
-
var defines = {};
|
|
62
|
-
try {
|
|
63
|
-
var mode2 = dev ? "development" : "production";
|
|
64
|
-
for (var _i = 0, _iter = [".env", ".env.local", `.env.${mode2}`, `.env.${mode2}.local`]; _i < _iter.length; _i++) {
|
|
65
|
-
var envFile = _iter[_i];
|
|
66
|
-
var envPath = join(root, envFile);
|
|
67
|
-
if (!existsSync(envPath)) continue;
|
|
68
|
-
var content = readFileSync(envPath, "utf8");
|
|
69
|
-
var _iteratorNormalCompletion2 = true,
|
|
70
|
-
_didIteratorError2 = false,
|
|
71
|
-
_iteratorError2 = void 0;
|
|
72
|
-
try {
|
|
73
|
-
for (var _iterator2 = content.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
74
|
-
var match2 = _step2.value.match(/^\s*(VITE_\w+)\s*=\s*(.*)$/);
|
|
75
|
-
if (match2) {
|
|
76
|
-
var [, key2, rawVal] = match2;
|
|
77
|
-
var val2 = rawVal.replace(/^['"]|['"]$/g, "").trim();
|
|
78
|
-
defines[`import.meta.env.${key2}`] = JSON.stringify(val2);
|
|
79
|
-
defines[`process.env.${key2}`] = JSON.stringify(val2);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
} catch (err) {
|
|
83
|
-
_didIteratorError2 = true;
|
|
84
|
-
_iteratorError2 = err;
|
|
85
|
-
} finally {
|
|
86
|
-
try {
|
|
87
|
-
if (!_iteratorNormalCompletion2 && _iterator2.return != null) _iterator2.return();
|
|
88
|
-
} finally {
|
|
89
|
-
if (_didIteratorError2) throw _iteratorError2;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
} catch (unused) {}
|
|
94
|
-
return defines;
|
|
95
|
-
}();
|
|
96
61
|
var mode = dev ? "development" : "production";
|
|
62
|
+
var publicEnv = loadEnv(mode, root, ["VITE_", "EXPO_PUBLIC_"]);
|
|
63
|
+
var envDefines = {};
|
|
64
|
+
var _iteratorNormalCompletion = true,
|
|
65
|
+
_didIteratorError = false,
|
|
66
|
+
_iteratorError = void 0;
|
|
67
|
+
try {
|
|
68
|
+
for (var _iterator = Object.entries(publicEnv)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
69
|
+
var [key, value] = _step.value;
|
|
70
|
+
envDefines[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
71
|
+
envDefines[`process.env.${key}`] = JSON.stringify(value);
|
|
72
|
+
}
|
|
73
|
+
} catch (err) {
|
|
74
|
+
_didIteratorError = true;
|
|
75
|
+
_iteratorError = err;
|
|
76
|
+
} finally {
|
|
77
|
+
try {
|
|
78
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
79
|
+
} finally {
|
|
80
|
+
if (_didIteratorError) throw _iteratorError;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
97
83
|
var envObject = {
|
|
98
84
|
MODE: mode,
|
|
99
85
|
DEV: dev,
|
|
@@ -105,13 +91,13 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
105
91
|
TAMAGUI_TARGET: "native",
|
|
106
92
|
TAMAGUI_ENVIRONMENT: platform
|
|
107
93
|
};
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
|
|
94
|
+
var _iteratorNormalCompletion1 = true,
|
|
95
|
+
_didIteratorError1 = false,
|
|
96
|
+
_iteratorError1 = void 0;
|
|
111
97
|
try {
|
|
112
|
-
for (var
|
|
113
|
-
var [
|
|
114
|
-
var match =
|
|
98
|
+
for (var _iterator1 = Object.entries(envDefines)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
99
|
+
var [key1, val] = _step1.value;
|
|
100
|
+
var match = key1.match(/^import\.meta\.env\.(.+)$/);
|
|
115
101
|
if (match) try {
|
|
116
102
|
envObject[match[1]] = JSON.parse(val);
|
|
117
103
|
} catch (unused) {
|
|
@@ -119,13 +105,13 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
119
105
|
}
|
|
120
106
|
}
|
|
121
107
|
} catch (err) {
|
|
122
|
-
|
|
123
|
-
|
|
108
|
+
_didIteratorError1 = true;
|
|
109
|
+
_iteratorError1 = err;
|
|
124
110
|
} finally {
|
|
125
111
|
try {
|
|
126
|
-
if (!
|
|
112
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) _iterator1.return();
|
|
127
113
|
} finally {
|
|
128
|
-
if (
|
|
114
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
129
115
|
}
|
|
130
116
|
}
|
|
131
117
|
return {
|
|
@@ -159,14 +145,16 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
159
145
|
}
|
|
160
146
|
};
|
|
161
147
|
}
|
|
162
|
-
function getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest) {
|
|
148
|
+
function getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest, onAsset) {
|
|
149
|
+
var sourceMaps = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : false;
|
|
163
150
|
return [...(globalThis.__vxrnAddNativePlugins || []), serverFileExclusionPlugin(), environmentGuardPlugin(), hmrClientNoopPlugin(), cssStubPlugin(), viteImportGlobPlugin({
|
|
164
151
|
root
|
|
165
|
-
}), vxrnCompilerPlugin(platform, dev, root), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
|
|
152
|
+
}), vxrnCompilerPlugin(platform, dev, root, sourceMaps), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
|
|
166
153
|
root,
|
|
167
154
|
platform,
|
|
168
|
-
assetsDest
|
|
169
|
-
|
|
155
|
+
assetsDest,
|
|
156
|
+
onAsset
|
|
157
|
+
}), hermesCompatSWCPlugin(dev, sourceMaps)];
|
|
170
158
|
}
|
|
171
159
|
function getNativeOutputOptions(prelude, sourcemap) {
|
|
172
160
|
return {
|
|
@@ -177,7 +165,12 @@ function getNativeOutputOptions(prelude, sourcemap) {
|
|
|
177
165
|
strictExecutionOrder: true
|
|
178
166
|
};
|
|
179
167
|
}
|
|
168
|
+
function normalizeNativeCommonJSInterop(code) {
|
|
169
|
+
return code.replace(/(\b__toESM(?:\$\d+)?\(\s*require[\w$]*\(\)\s*),\s*1(\s*\))/g, "$1$2");
|
|
170
|
+
}
|
|
180
171
|
function postProcessNativeBundle(code) {
|
|
172
|
+
code = normalizeNativeCommonJSInterop(code);
|
|
173
|
+
code = code.replace(/\btypeof\s+import\.meta\b/g, "\"object\"");
|
|
181
174
|
code = code.replace(/^\s*export\s*\{[^}]*\}\s*;?\s*$/gm, "");
|
|
182
175
|
code = code.replace(/^\s*export\s+default\s+([^;\n]+);?\s*$/gm, "$1;");
|
|
183
176
|
code = code.replace(/^if \(import\.meta\.hot\).*$/gm, "");
|
|
@@ -204,6 +197,8 @@ function wrapNativeBundleModuleScope(code) {
|
|
|
204
197
|
return code.slice(0, idx) + ";(function() {\n" + code.slice(idx) + "\n})();\n";
|
|
205
198
|
}
|
|
206
199
|
async function downlevelClassFieldsInBundle(code) {
|
|
200
|
+
var _ref, _ref1;
|
|
201
|
+
var _runtimeSection_match, _transformed_match;
|
|
207
202
|
var startMarker = "//#region \\0rolldown/runtime.js";
|
|
208
203
|
var endMarker = "//#endregion";
|
|
209
204
|
var startIdx = code.indexOf(startMarker);
|
|
@@ -212,41 +207,43 @@ async function downlevelClassFieldsInBundle(code) {
|
|
|
212
207
|
if (endIdx === -1) return code;
|
|
213
208
|
var runtimeEnd = endIdx + endMarker.length;
|
|
214
209
|
var runtimeSection = code.slice(startIdx, runtimeEnd);
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
include: [...HERMES_CLASS_TRANSFORMS]
|
|
210
|
+
var originalNewlines = (_ref = (_runtimeSection_match = runtimeSection.match(/\n/g)) === null || _runtimeSection_match === void 0 ? void 0 : _runtimeSection_match.length) !== null && _ref !== void 0 ? _ref : 0;
|
|
211
|
+
var transformedCode = (await (await import("@swc/core")).transform(runtimeSection, {
|
|
212
|
+
filename: "rolldown-runtime.js",
|
|
213
|
+
configFile: false,
|
|
214
|
+
swcrc: false,
|
|
215
|
+
sourceMaps: false,
|
|
216
|
+
inputSourceMap: false,
|
|
217
|
+
isModule: false,
|
|
218
|
+
minify: true,
|
|
219
|
+
env: {
|
|
220
|
+
targets: {
|
|
221
|
+
node: 9999
|
|
228
222
|
},
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
externalHelpers: false,
|
|
239
|
-
assumptions: {
|
|
240
|
-
setPublicClassFields: true,
|
|
241
|
-
privateFieldsAsProperties: true
|
|
223
|
+
include: [...HERMES_CLASS_TRANSFORMS]
|
|
224
|
+
},
|
|
225
|
+
jsc: {
|
|
226
|
+
parser: {
|
|
227
|
+
syntax: "ecmascript"
|
|
228
|
+
},
|
|
229
|
+
transform: {
|
|
230
|
+
react: {
|
|
231
|
+
runtime: "preserve"
|
|
242
232
|
}
|
|
233
|
+
},
|
|
234
|
+
externalHelpers: false,
|
|
235
|
+
assumptions: {
|
|
236
|
+
setPublicClassFields: true,
|
|
237
|
+
privateFieldsAsProperties: true
|
|
243
238
|
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
239
|
+
}
|
|
240
|
+
})).code.trimEnd();
|
|
241
|
+
var transformed = transformedCode.includes(startMarker) ? transformedCode : `${startMarker}
|
|
242
|
+
${transformedCode}`;
|
|
243
|
+
var transformedNewlines = (_ref1 = (_transformed_match = transformed.match(/\n/g)) === null || _transformed_match === void 0 ? void 0 : _transformed_match.length) !== null && _ref1 !== void 0 ? _ref1 : 0;
|
|
244
|
+
if (transformedNewlines > originalNewlines) throw new Error("[vxrn] Hermes runtime transform added lines and would invalidate the production source map");
|
|
245
|
+
var linePreservingRuntime = transformed + "\n".repeat(originalNewlines - transformedNewlines);
|
|
246
|
+
return code.slice(0, startIdx) + linePreservingRuntime + code.slice(runtimeEnd);
|
|
250
247
|
}
|
|
251
248
|
async function createNativeDevEngine(options) {
|
|
252
249
|
var {
|
|
@@ -268,6 +265,7 @@ async function createNativeDevEngine(options) {
|
|
|
268
265
|
platform,
|
|
269
266
|
serverUrl: serverUrl || `http://${host}:${port}`
|
|
270
267
|
});
|
|
268
|
+
var assetRegistry = createNativeDevAssetRegistry();
|
|
271
269
|
var currentBundle = null;
|
|
272
270
|
var firstBuildError = null;
|
|
273
271
|
var bundleResolve = null;
|
|
@@ -296,7 +294,7 @@ async function createNativeDevEngine(options) {
|
|
|
296
294
|
},
|
|
297
295
|
plugins: [nativeVirtualEntryPlugin(root, {
|
|
298
296
|
dev: true
|
|
299
|
-
}), ...getNativePlugins(root, platform, viteImportGlobPlugin, true), ...userPlugins]
|
|
297
|
+
}), ...getNativePlugins(root, platform, viteImportGlobPlugin, true, void 0, assetRegistry.register, false), ...userPlugins]
|
|
300
298
|
}, {
|
|
301
299
|
...getNativeOutputOptions(prelude, false),
|
|
302
300
|
outro: `
|
|
@@ -434,6 +432,9 @@ try {
|
|
|
434
432
|
}
|
|
435
433
|
return bundlePromise;
|
|
436
434
|
},
|
|
435
|
+
getAsset(pathname, hash) {
|
|
436
|
+
return assetRegistry.resolve(pathname, hash);
|
|
437
|
+
},
|
|
437
438
|
async close() {
|
|
438
439
|
await engine.close();
|
|
439
440
|
}
|
|
@@ -478,7 +479,7 @@ async function buildNativeBundle(options) {
|
|
|
478
479
|
},
|
|
479
480
|
plugins: [...(entryFile ? [] : [nativeVirtualEntryPlugin(root, {
|
|
480
481
|
dev
|
|
481
|
-
})]), ...getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest), ...userPlugins],
|
|
482
|
+
})]), ...getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest, void 0, sourcemap), ...userPlugins],
|
|
482
483
|
output: getNativeOutputOptions(prelude, sourcemap)
|
|
483
484
|
})).output.find(function (o) {
|
|
484
485
|
return o.type === "chunk" && o.isEntry;
|
|
@@ -562,8 +563,16 @@ function nativeAnimatedGuardPlugin() {
|
|
|
562
563
|
var target = "const method = nullthrows(NativeAnimatedModule)[methodName];";
|
|
563
564
|
if (!code.includes(target)) return;
|
|
564
565
|
return {
|
|
565
|
-
code: code.replace(target,
|
|
566
|
-
|
|
566
|
+
code: code.replace(target, `${target} if (typeof method !== 'function') return;`),
|
|
567
|
+
map: {
|
|
568
|
+
version: 3,
|
|
569
|
+
sources: [id],
|
|
570
|
+
sourcesContent: [code],
|
|
571
|
+
names: [],
|
|
572
|
+
mappings: code.split("\n").map(function (_, index) {
|
|
573
|
+
return index === 0 ? "AAAA" : "AACA";
|
|
574
|
+
}).join(";")
|
|
575
|
+
}
|
|
567
576
|
};
|
|
568
577
|
}
|
|
569
578
|
};
|
|
@@ -643,7 +652,8 @@ function cssStubPlugin() {
|
|
|
643
652
|
};
|
|
644
653
|
}
|
|
645
654
|
function vxrnCompilerPlugin(platform, dev) {
|
|
646
|
-
var projectRoot = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : process.cwd()
|
|
655
|
+
var projectRoot = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : process.cwd(),
|
|
656
|
+
sourceMaps = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
|
|
647
657
|
var compiler = null;
|
|
648
658
|
var isRefreshCandidate = function (id) {
|
|
649
659
|
return dev && !id.includes("node_modules") && !id.includes("__virtual-native-entry") && /\.[tj]sx?$/.test(id);
|
|
@@ -654,33 +664,37 @@ function vxrnCompilerPlugin(platform, dev) {
|
|
|
654
664
|
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
655
665
|
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
656
666
|
var needsRefresh = isRefreshCandidate(id);
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
667
|
+
if (!compiler) compiler = await import("@vxrn/compiler");
|
|
668
|
+
var props = {
|
|
669
|
+
id,
|
|
670
|
+
code,
|
|
671
|
+
projectRoot,
|
|
672
|
+
development: dev,
|
|
673
|
+
environment: platform,
|
|
674
|
+
reactForRNVersion: "19"
|
|
675
|
+
};
|
|
676
|
+
var babelOptions = compiler.getBabelOptions(props);
|
|
677
|
+
if (needsRefresh) {
|
|
678
|
+
var existingPlugins = (babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) || [];
|
|
679
|
+
babelOptions = {
|
|
680
|
+
...babelOptions,
|
|
681
|
+
plugins: [...existingPlugins, ["react-refresh/babel", {
|
|
682
|
+
skipEnvCheck: true,
|
|
683
|
+
refreshReg: "__vxrnRefreshReg",
|
|
684
|
+
refreshSig: "__vxrnRefreshSig"
|
|
685
|
+
}]]
|
|
666
686
|
};
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
}
|
|
679
|
-
if (!babelOptions) return;
|
|
680
|
-
var result = await compiler.transformBabel(id, code, babelOptions);
|
|
681
|
-
if (result === null || result === void 0 ? void 0 : result.code) {
|
|
682
|
-
var out = result.code;
|
|
683
|
-
if (needsRefresh) out = `
|
|
687
|
+
}
|
|
688
|
+
if (!babelOptions) return;
|
|
689
|
+
if (sourceMaps) babelOptions = {
|
|
690
|
+
...babelOptions,
|
|
691
|
+
sourceMaps: true,
|
|
692
|
+
sourceFileName: id
|
|
693
|
+
};
|
|
694
|
+
var result = await compiler.transformBabel(id, code, babelOptions);
|
|
695
|
+
if (result === null || result === void 0 ? void 0 : result.code) {
|
|
696
|
+
var out = result.code;
|
|
697
|
+
if (needsRefresh) out = `
|
|
684
698
|
var __prevRefreshReg = globalThis.$RefreshReg$;
|
|
685
699
|
var __prevRefreshSig = globalThis.$RefreshSig$;
|
|
686
700
|
if (globalThis.__ReactRefresh) {
|
|
@@ -698,23 +712,16 @@ ${out}
|
|
|
698
712
|
globalThis.$RefreshReg$ = __prevRefreshReg;
|
|
699
713
|
globalThis.$RefreshSig$ = __prevRefreshSig;
|
|
700
714
|
if (import.meta.hot) {
|
|
701
|
-
import.meta.hot.
|
|
715
|
+
import.meta.hot.acceptReactRefresh(function() {
|
|
702
716
|
if (globalThis.__ReactRefresh) {
|
|
703
717
|
setTimeout(function() { globalThis.__ReactRefresh.performReactRefresh(); }, 30);
|
|
704
718
|
}
|
|
705
719
|
});
|
|
706
720
|
}
|
|
707
721
|
`;
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
}
|
|
712
|
-
} catch (err) {
|
|
713
|
-
if (dev) console.warn(`[vxrn:compiler] ${id}: ${err.message || err}`);
|
|
714
|
-
if (needsRefresh) return {
|
|
715
|
-
code: code + `
|
|
716
|
-
if (import.meta.hot) { import.meta.hot.accept(); }
|
|
717
|
-
`
|
|
722
|
+
return {
|
|
723
|
+
code: out,
|
|
724
|
+
map: sourceMaps ? result.map : void 0
|
|
718
725
|
};
|
|
719
726
|
}
|
|
720
727
|
}
|
|
@@ -726,21 +733,17 @@ function flowStripPlugin() {
|
|
|
726
733
|
transform: {
|
|
727
734
|
async handler(code, id) {
|
|
728
735
|
if (!FLOW_FILE_PATTERN.test(id)) return;
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
};
|
|
741
|
-
} catch (err) {
|
|
742
|
-
console.warn(`[vxrn:flow-strip] ${id}: ${err.message}`);
|
|
743
|
-
}
|
|
736
|
+
var result = await (await import("fast-flow-transform")).default({
|
|
737
|
+
filename: id,
|
|
738
|
+
source: code,
|
|
739
|
+
sourcemap: true,
|
|
740
|
+
dialect: "flow",
|
|
741
|
+
format: "pretty"
|
|
742
|
+
});
|
|
743
|
+
return {
|
|
744
|
+
code: result.code,
|
|
745
|
+
map: result.map
|
|
746
|
+
};
|
|
744
747
|
}
|
|
745
748
|
}
|
|
746
749
|
};
|
|
@@ -751,38 +754,11 @@ function assetPlugin(opts) {
|
|
|
751
754
|
name: "vxrn:asset",
|
|
752
755
|
load: {
|
|
753
756
|
async handler(id) {
|
|
757
|
+
var _opts_onAsset;
|
|
754
758
|
if (!assetRegex.test(id)) return;
|
|
755
|
-
var
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
var relativePath = relative(opts.root, id);
|
|
759
|
-
var assetData = {
|
|
760
|
-
__packager_asset: true,
|
|
761
|
-
name,
|
|
762
|
-
type: ext,
|
|
763
|
-
scales: [1],
|
|
764
|
-
httpServerLocation: "/assets/" + dirname(relativePath).replace(/\\/g, "/"),
|
|
765
|
-
fileSystemLocation: dir,
|
|
766
|
-
hash: "",
|
|
767
|
-
width: void 0,
|
|
768
|
-
height: void 0
|
|
769
|
-
};
|
|
770
|
-
if (["png", "jpg", "jpeg", "gif", "webp", "bmp"].includes(ext)) try {
|
|
771
|
-
var {
|
|
772
|
-
imageSize
|
|
773
|
-
} = await import("image-size");
|
|
774
|
-
var dims = imageSize(id);
|
|
775
|
-
assetData.width = dims.width;
|
|
776
|
-
assetData.height = dims.height;
|
|
777
|
-
} catch (unused) {}
|
|
778
|
-
if (opts.assetsDest) {
|
|
779
|
-
var relativeAssetDir = dirname(relativePath).replace(/\\/g, "/");
|
|
780
|
-
var assetDestDir = join(opts.assetsDest, "assets", relativeAssetDir);
|
|
781
|
-
mkdirSync(assetDestDir, {
|
|
782
|
-
recursive: true
|
|
783
|
-
});
|
|
784
|
-
copyFileSync(id, join(assetDestDir, `${name}.${ext}`));
|
|
785
|
-
}
|
|
759
|
+
var assetData = await getNativeAssetData(id, opts.root, opts.platform);
|
|
760
|
+
(_opts_onAsset = opts.onAsset) === null || _opts_onAsset === void 0 || _opts_onAsset.call(opts, assetData);
|
|
761
|
+
if (opts.assetsDest) copyNativeAssetFiles(assetData, opts.assetsDest, opts.platform);
|
|
786
762
|
return {
|
|
787
763
|
code: `module.exports = require('react-native/Libraries/Image/AssetRegistry').registerAsset(${JSON.stringify(assetData)});`,
|
|
788
764
|
moduleType: "js"
|
|
@@ -791,7 +767,193 @@ function assetPlugin(opts) {
|
|
|
791
767
|
}
|
|
792
768
|
};
|
|
793
769
|
}
|
|
770
|
+
function createNativeDevAssetRegistry() {
|
|
771
|
+
var assets = /* @__PURE__ */new Map();
|
|
772
|
+
return {
|
|
773
|
+
register(asset) {
|
|
774
|
+
var _iteratorNormalCompletion = true,
|
|
775
|
+
_didIteratorError = false,
|
|
776
|
+
_iteratorError = void 0;
|
|
777
|
+
try {
|
|
778
|
+
for (var _iterator = asset.scales.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
779
|
+
var [index, scale] = _step.value;
|
|
780
|
+
var filePath = asset.files[index];
|
|
781
|
+
if (!filePath) continue;
|
|
782
|
+
var fileName = `${asset.name}${scale === 1 ? "" : `@${scale}x`}.${asset.type}`;
|
|
783
|
+
assets.set(`${asset.httpServerLocation}/${fileName}`, {
|
|
784
|
+
filePath,
|
|
785
|
+
hash: asset.hash,
|
|
786
|
+
type: asset.type
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
} catch (err) {
|
|
790
|
+
_didIteratorError = true;
|
|
791
|
+
_iteratorError = err;
|
|
792
|
+
} finally {
|
|
793
|
+
try {
|
|
794
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
795
|
+
} finally {
|
|
796
|
+
if (_didIteratorError) throw _iteratorError;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
resolve(pathname, hash) {
|
|
801
|
+
var asset = assets.get(pathname);
|
|
802
|
+
if (!asset || hash !== void 0 && hash !== asset.hash) return;
|
|
803
|
+
return asset;
|
|
804
|
+
}
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
var NATIVE_IMAGE_EXTS = /* @__PURE__ */new Set(["png", "jpg", "jpeg", "gif", "webp", "bmp", "psd", "svg", "tiff", "ktx"]);
|
|
808
|
+
function parseNativeAssetName(filePath) {
|
|
809
|
+
var _ref;
|
|
810
|
+
var type = extname(filePath).slice(1);
|
|
811
|
+
if (!type) return;
|
|
812
|
+
var stem = basename(filePath, `.${type}`);
|
|
813
|
+
var platformMatch = stem.match(/^(.*)\.(ios|android)$/);
|
|
814
|
+
var platform = platformMatch === null || platformMatch === void 0 ? void 0 : platformMatch[2];
|
|
815
|
+
var scaleMatch = ((_ref = platformMatch === null || platformMatch === void 0 ? void 0 : platformMatch[1]) !== null && _ref !== void 0 ? _ref : stem).match(/^(.+?)(?:@([\d.]+)x)?$/);
|
|
816
|
+
if (!scaleMatch) return;
|
|
817
|
+
var scale = scaleMatch[2] === void 0 ? 1 : Number.parseFloat(scaleMatch[2]);
|
|
818
|
+
if (!Number.isFinite(scale) || scale <= 0) return;
|
|
819
|
+
return {
|
|
820
|
+
name: scaleMatch[1],
|
|
821
|
+
scale,
|
|
822
|
+
platform,
|
|
823
|
+
type
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
function getNativeAssetUrlDirectory(root, assetDirectory) {
|
|
827
|
+
var safeDirectory = relative(realpathSync(root), realpathSync(assetDirectory)).replace(/\\/g, "/").split("/").filter(function (segment) {
|
|
828
|
+
return segment && segment !== ".";
|
|
829
|
+
}).map(function (segment) {
|
|
830
|
+
return segment === ".." ? "_" : segment;
|
|
831
|
+
}).join("/");
|
|
832
|
+
return safeDirectory ? `/assets/${safeDirectory}` : "/assets";
|
|
833
|
+
}
|
|
834
|
+
async function getNativeAssetData(id, root, platform) {
|
|
835
|
+
var requested = parseNativeAssetName(id);
|
|
836
|
+
if (!requested) throw new Error(`[vxrn] invalid native asset path: ${id}`);
|
|
837
|
+
var assetDirectory = dirname(id);
|
|
838
|
+
var filesByScale = /* @__PURE__ */new Map();
|
|
839
|
+
var _iteratorNormalCompletion = true,
|
|
840
|
+
_didIteratorError = false,
|
|
841
|
+
_iteratorError = void 0;
|
|
842
|
+
try {
|
|
843
|
+
for (var _iterator = readdirSync(assetDirectory)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
844
|
+
var fileName = _step.value;
|
|
845
|
+
var candidate = parseNativeAssetName(fileName);
|
|
846
|
+
if (!candidate || candidate.name !== requested.name || candidate.type !== requested.type || candidate.platform !== void 0 && candidate.platform !== platform) continue;
|
|
847
|
+
var platformSpecific = candidate.platform === platform;
|
|
848
|
+
var existing = filesByScale.get(candidate.scale);
|
|
849
|
+
if (!existing || platformSpecific && !existing.platformSpecific) filesByScale.set(candidate.scale, {
|
|
850
|
+
file: join(assetDirectory, fileName),
|
|
851
|
+
platformSpecific
|
|
852
|
+
});
|
|
853
|
+
}
|
|
854
|
+
} catch (err) {
|
|
855
|
+
_didIteratorError = true;
|
|
856
|
+
_iteratorError = err;
|
|
857
|
+
} finally {
|
|
858
|
+
try {
|
|
859
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
860
|
+
} finally {
|
|
861
|
+
if (_didIteratorError) throw _iteratorError;
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
var scales = [...filesByScale.keys()].sort(function (a, b) {
|
|
865
|
+
return a - b;
|
|
866
|
+
});
|
|
867
|
+
var files = scales.map(function (scale) {
|
|
868
|
+
return filesByScale.get(scale).file;
|
|
869
|
+
});
|
|
870
|
+
if (files.length === 0) throw new Error(`[vxrn] native asset has no files for ${platform}: ${id}`);
|
|
871
|
+
var hash = createHash("md5");
|
|
872
|
+
var _iteratorNormalCompletion1 = true,
|
|
873
|
+
_didIteratorError1 = false,
|
|
874
|
+
_iteratorError1 = void 0;
|
|
875
|
+
try {
|
|
876
|
+
for (var _iterator1 = files[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
877
|
+
var file = _step1.value;
|
|
878
|
+
hash.update(readFileSync(file));
|
|
879
|
+
}
|
|
880
|
+
} catch (err) {
|
|
881
|
+
_didIteratorError1 = true;
|
|
882
|
+
_iteratorError1 = err;
|
|
883
|
+
} finally {
|
|
884
|
+
try {
|
|
885
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) _iterator1.return();
|
|
886
|
+
} finally {
|
|
887
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
var assetData = {
|
|
891
|
+
__packager_asset: true,
|
|
892
|
+
name: requested.name,
|
|
893
|
+
type: requested.type,
|
|
894
|
+
scales,
|
|
895
|
+
files,
|
|
896
|
+
httpServerLocation: getNativeAssetUrlDirectory(root, assetDirectory),
|
|
897
|
+
fileSystemLocation: assetDirectory,
|
|
898
|
+
hash: hash.digest("hex")
|
|
899
|
+
};
|
|
900
|
+
if (NATIVE_IMAGE_EXTS.has(requested.type)) try {
|
|
901
|
+
var {
|
|
902
|
+
imageSize
|
|
903
|
+
} = await import("image-size");
|
|
904
|
+
var dims = imageSize(files[0]);
|
|
905
|
+
assetData.width = dims.width === void 0 ? void 0 : dims.width / scales[0];
|
|
906
|
+
assetData.height = dims.height === void 0 ? void 0 : dims.height / scales[0];
|
|
907
|
+
} catch (unused) {}
|
|
908
|
+
return assetData;
|
|
909
|
+
}
|
|
910
|
+
function getIOSAssetScales(scales) {
|
|
911
|
+
var _scales_find;
|
|
912
|
+
var supported = scales.filter(function (scale) {
|
|
913
|
+
return scale === 1 || scale === 2 || scale === 3;
|
|
914
|
+
});
|
|
915
|
+
if (supported.length > 0 || scales.length === 0) return supported;
|
|
916
|
+
return [(_scales_find = scales.find(function (scale) {
|
|
917
|
+
return scale > 3;
|
|
918
|
+
})) !== null && _scales_find !== void 0 ? _scales_find : scales[scales.length - 1]];
|
|
919
|
+
}
|
|
920
|
+
function getAndroidAssetDirectory(type, scale) {
|
|
921
|
+
if (!(/* @__PURE__ */new Set(["gif", "heic", "heif", "jpeg", "jpg", "ktx", "png", "webp", "xml"])).has(type)) return "raw";
|
|
922
|
+
var density = (/* @__PURE__ */new Map([[.75, "ldpi"], [1, "mdpi"], [1.5, "hdpi"], [2, "xhdpi"], [3, "xxhdpi"], [4, "xxxhdpi"]])).get(scale);
|
|
923
|
+
if (density) return `drawable-${density}`;
|
|
924
|
+
return `drawable-${Math.round(scale * 160)}dpi`;
|
|
925
|
+
}
|
|
926
|
+
function getAndroidAssetName(asset) {
|
|
927
|
+
return `${asset.httpServerLocation}/${asset.name}`.toLowerCase().replace(/^\//, "").replace(/\//g, "_").replace(/([^a-z0-9_])/g, "").replace(/^assets_/, "");
|
|
928
|
+
}
|
|
929
|
+
function copyNativeAssetFiles(asset, assetsDest, platform) {
|
|
930
|
+
var validIOSScales = new Set(getIOSAssetScales(asset.scales));
|
|
931
|
+
var _iteratorNormalCompletion = true,
|
|
932
|
+
_didIteratorError = false,
|
|
933
|
+
_iteratorError = void 0;
|
|
934
|
+
try {
|
|
935
|
+
for (var _iterator = asset.scales.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
936
|
+
var [index, scale] = _step.value;
|
|
937
|
+
if (platform === "ios" && !validIOSScales.has(scale)) continue;
|
|
938
|
+
var destination = platform === "android" ? join(assetsDest, getAndroidAssetDirectory(asset.type, scale), `${getAndroidAssetName(asset)}.${asset.type}`) : join(assetsDest, asset.httpServerLocation.slice(1), `${asset.name}${scale === 1 ? "" : `@${scale}x`}.${asset.type}`);
|
|
939
|
+
mkdirSync(dirname(destination), {
|
|
940
|
+
recursive: true
|
|
941
|
+
});
|
|
942
|
+
copyFileSync(asset.files[index], destination);
|
|
943
|
+
}
|
|
944
|
+
} catch (err) {
|
|
945
|
+
_didIteratorError = true;
|
|
946
|
+
_iteratorError = err;
|
|
947
|
+
} finally {
|
|
948
|
+
try {
|
|
949
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
950
|
+
} finally {
|
|
951
|
+
if (_didIteratorError) throw _iteratorError;
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
}
|
|
794
955
|
function hermesCompatSWCPlugin(dev) {
|
|
956
|
+
var sourceMaps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
795
957
|
var swc = null;
|
|
796
958
|
return {
|
|
797
959
|
name: "vxrn:hermes-compat",
|
|
@@ -799,45 +961,47 @@ function hermesCompatSWCPlugin(dev) {
|
|
|
799
961
|
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
800
962
|
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
801
963
|
var hasClass = code.includes("class ") || code.includes("class{");
|
|
802
|
-
var hasAsync =
|
|
803
|
-
|
|
964
|
+
var hasAsync = code.includes("async ");
|
|
965
|
+
var hasBlockScopedLoop = /\bfor\s*\(\s*(?:const|let)\b/.test(code);
|
|
966
|
+
if (!hasClass && !hasAsync && !hasBlockScopedLoop) return;
|
|
804
967
|
if (code.length > 5e5) return;
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
968
|
+
if (!swc) swc = await import("@swc/core");
|
|
969
|
+
var envIncludes = getHermesSWCIncludes(dev);
|
|
970
|
+
var result = await swc.transform(code, {
|
|
971
|
+
filename: id,
|
|
972
|
+
configFile: false,
|
|
973
|
+
swcrc: false,
|
|
974
|
+
sourceMaps,
|
|
975
|
+
sourceFileName: sourceMaps ? id : void 0,
|
|
976
|
+
inputSourceMap: false,
|
|
977
|
+
env: {
|
|
978
|
+
targets: {
|
|
979
|
+
node: 9999
|
|
980
|
+
},
|
|
981
|
+
include: envIncludes
|
|
982
|
+
},
|
|
983
|
+
jsc: {
|
|
984
|
+
parser: {
|
|
985
|
+
syntax: "typescript",
|
|
986
|
+
tsx: true
|
|
987
|
+
},
|
|
988
|
+
transform: {
|
|
989
|
+
react: {
|
|
990
|
+
runtime: "preserve"
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
externalHelpers: false,
|
|
994
|
+
assumptions: {
|
|
995
|
+
setPublicClassFields: true,
|
|
996
|
+
privateFieldsAsProperties: true
|
|
997
|
+
}
|
|
998
|
+
},
|
|
999
|
+
isModule: !id.endsWith(".cjs")
|
|
1000
|
+
});
|
|
1001
|
+
return {
|
|
1002
|
+
code: result.code,
|
|
1003
|
+
map: sourceMaps ? result.map : void 0
|
|
1004
|
+
};
|
|
841
1005
|
}
|
|
842
1006
|
};
|
|
843
1007
|
}
|
|
@@ -859,6 +1023,7 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
859
1023
|
var runtime = this;
|
|
860
1024
|
var ctx = {
|
|
861
1025
|
acceptCallbacks: [],
|
|
1026
|
+
reactRefreshAcceptCallback: null,
|
|
862
1027
|
accept: function(deps, callback) {
|
|
863
1028
|
if (typeof deps === 'function' || !deps) {
|
|
864
1029
|
ctx.acceptCallbacks.push({
|
|
@@ -874,6 +1039,9 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
874
1039
|
ctx.acceptCallbacks.push({ deps: deps, fn: callback || function() {} });
|
|
875
1040
|
}
|
|
876
1041
|
},
|
|
1042
|
+
acceptReactRefresh: function(callback) {
|
|
1043
|
+
ctx.reactRefreshAcceptCallback = callback;
|
|
1044
|
+
},
|
|
877
1045
|
invalidate: function() { runtime.requestReload('module invalidated: ' + moduleId); },
|
|
878
1046
|
on: function() {},
|
|
879
1047
|
off: function() {},
|
|
@@ -907,9 +1075,18 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
907
1075
|
|
|
908
1076
|
isSelfAccepted(moduleId) {
|
|
909
1077
|
var ctx = this.moduleHotContexts[moduleId];
|
|
910
|
-
|
|
1078
|
+
var explicitlyAccepted = !!(ctx && ctx.acceptCallbacks.some(function(callback) {
|
|
911
1079
|
return callback.deps.indexOf(moduleId) !== -1;
|
|
912
1080
|
}));
|
|
1081
|
+
if (explicitlyAccepted) return { accepted: true, reactRefresh: false };
|
|
1082
|
+
if (!ctx || !ctx.reactRefreshAcceptCallback || !globalThis.__ReactRefresh) {
|
|
1083
|
+
return { accepted: false, reactRefresh: false };
|
|
1084
|
+
}
|
|
1085
|
+
var exports = this.loadExports(moduleId);
|
|
1086
|
+
return {
|
|
1087
|
+
accepted: ctx.refreshUtils.isReactRefreshBoundary(exports),
|
|
1088
|
+
reactRefresh: true
|
|
1089
|
+
};
|
|
913
1090
|
}
|
|
914
1091
|
|
|
915
1092
|
acceptsDependency(parentId, moduleId) {
|
|
@@ -924,8 +1101,13 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
924
1101
|
traversed.add(moduleId);
|
|
925
1102
|
updateSet.add(moduleId);
|
|
926
1103
|
|
|
927
|
-
|
|
928
|
-
|
|
1104
|
+
var selfAcceptance = this.isSelfAccepted(moduleId);
|
|
1105
|
+
if (selfAcceptance.accepted) {
|
|
1106
|
+
boundaries.push({
|
|
1107
|
+
boundary: moduleId,
|
|
1108
|
+
acceptedVia: moduleId,
|
|
1109
|
+
reactRefresh: selfAcceptance.reactRefresh
|
|
1110
|
+
});
|
|
929
1111
|
return true;
|
|
930
1112
|
}
|
|
931
1113
|
|
|
@@ -961,12 +1143,19 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
961
1143
|
|
|
962
1144
|
var callbacks = boundaries.map(function(item) {
|
|
963
1145
|
var ctx = this.moduleHotContexts[item.boundary];
|
|
1146
|
+
var selectedCallbacks = ctx ? ctx.acceptCallbacks.filter(function(callback) {
|
|
1147
|
+
return callback.deps.indexOf(item.acceptedVia) !== -1;
|
|
1148
|
+
}) : [];
|
|
1149
|
+
if (item.reactRefresh && ctx && ctx.reactRefreshAcceptCallback) {
|
|
1150
|
+
selectedCallbacks.push({
|
|
1151
|
+
deps: [item.acceptedVia],
|
|
1152
|
+
fn: function() { ctx.reactRefreshAcceptCallback(); }
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
964
1155
|
return {
|
|
965
1156
|
boundary: item.boundary,
|
|
966
1157
|
acceptedVia: item.acceptedVia,
|
|
967
|
-
callbacks:
|
|
968
|
-
return callback.deps.indexOf(item.acceptedVia) !== -1;
|
|
969
|
-
}) : []
|
|
1158
|
+
callbacks: selectedCallbacks
|
|
970
1159
|
};
|
|
971
1160
|
}, this);
|
|
972
1161
|
|
|
@@ -1017,5 +1206,5 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
1017
1206
|
globalThis.__rolldown_runtime__ = new ReactNativeDevRuntime();
|
|
1018
1207
|
`;
|
|
1019
1208
|
}
|
|
1020
|
-
export { buildNativeBundle, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
1209
|
+
export { buildNativeBundle, createNativeDevAssetRegistry, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
1021
1210
|
//# sourceMappingURL=createNativeDevEngine.native.js.map
|