@vxrn/compiler 2.0.0-beta.33.1 → 2.0.0-beta.362.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cache.cjs +112 -109
- package/dist/cjs/configure.cjs +26 -28
- package/dist/cjs/constants.cjs +56 -60
- package/dist/cjs/index.cjs +428 -438
- package/dist/cjs/reactNativeCodegen.cjs +105 -114
- package/dist/cjs/reactNativeViewConfig.cjs +362 -381
- package/dist/cjs/refresh-runtime.cjs +390 -397
- package/dist/cjs/transformBabel.cjs +247 -221
- package/dist/cjs/transformHermesAsync.cjs +36 -47
- package/dist/cjs/transformHermesClasses.cjs +51 -0
- package/dist/cjs/transformHermesLoops.cjs +279 -281
- package/dist/cjs/transformSWC.cjs +183 -200
- package/dist/cjs/transformWorklets.cjs +107 -95
- package/dist/cjs/types.cjs +9 -11
- package/dist/cjs/workletUtils.cjs +30 -0
- package/dist/cjs/worklets/autoworklet.cjs +277 -222
- package/dist/cjs/worklets/globals.cjs +145 -60
- package/dist/cjs/worklets/hash.cjs +23 -27
- package/dist/cjs/worklets/scope.cjs +338 -359
- package/dist/cjs/worklets/serialize.cjs +73 -75
- package/dist/cjs/worklets/transform.cjs +217 -222
- package/dist/cjs/worklets/types.cjs +9 -11
- package/dist/esm/cache.mjs +96 -89
- package/dist/esm/cache.mjs.map +1 -1
- package/dist/esm/configure.mjs +11 -10
- package/dist/esm/configure.mjs.map +1 -1
- package/dist/esm/constants.mjs +41 -41
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/index.js +426 -420
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +426 -420
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/reactNativeCodegen.mjs +90 -88
- package/dist/esm/reactNativeCodegen.mjs.map +1 -1
- package/dist/esm/reactNativeViewConfig.mjs +347 -362
- package/dist/esm/reactNativeViewConfig.mjs.map +1 -1
- package/dist/esm/refresh-runtime.mjs +372 -376
- package/dist/esm/refresh-runtime.mjs.map +1 -1
- package/dist/esm/transformBabel.mjs +231 -198
- package/dist/esm/transformBabel.mjs.map +1 -1
- package/dist/esm/transformHermesAsync.mjs +20 -21
- package/dist/esm/transformHermesAsync.mjs.map +1 -1
- package/dist/esm/transformHermesClasses.mjs +25 -0
- package/dist/esm/transformHermesClasses.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.mjs +264 -255
- package/dist/esm/transformHermesLoops.mjs.map +1 -1
- package/dist/esm/transformSWC.mjs +163 -171
- package/dist/esm/transformSWC.mjs.map +1 -1
- package/dist/esm/transformWorklets.mjs +89 -69
- package/dist/esm/transformWorklets.mjs.map +1 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/workletUtils.mjs +5 -0
- package/dist/esm/worklets/autoworklet.mjs +258 -200
- package/dist/esm/worklets/autoworklet.mjs.map +1 -1
- package/dist/esm/worklets/globals.mjs +130 -42
- package/dist/esm/worklets/globals.mjs.map +1 -1
- package/dist/esm/worklets/hash.mjs +10 -9
- package/dist/esm/worklets/hash.mjs.map +1 -1
- package/dist/esm/worklets/scope.mjs +325 -341
- package/dist/esm/worklets/scope.mjs.map +1 -1
- package/dist/esm/worklets/serialize.mjs +60 -58
- package/dist/esm/worklets/serialize.mjs.map +1 -1
- package/dist/esm/worklets/transform.mjs +201 -197
- package/dist/esm/worklets/transform.mjs.map +1 -1
- package/dist/esm/worklets/types.mjs +0 -2
- package/package.json +15 -6
- package/src/cache.ts +37 -7
- package/src/index.ts +44 -19
- package/src/reactNativeViewConfig.ts +6 -1
- package/src/transformBabel.test.ts +351 -17
- package/src/transformBabel.ts +137 -96
- package/src/transformHermesClasses.ts +34 -0
- package/src/transformSWC.ts +12 -1
- package/src/transformWorklets.test.ts +80 -5
- package/src/workletUtils.ts +4 -0
- package/src/worklets/autoworklet.ts +5 -2
- package/src/worklets/globals.ts +23 -0
- package/src/worklets/serialize.ts +1 -1
- package/types/cache.d.ts +2 -2
- package/types/cache.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/reactNativeViewConfig.d.ts.map +1 -1
- package/types/transformBabel.d.ts +16 -1
- package/types/transformBabel.d.ts.map +1 -1
- package/types/transformHermesClasses.d.ts +5 -0
- package/types/transformHermesClasses.d.ts.map +1 -0
- package/types/transformSWC.d.ts +1 -4
- package/types/transformSWC.d.ts.map +1 -1
- package/types/workletUtils.d.ts +4 -0
- package/types/workletUtils.d.ts.map +1 -0
- package/types/worklets/autoworklet.d.ts.map +1 -1
- package/types/worklets/globals.d.ts.map +1 -1
- package/dist/cjs/transformBabel.test.cjs +0 -360
- package/dist/cjs/transformHermesLoops.test.cjs +0 -257
- package/dist/cjs/transformSWC.test.cjs +0 -117
- package/dist/cjs/transformWorklets.test.cjs +0 -604
- package/dist/esm/transformBabel.test.mjs +0 -337
- package/dist/esm/transformBabel.test.mjs.map +0 -1
- package/dist/esm/transformHermesLoops.test.mjs +0 -234
- package/dist/esm/transformHermesLoops.test.mjs.map +0 -1
- package/dist/esm/transformSWC.test.mjs +0 -118
- package/dist/esm/transformSWC.test.mjs.map +0 -1
- package/dist/esm/transformWorklets.test.mjs +0 -581
- package/dist/esm/transformWorklets.test.mjs.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/worklets/types.mjs.map +0 -1
- package/types/transformBabel.test.d.ts +0 -2
- package/types/transformBabel.test.d.ts.map +0 -1
- package/types/transformHermesLoops.test.d.ts +0 -2
- package/types/transformHermesLoops.test.d.ts.map +0 -1
- package/types/transformSWC.test.d.ts +0 -2
- package/types/transformSWC.test.d.ts.map +0 -1
- package/types/transformWorklets.test.d.ts +0 -2
- package/types/transformWorklets.test.d.ts.map +0 -1
|
@@ -5,250 +5,276 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
12
|
};
|
|
13
13
|
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
21
|
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
-
value: mod,
|
|
29
|
-
enumerable: true
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
30
25
|
}) : target, mod));
|
|
31
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
-
value: true
|
|
33
|
-
}), mod);
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
27
|
var transformBabel_exports = {};
|
|
35
28
|
__export(transformBabel_exports, {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
findUserBabelConfig: () => findUserBabelConfig,
|
|
30
|
+
getBabelOptions: () => getBabelOptions,
|
|
31
|
+
stripFlowTypes: () => stripFlowTypes,
|
|
32
|
+
transformBabel: () => transformBabel,
|
|
33
|
+
transformOxcReactCompiler: () => transformOxcReactCompiler
|
|
39
34
|
});
|
|
40
35
|
module.exports = __toCommonJS(transformBabel_exports);
|
|
36
|
+
var import_node_fs = require("node:fs");
|
|
41
37
|
var import_node_path = require("node:path");
|
|
42
38
|
var import_utils = require("@vxrn/utils");
|
|
43
39
|
var import_vite = require("vite");
|
|
44
40
|
var import_configure = require("./configure.cjs");
|
|
45
41
|
var import_constants = require("./constants.cjs");
|
|
42
|
+
const USER_BABEL_CONFIG_FILES = [
|
|
43
|
+
"babel.config.js",
|
|
44
|
+
"babel.config.cjs",
|
|
45
|
+
"babel.config.mjs",
|
|
46
|
+
"babel.config.json",
|
|
47
|
+
".babelrc",
|
|
48
|
+
".babelrc.js",
|
|
49
|
+
".babelrc.json"
|
|
50
|
+
];
|
|
51
|
+
const ONE_GENERATED_MARKER = "@one/generated bundler-config";
|
|
52
|
+
function findUserBabelConfig(projectRoot) {
|
|
53
|
+
if (!projectRoot) return null;
|
|
54
|
+
for (const name of USER_BABEL_CONFIG_FILES) {
|
|
55
|
+
const fullPath = (0, import_node_path.join)(projectRoot, name);
|
|
56
|
+
if ((0, import_node_fs.existsSync)(fullPath)) {
|
|
57
|
+
try {
|
|
58
|
+
const content = (0, import_node_fs.readFileSync)(fullPath, "utf8");
|
|
59
|
+
if (content.includes(ONE_GENERATED_MARKER)) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
return fullPath;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
46
70
|
function getBabelOptions(props) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
props = {
|
|
72
|
+
...props,
|
|
73
|
+
id: (0, import_vite.normalizePath)(props.id.split("?")[0])
|
|
74
|
+
};
|
|
75
|
+
const isProjectFile = !props.id.includes("node_modules");
|
|
76
|
+
const userBabelConfig = isProjectFile && props.projectRoot ? findUserBabelConfig(props.projectRoot) : null;
|
|
77
|
+
if (props.userSetting === "babel") {
|
|
78
|
+
return getOptions(props, true, userBabelConfig);
|
|
79
|
+
}
|
|
80
|
+
if (typeof props.userSetting === "undefined" || typeof props.userSetting === "object" && props.userSetting.transform === "babel") {
|
|
81
|
+
if (props.userSetting?.excludeDefaultPlugins) {
|
|
82
|
+
return {
|
|
83
|
+
caller: getBabelCaller(props),
|
|
84
|
+
...props.userSetting,
|
|
85
|
+
...userBabelConfig ? {
|
|
86
|
+
configFile: userBabelConfig,
|
|
87
|
+
babelrc: true
|
|
88
|
+
} : {}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return getOptions(props, false, userBabelConfig);
|
|
92
|
+
}
|
|
93
|
+
const userSetting = props.userSetting;
|
|
94
|
+
if (userSetting === "swc" || userSetting === "oxc" || userSetting === false || typeof userSetting === "object" && userSetting !== null && (userSetting.transform === "swc" || userSetting.transform === "oxc")) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
if (userBabelConfig) {
|
|
98
|
+
return getOptions(props, false, userBabelConfig);
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
61
101
|
}
|
|
62
|
-
const getOptions = (props, force = false) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (plugins.length) {
|
|
89
|
-
return {
|
|
90
|
-
plugins
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return null;
|
|
102
|
+
const getOptions = (props, force = false, userBabelConfig = null) => {
|
|
103
|
+
let plugins = [];
|
|
104
|
+
if (force || shouldBabelGenerators(props)) {
|
|
105
|
+
plugins = getBasePlugins(props);
|
|
106
|
+
}
|
|
107
|
+
const enableNativewind = import_configure.configuration.enableNativewind && (props.environment === "ios" || props.environment === "android") && !/node_modules/.test(props.id) && props.code.includes("createElement");
|
|
108
|
+
if (enableNativewind) {
|
|
109
|
+
if (!props.id.includes("node_modules")) {
|
|
110
|
+
plugins.push((0, import_utils.resolvePath)("react-native-css-interop/dist/babel-plugin.js"));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (shouldBabelReactCompiler(props)) {
|
|
114
|
+
(0, import_constants.debug)?.(`Using babel react compiler on file`);
|
|
115
|
+
plugins.push(getBabelReactCompilerPlugin(props));
|
|
116
|
+
}
|
|
117
|
+
if (plugins.length || userBabelConfig) {
|
|
118
|
+
return {
|
|
119
|
+
plugins,
|
|
120
|
+
caller: getBabelCaller(props),
|
|
121
|
+
...userBabelConfig ? {
|
|
122
|
+
configFile: userBabelConfig,
|
|
123
|
+
babelrc: true
|
|
124
|
+
} : {}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
94
128
|
};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
129
|
+
function getBabelCaller(props) {
|
|
130
|
+
const caller = {
|
|
131
|
+
name: "vxrn",
|
|
132
|
+
platform: props.environment === "ios" || props.environment === "android" ? props.environment : "web",
|
|
133
|
+
isDev: props.development
|
|
134
|
+
};
|
|
135
|
+
return caller;
|
|
136
|
+
}
|
|
137
|
+
async function transformOxcReactCompiler(id, code, optionsOrTarget = "19", sourceMap = false) {
|
|
138
|
+
const { transform } = await import("oxc-transform-react");
|
|
139
|
+
const compilerOptions = typeof optionsOrTarget === "string" ? { target: optionsOrTarget } : optionsOrTarget || {};
|
|
140
|
+
const target = compilerOptions.target ?? "19";
|
|
141
|
+
const result = await transform(id, code, {
|
|
142
|
+
jsx: "preserve",
|
|
143
|
+
sourcemap: sourceMap,
|
|
144
|
+
reactCompiler: {
|
|
145
|
+
target,
|
|
146
|
+
...compilerOptions,
|
|
147
|
+
environment: {
|
|
148
|
+
enableCustomTypeDefinitionForReanimated: true,
|
|
149
|
+
...compilerOptions.environment
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (result.fatal) {
|
|
154
|
+
throw new Error(`[vxrn:compiler] oxc react compiler failed on ${id}: ${(result.errors ?? []).map((e) => e.message ?? String(e)).join(", ")}`);
|
|
155
|
+
}
|
|
156
|
+
if (result.errors?.length) {
|
|
157
|
+
(0, import_constants.debug)?.(`[compiler/bailout] ${id}: ${result.errors.map((e) => e.message ?? String(e)).join(", ")}`);
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
code: result.code,
|
|
161
|
+
map: sourceMap ? result.map : void 0
|
|
162
|
+
};
|
|
116
163
|
}
|
|
117
164
|
async function transformBabel(id, code, options) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
165
|
+
const [{ default: babelCore }, { default: hermesParserPlugin }] = await Promise.all([import("@babel/core"), import("babel-plugin-syntax-hermes-parser")]);
|
|
166
|
+
const extension = (0, import_node_path.extname)(id);
|
|
167
|
+
const isTSX = extension === ".tsx";
|
|
168
|
+
const isTS = isTSX || extension === ".ts";
|
|
169
|
+
const babelOptions = {
|
|
170
|
+
filename: id,
|
|
171
|
+
compact: false,
|
|
172
|
+
babelrc: options.babelrc ?? false,
|
|
173
|
+
configFile: options.configFile ?? false,
|
|
174
|
+
sourceMaps: false,
|
|
175
|
+
minified: false,
|
|
176
|
+
...options,
|
|
177
|
+
...!isTS ? { parserOpts: {
|
|
178
|
+
...options.parserOpts,
|
|
179
|
+
plugins: [...options.parserOpts?.plugins || [], "jsx"]
|
|
180
|
+
} } : {},
|
|
181
|
+
caller: {
|
|
182
|
+
name: "vxrn",
|
|
183
|
+
...options.caller,
|
|
184
|
+
supportsStaticESM: true,
|
|
185
|
+
supportsDynamicImport: true
|
|
186
|
+
},
|
|
187
|
+
presets: [isTS ? ["@babel/preset-typescript", {
|
|
188
|
+
isTSX,
|
|
189
|
+
allExtensions: isTSX
|
|
190
|
+
}] : "", ...options.presets || []].filter(Boolean),
|
|
191
|
+
plugins: [
|
|
192
|
+
...isTS ? [] : [[hermesParserPlugin, {
|
|
193
|
+
parseLangTypes: "flow",
|
|
194
|
+
reactRuntimeTarget: "19"
|
|
195
|
+
}], "babel-plugin-transform-flow-enums"],
|
|
196
|
+
...options.plugins || [],
|
|
197
|
+
...isTS ? [] : ["@babel/plugin-transform-flow-strip-types"]
|
|
198
|
+
]
|
|
199
|
+
};
|
|
200
|
+
return await new Promise((res, rej) => {
|
|
201
|
+
babelCore.transform(code, babelOptions, (err, result) => {
|
|
202
|
+
if (!result || err) {
|
|
203
|
+
return rej(err || new Error(`[vxrn:compiler] babel returned no result for ${id}`));
|
|
204
|
+
}
|
|
205
|
+
res(result);
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
async function stripFlowTypes(id, code, sourceMaps = true) {
|
|
210
|
+
const result = await transformBabel(id, code, { sourceMaps });
|
|
211
|
+
return {
|
|
212
|
+
code: result.code,
|
|
213
|
+
map: result.map
|
|
214
|
+
};
|
|
159
215
|
}
|
|
160
|
-
const getBasePlugins = ({
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}]
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return applyDefaultFilters(props);
|
|
216
|
+
const getBasePlugins = ({ development }) => [
|
|
217
|
+
["@babel/plugin-transform-destructuring"],
|
|
218
|
+
["@babel/plugin-transform-react-jsx", { development }],
|
|
219
|
+
["@babel/plugin-transform-async-generator-functions"],
|
|
220
|
+
["@babel/plugin-transform-async-to-generator"],
|
|
221
|
+
["@babel/plugin-transform-runtime", {
|
|
222
|
+
helpers: true,
|
|
223
|
+
regenerator: false
|
|
224
|
+
}]
|
|
225
|
+
];
|
|
226
|
+
const shouldBabelReactCompiler = (props) => {
|
|
227
|
+
if (props.environment === "ssr") {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
if (!import_configure.configuration.enableCompiler) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
const { enableCompiler } = import_configure.configuration;
|
|
234
|
+
if (typeof enableCompiler === "object" && !Array.isArray(enableCompiler) && !(enableCompiler instanceof RegExp)) {
|
|
235
|
+
const isNative = props.environment === "ios" || props.environment === "android";
|
|
236
|
+
const filter = isNative ? enableCompiler.native : enableCompiler.web;
|
|
237
|
+
if (!filter) return false;
|
|
238
|
+
return applyCompilerFilter(filter, props);
|
|
239
|
+
}
|
|
240
|
+
if (typeof enableCompiler === "function") {
|
|
241
|
+
return enableCompiler(props.id, props.environment);
|
|
242
|
+
}
|
|
243
|
+
if (enableCompiler instanceof RegExp) {
|
|
244
|
+
return enableCompiler.test(props.id);
|
|
245
|
+
}
|
|
246
|
+
if (Array.isArray(enableCompiler)) {
|
|
247
|
+
if (!enableCompiler.includes(props.environment)) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return applyDefaultFilters(props);
|
|
197
252
|
};
|
|
198
253
|
function applyCompilerFilter(filter, props) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
254
|
+
if (typeof filter === "function") {
|
|
255
|
+
return filter(props.id, props.environment);
|
|
256
|
+
}
|
|
257
|
+
if (filter instanceof RegExp) {
|
|
258
|
+
return filter.test(props.id);
|
|
259
|
+
}
|
|
260
|
+
if (filter === true) {
|
|
261
|
+
return applyDefaultFilters(props);
|
|
262
|
+
}
|
|
263
|
+
return false;
|
|
209
264
|
}
|
|
210
265
|
function applyDefaultFilters(props) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
266
|
+
if (!/(\.tsx?)$/.test(props.id)) return false;
|
|
267
|
+
if (props.id.includes("node_modules")) return false;
|
|
268
|
+
if (props.id.includes("+api.")) return false;
|
|
269
|
+
if (props.code.startsWith("// disable-compiler")) return false;
|
|
270
|
+
return true;
|
|
216
271
|
}
|
|
217
|
-
const getBabelReactCompilerPlugin = props => {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
target
|
|
221
|
-
}];
|
|
272
|
+
const getBabelReactCompilerPlugin = (props) => {
|
|
273
|
+
const target = props.reactForRNVersion === "18" && (props.environment === "ios" || props.environment === "android") ? "18" : "19";
|
|
274
|
+
return ["babel-plugin-react-compiler", { target }];
|
|
222
275
|
};
|
|
223
|
-
function shouldBabelGenerators({
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
return import_constants.asyncGeneratorRegex.test(code);
|
|
228
|
-
}
|
|
276
|
+
function shouldBabelGenerators({ code }) {
|
|
277
|
+
if (process.env.VXRN_USE_BABEL_FOR_GENERATORS) {
|
|
278
|
+
return import_constants.asyncGeneratorRegex.test(code);
|
|
279
|
+
}
|
|
229
280
|
}
|
|
230
|
-
const REANIMATED_AUTOWORKLETIZATION_KEYWORDS = ["worklet", "useAnimatedGestureHandler", "useAnimatedScrollHandler", "useFrameCallback", "useAnimatedStyle", "useAnimatedProps", "createAnimatedPropAdapter", "useDerivedValue", "useAnimatedReaction", "useWorkletCallback", "withTiming", "withSpring", "withDecay", "withRepeat", "runOnUI", "executeOnUIRuntimeSync"];
|
|
231
|
-
const REANIMATED_REGEX = new RegExp(REANIMATED_AUTOWORKLETIZATION_KEYWORDS.join("|"));
|
|
232
|
-
const REANIMATED_IGNORED_PATHS = [
|
|
233
|
-
// Prebuilt/vendored react-native that shouldn't be transformed
|
|
234
|
-
"react-native-prebuilt", "node_modules/.vxrn/react-native",
|
|
235
|
-
// Known false positives - they mention worklet keywords in comments/strings but don't use them
|
|
236
|
-
"node_modules/react/", "node_modules/react-dom/", "node_modules/react-native/", "node_modules/react-native-web/"];
|
|
237
|
-
const REANIMATED_IGNORED_PATHS_REGEX = new RegExp(REANIMATED_IGNORED_PATHS.join("|"));
|
|
238
|
-
function shouldBabelReanimated({
|
|
239
|
-
code,
|
|
240
|
-
id
|
|
241
|
-
}) {
|
|
242
|
-
if (!import_configure.configuration.enableReanimated) {
|
|
243
|
-
return false;
|
|
244
|
-
}
|
|
245
|
-
if (REANIMATED_IGNORED_PATHS_REGEX.test(id)) {
|
|
246
|
-
return false;
|
|
247
|
-
}
|
|
248
|
-
if (REANIMATED_REGEX.test(code)) {
|
|
249
|
-
const location = id.includes("node_modules") ? "node_modules" : "user-code";
|
|
250
|
-
(0, import_constants.debug)?.(` \u{1FA84} [reanimated/${location}] ${(0, import_node_path.relative)(process.cwd(), id)}`);
|
|
251
|
-
return true;
|
|
252
|
-
}
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
@@ -5,57 +5,46 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
12
|
};
|
|
13
13
|
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
21
|
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
-
value: mod,
|
|
29
|
-
enumerable: true
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
30
25
|
}) : target, mod));
|
|
31
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
-
value: true
|
|
33
|
-
}), mod);
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
27
|
var transformHermesAsync_exports = {};
|
|
35
|
-
__export(transformHermesAsync_exports, {
|
|
36
|
-
transformHermesAsync: () => transformHermesAsync
|
|
37
|
-
});
|
|
28
|
+
__export(transformHermesAsync_exports, { transformHermesAsync: () => transformHermesAsync });
|
|
38
29
|
module.exports = __toCommonJS(transformHermesAsync_exports);
|
|
39
30
|
async function transformHermesAsync(code, filename, sourceMaps = false, format) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
}
|
|
31
|
+
if (!format && !code.includes("async")) return;
|
|
32
|
+
const { transformSync } = await import("esbuild");
|
|
33
|
+
const cleanId = filename.split("?")[0];
|
|
34
|
+
const result = transformSync(code, {
|
|
35
|
+
loader: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx",
|
|
36
|
+
jsx: "preserve",
|
|
37
|
+
format,
|
|
38
|
+
supported: {
|
|
39
|
+
"async-await": false,
|
|
40
|
+
"async-generator": false,
|
|
41
|
+
"for-await": false
|
|
42
|
+
},
|
|
43
|
+
sourcefile: filename,
|
|
44
|
+
sourcemap: sourceMaps ? "external" : false
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
code: result.code,
|
|
48
|
+
map: result.map ? JSON.parse(result.map) : void 0
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var transformHermesClasses_exports = {};
|
|
28
|
+
__export(transformHermesClasses_exports, { transformHermesClasses: () => transformHermesClasses });
|
|
29
|
+
module.exports = __toCommonJS(transformHermesClasses_exports);
|
|
30
|
+
async function transformHermesClasses(code, filename, sourceMaps = false) {
|
|
31
|
+
if (!/\b(?:class(?:\s|\{)|(?:let|const)\s)/.test(code)) return;
|
|
32
|
+
const [{ transformAsync }, { default: transformClasses }, { default: transformBlockScoping }] = await Promise.all([
|
|
33
|
+
import("@babel/core"),
|
|
34
|
+
import("@babel/plugin-transform-classes"),
|
|
35
|
+
import("@babel/plugin-transform-block-scoping")
|
|
36
|
+
]);
|
|
37
|
+
const result = await transformAsync(code, {
|
|
38
|
+
filename,
|
|
39
|
+
babelrc: false,
|
|
40
|
+
configFile: false,
|
|
41
|
+
sourceMaps,
|
|
42
|
+
inputSourceMap: false,
|
|
43
|
+
parserOpts: { plugins: ["jsx"] },
|
|
44
|
+
plugins: [transformClasses, transformBlockScoping]
|
|
45
|
+
});
|
|
46
|
+
if (!result?.code) return;
|
|
47
|
+
return {
|
|
48
|
+
code: result.code,
|
|
49
|
+
map: result.map
|
|
50
|
+
};
|
|
51
|
+
}
|