vxrn 1.14.4 → 1.15.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/cli.mjs +263 -248
- package/dist/cli.mjs.map +1 -1
- package/dist/cli.native.js +267 -252
- package/dist/cli.native.js.map +1 -1
- package/dist/config/getAdditionalViteConfig.mjs +8 -8
- package/dist/config/getAdditionalViteConfig.mjs.map +1 -1
- package/dist/config/getAdditionalViteConfig.native.js +8 -8
- package/dist/config/getAdditionalViteConfig.native.js.map +1 -1
- package/dist/config/getBaseViteConfigOnly.mjs +14 -12
- package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
- package/dist/config/getBaseViteConfigOnly.native.js +16 -14
- package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
- package/dist/config/getBaseVitePlugins.mjs +34 -19
- package/dist/config/getBaseVitePlugins.mjs.map +1 -1
- package/dist/config/getBaseVitePlugins.native.js +47 -32
- package/dist/config/getBaseVitePlugins.native.js.map +1 -1
- package/dist/config/getOptimizeDeps.mjs +12 -9
- package/dist/config/getOptimizeDeps.mjs.map +1 -1
- package/dist/config/getOptimizeDeps.native.js +12 -9
- package/dist/config/getOptimizeDeps.native.js.map +1 -1
- package/dist/config/getOptionsFilled.mjs +47 -41
- package/dist/config/getOptionsFilled.mjs.map +1 -1
- package/dist/config/getOptionsFilled.native.js +53 -50
- package/dist/config/getOptionsFilled.native.js.map +1 -1
- package/dist/config/getReactNativePlugins.mjs +5 -2
- package/dist/config/getReactNativePlugins.mjs.map +1 -1
- package/dist/config/getReactNativePlugins.native.js +8 -5
- package/dist/config/getReactNativePlugins.native.js.map +1 -1
- package/dist/config/getServerOptionsFilled.mjs +21 -14
- package/dist/config/getServerOptionsFilled.mjs.map +1 -1
- package/dist/config/getServerOptionsFilled.native.js +25 -21
- package/dist/config/getServerOptionsFilled.native.js.map +1 -1
- package/dist/config/getViteServerConfig.mjs +25 -16
- package/dist/config/getViteServerConfig.mjs.map +1 -1
- package/dist/config/getViteServerConfig.native.js +37 -28
- package/dist/config/getViteServerConfig.native.js.map +1 -1
- package/dist/config/mergeUserConfig.mjs +25 -7
- package/dist/config/mergeUserConfig.mjs.map +1 -1
- package/dist/config/mergeUserConfig.native.js +32 -14
- package/dist/config/mergeUserConfig.native.js.map +1 -1
- package/dist/config/mergeUserConfig.test.mjs +53 -26
- package/dist/config/mergeUserConfig.test.mjs.map +1 -1
- package/dist/config/mergeUserConfig.test.native.js +94 -74
- package/dist/config/mergeUserConfig.test.native.js.map +1 -1
- package/dist/constants.mjs +6 -6
- package/dist/constants.mjs.map +1 -1
- package/dist/constants.native.js +6 -6
- package/dist/constants.native.js.map +1 -1
- package/dist/exports/build.mjs +241 -191
- package/dist/exports/build.mjs.map +1 -1
- package/dist/exports/build.native.js +257 -221
- package/dist/exports/build.native.js.map +1 -1
- package/dist/exports/clean.mjs +17 -12
- package/dist/exports/clean.mjs.map +1 -1
- package/dist/exports/clean.native.js +22 -13
- package/dist/exports/clean.native.js.map +1 -1
- package/dist/exports/createServer.mjs +49 -35
- package/dist/exports/createServer.mjs.map +1 -1
- package/dist/exports/createServer.native.js +50 -34
- package/dist/exports/createServer.native.js.map +1 -1
- package/dist/exports/dev.mjs +119 -74
- package/dist/exports/dev.mjs.map +1 -1
- package/dist/exports/dev.native.js +131 -90
- package/dist/exports/dev.native.js.map +1 -1
- package/dist/exports/loadEnv.mjs +28 -19
- package/dist/exports/loadEnv.mjs.map +1 -1
- package/dist/exports/loadEnv.native.js +33 -28
- package/dist/exports/loadEnv.native.js.map +1 -1
- package/dist/exports/patch.mjs +4 -1
- package/dist/exports/patch.mjs.map +1 -1
- package/dist/exports/patch.native.js +4 -1
- package/dist/exports/patch.native.js.map +1 -1
- package/dist/exports/prebuild.mjs +106 -42
- package/dist/exports/prebuild.mjs.map +1 -1
- package/dist/exports/prebuild.native.js +116 -63
- package/dist/exports/prebuild.native.js.map +1 -1
- package/dist/exports/prebuildWithoutExpo.mjs +44 -39
- package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
- package/dist/exports/prebuildWithoutExpo.native.js +45 -42
- package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
- package/dist/exports/runAndroid.mjs +8 -5
- package/dist/exports/runAndroid.mjs.map +1 -1
- package/dist/exports/runAndroid.native.js +2 -1
- package/dist/exports/runAndroid.native.js.map +1 -1
- package/dist/exports/runIos.mjs +8 -5
- package/dist/exports/runIos.mjs.map +1 -1
- package/dist/exports/runIos.native.js +2 -1
- package/dist/exports/runIos.native.js.map +1 -1
- package/dist/exports/serve.mjs +14 -6
- package/dist/exports/serve.mjs.map +1 -1
- package/dist/exports/serve.native.js +21 -13
- package/dist/exports/serve.native.js.map +1 -1
- package/dist/exports/serveStaticAssets.mjs +37 -22
- package/dist/exports/serveStaticAssets.mjs.map +1 -1
- package/dist/exports/serveStaticAssets.native.js +65 -41
- package/dist/exports/serveStaticAssets.native.js.map +1 -1
- package/dist/patches/builtInDepPatches.mjs +145 -62
- package/dist/patches/builtInDepPatches.mjs.map +1 -1
- package/dist/patches/builtInDepPatches.native.js +116 -70
- package/dist/patches/builtInDepPatches.native.js.map +1 -1
- package/dist/plugins/autoDepOptimizePlugin.mjs +66 -42
- package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
- package/dist/plugins/autoDepOptimizePlugin.native.js +83 -63
- package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
- package/dist/plugins/autoDepOptimizePlugin.test.mjs +23 -17
- package/dist/plugins/autoDepOptimizePlugin.test.mjs.map +1 -1
- package/dist/plugins/autoDepOptimizePlugin.test.native.js +31 -27
- package/dist/plugins/autoDepOptimizePlugin.test.native.js.map +1 -1
- package/dist/plugins/defaultDepOptimizePlugin.mjs +6 -2
- package/dist/plugins/defaultDepOptimizePlugin.mjs.map +1 -1
- package/dist/plugins/defaultDepOptimizePlugin.native.js +6 -2
- package/dist/plugins/defaultDepOptimizePlugin.native.js.map +1 -1
- package/dist/plugins/expoManifestRequestHandlerPlugin.mjs +80 -36
- package/dist/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
- package/dist/plugins/expoManifestRequestHandlerPlugin.native.js +93 -46
- package/dist/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
- package/dist/plugins/getResolvedConfigSubset.mjs +3 -1
- package/dist/plugins/getResolvedConfigSubset.mjs.map +1 -1
- package/dist/plugins/getResolvedConfigSubset.native.js +3 -1
- package/dist/plugins/getResolvedConfigSubset.native.js.map +1 -1
- package/dist/plugins/reactNativeCommonJsPlugin.mjs +70 -46
- package/dist/plugins/reactNativeCommonJsPlugin.mjs.map +1 -1
- package/dist/plugins/reactNativeCommonJsPlugin.native.js +99 -68
- package/dist/plugins/reactNativeCommonJsPlugin.native.js.map +1 -1
- package/dist/plugins/reactNativeDevAssetPlugin.mjs +41 -27
- package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
- package/dist/plugins/reactNativeDevAssetPlugin.native.js +61 -48
- package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
- package/dist/plugins/reactNativeDevServer.mjs +126 -83
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +156 -107
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/plugins/resolveIdScan.test.mjs +22 -17
- package/dist/plugins/resolveIdScan.test.mjs.map +1 -1
- package/dist/plugins/resolveIdScan.test.native.js +25 -21
- package/dist/plugins/resolveIdScan.test.native.js.map +1 -1
- package/dist/plugins/serverExtensions.test.mjs +66 -38
- package/dist/plugins/serverExtensions.test.mjs.map +1 -1
- package/dist/plugins/serverExtensions.test.native.js +63 -49
- package/dist/plugins/serverExtensions.test.native.js.map +1 -1
- package/dist/rn-commands/bundle/buildBundle.mjs +48 -31
- package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
- package/dist/rn-commands/bundle/buildBundle.native.js +52 -35
- package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
- package/dist/runtime/hmr-client.mjs +59 -39
- package/dist/runtime/hmr-client.mjs.map +1 -1
- package/dist/runtime/hmr-client.native.js +132 -92
- package/dist/runtime/hmr-client.native.js.map +1 -1
- package/dist/runtime/hmr-runtime.mjs +65 -29
- package/dist/runtime/hmr-runtime.mjs.map +1 -1
- package/dist/runtime/hmr-runtime.native.js +361 -268
- package/dist/runtime/hmr-runtime.native.js.map +1 -1
- package/dist/runtime/react-refresh-utils.mjs +19 -9
- package/dist/runtime/react-refresh-utils.mjs.map +1 -1
- package/dist/runtime/react-refresh-utils.native.js +20 -10
- package/dist/runtime/react-refresh-utils.native.js.map +1 -1
- package/dist/serve/node.mjs +33 -19
- package/dist/serve/node.mjs.map +1 -1
- package/dist/serve/node.native.js +57 -39
- package/dist/serve/node.native.js.map +1 -1
- package/dist/user-interface/index.mjs +114 -61
- package/dist/user-interface/index.mjs.map +1 -1
- package/dist/user-interface/index.native.js +158 -111
- package/dist/user-interface/index.native.js.map +1 -1
- package/dist/utils/assert.mjs +6 -2
- package/dist/utils/assert.mjs.map +1 -1
- package/dist/utils/assert.native.js +12 -4
- package/dist/utils/assert.native.js.map +1 -1
- package/dist/utils/bindKeypressInput.mjs +38 -23
- package/dist/utils/bindKeypressInput.mjs.map +1 -1
- package/dist/utils/bindKeypressInput.native.js +38 -23
- package/dist/utils/bindKeypressInput.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +421 -319
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +529 -425
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/execSync.mjs +6 -4
- package/dist/utils/execSync.mjs.map +1 -1
- package/dist/utils/execSync.native.js.map +1 -1
- package/dist/utils/expoRun.mjs +5 -3
- package/dist/utils/expoRun.mjs.map +1 -1
- package/dist/utils/expoRun.native.js +13 -13
- package/dist/utils/expoRun.native.js.map +1 -1
- package/dist/utils/filterViteServerResolvedUrls.mjs +17 -5
- package/dist/utils/filterViteServerResolvedUrls.mjs.map +1 -1
- package/dist/utils/filterViteServerResolvedUrls.native.js +41 -23
- package/dist/utils/filterViteServerResolvedUrls.native.js.map +1 -1
- package/dist/utils/getServerEntry.mjs +6 -4
- package/dist/utils/getServerEntry.mjs.map +1 -1
- package/dist/utils/getServerEntry.native.js +9 -9
- package/dist/utils/getServerEntry.native.js.map +1 -1
- package/dist/utils/getVitePath.mjs +41 -17
- package/dist/utils/getVitePath.mjs.map +1 -1
- package/dist/utils/getVitePath.native.js +38 -16
- package/dist/utils/getVitePath.native.js.map +1 -1
- package/dist/utils/patches.mjs +143 -73
- package/dist/utils/patches.mjs.map +1 -1
- package/dist/utils/patches.native.js +299 -188
- package/dist/utils/patches.native.js.map +1 -1
- package/dist/utils/patches.test.mjs +106 -69
- package/dist/utils/patches.test.mjs.map +1 -1
- package/dist/utils/patches.test.native.js +100 -75
- package/dist/utils/patches.test.native.js.map +1 -1
- package/dist/utils/printServerUrls.mjs +6 -2
- package/dist/utils/printServerUrls.mjs.map +1 -1
- package/dist/utils/printServerUrls.native.js +28 -18
- package/dist/utils/printServerUrls.native.js.map +1 -1
- package/dist/utils/removeUndefined.mjs +5 -1
- package/dist/utils/removeUndefined.mjs.map +1 -1
- package/dist/utils/removeUndefined.native.js +5 -1
- package/dist/utils/removeUndefined.native.js.map +1 -1
- package/dist/utils/scanDepsToOptimize.mjs +131 -87
- package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
- package/dist/utils/scanDepsToOptimize.native.js +163 -117
- package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
- package/dist/utils/state.mjs +4 -2
- package/dist/utils/state.mjs.map +1 -1
- package/dist/utils/state.native.js +3 -2
- package/dist/utils/state.native.js.map +1 -1
- package/dist/utils/utils.mjs +4 -3
- package/dist/utils/utils.mjs.map +1 -1
- package/dist/utils/utils.native.js +22 -16
- package/dist/utils/utils.native.js.map +1 -1
- package/dist/vendor/debugger-app/src/index.css +1 -1
- package/dist/vendor/debugger-app/src/index.css.map +1 -1
- package/dist/vxrn-vite-plugin.mjs +10 -6
- package/dist/vxrn-vite-plugin.mjs.map +1 -1
- package/dist/vxrn-vite-plugin.native.js +25 -21
- package/dist/vxrn-vite-plugin.native.js.map +1 -1
- package/package.json +12 -12
- package/src/plugins/reactNativeDevServer.ts +0 -6
- package/src/utils/createNativeDevEngine.ts +55 -1
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -3,13 +3,17 @@ import { existsSync, readFileSync } from "fs";
|
|
|
3
3
|
import { DEFAULT_ASSET_EXTS } from "../constants/defaults.native.js";
|
|
4
4
|
import { getNativePrelude } from "../runtime/native-prelude.native.js";
|
|
5
5
|
function _instanceof(left, right) {
|
|
6
|
-
|
|
6
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
7
|
+
return !!right[Symbol.hasInstance](left);
|
|
8
|
+
} else {
|
|
9
|
+
return left instanceof right;
|
|
10
|
+
}
|
|
7
11
|
}
|
|
8
12
|
var FLOW_FILE_PATTERN = /node_modules[\\/](?:react-native|@react-native)[\\/].*\.js$/;
|
|
9
13
|
function getResolveExtensions(platform) {
|
|
10
|
-
var platformExts = platform === "ios" ? [".ios.tsx", ".ios.ts", ".ios.jsx", ".ios.js"] : [".android.tsx", ".android.ts", ".android.jsx", ".android.js"]
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
var platformExts = platform === "ios" ? [".ios.tsx", ".ios.ts", ".ios.jsx", ".ios.js"] : [".android.tsx", ".android.ts", ".android.jsx", ".android.js"];
|
|
15
|
+
var nativeExts = [".native.tsx", ".native.ts", ".native.jsx", ".native.js"];
|
|
16
|
+
var defaultExts = [".tsx", ".ts", ".jsx", ".js", ".mjs", ".cjs", ".json"];
|
|
13
17
|
return [...platformExts, ...nativeExts, ...defaultExts];
|
|
14
18
|
}
|
|
15
19
|
function getNativeResolveConfig(platform) {
|
|
@@ -20,102 +24,114 @@ function getNativeResolveConfig(platform) {
|
|
|
20
24
|
};
|
|
21
25
|
}
|
|
22
26
|
function getNativeTransformConfig(platform, dev, root) {
|
|
23
|
-
var entryConfig = globalThis.__vxrnNativeEntryConfig || {}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
27
|
+
var entryConfig = globalThis.__vxrnNativeEntryConfig || {};
|
|
28
|
+
var setupFileDefines = function () {
|
|
29
|
+
var sf = entryConfig.setupFile;
|
|
30
|
+
if (!sf) return {};
|
|
31
|
+
var files = typeof sf === "string" ? {
|
|
32
|
+
client: sf,
|
|
33
|
+
server: sf,
|
|
34
|
+
ios: sf,
|
|
35
|
+
android: sf
|
|
36
|
+
} : "native" in sf ? {
|
|
37
|
+
client: sf.client,
|
|
38
|
+
server: sf.server,
|
|
39
|
+
ios: sf.native,
|
|
40
|
+
android: sf.native
|
|
41
|
+
} : sf;
|
|
42
|
+
return {
|
|
43
|
+
...(files.client && {
|
|
44
|
+
"process.env.ONE_SETUP_FILE_CLIENT": JSON.stringify(files.client)
|
|
45
|
+
}),
|
|
46
|
+
...(files.server && {
|
|
47
|
+
"process.env.ONE_SETUP_FILE_SERVER": JSON.stringify(files.server)
|
|
48
|
+
}),
|
|
49
|
+
...(files.ios && {
|
|
50
|
+
"process.env.ONE_SETUP_FILE_IOS": JSON.stringify(files.ios)
|
|
51
|
+
}),
|
|
52
|
+
...(files.android && {
|
|
53
|
+
"process.env.ONE_SETUP_FILE_ANDROID": JSON.stringify(files.android)
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
}();
|
|
57
|
+
var envDefines = function () {
|
|
58
|
+
var defines = {};
|
|
59
|
+
try {
|
|
60
|
+
var mode2 = dev ? "development" : "production";
|
|
61
|
+
for (var _i = 0, _iter = [".env", ".env.local", `.env.${mode2}`, `.env.${mode2}.local`]; _i < _iter.length; _i++) {
|
|
62
|
+
var envFile = _iter[_i];
|
|
63
|
+
var envPath = join(root, envFile);
|
|
64
|
+
if (!existsSync(envPath)) continue;
|
|
65
|
+
var content = readFileSync(envPath, "utf8");
|
|
66
|
+
var _iteratorNormalCompletion2 = true,
|
|
67
|
+
_didIteratorError2 = false,
|
|
68
|
+
_iteratorError2 = void 0;
|
|
69
|
+
try {
|
|
70
|
+
for (var _iterator2 = content.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
71
|
+
var line = _step2.value;
|
|
72
|
+
var match2 = line.match(/^\s*(VITE_\w+)\s*=\s*(.*)$/);
|
|
73
|
+
if (match2) {
|
|
74
|
+
var [, key2, rawVal] = match2;
|
|
75
|
+
var val2 = rawVal.replace(/^['"]|['"]$/g, "").trim();
|
|
76
|
+
defines[`import.meta.env.${key2}`] = JSON.stringify(val2);
|
|
77
|
+
defines[`process.env.${key2}`] = JSON.stringify(val2);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
} catch (err) {
|
|
81
|
+
_didIteratorError2 = true;
|
|
82
|
+
_iteratorError2 = err;
|
|
83
|
+
} finally {
|
|
84
|
+
try {
|
|
85
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
86
|
+
_iterator2.return();
|
|
87
|
+
}
|
|
88
|
+
} finally {
|
|
89
|
+
if (_didIteratorError2) {
|
|
90
|
+
throw _iteratorError2;
|
|
83
91
|
}
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
}
|
|
95
|
+
} catch (unused) {}
|
|
96
|
+
return defines;
|
|
97
|
+
}();
|
|
98
|
+
var mode = dev ? "development" : "production";
|
|
99
|
+
var envObject = {
|
|
100
|
+
MODE: mode,
|
|
101
|
+
DEV: dev,
|
|
102
|
+
PROD: !dev,
|
|
103
|
+
SSR: false,
|
|
104
|
+
VITE_ENVIRONMENT: platform,
|
|
105
|
+
VITE_NATIVE: "1",
|
|
106
|
+
EXPO_OS: platform
|
|
107
|
+
};
|
|
108
|
+
var _iteratorNormalCompletion = true,
|
|
109
|
+
_didIteratorError = false,
|
|
101
110
|
_iteratorError = void 0;
|
|
102
111
|
try {
|
|
103
|
-
for (var _iterator = Object.entries(envDefines)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion =
|
|
104
|
-
var [key, val] = _step.value
|
|
105
|
-
|
|
106
|
-
if (match)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
for (var _iterator = Object.entries(envDefines)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
113
|
+
var [key, val] = _step.value;
|
|
114
|
+
var match = key.match(/^import\.meta\.env\.(.+)$/);
|
|
115
|
+
if (match) {
|
|
116
|
+
try {
|
|
117
|
+
envObject[match[1]] = JSON.parse(val);
|
|
118
|
+
} catch (unused) {
|
|
119
|
+
envObject[match[1]] = val;
|
|
120
|
+
}
|
|
110
121
|
}
|
|
111
122
|
}
|
|
112
123
|
} catch (err) {
|
|
113
|
-
_didIteratorError =
|
|
124
|
+
_didIteratorError = true;
|
|
125
|
+
_iteratorError = err;
|
|
114
126
|
} finally {
|
|
115
127
|
try {
|
|
116
|
-
!_iteratorNormalCompletion && _iterator.return != null
|
|
128
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
129
|
+
_iterator.return();
|
|
130
|
+
}
|
|
117
131
|
} finally {
|
|
118
|
-
if (_didIteratorError)
|
|
132
|
+
if (_didIteratorError) {
|
|
133
|
+
throw _iteratorError;
|
|
134
|
+
}
|
|
119
135
|
}
|
|
120
136
|
}
|
|
121
137
|
return {
|
|
@@ -167,6 +183,8 @@ function getNativePlugins(root, platform, viteImportGlobPlugin, dev) {
|
|
|
167
183
|
}),
|
|
168
184
|
// strip Flow types from react-native and @react-native packages
|
|
169
185
|
flowStripPlugin(),
|
|
186
|
+
// guard undefined native methods in NativeAnimatedHelper
|
|
187
|
+
nativeAnimatedGuardPlugin(),
|
|
170
188
|
// handle asset imports (.png, .jpg, .ttf, etc.)
|
|
171
189
|
assetPlugin({
|
|
172
190
|
root,
|
|
@@ -181,115 +199,140 @@ function getNativePlugins(root, platform, viteImportGlobPlugin, dev) {
|
|
|
181
199
|
function getNativeOutputOptions(prelude) {
|
|
182
200
|
return {
|
|
183
201
|
format: "esm",
|
|
184
|
-
sourcemap:
|
|
202
|
+
sourcemap: true,
|
|
185
203
|
intro: prelude,
|
|
186
|
-
codeSplitting:
|
|
187
|
-
strictExecutionOrder:
|
|
204
|
+
codeSplitting: false,
|
|
205
|
+
strictExecutionOrder: true
|
|
188
206
|
};
|
|
189
207
|
}
|
|
190
208
|
function postProcessNativeBundle(code) {
|
|
191
|
-
|
|
209
|
+
code = code.replace(/^\s*export\s*\{[^}]*\}\s*;?\s*$/gm, "");
|
|
210
|
+
code = code.replace(/^if \(import\.meta\.hot\).*$/gm, "");
|
|
211
|
+
{
|
|
212
|
+
var marker = "NativeAnimatedModule_default ?? NativeAnimatedTurboModule_default;";
|
|
213
|
+
var idx = code.indexOf(marker);
|
|
214
|
+
if (idx !== -1) {
|
|
215
|
+
var beforeMarker = code.lastIndexOf("NativeAnimatedModule = ", idx);
|
|
216
|
+
if (beforeMarker !== -1) {
|
|
217
|
+
var lineStart = code.lastIndexOf("\n", beforeMarker);
|
|
218
|
+
var snippet = code.slice(lineStart + 1, beforeMarker + 50);
|
|
219
|
+
if (snippet.includes("(function()") || snippet.includes("new Proxy")) {
|
|
220
|
+
var afterMarker = code.indexOf("})();", idx);
|
|
221
|
+
if (afterMarker !== -1) {
|
|
222
|
+
var end = afterMarker + "})();".length;
|
|
223
|
+
code = code.slice(0, beforeMarker) + "NativeAnimatedModule = NativeAnimatedModule_default ?? NativeAnimatedTurboModule_default;" + code.slice(end);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return code;
|
|
192
230
|
}
|
|
193
231
|
async function downlevelClassFieldsInBundle(code) {
|
|
194
|
-
var startMarker = "//#region \\0rolldown/runtime.js"
|
|
195
|
-
|
|
196
|
-
|
|
232
|
+
var startMarker = "//#region \\0rolldown/runtime.js";
|
|
233
|
+
var endMarker = "//#endregion";
|
|
234
|
+
var startIdx = code.indexOf(startMarker);
|
|
197
235
|
if (startIdx === -1) return code;
|
|
198
236
|
var endIdx = code.indexOf(endMarker, startIdx);
|
|
199
237
|
if (endIdx === -1) return code;
|
|
200
|
-
var runtimeEnd = endIdx + endMarker.length
|
|
201
|
-
|
|
238
|
+
var runtimeEnd = endIdx + endMarker.length;
|
|
239
|
+
var runtimeSection = code.slice(startIdx, runtimeEnd);
|
|
202
240
|
try {
|
|
203
|
-
var swc = await import("@swc/core")
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
},
|
|
215
|
-
include: ["transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object"]
|
|
241
|
+
var swc = await import("@swc/core");
|
|
242
|
+
var result = await swc.transform(runtimeSection, {
|
|
243
|
+
filename: "rolldown-runtime.js",
|
|
244
|
+
configFile: false,
|
|
245
|
+
swcrc: false,
|
|
246
|
+
sourceMaps: false,
|
|
247
|
+
inputSourceMap: false,
|
|
248
|
+
isModule: false,
|
|
249
|
+
env: {
|
|
250
|
+
targets: {
|
|
251
|
+
node: 9999
|
|
216
252
|
},
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
externalHelpers: !1,
|
|
227
|
-
assumptions: {
|
|
228
|
-
setPublicClassFields: !0,
|
|
229
|
-
privateFieldsAsProperties: !0
|
|
253
|
+
include: ["transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object"]
|
|
254
|
+
},
|
|
255
|
+
jsc: {
|
|
256
|
+
parser: {
|
|
257
|
+
syntax: "ecmascript"
|
|
258
|
+
},
|
|
259
|
+
transform: {
|
|
260
|
+
react: {
|
|
261
|
+
runtime: "preserve"
|
|
230
262
|
}
|
|
263
|
+
},
|
|
264
|
+
externalHelpers: false,
|
|
265
|
+
assumptions: {
|
|
266
|
+
setPublicClassFields: true,
|
|
267
|
+
privateFieldsAsProperties: true
|
|
231
268
|
}
|
|
232
|
-
}
|
|
269
|
+
}
|
|
270
|
+
});
|
|
233
271
|
return code.slice(0, startIdx) + result.code + code.slice(runtimeEnd);
|
|
234
272
|
} catch (err) {
|
|
235
|
-
|
|
273
|
+
console.warn("[vxrn] downlevelClassFieldsInBundle failed, returning original:", err);
|
|
274
|
+
return code;
|
|
236
275
|
}
|
|
237
276
|
}
|
|
238
277
|
async function createNativeDevEngine(options) {
|
|
239
278
|
var {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
},
|
|
274
|
-
incrementalBuild: !0
|
|
275
|
-
},
|
|
276
|
-
treeshake: !1,
|
|
277
|
-
// some react-native ecosystem packages import symbols that don't exist in
|
|
278
|
-
// the declared entry (e.g. @react-navigation/elements imports NavigationProvider
|
|
279
|
-
// from @react-navigation/native which doesn't export it). metro silently shims
|
|
280
|
-
// these — rolldown needs an explicit opt-in.
|
|
281
|
-
shimMissingExports: !0,
|
|
282
|
-
moduleTypes: {
|
|
283
|
-
".js": "jsx"
|
|
279
|
+
root,
|
|
280
|
+
port,
|
|
281
|
+
host = "localhost",
|
|
282
|
+
platform,
|
|
283
|
+
serverUrl,
|
|
284
|
+
plugins: userPlugins = [],
|
|
285
|
+
onHmrUpdate
|
|
286
|
+
} = options;
|
|
287
|
+
var {
|
|
288
|
+
dev,
|
|
289
|
+
viteImportGlobPlugin
|
|
290
|
+
} = await import("rolldown/experimental");
|
|
291
|
+
var hmrRuntimeSource = getHmrRuntimeSource();
|
|
292
|
+
var prelude = getNativePrelude({
|
|
293
|
+
dev: true,
|
|
294
|
+
platform,
|
|
295
|
+
serverUrl: serverUrl || `http://${host}:${port}`
|
|
296
|
+
});
|
|
297
|
+
var currentBundle = null;
|
|
298
|
+
var bundleResolve = null;
|
|
299
|
+
var bundlePromise = null;
|
|
300
|
+
var resolvedHost = host === "0.0.0.0" ? "localhost" : host;
|
|
301
|
+
var inputOptions = {
|
|
302
|
+
input: VIRTUAL_NATIVE_ENTRY,
|
|
303
|
+
cwd: root,
|
|
304
|
+
platform: "neutral",
|
|
305
|
+
resolve: getNativeResolveConfig(platform),
|
|
306
|
+
transform: getNativeTransformConfig(platform, true, root),
|
|
307
|
+
experimental: {
|
|
308
|
+
devMode: {
|
|
309
|
+
implement: hmrRuntimeSource,
|
|
310
|
+
host,
|
|
311
|
+
port
|
|
284
312
|
},
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
313
|
+
incrementalBuild: true,
|
|
314
|
+
// lazyBarrel defers barrel re-export initialization — needed in dev mode
|
|
315
|
+
// to avoid breaking worklet closure serialization order.
|
|
316
|
+
// removed from prod builds (buildNativeBundle) where it caused build errors.
|
|
317
|
+
lazyBarrel: true
|
|
288
318
|
},
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
319
|
+
treeshake: false,
|
|
320
|
+
// some react-native ecosystem packages import symbols that don't exist in
|
|
321
|
+
// the declared entry (e.g. @react-navigation/elements imports NavigationProvider
|
|
322
|
+
// from @react-navigation/native which doesn't export it). metro silently shims
|
|
323
|
+
// these — rolldown needs an explicit opt-in.
|
|
324
|
+
shimMissingExports: true,
|
|
325
|
+
moduleTypes: {
|
|
326
|
+
".js": "jsx"
|
|
327
|
+
},
|
|
328
|
+
plugins: [nativeVirtualEntryPlugin(root, {
|
|
329
|
+
dev: true
|
|
330
|
+
}), ...getNativePlugins(root, platform, viteImportGlobPlugin, true), ...userPlugins]
|
|
331
|
+
};
|
|
332
|
+
var outputOptions = {
|
|
333
|
+
...getNativeOutputOptions(prelude),
|
|
334
|
+
// connect HMR WebSocket using RN's WebSocket module (not the global)
|
|
335
|
+
outro: `
|
|
293
336
|
try {
|
|
294
337
|
var __WS = (init_WebSocket(), __toCommonJS(WebSocket_exports)).default;
|
|
295
338
|
var __hmrUrl = 'ws://${resolvedHost}:${port}/hot';
|
|
@@ -318,69 +361,89 @@ try {
|
|
|
318
361
|
__hmrWS.onerror = function(e) { console.warn('[vxrn] HMR connection error:', e.message || e); };
|
|
319
362
|
} catch(e) {}
|
|
320
363
|
`
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
});
|
|
350
|
-
return;
|
|
364
|
+
};
|
|
365
|
+
var engine = await dev(inputOptions, outputOptions, {
|
|
366
|
+
onOutput: async function (result) {
|
|
367
|
+
if (_instanceof(result, Error)) {
|
|
368
|
+
console.error("[vxrn] native bundle error:", result.message);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
var output = result;
|
|
372
|
+
var chunk = output.output.find(function (o) {
|
|
373
|
+
return o.type === "chunk" && o.isEntry;
|
|
374
|
+
});
|
|
375
|
+
if (chunk && "code" in chunk) {
|
|
376
|
+
var _chunk_map;
|
|
377
|
+
var code = postProcessNativeBundle(chunk.code);
|
|
378
|
+
code = await downlevelClassFieldsInBundle(code);
|
|
379
|
+
var hmrClientStub = `registerCallableModule("HMRClient",{setup:function(){},enable:function(){},disable:function(){},registerBundle:function(){},log:function(){}})`;
|
|
380
|
+
code = code.replace(/registerCallableModule\s*\(\s*["']AppRegistry["']/, function (match) {
|
|
381
|
+
return hmrClientStub + "," + match;
|
|
382
|
+
});
|
|
383
|
+
currentBundle = {
|
|
384
|
+
code,
|
|
385
|
+
map: (_chunk_map = chunk.map) === null || _chunk_map === void 0 ? void 0 : _chunk_map.toString()
|
|
386
|
+
};
|
|
387
|
+
console.info(`[vxrn] native bundle ready (${Math.round(chunk.code.length / 1024)}KB)`);
|
|
388
|
+
if (bundleResolve) {
|
|
389
|
+
bundleResolve(currentBundle);
|
|
390
|
+
bundleResolve = null;
|
|
391
|
+
bundlePromise = null;
|
|
351
392
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
onHmrUpdates: async function (result) {
|
|
396
|
+
if (_instanceof(result, Error)) {
|
|
397
|
+
console.error("[vxrn] HMR error:", result.message);
|
|
398
|
+
onHmrUpdate === null || onHmrUpdate === void 0 ? void 0 : onHmrUpdate({
|
|
399
|
+
type: "hmr:error"
|
|
400
|
+
});
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
var updates = result.updates || [];
|
|
404
|
+
var _iteratorNormalCompletion = true,
|
|
405
|
+
_didIteratorError = false,
|
|
406
|
+
_iteratorError = void 0;
|
|
407
|
+
try {
|
|
408
|
+
for (var _iterator = updates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
409
|
+
var item = _step.value;
|
|
410
|
+
var update = item.update || item;
|
|
411
|
+
if (update.type === "Patch" && update.code) {
|
|
412
|
+
onHmrUpdate === null || onHmrUpdate === void 0 ? void 0 : onHmrUpdate({
|
|
361
413
|
type: "hmr:update",
|
|
362
414
|
code: update.code
|
|
363
|
-
})
|
|
415
|
+
});
|
|
416
|
+
} else if (update.type === "FullReload") {
|
|
417
|
+
onHmrUpdate === null || onHmrUpdate === void 0 ? void 0 : onHmrUpdate({
|
|
364
418
|
type: "hmr:reload"
|
|
365
419
|
});
|
|
366
420
|
}
|
|
367
|
-
}
|
|
368
|
-
|
|
421
|
+
}
|
|
422
|
+
} catch (err) {
|
|
423
|
+
_didIteratorError = true;
|
|
424
|
+
_iteratorError = err;
|
|
425
|
+
} finally {
|
|
426
|
+
try {
|
|
427
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
428
|
+
_iterator.return();
|
|
429
|
+
}
|
|
369
430
|
} finally {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
} finally {
|
|
373
|
-
if (_didIteratorError) throw _iteratorError;
|
|
431
|
+
if (_didIteratorError) {
|
|
432
|
+
throw _iteratorError;
|
|
374
433
|
}
|
|
375
434
|
}
|
|
376
|
-
|
|
435
|
+
}
|
|
436
|
+
if (updates.length === 0) {
|
|
437
|
+
onHmrUpdate === null || onHmrUpdate === void 0 ? void 0 : onHmrUpdate({
|
|
377
438
|
type: "hmr:reload"
|
|
378
439
|
});
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
}
|
|
383
|
-
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
rebuildStrategy: "auto",
|
|
443
|
+
watch: {}
|
|
444
|
+
});
|
|
445
|
+
await engine.run();
|
|
446
|
+
return {
|
|
384
447
|
engine,
|
|
385
448
|
async getBundle() {
|
|
386
449
|
if (currentBundle) return currentBundle;
|
|
@@ -388,13 +451,17 @@ try {
|
|
|
388
451
|
var timeoutId;
|
|
389
452
|
bundlePromise = new Promise(function (resolve2, reject) {
|
|
390
453
|
bundleResolve = function (value) {
|
|
391
|
-
clearTimeout(timeoutId)
|
|
392
|
-
|
|
454
|
+
clearTimeout(timeoutId);
|
|
455
|
+
resolve2(value);
|
|
456
|
+
};
|
|
457
|
+
timeoutId = setTimeout(function () {
|
|
393
458
|
return reject(new Error("[vxrn] bundle build timed out after 120s"));
|
|
394
459
|
}, 12e4);
|
|
395
460
|
});
|
|
396
461
|
}
|
|
397
|
-
|
|
462
|
+
await engine.ensureLatestBuildOutput();
|
|
463
|
+
if (currentBundle) return currentBundle;
|
|
464
|
+
return bundlePromise;
|
|
398
465
|
},
|
|
399
466
|
async close() {
|
|
400
467
|
await engine.close();
|
|
@@ -402,72 +469,75 @@ try {
|
|
|
402
469
|
};
|
|
403
470
|
}
|
|
404
471
|
async function buildNativeBundle(options) {
|
|
405
|
-
var _chunk_map
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
if (!chunk || !("code" in chunk))
|
|
472
|
+
var _chunk_map;
|
|
473
|
+
var {
|
|
474
|
+
root,
|
|
475
|
+
platform,
|
|
476
|
+
dev = false,
|
|
477
|
+
serverUrl,
|
|
478
|
+
plugins: userPlugins = []
|
|
479
|
+
} = options;
|
|
480
|
+
var {
|
|
481
|
+
build
|
|
482
|
+
} = await import("rolldown");
|
|
483
|
+
var {
|
|
484
|
+
viteImportGlobPlugin
|
|
485
|
+
} = await import("rolldown/experimental");
|
|
486
|
+
var prelude = getNativePrelude({
|
|
487
|
+
dev,
|
|
488
|
+
platform,
|
|
489
|
+
serverUrl
|
|
490
|
+
});
|
|
491
|
+
var result = await build({
|
|
492
|
+
input: VIRTUAL_NATIVE_ENTRY,
|
|
493
|
+
cwd: root,
|
|
494
|
+
platform: "neutral",
|
|
495
|
+
resolve: getNativeResolveConfig(platform),
|
|
496
|
+
transform: getNativeTransformConfig(platform, dev, root),
|
|
497
|
+
treeshake: !dev,
|
|
498
|
+
shimMissingExports: true,
|
|
499
|
+
moduleTypes: {
|
|
500
|
+
".js": "jsx"
|
|
501
|
+
},
|
|
502
|
+
plugins: [nativeVirtualEntryPlugin(root, {
|
|
503
|
+
dev
|
|
504
|
+
}), ...getNativePlugins(root, platform, viteImportGlobPlugin, dev), ...userPlugins],
|
|
505
|
+
output: getNativeOutputOptions(prelude)
|
|
506
|
+
});
|
|
507
|
+
var chunk = result.output.find(function (o) {
|
|
508
|
+
return o.type === "chunk" && o.isEntry;
|
|
509
|
+
});
|
|
510
|
+
if (!chunk || !("code" in chunk)) {
|
|
511
|
+
throw new Error("[vxrn] production build produced no output");
|
|
512
|
+
}
|
|
444
513
|
var code = postProcessNativeBundle(chunk.code);
|
|
445
|
-
|
|
514
|
+
code = await downlevelClassFieldsInBundle(code);
|
|
515
|
+
return {
|
|
446
516
|
code,
|
|
447
517
|
map: (_chunk_map = chunk.map) === null || _chunk_map === void 0 ? void 0 : _chunk_map.toString()
|
|
448
518
|
};
|
|
449
519
|
}
|
|
450
520
|
var VIRTUAL_NATIVE_ENTRY = "virtual:native-entry";
|
|
451
521
|
function nativeVirtualEntryPlugin(root, opts) {
|
|
452
|
-
var isDev = opts
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
522
|
+
var isDev = (opts === null || opts === void 0 ? void 0 : opts.dev) !== false;
|
|
523
|
+
var resolvedId = resolve(root, "__virtual-native-entry.tsx");
|
|
524
|
+
var entryConfig = globalThis.__vxrnNativeEntryConfig || {};
|
|
525
|
+
var routerRoot = entryConfig.routerRoot || "app";
|
|
526
|
+
var flags = entryConfig.flags || {};
|
|
527
|
+
var setupFileImport = function () {
|
|
528
|
+
var sf = entryConfig.setupFile;
|
|
529
|
+
if (!sf) return "";
|
|
530
|
+
var file = typeof sf === "string" ? sf : "native" in sf ? sf.native : sf.ios;
|
|
531
|
+
if (!file) return "";
|
|
532
|
+
var resolved = resolve(root, file);
|
|
533
|
+
return `import ${JSON.stringify(resolved)};`;
|
|
534
|
+
}();
|
|
535
|
+
var routeGlobs = [`./${routerRoot}/**/*.tsx`, `./${routerRoot}/**/*.ts`, `!./${routerRoot}/**/*+api.*`, `!./${routerRoot}/**/*.test.*`, `!./${routerRoot}/**/*.d.ts`, `!./${routerRoot}/**/*.server.*`, `!./${routerRoot}/**/_middleware.*`, `!./${routerRoot}/**/*.web.*`,
|
|
536
|
+
// ignoredRouteFiles from One's router config
|
|
537
|
+
...(entryConfig.ignoredRouteFiles || []).map(function (pattern) {
|
|
538
|
+
return `!./${routerRoot}/${pattern}`;
|
|
539
|
+
})];
|
|
540
|
+
var refreshSetup = isDev ? `
|
|
471
541
|
// react-refresh/runtime MUST initialize before React loads
|
|
472
542
|
import RefreshRuntime from 'react-refresh/runtime';
|
|
473
543
|
RefreshRuntime.injectIntoGlobalHook(globalThis);
|
|
@@ -476,8 +546,8 @@ globalThis.$RefreshReg$ = function(type, id) {
|
|
|
476
546
|
RefreshRuntime.register(type, id);
|
|
477
547
|
};
|
|
478
548
|
globalThis.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
|
|
479
|
-
` : ""
|
|
480
|
-
|
|
549
|
+
` : "";
|
|
550
|
+
var entryCode = `
|
|
481
551
|
${refreshSetup}
|
|
482
552
|
${setupFileImport}
|
|
483
553
|
import { createApp } from 'one';
|
|
@@ -498,10 +568,28 @@ createApp({
|
|
|
498
568
|
return {
|
|
499
569
|
name: "vxrn:native-virtual-entry",
|
|
500
570
|
resolveId(id) {
|
|
501
|
-
if (id === VIRTUAL_NATIVE_ENTRY)
|
|
571
|
+
if (id === VIRTUAL_NATIVE_ENTRY) {
|
|
572
|
+
return resolvedId;
|
|
573
|
+
}
|
|
502
574
|
},
|
|
503
575
|
load(id) {
|
|
504
|
-
if (id === resolvedId)
|
|
576
|
+
if (id === resolvedId) {
|
|
577
|
+
return entryCode;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
function nativeAnimatedGuardPlugin() {
|
|
583
|
+
return {
|
|
584
|
+
name: "vxrn:native-animated-guard",
|
|
585
|
+
transform(code, id) {
|
|
586
|
+
if (!id.includes("animated/NativeAnimatedHelper")) return;
|
|
587
|
+
var target = "const method = nullthrows(NativeAnimatedModule)[methodName];";
|
|
588
|
+
if (!code.includes(target)) return;
|
|
589
|
+
return {
|
|
590
|
+
code: code.replace(target, `const method = nullthrows(NativeAnimatedModule)[methodName];
|
|
591
|
+
if (typeof method !== 'function') return;`)
|
|
592
|
+
};
|
|
505
593
|
}
|
|
506
594
|
};
|
|
507
595
|
}
|
|
@@ -509,35 +597,39 @@ function serverFileExclusionPlugin() {
|
|
|
509
597
|
return {
|
|
510
598
|
name: "vxrn:server-file-exclusion",
|
|
511
599
|
load(id) {
|
|
512
|
-
if (/\.server\.\w+$/.test(id))
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
600
|
+
if (/\.server\.\w+$/.test(id)) {
|
|
601
|
+
return {
|
|
602
|
+
code: "export default undefined;",
|
|
603
|
+
moduleType: "js"
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
if (/[\\/]_middleware\.\w+$/.test(id)) {
|
|
607
|
+
return {
|
|
608
|
+
code: "export default undefined;",
|
|
609
|
+
moduleType: "js"
|
|
610
|
+
};
|
|
611
|
+
}
|
|
520
612
|
}
|
|
521
613
|
};
|
|
522
614
|
}
|
|
523
615
|
function environmentGuardPlugin() {
|
|
524
|
-
var THROWING = ["server-only", "client-only", "web-only"]
|
|
525
|
-
|
|
616
|
+
var THROWING = ["server-only", "client-only", "web-only"];
|
|
617
|
+
var NOOP = ["native-only"];
|
|
526
618
|
return {
|
|
527
619
|
name: "vxrn:environment-guard",
|
|
528
620
|
resolveId(source) {
|
|
529
621
|
if (THROWING.includes(source)) return {
|
|
530
622
|
id: `\0env-guard-throw:${source}`,
|
|
531
|
-
external:
|
|
623
|
+
external: false
|
|
532
624
|
};
|
|
533
625
|
if (NOOP.includes(source)) return {
|
|
534
626
|
id: `\0env-guard-noop:${source}`,
|
|
535
|
-
external:
|
|
627
|
+
external: false
|
|
536
628
|
};
|
|
537
629
|
},
|
|
538
630
|
load(id) {
|
|
539
631
|
if (id.startsWith("\0env-guard-throw:")) {
|
|
540
|
-
var pkg = id.slice(
|
|
632
|
+
var pkg = id.slice("\0env-guard-throw:".length);
|
|
541
633
|
return {
|
|
542
634
|
code: `throw new Error("Cannot import '${pkg}' in a native bundle.");`,
|
|
543
635
|
moduleType: "js"
|
|
@@ -555,48 +647,51 @@ function cssStubPlugin() {
|
|
|
555
647
|
name: "vxrn:css-stub",
|
|
556
648
|
load: {
|
|
557
649
|
handler(id) {
|
|
558
|
-
if (
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
650
|
+
if (id.endsWith(".css")) {
|
|
651
|
+
return {
|
|
652
|
+
code: "",
|
|
653
|
+
moduleType: "js"
|
|
654
|
+
};
|
|
655
|
+
}
|
|
562
656
|
}
|
|
563
657
|
}
|
|
564
658
|
};
|
|
565
659
|
}
|
|
566
660
|
function vxrnCompilerPlugin(platform, dev) {
|
|
567
|
-
var compiler = null
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
661
|
+
var compiler = null;
|
|
662
|
+
var isRefreshCandidate = function (id) {
|
|
663
|
+
return dev && !id.includes("node_modules") && !id.includes("__virtual-native-entry") && /\.[tj]sx?$/.test(id);
|
|
664
|
+
};
|
|
571
665
|
return {
|
|
572
666
|
name: "vxrn:compiler",
|
|
573
667
|
async transform(code, id) {
|
|
574
|
-
if (
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
668
|
+
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
669
|
+
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
670
|
+
var needsRefresh = isRefreshCandidate(id);
|
|
671
|
+
try {
|
|
672
|
+
if (!compiler) compiler = await import("@vxrn/compiler");
|
|
673
|
+
var props = {
|
|
674
|
+
id,
|
|
675
|
+
code,
|
|
676
|
+
development: dev,
|
|
677
|
+
environment: platform,
|
|
678
|
+
reactForRNVersion: "19"
|
|
679
|
+
};
|
|
680
|
+
var babelOptions = compiler.getBabelOptions(props);
|
|
681
|
+
if (needsRefresh) {
|
|
682
|
+
var existingPlugins = (babelOptions === null || babelOptions === void 0 ? void 0 : babelOptions.plugins) || [];
|
|
683
|
+
babelOptions = {
|
|
684
|
+
...babelOptions,
|
|
685
|
+
plugins: [...existingPlugins, "react-refresh/babel"]
|
|
686
|
+
};
|
|
687
|
+
}
|
|
688
|
+
if (!babelOptions) return;
|
|
689
|
+
var result = await compiler.transformBabel(id, code, babelOptions);
|
|
690
|
+
if (result === null || result === void 0 ? void 0 : result.code) {
|
|
691
|
+
var out = result.code;
|
|
586
692
|
if (needsRefresh) {
|
|
587
|
-
var
|
|
588
|
-
|
|
589
|
-
...babelOptions,
|
|
590
|
-
plugins: [...existingPlugins, "react-refresh/babel"]
|
|
591
|
-
};
|
|
592
|
-
}
|
|
593
|
-
if (!babelOptions) return;
|
|
594
|
-
var result = await compiler.transformBabel(id, code, babelOptions);
|
|
595
|
-
if (result?.code) {
|
|
596
|
-
var out = result.code;
|
|
597
|
-
if (needsRefresh) {
|
|
598
|
-
var escapedId = id.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
599
|
-
out = `
|
|
693
|
+
var escapedId = id.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
694
|
+
out = `
|
|
600
695
|
var __prevRefreshReg = globalThis.$RefreshReg$;
|
|
601
696
|
var __prevRefreshSig = globalThis.$RefreshSig$;
|
|
602
697
|
if (globalThis.__ReactRefresh) {
|
|
@@ -618,13 +713,17 @@ if (import.meta.hot) {
|
|
|
618
713
|
});
|
|
619
714
|
}
|
|
620
715
|
`;
|
|
621
|
-
}
|
|
622
|
-
return {
|
|
623
|
-
code: out
|
|
624
|
-
};
|
|
625
716
|
}
|
|
626
|
-
|
|
627
|
-
|
|
717
|
+
return {
|
|
718
|
+
code: out
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
} catch (err) {
|
|
722
|
+
if (dev) {
|
|
723
|
+
console.warn(`[vxrn:compiler] ${id}: ${err.message || err}`);
|
|
724
|
+
}
|
|
725
|
+
if (needsRefresh) {
|
|
726
|
+
return {
|
|
628
727
|
code: code + `
|
|
629
728
|
if (import.meta.hot) { import.meta.hot.accept(); }
|
|
630
729
|
`
|
|
@@ -639,15 +738,16 @@ function flowStripPlugin() {
|
|
|
639
738
|
name: "vxrn:flow-strip",
|
|
640
739
|
transform: {
|
|
641
740
|
async handler(code, id) {
|
|
642
|
-
if (FLOW_FILE_PATTERN.test(id))
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
741
|
+
if (!FLOW_FILE_PATTERN.test(id)) return;
|
|
742
|
+
try {
|
|
743
|
+
var fft = await import("fast-flow-transform");
|
|
744
|
+
var result = await fft.default({
|
|
745
|
+
filename: id,
|
|
746
|
+
source: code,
|
|
747
|
+
sourcemap: true,
|
|
748
|
+
dialect: "flow",
|
|
749
|
+
format: "pretty"
|
|
750
|
+
});
|
|
651
751
|
return {
|
|
652
752
|
code: result.code,
|
|
653
753
|
map: result.map
|
|
@@ -665,36 +765,38 @@ function assetPlugin(opts) {
|
|
|
665
765
|
name: "vxrn:asset",
|
|
666
766
|
load: {
|
|
667
767
|
async handler(id) {
|
|
668
|
-
if (assetRegex.test(id))
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
768
|
+
if (!assetRegex.test(id)) return;
|
|
769
|
+
var ext = extname(id).slice(1);
|
|
770
|
+
var name = basename(id, `.${ext}`);
|
|
771
|
+
var dir = dirname(id);
|
|
772
|
+
var relativePath = relative(opts.root, id);
|
|
773
|
+
var httpLocation = "/assets/" + dirname(relativePath);
|
|
774
|
+
var assetData = {
|
|
775
|
+
__packager_asset: true,
|
|
776
|
+
name,
|
|
777
|
+
type: ext,
|
|
778
|
+
scales: [1],
|
|
779
|
+
httpServerLocation: httpLocation,
|
|
780
|
+
fileSystemLocation: dir,
|
|
781
|
+
hash: "",
|
|
782
|
+
width: void 0,
|
|
783
|
+
height: void 0
|
|
784
|
+
};
|
|
785
|
+
if (["png", "jpg", "jpeg", "gif", "webp", "bmp"].includes(ext)) {
|
|
786
|
+
try {
|
|
686
787
|
var {
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
assetData.width = dims.width
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
return {
|
|
694
|
-
code,
|
|
695
|
-
moduleType: "js"
|
|
696
|
-
};
|
|
788
|
+
imageSize
|
|
789
|
+
} = await import("image-size");
|
|
790
|
+
var dims = imageSize(id);
|
|
791
|
+
assetData.width = dims.width;
|
|
792
|
+
assetData.height = dims.height;
|
|
793
|
+
} catch (unused) {}
|
|
697
794
|
}
|
|
795
|
+
var code = `module.exports = require('react-native/Libraries/Image/AssetRegistry').registerAsset(${JSON.stringify(assetData)});`;
|
|
796
|
+
return {
|
|
797
|
+
code,
|
|
798
|
+
moduleType: "js"
|
|
799
|
+
};
|
|
698
800
|
}
|
|
699
801
|
}
|
|
700
802
|
};
|
|
@@ -704,47 +806,49 @@ function hermesCompatSWCPlugin(dev) {
|
|
|
704
806
|
return {
|
|
705
807
|
name: "vxrn:hermes-compat",
|
|
706
808
|
async transform(code, id) {
|
|
707
|
-
if (
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
809
|
+
if (!/\.[cm]?[jt]sx?$/.test(id)) return;
|
|
810
|
+
if (id.includes("\0") || id.includes("virtual:")) return;
|
|
811
|
+
var hasClass = code.includes("class ") || code.includes("class{");
|
|
812
|
+
var hasAsync = !dev && code.includes("async ");
|
|
813
|
+
if (!hasClass && !hasAsync) return;
|
|
814
|
+
if (code.length > 5e5) return;
|
|
815
|
+
try {
|
|
816
|
+
if (!swc) swc = await import("@swc/core");
|
|
817
|
+
var envIncludes = ["transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object", ...(!dev ? ["transform-classes", "transform-async-to-generator"] : [])];
|
|
818
|
+
var result = await swc.transform(code, {
|
|
819
|
+
filename: id,
|
|
820
|
+
configFile: false,
|
|
821
|
+
swcrc: false,
|
|
822
|
+
sourceMaps: false,
|
|
823
|
+
inputSourceMap: false,
|
|
824
|
+
env: {
|
|
825
|
+
targets: {
|
|
826
|
+
node: 9999
|
|
827
|
+
},
|
|
828
|
+
include: envIncludes
|
|
829
|
+
},
|
|
830
|
+
jsc: {
|
|
831
|
+
parser: {
|
|
832
|
+
syntax: "typescript",
|
|
833
|
+
tsx: true
|
|
834
|
+
},
|
|
835
|
+
transform: {
|
|
836
|
+
react: {
|
|
837
|
+
runtime: "preserve"
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
externalHelpers: false,
|
|
841
|
+
assumptions: {
|
|
842
|
+
setPublicClassFields: true,
|
|
843
|
+
privateFieldsAsProperties: true
|
|
844
|
+
}
|
|
845
|
+
},
|
|
846
|
+
isModule: !id.endsWith(".cjs")
|
|
847
|
+
});
|
|
848
|
+
return {
|
|
849
|
+
code: result.code
|
|
850
|
+
};
|
|
851
|
+
} catch (err) {}
|
|
748
852
|
}
|
|
749
853
|
};
|
|
750
854
|
}
|