vxrn 1.25.16 → 1.26.0
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/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/index.native.js +2 -0
- package/dist/index.native.js.map +1 -1
- package/dist/patches/builtInDepPatches.mjs +21 -0
- package/dist/patches/builtInDepPatches.mjs.map +1 -1
- package/dist/patches/builtInDepPatches.native.js +21 -0
- package/dist/patches/builtInDepPatches.native.js.map +1 -1
- package/dist/plugins/reactNativeDevServer.mjs +5 -0
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +5 -0
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/plugins/rnCodegenPlugin.mjs +16 -0
- package/dist/plugins/rnCodegenPlugin.mjs.map +1 -0
- package/dist/plugins/rnCodegenPlugin.native.js +16 -0
- package/dist/plugins/rnCodegenPlugin.native.js.map +1 -0
- package/dist/plugins/rnCodegenPlugin.test.mjs +239 -0
- package/dist/plugins/rnCodegenPlugin.test.mjs.map +1 -0
- package/dist/plugins/rnCodegenPlugin.test.native.js +242 -0
- package/dist/plugins/rnCodegenPlugin.test.native.js.map +1 -0
- package/dist/plugins/workletImportsPlugin.mjs +160 -0
- package/dist/plugins/workletImportsPlugin.mjs.map +1 -0
- package/dist/plugins/workletImportsPlugin.native.js +230 -0
- package/dist/plugins/workletImportsPlugin.native.js.map +1 -0
- package/dist/utils/createNativeDevEngine.mjs +198 -92
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +252 -99
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.test.mjs +775 -4
- package/dist/utils/createNativeDevEngine.test.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.test.native.js +836 -4
- package/dist/utils/createNativeDevEngine.test.native.js.map +1 -1
- package/dist/utils/patches.mjs +12 -5
- package/dist/utils/patches.mjs.map +1 -1
- package/dist/utils/patches.native.js +13 -5
- package/dist/utils/patches.native.js.map +1 -1
- package/dist/utils/patches.test.mjs +28 -0
- package/dist/utils/patches.test.mjs.map +1 -1
- package/dist/utils/patches.test.native.js +47 -0
- package/dist/utils/patches.test.native.js.map +1 -1
- package/dist/utils/scanDepsToOptimize.mjs +5 -1
- package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
- package/dist/utils/scanDepsToOptimize.native.js +5 -1
- package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
- package/package.json +19 -12
- package/src/index.ts +2 -0
- package/src/patches/builtInDepPatches.ts +25 -0
- package/src/plugins/reactNativeDevServer.ts +12 -0
- package/src/plugins/rnCodegenPlugin.test.ts +313 -0
- package/src/plugins/rnCodegenPlugin.ts +20 -0
- package/src/plugins/workletImportsPlugin.ts +226 -0
- package/src/utils/createNativeDevEngine.test.ts +877 -3
- package/src/utils/createNativeDevEngine.ts +259 -107
- package/src/utils/patches.test.ts +33 -0
- package/src/utils/patches.ts +17 -6
- package/src/utils/scanDepsToOptimize.ts +9 -0
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/patches/builtInDepPatches.d.ts.map +1 -1
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
- package/types/plugins/rnCodegenPlugin.d.ts +6 -0
- package/types/plugins/rnCodegenPlugin.d.ts.map +1 -0
- package/types/plugins/rnCodegenPlugin.test.d.ts +2 -0
- package/types/plugins/rnCodegenPlugin.test.d.ts.map +1 -0
- package/types/plugins/workletImportsPlugin.d.ts +8 -0
- package/types/plugins/workletImportsPlugin.d.ts.map +1 -0
- package/types/utils/createNativeDevEngine.d.ts +13 -0
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
- package/types/utils/patches.d.ts.map +1 -1
- package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createHash","isBuiltin","dirname","isAbsolute","join","statSync","rolldown","parseSync","getClosureVariables","JS_GLOBALS","transformHermesLoops","hermesCompatSWCPlugin","hermesLoopsPlugin","workletImportsPlugin","imports","selections","Map","Object","entries","map","source","names","Set","rejectRuntimeDependency","normalized","replace","test","Error","name","options","nativeOptions","modules","instance","resolveId","importer","get","length","kind","resolved","resolve","skipSelf","external","id","throwIfNoEntry","isFile","key","update","JSON","stringify","digest","slice","set","entry","moduleParsed","info","code","keys","some","includes","program","errors","lang","endsWith","message","node","body","type","value","specifier","specifiers","imported","local","load","selected","outerContext","innerEntry","bundle","cwd","input","platform","transform","shimMissingExports","plugins","_importer","index","addWatchFile","packageJsonPath","output","generate","format","chunk","dynamicImports","file","watchFiles","close","loader","loaderCode","parsed","captures"],"sources":["../../src/plugins/workletImportsPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { createHash } from "crypto";
|
|
2
|
+
import { isBuiltin } from "module";
|
|
3
|
+
import { dirname, isAbsolute, join } from "path";
|
|
4
|
+
import { statSync } from "fs";
|
|
5
|
+
import { rolldown } from "rolldown";
|
|
6
|
+
import { parseSync } from "oxc-parser";
|
|
7
|
+
import { getClosureVariables, JS_GLOBALS, transformHermesLoops } from "@vxrn/compiler";
|
|
8
|
+
import { hermesCompatSWCPlugin, hermesLoopsPlugin } from "../utils/createNativeDevEngine.native.js";
|
|
9
|
+
function workletImportsPlugin(imports) {
|
|
10
|
+
var selections = new Map(Object.entries(imports).map(function (param) {
|
|
11
|
+
var [source, names] = param;
|
|
12
|
+
return [source, [...new Set(names)]];
|
|
13
|
+
}));
|
|
14
|
+
var rejectRuntimeDependency = function (source) {
|
|
15
|
+
var normalized = source.replace(/\\/g, "/");
|
|
16
|
+
if (isBuiltin(source) || /(?:^|\/node_modules\/)(?:react|react-native|react-native-worklets|react-native-reanimated|expo-modules-core)(?:\/|$)/.test(normalized) || /(?:^|\/node_modules\/)@react-native\//.test(normalized)) {
|
|
17
|
+
throw new Error(`[worklet imports] runtime dependency ${source} is not pure JavaScript`);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
name: "vxrn:worklet-imports",
|
|
22
|
+
options(nativeOptions) {
|
|
23
|
+
var modules = /* @__PURE__ */new Map();
|
|
24
|
+
var instance = {
|
|
25
|
+
name: "vxrn:worklet-imports:bundle",
|
|
26
|
+
async resolveId(source, importer, options) {
|
|
27
|
+
var _statSync;
|
|
28
|
+
var names = selections.get(source);
|
|
29
|
+
if (!names) return;
|
|
30
|
+
if (!names.length) throw new Error(`[worklet imports] no exports selected for ${source}`);
|
|
31
|
+
if (options.kind !== "import-statement") {
|
|
32
|
+
throw new Error(`[worklet imports] ${source} requires a static ESM import`);
|
|
33
|
+
}
|
|
34
|
+
rejectRuntimeDependency(source);
|
|
35
|
+
var resolved = await this.resolve(source, importer, {
|
|
36
|
+
skipSelf: true
|
|
37
|
+
});
|
|
38
|
+
if (!resolved || resolved.external || !isAbsolute(resolved.id) || !((_statSync = statSync(resolved.id, {
|
|
39
|
+
throwIfNoEntry: false
|
|
40
|
+
})) === null || _statSync === void 0 ? void 0 : _statSync.isFile())) {
|
|
41
|
+
throw new Error(`[worklet imports] ${source} must resolve to a JavaScript file`);
|
|
42
|
+
}
|
|
43
|
+
rejectRuntimeDependency(resolved.id);
|
|
44
|
+
var key = createHash("sha256").update(JSON.stringify([resolved.id, names])).digest("hex").slice(0, 16);
|
|
45
|
+
var id = join(dirname(resolved.id), `__one_worklet_imports_${key}.js`);
|
|
46
|
+
modules.set(id, {
|
|
47
|
+
entry: resolved.id,
|
|
48
|
+
names,
|
|
49
|
+
key
|
|
50
|
+
});
|
|
51
|
+
return id;
|
|
52
|
+
},
|
|
53
|
+
moduleParsed(info) {
|
|
54
|
+
if (!info.code || ![...selections.keys()].some(function (source2) {
|
|
55
|
+
return info.code.includes(source2);
|
|
56
|
+
})) return;
|
|
57
|
+
var {
|
|
58
|
+
program,
|
|
59
|
+
errors
|
|
60
|
+
} = parseSync(info.id, info.code, {
|
|
61
|
+
lang: /\.[cm]?ts$/.test(info.id) ? "ts" : info.id.endsWith(".tsx") ? "tsx" : "jsx"
|
|
62
|
+
});
|
|
63
|
+
if (errors.length) throw new Error(errors[0].message);
|
|
64
|
+
var _iteratorNormalCompletion = true,
|
|
65
|
+
_didIteratorError = false,
|
|
66
|
+
_iteratorError = void 0;
|
|
67
|
+
try {
|
|
68
|
+
for (var _iterator = program.body[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
69
|
+
var node = _step.value;
|
|
70
|
+
var _node_source;
|
|
71
|
+
if (node.type !== "ImportDeclaration" && node.type !== "ExportNamedDeclaration") continue;
|
|
72
|
+
var source = (_node_source = node.source) === null || _node_source === void 0 ? void 0 : _node_source.value;
|
|
73
|
+
if (!source) continue;
|
|
74
|
+
var names = selections.get(source);
|
|
75
|
+
if (!names) continue;
|
|
76
|
+
var _iteratorNormalCompletion1 = true,
|
|
77
|
+
_didIteratorError1 = false,
|
|
78
|
+
_iteratorError1 = void 0;
|
|
79
|
+
try {
|
|
80
|
+
for (var _iterator1 = node.specifiers[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
81
|
+
var specifier = _step1.value;
|
|
82
|
+
var imported = specifier.type === "ImportDefaultSpecifier" ? "default" : specifier.type === "ImportSpecifier" ? specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value : specifier.type === "ExportSpecifier" ? specifier.local.type === "Identifier" ? specifier.local.name : specifier.local.value : void 0;
|
|
83
|
+
if (imported !== void 0 && !names.includes(imported)) {
|
|
84
|
+
throw new Error(`[worklet imports] ${info.id} imports unselected export ${imported} from ${source}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
} catch (err) {
|
|
88
|
+
_didIteratorError1 = true;
|
|
89
|
+
_iteratorError1 = err;
|
|
90
|
+
} finally {
|
|
91
|
+
try {
|
|
92
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
93
|
+
_iterator1.return();
|
|
94
|
+
}
|
|
95
|
+
} finally {
|
|
96
|
+
if (_didIteratorError1) {
|
|
97
|
+
throw _iteratorError1;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
} catch (err) {
|
|
103
|
+
_didIteratorError = true;
|
|
104
|
+
_iteratorError = err;
|
|
105
|
+
} finally {
|
|
106
|
+
try {
|
|
107
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
108
|
+
_iterator.return();
|
|
109
|
+
}
|
|
110
|
+
} finally {
|
|
111
|
+
if (_didIteratorError) {
|
|
112
|
+
throw _iteratorError;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
async load(id) {
|
|
118
|
+
var selected = modules.get(id);
|
|
119
|
+
if (!selected) return;
|
|
120
|
+
var outerContext = this;
|
|
121
|
+
var innerEntry = "\0one-worklet-import-entry";
|
|
122
|
+
var bundle = await rolldown({
|
|
123
|
+
cwd: nativeOptions.cwd,
|
|
124
|
+
input: innerEntry,
|
|
125
|
+
platform: "neutral",
|
|
126
|
+
resolve: nativeOptions.resolve,
|
|
127
|
+
transform: nativeOptions.transform,
|
|
128
|
+
shimMissingExports: false,
|
|
129
|
+
plugins: [{
|
|
130
|
+
name: "vxrn:pure-worklet-module",
|
|
131
|
+
resolveId(source, _importer, options) {
|
|
132
|
+
if (source === innerEntry) return source;
|
|
133
|
+
if (options.kind === "dynamic-import") {
|
|
134
|
+
throw new Error(`[worklet imports] dynamic imports are unsupported in ${selected.entry}`);
|
|
135
|
+
}
|
|
136
|
+
rejectRuntimeDependency(source);
|
|
137
|
+
},
|
|
138
|
+
load(source) {
|
|
139
|
+
if (source === innerEntry) {
|
|
140
|
+
return `export { ${selected.names.map(function (name, index) {
|
|
141
|
+
return `${JSON.stringify(name)} as __export${index}`;
|
|
142
|
+
}).join(", ")} } from ${JSON.stringify(selected.entry)};`;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
moduleParsed(info) {
|
|
146
|
+
rejectRuntimeDependency(info.id);
|
|
147
|
+
if (isAbsolute(info.id)) outerContext.addWatchFile(info.id);
|
|
148
|
+
if (info.packageJsonPath) outerContext.addWatchFile(info.packageJsonPath);
|
|
149
|
+
}
|
|
150
|
+
}, hermesCompatSWCPlugin(false), hermesLoopsPlugin()]
|
|
151
|
+
});
|
|
152
|
+
var code;
|
|
153
|
+
try {
|
|
154
|
+
var _ref;
|
|
155
|
+
var _transformHermesLoops;
|
|
156
|
+
var output = await bundle.generate({
|
|
157
|
+
format: "iife",
|
|
158
|
+
name: "__oneWorkletBundle"
|
|
159
|
+
});
|
|
160
|
+
var chunk = output.output[0];
|
|
161
|
+
if (output.output.length !== 1 || chunk.type !== "chunk" || chunk.imports.length || chunk.dynamicImports.length) {
|
|
162
|
+
throw new Error(`[worklet imports] ${selected.entry} must produce one self-contained JavaScript module`);
|
|
163
|
+
}
|
|
164
|
+
code = (_ref = (_transformHermesLoops = transformHermesLoops(chunk.code, id)) === null || _transformHermesLoops === void 0 ? void 0 : _transformHermesLoops.code) !== null && _ref !== void 0 ? _ref : chunk.code;
|
|
165
|
+
var _iteratorNormalCompletion = true,
|
|
166
|
+
_didIteratorError = false,
|
|
167
|
+
_iteratorError = void 0;
|
|
168
|
+
try {
|
|
169
|
+
for (var _iterator = (await bundle.watchFiles)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
170
|
+
var file = _step.value;
|
|
171
|
+
if (isAbsolute(file)) outerContext.addWatchFile(file);
|
|
172
|
+
}
|
|
173
|
+
} catch (err) {
|
|
174
|
+
_didIteratorError = true;
|
|
175
|
+
_iteratorError = err;
|
|
176
|
+
} finally {
|
|
177
|
+
try {
|
|
178
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
179
|
+
_iterator.return();
|
|
180
|
+
}
|
|
181
|
+
} finally {
|
|
182
|
+
if (_didIteratorError) {
|
|
183
|
+
throw _iteratorError;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
} finally {
|
|
188
|
+
await bundle.close();
|
|
189
|
+
}
|
|
190
|
+
var loader = `__oneLoadWorkletModule_${selected.key}`;
|
|
191
|
+
var loaderCode = `function ${loader}() {
|
|
192
|
+
'worklet';
|
|
193
|
+
const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());
|
|
194
|
+
let namespace = cache.get(${loader});
|
|
195
|
+
if (namespace === undefined) {
|
|
196
|
+
${code}
|
|
197
|
+
namespace = __oneWorkletBundle;
|
|
198
|
+
cache.set(${loader}, namespace);
|
|
199
|
+
}
|
|
200
|
+
return namespace;
|
|
201
|
+
}`;
|
|
202
|
+
var parsed = parseSync(id, loaderCode, {
|
|
203
|
+
lang: "js"
|
|
204
|
+
});
|
|
205
|
+
if (parsed.errors.length) throw new Error(parsed.errors[0].message);
|
|
206
|
+
var captures = getClosureVariables(parsed.program.body[0], /* @__PURE__ */new Set([...JS_GLOBALS, "arguments"]));
|
|
207
|
+
if (captures.length) {
|
|
208
|
+
throw new Error(`[worklet imports] ${selected.entry} requires unsupported runtime globals: ${captures.join(", ")}`);
|
|
209
|
+
}
|
|
210
|
+
return `${loaderCode}
|
|
211
|
+
${selected.names.map(function (name, index) {
|
|
212
|
+
return `
|
|
213
|
+
function __oneExport${index}(...args) {
|
|
214
|
+
'worklet';
|
|
215
|
+
return (0, ${loader}().__export${index})(...args);
|
|
216
|
+
}
|
|
217
|
+
export { __oneExport${index} as ${JSON.stringify(name)} };
|
|
218
|
+
`;
|
|
219
|
+
}).join("\n")}`;
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
return {
|
|
223
|
+
...nativeOptions,
|
|
224
|
+
plugins: [instance, nativeOptions.plugins]
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
export { workletImportsPlugin };
|
|
230
|
+
//# sourceMappingURL=workletImportsPlugin.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createHash","isBuiltin","dirname","isAbsolute","join","statSync","rolldown","parseSync","getClosureVariables","JS_GLOBALS","transformHermesLoops","hermesCompatSWCPlugin","hermesLoopsPlugin","workletImportsPlugin","imports","selections","Map","Object","entries","map","param","source","names","Set","rejectRuntimeDependency","normalized","replace","test","Error","name","options","nativeOptions","modules","instance","resolveId","importer","_statSync","get","length","kind","resolved","resolve","skipSelf","external","id","throwIfNoEntry","isFile","key","update","JSON","stringify","digest","slice","set","entry","moduleParsed","info","code","keys","some","source2","includes","program","errors","lang","endsWith","message","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","body","Symbol","iterator","_step","next","done","node","value","_node_source","type","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","specifiers","_step1","specifier","imported","local","err","return","load","selected","outerContext","innerEntry","bundle","cwd","input","platform","transform","shimMissingExports","plugins","_importer","index","addWatchFile","packageJsonPath","_ref","_transformHermesLoops","output","generate","format","chunk","dynamicImports","watchFiles"],"sources":["../../src/plugins/workletImportsPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,9 +3,10 @@ import { basename, dirname, extname, join, relative, resolve } from "node:path";
|
|
|
3
3
|
import { copyFileSync, mkdirSync, readFileSync, readdirSync, realpathSync } from "node:fs";
|
|
4
4
|
import { pathToFileURL } from "node:url";
|
|
5
5
|
import { loadEnv, normalizePath } from "vite";
|
|
6
|
+
import { shouldStripFlow, transformHermesAsync } from "@vxrn/compiler";
|
|
6
7
|
import { DEFAULT_ASSET_EXTS } from "../constants/defaults.mjs";
|
|
7
8
|
import { getNativePrelude } from "../runtime/native-prelude.mjs";
|
|
8
|
-
|
|
9
|
+
import { rnCodegenPlugin } from "../plugins/rnCodegenPlugin.mjs";
|
|
9
10
|
const 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"];
|
|
10
11
|
const HERMES_ASYNC_TRANSFORMS = ["transform-async-to-generator"];
|
|
11
12
|
function getHermesSWCIncludes(dev) {
|
|
@@ -55,6 +56,8 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
55
56
|
})
|
|
56
57
|
};
|
|
57
58
|
})();
|
|
59
|
+
const userDefines = {};
|
|
60
|
+
for (const [key, value] of Object.entries(globalThis.__vxrnNativeUserDefine || {})) userDefines[key] = typeof value === "string" ? value : JSON.stringify(value);
|
|
58
61
|
const mode = dev ? "development" : "production";
|
|
59
62
|
const publicEnv = loadEnv(mode, root, ["VITE_", "EXPO_PUBLIC_"]);
|
|
60
63
|
const envDefines = {};
|
|
@@ -79,6 +82,7 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
79
82
|
runtime: "classic"
|
|
80
83
|
},
|
|
81
84
|
define: {
|
|
85
|
+
...userDefines,
|
|
82
86
|
...envDefines,
|
|
83
87
|
"process.env.NODE_ENV": JSON.stringify(mode),
|
|
84
88
|
"process.env.VXRN_REACT_19": "false",
|
|
@@ -108,12 +112,14 @@ function getNativeTransformConfig(platform, dev, root) {
|
|
|
108
112
|
function getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest, onAsset, sourceMaps = false) {
|
|
109
113
|
return [...(globalThis.__vxrnAddNativePlugins || []), serverFileExclusionPlugin(), environmentGuardPlugin(), hmrClientNoopPlugin(), cssStubPlugin(), viteImportGlobPlugin({
|
|
110
114
|
root
|
|
111
|
-
}), vxrnCompilerPlugin(platform, dev, root, sourceMaps),
|
|
115
|
+
}), vxrnCompilerPlugin(platform, dev, root, sourceMaps), rnCodegenPlugin({
|
|
116
|
+
projectRoot: root
|
|
117
|
+
}), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
|
|
112
118
|
root,
|
|
113
119
|
platform,
|
|
114
120
|
assetsDest,
|
|
115
121
|
onAsset
|
|
116
|
-
}), hermesCompatSWCPlugin(dev, sourceMaps)];
|
|
122
|
+
}), hermesCompatSWCPlugin(dev, sourceMaps), hermesLoopsPlugin(sourceMaps)];
|
|
117
123
|
}
|
|
118
124
|
function getNativeOutputOptions(prelude, sourcemap) {
|
|
119
125
|
return {
|
|
@@ -125,7 +131,7 @@ function getNativeOutputOptions(prelude, sourcemap) {
|
|
|
125
131
|
};
|
|
126
132
|
}
|
|
127
133
|
function normalizeNativeCommonJSInterop(code) {
|
|
128
|
-
return code.replace(/(\b__toESM(?:\$\d+)?\(\s*require[\w$]*\(\)\s*),\s*1(\s*\))/g, "$1$2");
|
|
134
|
+
return code.replace(/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g, "$1$2");
|
|
129
135
|
}
|
|
130
136
|
function postProcessNativeBundle(code) {
|
|
131
137
|
code = normalizeNativeCommonJSInterop(code);
|
|
@@ -167,36 +173,17 @@ async function downlevelClassFieldsInBundle(code) {
|
|
|
167
173
|
const runtimeEnd = endIdx + 12;
|
|
168
174
|
const runtimeSection = code.slice(startIdx, runtimeEnd);
|
|
169
175
|
const originalNewlines = runtimeSection.match(/\n/g)?.length ?? 0;
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
minify: true,
|
|
178
|
-
env: {
|
|
179
|
-
targets: {
|
|
180
|
-
node: 9999
|
|
181
|
-
},
|
|
182
|
-
include: [...HERMES_CLASS_TRANSFORMS]
|
|
183
|
-
},
|
|
184
|
-
jsc: {
|
|
185
|
-
parser: {
|
|
186
|
-
syntax: "ecmascript"
|
|
187
|
-
},
|
|
188
|
-
transform: {
|
|
189
|
-
react: {
|
|
190
|
-
runtime: "preserve"
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
externalHelpers: false,
|
|
194
|
-
assumptions: {
|
|
195
|
-
setPublicClassFields: true,
|
|
196
|
-
privateFieldsAsProperties: true
|
|
197
|
-
}
|
|
176
|
+
const {
|
|
177
|
+
transformSync
|
|
178
|
+
} = await import("oxc-transform");
|
|
179
|
+
const result = transformSync("rolldown-runtime.js", runtimeSection, {
|
|
180
|
+
target: "es2020",
|
|
181
|
+
assumptions: {
|
|
182
|
+
setPublicClassFields: true
|
|
198
183
|
}
|
|
199
|
-
})
|
|
184
|
+
});
|
|
185
|
+
if (result.errors?.length) throw new Error(result.errors.map(e => e.message).join("\n"));
|
|
186
|
+
const transformedCode = result.code.trimEnd();
|
|
200
187
|
const transformed = transformedCode.includes(startMarker) ? transformedCode : `${startMarker}
|
|
201
188
|
${transformedCode}`;
|
|
202
189
|
const transformedNewlines = transformed.match(/\n/g)?.length ?? 0;
|
|
@@ -333,7 +320,7 @@ try {
|
|
|
333
320
|
} of result.updates) if (update.type === "Patch" && update.code) onHmrUpdate?.({
|
|
334
321
|
type: "hmr:update",
|
|
335
322
|
clientId,
|
|
336
|
-
code: update.code,
|
|
323
|
+
code: normalizeNativeCommonJSInterop(update.code),
|
|
337
324
|
changedIds: update.changedIds,
|
|
338
325
|
seq: update.seq
|
|
339
326
|
});else if (update.type === "FullReload") onHmrUpdate?.({
|
|
@@ -603,28 +590,111 @@ function vxrnCompilerPlugin(platform, dev, projectRoot = process.cwd(), sourceMa
|
|
|
603
590
|
reactForRNVersion: "19"
|
|
604
591
|
};
|
|
605
592
|
let babelOptions = compiler.getBabelOptions(props);
|
|
606
|
-
|
|
607
|
-
|
|
593
|
+
let curCode = code;
|
|
594
|
+
const intermediateMaps = [];
|
|
595
|
+
const isWorkletPlugin = entry => {
|
|
596
|
+
if (!entry) return false;
|
|
597
|
+
const name = typeof entry === "string" ? entry : Array.isArray(entry) ? entry[0] : null;
|
|
598
|
+
return typeof name === "string" && (name.includes("react-native-worklets") || name.includes("react-native-reanimated"));
|
|
599
|
+
};
|
|
600
|
+
const workletEntry = babelOptions?.plugins?.find(isWorkletPlugin);
|
|
601
|
+
const workletPluginOptions = Array.isArray(workletEntry) ? workletEntry[1] : void 0;
|
|
602
|
+
const useWorklets = compiler.isNativeWorkletsEnabled() && (Boolean(workletEntry) || compiler.shouldTransformWorklets({
|
|
603
|
+
id,
|
|
604
|
+
code
|
|
605
|
+
}));
|
|
606
|
+
const compilerPluginIndex = babelOptions?.plugins?.findIndex(x => Array.isArray(x) && x[0] === "babel-plugin-react-compiler") ?? -1;
|
|
607
|
+
if (compilerPluginIndex !== -1) {
|
|
608
|
+
if (useWorklets) {
|
|
609
|
+
const prepared = compiler.prepareWorkletsForReactCompiler(id, curCode, sourceMaps);
|
|
610
|
+
if (prepared) {
|
|
611
|
+
curCode = prepared.code;
|
|
612
|
+
if (prepared.map) intermediateMaps.push(prepared.map);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
const compilerTarget = babelOptions.plugins[compilerPluginIndex][1]?.target ?? "19";
|
|
616
|
+
const compilerOut = await compiler.transformOxcReactCompiler(id, curCode, compilerTarget, sourceMaps);
|
|
617
|
+
if (compilerOut?.code) {
|
|
618
|
+
curCode = compilerOut.code;
|
|
619
|
+
if (sourceMaps && compilerOut.map) intermediateMaps.push(compilerOut.map);
|
|
620
|
+
}
|
|
621
|
+
babelOptions.plugins.splice(compilerPluginIndex, 1);
|
|
622
|
+
if (babelOptions.plugins.length === 0) babelOptions = null;
|
|
623
|
+
}
|
|
624
|
+
if (useWorklets) {
|
|
625
|
+
const workletOut = await compiler.transformWorklets(id, curCode, sourceMaps, {
|
|
626
|
+
projectRoot,
|
|
627
|
+
...workletPluginOptions
|
|
628
|
+
});
|
|
629
|
+
if (workletOut?.code) {
|
|
630
|
+
curCode = workletOut.code;
|
|
631
|
+
if (sourceMaps && workletOut.map) intermediateMaps.push(workletOut.map);
|
|
632
|
+
}
|
|
633
|
+
if (babelOptions?.plugins) {
|
|
634
|
+
babelOptions.plugins = babelOptions.plugins.filter(entry => !isWorkletPlugin(entry));
|
|
635
|
+
if (babelOptions.plugins.length === 0) babelOptions = null;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
if (!babelOptions && !needsRefresh) {
|
|
639
|
+
if (curCode !== code) {
|
|
640
|
+
let finalMap = void 0;
|
|
641
|
+
if (sourceMaps && intermediateMaps.length > 0) if (intermediateMaps.length === 1) finalMap = intermediateMaps[0];else {
|
|
642
|
+
const remapping = (await import("@jridgewell/remapping")).default;
|
|
643
|
+
finalMap = remapping(intermediateMaps.slice().reverse(), () => null);
|
|
644
|
+
}
|
|
645
|
+
return {
|
|
646
|
+
code: curCode,
|
|
647
|
+
map: finalMap
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
if (sourceMaps && babelOptions) {
|
|
608
653
|
babelOptions = {
|
|
609
654
|
...babelOptions,
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
refreshReg: "__vxrnRefreshReg",
|
|
613
|
-
refreshSig: "__vxrnRefreshSig"
|
|
614
|
-
}]]
|
|
655
|
+
sourceMaps: true,
|
|
656
|
+
sourceFileName: id
|
|
615
657
|
};
|
|
658
|
+
delete babelOptions.inputSourceMap;
|
|
616
659
|
}
|
|
617
|
-
if (
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
660
|
+
if (babelOptions) {
|
|
661
|
+
const result = await compiler.transformBabel(id, curCode, babelOptions);
|
|
662
|
+
if (result?.code) {
|
|
663
|
+
curCode = result.code;
|
|
664
|
+
if (sourceMaps && result.map) intermediateMaps.push(result.map);
|
|
665
|
+
if (!needsRefresh) {
|
|
666
|
+
let finalMap = void 0;
|
|
667
|
+
if (sourceMaps && intermediateMaps.length > 0) if (intermediateMaps.length === 1) finalMap = intermediateMaps[0];else {
|
|
668
|
+
const remapping = (await import("@jridgewell/remapping")).default;
|
|
669
|
+
finalMap = remapping(intermediateMaps.slice().reverse(), () => null);
|
|
670
|
+
}
|
|
671
|
+
return {
|
|
672
|
+
code: curCode,
|
|
673
|
+
map: finalMap
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
if (needsRefresh) {
|
|
679
|
+
const {
|
|
680
|
+
transformSync
|
|
681
|
+
} = await import("oxc-transform-react");
|
|
682
|
+
const jsxImportSource = compiler.configuration?.enableNativewind && !id.includes("node_modules") ? "nativewind" : "react";
|
|
683
|
+
const res = transformSync(id, curCode, {
|
|
684
|
+
jsx: {
|
|
685
|
+
development: dev,
|
|
686
|
+
runtime: "automatic",
|
|
687
|
+
importSource: jsxImportSource,
|
|
688
|
+
refresh: {
|
|
689
|
+
refreshReg: "__vxrnRefreshReg",
|
|
690
|
+
refreshSig: "__vxrnRefreshSig"
|
|
691
|
+
}
|
|
692
|
+
},
|
|
693
|
+
reactCompiler: false,
|
|
694
|
+
sourcemap: sourceMaps
|
|
695
|
+
});
|
|
696
|
+
if (res.fatal) throw new Error(`[vxrn:compiler] oxc react transform failed on ${id}: ${(res.errors ?? []).map(e => e.message ?? String(e)).join(", ")}`);
|
|
697
|
+
const header = `var __prevRefreshReg = globalThis.$RefreshReg$;
|
|
628
698
|
var __prevRefreshSig = globalThis.$RefreshSig$;
|
|
629
699
|
if (globalThis.__ReactRefresh) {
|
|
630
700
|
globalThis.$RefreshReg$ = function(type, id) {
|
|
@@ -636,7 +706,8 @@ if (globalThis.__ReactRefresh) {
|
|
|
636
706
|
var __vxrnRefreshReg = globalThis.$RefreshReg$;
|
|
637
707
|
var __vxrnRefreshSig = globalThis.$RefreshSig$;
|
|
638
708
|
|
|
639
|
-
|
|
709
|
+
`;
|
|
710
|
+
const footer = `
|
|
640
711
|
|
|
641
712
|
globalThis.$RefreshReg$ = __prevRefreshReg;
|
|
642
713
|
globalThis.$RefreshSig$ = __prevRefreshSig;
|
|
@@ -648,9 +719,24 @@ if (import.meta.hot) {
|
|
|
648
719
|
});
|
|
649
720
|
}
|
|
650
721
|
`;
|
|
722
|
+
let out;
|
|
723
|
+
let finalMap = void 0;
|
|
724
|
+
if (sourceMaps) {
|
|
725
|
+
const MagicString = (await import("magic-string")).default;
|
|
726
|
+
const ms = new MagicString(res.code);
|
|
727
|
+
ms.prepend(header);
|
|
728
|
+
ms.append(footer);
|
|
729
|
+
out = ms.toString();
|
|
730
|
+
const allMaps = [ms.generateMap({
|
|
731
|
+
source: id,
|
|
732
|
+
hires: true
|
|
733
|
+
}), res.map, ...intermediateMaps.slice().reverse()].filter(Boolean);
|
|
734
|
+
const remapping = (await import("@jridgewell/remapping")).default;
|
|
735
|
+
finalMap = remapping(allMaps, () => null);
|
|
736
|
+
} else out = header + res.code + footer;
|
|
651
737
|
return {
|
|
652
738
|
code: out,
|
|
653
|
-
map:
|
|
739
|
+
map: finalMap
|
|
654
740
|
};
|
|
655
741
|
}
|
|
656
742
|
}
|
|
@@ -661,7 +747,7 @@ function flowStripPlugin() {
|
|
|
661
747
|
name: "vxrn:flow-strip",
|
|
662
748
|
transform: {
|
|
663
749
|
async handler(code, id) {
|
|
664
|
-
if (!
|
|
750
|
+
if (!shouldStripFlow(id, code)) return;
|
|
665
751
|
const result = await (await import("fast-flow-transform")).default({
|
|
666
752
|
filename: id,
|
|
667
753
|
source: code,
|
|
@@ -805,53 +891,73 @@ function copyNativeAssetFiles(asset, assetsDest, platform) {
|
|
|
805
891
|
}
|
|
806
892
|
}
|
|
807
893
|
function hermesCompatSWCPlugin(dev, sourceMaps = false) {
|
|
808
|
-
let
|
|
894
|
+
let oxc = null;
|
|
809
895
|
return {
|
|
810
896
|
name: "vxrn:hermes-compat",
|
|
811
897
|
async transform(code, id) {
|
|
812
898
|
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
813
899
|
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
814
900
|
const hasClass = code.includes("class ") || code.includes("class{");
|
|
815
|
-
const hasAsync = code.includes("async
|
|
901
|
+
const hasAsync = code.includes("async");
|
|
816
902
|
const hasBlockScopedLoop = /\bfor\s*\(\s*(?:const|let)\b/.test(code);
|
|
817
903
|
if (!hasClass && !hasAsync && !hasBlockScopedLoop) return;
|
|
818
|
-
|
|
819
|
-
if (
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
sourceMaps,
|
|
826
|
-
sourceFileName: sourceMaps ? id : void 0,
|
|
827
|
-
inputSourceMap: false,
|
|
828
|
-
env: {
|
|
829
|
-
targets: {
|
|
830
|
-
node: 9999
|
|
831
|
-
},
|
|
832
|
-
include: envIncludes
|
|
833
|
-
},
|
|
834
|
-
jsc: {
|
|
835
|
-
parser: {
|
|
836
|
-
syntax: "typescript",
|
|
837
|
-
tsx: true
|
|
838
|
-
},
|
|
839
|
-
transform: {
|
|
840
|
-
react: {
|
|
841
|
-
runtime: "preserve"
|
|
842
|
-
}
|
|
843
|
-
},
|
|
844
|
-
externalHelpers: false,
|
|
904
|
+
let output;
|
|
905
|
+
if (code.length <= 5e5) {
|
|
906
|
+
if (!oxc) oxc = await import("oxc-transform");
|
|
907
|
+
const lang = /\.[cm]?ts$/.test(id) ? "ts" : id.endsWith(".tsx") ? "tsx" : "jsx";
|
|
908
|
+
const result = oxc.transformSync(id, code, {
|
|
909
|
+
lang,
|
|
910
|
+
target: "es2020",
|
|
845
911
|
assumptions: {
|
|
846
|
-
setPublicClassFields: true
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
912
|
+
setPublicClassFields: true
|
|
913
|
+
},
|
|
914
|
+
jsx: "preserve",
|
|
915
|
+
sourcemap: sourceMaps,
|
|
916
|
+
sourceType: id.endsWith(".cjs") ? "script" : "module"
|
|
917
|
+
});
|
|
918
|
+
if (result.errors?.length) {
|
|
919
|
+
const err = result.errors[0];
|
|
920
|
+
throw new Error(err.message + (err.codeframe ? `
|
|
921
|
+
${err.codeframe}` : ""));
|
|
922
|
+
}
|
|
923
|
+
output = {
|
|
924
|
+
code: result.code,
|
|
925
|
+
map: sourceMaps ? result.map : void 0
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
const lowered = await transformHermesAsync(output?.code ?? code, id, sourceMaps);
|
|
929
|
+
if (!lowered) return output;
|
|
930
|
+
if (lowered.map && output?.map) {
|
|
931
|
+
const remapping = (await import("@jridgewell/remapping")).default;
|
|
932
|
+
lowered.map = remapping([lowered.map, output.map], () => null);
|
|
933
|
+
}
|
|
934
|
+
return lowered;
|
|
935
|
+
}
|
|
936
|
+
};
|
|
937
|
+
}
|
|
938
|
+
const hermesCompatPlugin = hermesCompatSWCPlugin;
|
|
939
|
+
function hermesLoopsPlugin(sourceMaps = false) {
|
|
940
|
+
let compiler = null;
|
|
941
|
+
return {
|
|
942
|
+
name: "vxrn:hermes-loops",
|
|
943
|
+
async transform(code, id) {
|
|
944
|
+
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
945
|
+
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
946
|
+
if (!compiler) compiler = await import("@vxrn/compiler");
|
|
947
|
+
const result = compiler.transformHermesLoops(code, id);
|
|
948
|
+
if (!result) return;
|
|
949
|
+
if (!sourceMaps) return {
|
|
950
|
+
code: result.code,
|
|
951
|
+
map: null
|
|
952
|
+
};
|
|
953
|
+
if (result.maps.length === 1) return {
|
|
954
|
+
code: result.code,
|
|
955
|
+
map: result.maps[0]
|
|
956
|
+
};
|
|
957
|
+
const remapping = (await import("@jridgewell/remapping")).default;
|
|
852
958
|
return {
|
|
853
959
|
code: result.code,
|
|
854
|
-
map:
|
|
960
|
+
map: remapping(result.maps.slice().reverse(), () => null)
|
|
855
961
|
};
|
|
856
962
|
}
|
|
857
963
|
};
|
|
@@ -1057,5 +1163,5 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
|
|
|
1057
1163
|
globalThis.__rolldown_runtime__ = new ReactNativeDevRuntime();
|
|
1058
1164
|
`;
|
|
1059
1165
|
}
|
|
1060
|
-
export { buildNativeBundle, createNativeDevAssetRegistry, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
1166
|
+
export { buildNativeBundle, createNativeDevAssetRegistry, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatPlugin, hermesCompatSWCPlugin, hermesLoopsPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
|
|
1061
1167
|
//# sourceMappingURL=createNativeDevEngine.mjs.map
|