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
|
@@ -9,34 +9,47 @@ import { generateForPlatform } from "./prebuildWithoutExpo.mjs";
|
|
|
9
9
|
const prebuild = async ({
|
|
10
10
|
root,
|
|
11
11
|
platform,
|
|
12
|
-
"no-install": noInstall =
|
|
13
|
-
expo =
|
|
12
|
+
"no-install": noInstall = false,
|
|
13
|
+
expo = true
|
|
14
14
|
}) => {
|
|
15
15
|
const options = await fillOptions({
|
|
16
16
|
root
|
|
17
17
|
});
|
|
18
18
|
await applyBuiltInPatches(options);
|
|
19
|
-
const doesIOSExist = FSExtra.existsSync(path.resolve("ios"))
|
|
20
|
-
|
|
19
|
+
const doesIOSExist = FSExtra.existsSync(path.resolve("ios"));
|
|
20
|
+
const doesAndroidExist = FSExtra.existsSync(path.resolve("android"));
|
|
21
21
|
if (expo) {
|
|
22
22
|
try {
|
|
23
|
-
const
|
|
23
|
+
const importPath = resolvePath("@expo/cli/build/src/prebuild/index.js", root);
|
|
24
|
+
const expoPrebuild = (await import(importPath)).default.expoPrebuild;
|
|
24
25
|
await expoPrebuild([...(platform ? ["--platform", platform] : []), ...(noInstall ? ["--no-install"] : []), "--skip-dependency-update", "react,react-native,expo"]);
|
|
25
26
|
try {
|
|
26
27
|
const packageJsonPath = path.join(root, "package.json");
|
|
27
28
|
let packageJsonContents = await FSExtra.readFile(packageJsonPath, "utf8");
|
|
28
|
-
packageJsonContents = packageJsonContents.replace(/expo run:ios/g, "one run:ios")
|
|
29
|
+
packageJsonContents = packageJsonContents.replace(/expo run:ios/g, "one run:ios");
|
|
30
|
+
packageJsonContents = packageJsonContents.replace(/expo run:android/g, "one run:android");
|
|
31
|
+
await FSExtra.writeFile(packageJsonPath, packageJsonContents, "utf8");
|
|
29
32
|
} catch (error) {
|
|
30
33
|
console.error("Error updating package.json", error);
|
|
31
34
|
}
|
|
32
35
|
try {
|
|
33
36
|
FSExtra.removeSync(path.join(root, "ios", ".xcode.env.local"));
|
|
34
|
-
} catch {}
|
|
37
|
+
} catch (e) {}
|
|
35
38
|
} catch (e) {
|
|
36
39
|
throw new Error(`Failed to prebuild native project: ${e}
|
|
37
40
|
Is "expo" listed in your dependencies?`);
|
|
38
41
|
}
|
|
39
|
-
|
|
42
|
+
if (!platform || platform === "ios") {
|
|
43
|
+
const isMetro = process.env.ONE_METRO_MODE || globalThis["__vxrnMetroOptions__"] || globalThis["__vxrnPluginConfig__"]?.native?.bundler === "metro";
|
|
44
|
+
if (!isMetro) {
|
|
45
|
+
ensureRolldownPodfileProperties(root);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!platform || platform === "ios") {
|
|
49
|
+
validateSwift6Workaround(root);
|
|
50
|
+
}
|
|
51
|
+
if (!platform || platform === "ios") {
|
|
52
|
+
console.info(`
|
|
40
53
|
iOS:
|
|
41
54
|
|
|
42
55
|
Run \`open ios/*.xcworkspace\` in your terminal to open the prebuilt iOS project.
|
|
@@ -46,65 +59,101 @@ iOS:
|
|
|
46
59
|
|
|
47
60
|
---
|
|
48
61
|
`);
|
|
62
|
+
}
|
|
49
63
|
} else {
|
|
50
64
|
try {
|
|
51
65
|
const packageJsonPath = path.join(root, "package.json");
|
|
52
|
-
let packageJsonContents = await FSExtra.readFile(packageJsonPath, "utf8")
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
66
|
+
let packageJsonContents = await FSExtra.readFile(packageJsonPath, "utf8");
|
|
67
|
+
let {
|
|
68
|
+
devDependencies
|
|
69
|
+
} = JSON.parse(packageJsonContents);
|
|
56
70
|
if (!devDependencies["@react-native-community/template"]) {
|
|
57
71
|
const installCommand = await (async () => {
|
|
58
72
|
const found = await detectPackageManager();
|
|
59
|
-
switch (
|
|
73
|
+
switch (true) {
|
|
60
74
|
case found.bun:
|
|
61
|
-
return
|
|
75
|
+
return `bun add -D @react-native-community/template`;
|
|
62
76
|
case found.pnpm:
|
|
63
|
-
return
|
|
77
|
+
return `pnpm install -D @react-native-community/template`;
|
|
64
78
|
case found.yarn:
|
|
65
|
-
return
|
|
79
|
+
return `yarn add -D @react-native-community/template`;
|
|
66
80
|
default:
|
|
67
|
-
return
|
|
81
|
+
return `npm install -D @react-native-community/template`;
|
|
68
82
|
}
|
|
69
83
|
})();
|
|
70
84
|
throw new Error(`"@react-native-community/template" is not found in package.json, please install "@react-native-community/template" as dev dependency:
|
|
71
85
|
\`${installCommand}\``);
|
|
72
86
|
}
|
|
73
87
|
} catch (error) {
|
|
74
|
-
throw new Error(
|
|
75
|
-
` + error);
|
|
88
|
+
throw new Error("package.json checks are failing:\n" + error);
|
|
76
89
|
}
|
|
77
90
|
let appConfig;
|
|
78
91
|
try {
|
|
79
|
-
const appConfigPath = path.resolve("app.json")
|
|
80
|
-
|
|
92
|
+
const appConfigPath = path.resolve("app.json");
|
|
93
|
+
const appConfigContents = await FSExtra.readFile(appConfigPath, "utf8");
|
|
81
94
|
appConfig = JSON.parse(appConfigContents);
|
|
82
95
|
} catch (error) {
|
|
83
|
-
throw new Error(
|
|
84
|
-
` + error);
|
|
96
|
+
throw new Error("app.json checks are failing:\n" + error);
|
|
85
97
|
}
|
|
86
|
-
(platform == "ios" || !platform)
|
|
98
|
+
if (platform == "ios" || !platform) {
|
|
99
|
+
if (!doesIOSExist) {
|
|
100
|
+
await generateForPlatform(root, "ios", appConfig);
|
|
101
|
+
} else {
|
|
102
|
+
console.error("ios/ folder already exists");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (platform == "android" || !platform) {
|
|
106
|
+
if (!doesAndroidExist) {
|
|
107
|
+
await generateForPlatform(root, "android", appConfig);
|
|
108
|
+
} else {
|
|
109
|
+
console.error("android/ folder already exists");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!platform || platform === "ios") {
|
|
113
|
+
console.info(`Run cd ios && pod install`);
|
|
114
|
+
console.info("Then run `open *.xcworkspace` in your terminal to open the prebuilt iOS project, then you can either run it via Xcode or archive it for distribution.");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!platform || platform === "android") {
|
|
118
|
+
console.info(`
|
|
119
|
+
Android:
|
|
120
|
+
|
|
121
|
+
\`cd android\` and run \`./gradlew generateCodegenArtifactsFromSchema\`, then \`./gradlew assembleRelease\` or \`./gradlew assembleDebug\` to build the Android project.
|
|
122
|
+
|
|
123
|
+
Afterwards, you can find the built APK at \`android/app/build/outputs/apk/release/app-release.apk\` or
|
|
124
|
+
\`android/app/build/outputs/apk/debug/app-debug.apk\`.
|
|
125
|
+
|
|
126
|
+
`);
|
|
87
127
|
}
|
|
88
|
-
(!platform || platform === "android") && console.info("\nAndroid:\n\n `cd android` and run `./gradlew generateCodegenArtifactsFromSchema`, then `./gradlew assembleRelease` or `./gradlew assembleDebug` to build the Android project.\n\n Afterwards, you can find the built APK at `android/app/build/outputs/apk/release/app-release.apk` or\n `android/app/build/outputs/apk/debug/app-debug.apk`.\n\n");
|
|
89
128
|
try {
|
|
90
129
|
resolvePath("@react-native-community/cli", root);
|
|
91
130
|
} catch (e) {
|
|
92
|
-
if (isMissingCliDependency(e))
|
|
131
|
+
if (isMissingCliDependency(e)) {
|
|
132
|
+
warnMissingCliDependency();
|
|
133
|
+
} else {
|
|
134
|
+
throw e;
|
|
135
|
+
}
|
|
93
136
|
}
|
|
94
137
|
};
|
|
95
138
|
function validateSwift6Workaround(root) {
|
|
96
139
|
const podfilePath = path.join(root, "ios", "Podfile");
|
|
97
140
|
if (!FSExtra.existsSync(podfilePath)) return;
|
|
98
141
|
const propsPath = path.join(root, "ios", "Podfile.properties.json");
|
|
99
|
-
if (FSExtra.existsSync(propsPath))
|
|
100
|
-
|
|
101
|
-
|
|
142
|
+
if (FSExtra.existsSync(propsPath)) {
|
|
143
|
+
try {
|
|
144
|
+
const props = JSON.parse(FSExtra.readFileSync(propsPath, "utf8"));
|
|
145
|
+
if (props["one.disableSwift6Workaround"] === "true") return;
|
|
146
|
+
} catch {}
|
|
147
|
+
}
|
|
102
148
|
try {
|
|
103
|
-
const emcPkgPath = resolvePath("expo-modules-core/package.json", root)
|
|
104
|
-
|
|
105
|
-
|
|
149
|
+
const emcPkgPath = resolvePath("expo-modules-core/package.json", root);
|
|
150
|
+
const emcVersion = JSON.parse(FSExtra.readFileSync(emcPkgPath, "utf8")).version;
|
|
151
|
+
const major = Number.parseInt(emcVersion.match(/^(\d+)/)?.[1] || "0", 10);
|
|
152
|
+
if (major >= 56) return;
|
|
106
153
|
} catch {}
|
|
107
|
-
FSExtra.readFileSync(podfilePath, "utf8")
|
|
154
|
+
const podfile = FSExtra.readFileSync(podfilePath, "utf8");
|
|
155
|
+
if (!podfile.includes("SWIFT_STRICT_CONCURRENCY")) {
|
|
156
|
+
console.warn(colors.yellow(`
|
|
108
157
|
\u26A0\uFE0F Your ios/Podfile is missing the Swift 6 workaround for expo-modules-core.
|
|
109
158
|
Without this, your iOS build will fail with Swift concurrency errors.
|
|
110
159
|
|
|
@@ -115,6 +164,7 @@ function validateSwift6Workaround(root) {
|
|
|
115
164
|
|
|
116
165
|
See: expo/expo#43199
|
|
117
166
|
`));
|
|
167
|
+
}
|
|
118
168
|
}
|
|
119
169
|
function isMissingCliDependency(error) {
|
|
120
170
|
return error.code === "MODULE_NOT_FOUND" && /@react-native-community\/cli/.test(error.message);
|
|
@@ -128,20 +178,34 @@ ${colors.white(colors.bold(`
|
|
|
128
178
|
}`))}`);
|
|
129
179
|
}
|
|
130
180
|
async function replaceInUTF8File(filePath, findThis, replaceWith) {
|
|
131
|
-
const fileContent = await FSExtra.readFile(filePath, "utf8")
|
|
132
|
-
|
|
133
|
-
fileContent !== replacedFileContent
|
|
181
|
+
const fileContent = await FSExtra.readFile(filePath, "utf8");
|
|
182
|
+
const replacedFileContent = fileContent.replace(findThis, replaceWith);
|
|
183
|
+
if (fileContent !== replacedFileContent) {
|
|
184
|
+
await FSExtra.writeFile(filePath, replacedFileContent, "utf8");
|
|
185
|
+
}
|
|
134
186
|
}
|
|
135
187
|
function ensureRolldownPodfileProperties(root) {
|
|
136
188
|
const propsPath = path.join(root, "ios", "Podfile.properties.json");
|
|
137
189
|
if (!FSExtra.existsSync(path.join(root, "ios"))) return;
|
|
138
190
|
let props = {};
|
|
139
|
-
if (FSExtra.existsSync(propsPath))
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
191
|
+
if (FSExtra.existsSync(propsPath)) {
|
|
192
|
+
try {
|
|
193
|
+
props = JSON.parse(FSExtra.readFileSync(propsPath, "utf8"));
|
|
194
|
+
} catch {}
|
|
195
|
+
}
|
|
196
|
+
let changed = false;
|
|
197
|
+
if (props["expo.useHermesV1"] !== "true") {
|
|
198
|
+
props["expo.useHermesV1"] = "true";
|
|
199
|
+
changed = true;
|
|
200
|
+
}
|
|
201
|
+
if (props["ios.buildReactNativeFromSource"] !== "true") {
|
|
202
|
+
props["ios.buildReactNativeFromSource"] = "true";
|
|
203
|
+
changed = true;
|
|
204
|
+
}
|
|
205
|
+
if (changed) {
|
|
206
|
+
FSExtra.writeFileSync(propsPath, JSON.stringify(props, null, 2) + "\n", "utf8");
|
|
207
|
+
console.info(colors.cyan(`[vxrn] Updated ios/Podfile.properties.json for rolldown mode (hermes v1 + build from source)`));
|
|
208
|
+
}
|
|
145
209
|
}
|
|
146
210
|
export { prebuild, replaceInUTF8File };
|
|
147
211
|
//# sourceMappingURL=prebuild.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolvePath","detectPackageManager","FSExtra","path","colors","fillOptions","applyBuiltInPatches","generateForPlatform","prebuild","root","platform","noInstall","expo","options","doesIOSExist","existsSync","resolve","doesAndroidExist","expoPrebuild","default","packageJsonPath","join","packageJsonContents","readFile","replace","writeFile","error","console","removeSync","e","Error","process","env","ONE_METRO_MODE","globalThis","
|
|
1
|
+
{"version":3,"names":["resolvePath","detectPackageManager","FSExtra","path","colors","fillOptions","applyBuiltInPatches","generateForPlatform","prebuild","root","platform","noInstall","expo","options","doesIOSExist","existsSync","resolve","doesAndroidExist","importPath","expoPrebuild","default","packageJsonPath","join","packageJsonContents","readFile","replace","writeFile","error","console","removeSync","e","Error","isMetro","process","env","ONE_METRO_MODE","globalThis","native","bundler","ensureRolldownPodfileProperties","validateSwift6Workaround","info","devDependencies","JSON","parse","installCommand","found","bun","pnpm","yarn","appConfig","appConfigPath","appConfigContents","isMissingCliDependency","warnMissingCliDependency","podfilePath","propsPath","props","readFileSync","emcPkgPath","emcVersion","version","major","Number","parseInt","match","podfile","includes","warn","yellow","code","test","message","red","dim","white","bold","replaceInUTF8File","filePath","findThis","replaceWith","fileContent","replacedFileContent","changed","writeFileSync","stringify","cyan"],"sources":["../../src/exports/prebuild.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -8,43 +8,50 @@ import { applyBuiltInPatches } from "../utils/patches.native.js";
|
|
|
8
8
|
import { generateForPlatform } from "./prebuildWithoutExpo.native.js";
|
|
9
9
|
var prebuild = async function (param) {
|
|
10
10
|
var {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
root,
|
|
12
|
+
platform,
|
|
13
|
+
"no-install": noInstall = false,
|
|
14
|
+
expo = true
|
|
15
|
+
} = param;
|
|
16
|
+
var options = await fillOptions({
|
|
17
|
+
root
|
|
18
|
+
});
|
|
19
19
|
await applyBuiltInPatches(options);
|
|
20
|
-
var doesIOSExist = FSExtra.existsSync(path.resolve("ios"))
|
|
21
|
-
|
|
20
|
+
var doesIOSExist = FSExtra.existsSync(path.resolve("ios"));
|
|
21
|
+
var doesAndroidExist = FSExtra.existsSync(path.resolve("android"));
|
|
22
22
|
if (expo) {
|
|
23
23
|
try {
|
|
24
|
-
var importPath = resolvePath("@expo/cli/build/src/prebuild/index.js", root)
|
|
25
|
-
|
|
24
|
+
var importPath = resolvePath("@expo/cli/build/src/prebuild/index.js", root);
|
|
25
|
+
var expoPrebuild = (await import(importPath)).default.expoPrebuild;
|
|
26
26
|
await expoPrebuild([...(platform ? ["--platform", platform] : []), ...(noInstall ? ["--no-install"] : []), "--skip-dependency-update", "react,react-native,expo"]);
|
|
27
27
|
try {
|
|
28
|
-
var packageJsonPath = path.join(root, "package.json")
|
|
29
|
-
|
|
30
|
-
packageJsonContents = packageJsonContents.replace(/expo run:ios/g, "one run:ios")
|
|
28
|
+
var packageJsonPath = path.join(root, "package.json");
|
|
29
|
+
var packageJsonContents = await FSExtra.readFile(packageJsonPath, "utf8");
|
|
30
|
+
packageJsonContents = packageJsonContents.replace(/expo run:ios/g, "one run:ios");
|
|
31
|
+
packageJsonContents = packageJsonContents.replace(/expo run:android/g, "one run:android");
|
|
32
|
+
await FSExtra.writeFile(packageJsonPath, packageJsonContents, "utf8");
|
|
31
33
|
} catch (error) {
|
|
32
34
|
console.error("Error updating package.json", error);
|
|
33
35
|
}
|
|
34
36
|
try {
|
|
35
37
|
FSExtra.removeSync(path.join(root, "ios", ".xcode.env.local"));
|
|
36
|
-
} catch {}
|
|
38
|
+
} catch (e) {}
|
|
37
39
|
} catch (e) {
|
|
38
40
|
throw new Error(`Failed to prebuild native project: ${e}
|
|
39
41
|
Is "expo" listed in your dependencies?`);
|
|
40
42
|
}
|
|
41
43
|
if (!platform || platform === "ios") {
|
|
42
|
-
var _globalThis___vxrnPluginConfig___native,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
var _globalThis___vxrnPluginConfig___native, _globalThis___vxrnPluginConfig__;
|
|
45
|
+
var isMetro = process.env.ONE_METRO_MODE || globalThis["__vxrnMetroOptions__"] || ((_globalThis___vxrnPluginConfig__ = globalThis["__vxrnPluginConfig__"]) === null || _globalThis___vxrnPluginConfig__ === void 0 ? void 0 : (_globalThis___vxrnPluginConfig___native = _globalThis___vxrnPluginConfig__.native) === null || _globalThis___vxrnPluginConfig___native === void 0 ? void 0 : _globalThis___vxrnPluginConfig___native.bundler) === "metro";
|
|
46
|
+
if (!isMetro) {
|
|
47
|
+
ensureRolldownPodfileProperties(root);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (!platform || platform === "ios") {
|
|
51
|
+
validateSwift6Workaround(root);
|
|
46
52
|
}
|
|
47
|
-
|
|
53
|
+
if (!platform || platform === "ios") {
|
|
54
|
+
console.info(`
|
|
48
55
|
iOS:
|
|
49
56
|
|
|
50
57
|
Run \`open ios/*.xcworkspace\` in your terminal to open the prebuilt iOS project.
|
|
@@ -54,69 +61,102 @@ iOS:
|
|
|
54
61
|
|
|
55
62
|
---
|
|
56
63
|
`);
|
|
64
|
+
}
|
|
57
65
|
} else {
|
|
58
66
|
try {
|
|
59
|
-
var packageJsonPath1 = path.join(root, "package.json")
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
var packageJsonPath1 = path.join(root, "package.json");
|
|
68
|
+
var packageJsonContents1 = await FSExtra.readFile(packageJsonPath1, "utf8");
|
|
69
|
+
var {
|
|
70
|
+
devDependencies
|
|
71
|
+
} = JSON.parse(packageJsonContents1);
|
|
64
72
|
if (!devDependencies["@react-native-community/template"]) {
|
|
65
73
|
var installCommand = await async function () {
|
|
66
74
|
var found = await detectPackageManager();
|
|
67
|
-
switch (
|
|
75
|
+
switch (true) {
|
|
68
76
|
case found.bun:
|
|
69
|
-
return
|
|
77
|
+
return `bun add -D @react-native-community/template`;
|
|
70
78
|
case found.pnpm:
|
|
71
|
-
return
|
|
79
|
+
return `pnpm install -D @react-native-community/template`;
|
|
72
80
|
case found.yarn:
|
|
73
|
-
return
|
|
81
|
+
return `yarn add -D @react-native-community/template`;
|
|
74
82
|
default:
|
|
75
|
-
return
|
|
83
|
+
return `npm install -D @react-native-community/template`;
|
|
76
84
|
}
|
|
77
85
|
}();
|
|
78
86
|
throw new Error(`"@react-native-community/template" is not found in package.json, please install "@react-native-community/template" as dev dependency:
|
|
79
87
|
\`${installCommand}\``);
|
|
80
88
|
}
|
|
81
89
|
} catch (error) {
|
|
82
|
-
throw new Error(
|
|
83
|
-
` + error);
|
|
90
|
+
throw new Error("package.json checks are failing:\n" + error);
|
|
84
91
|
}
|
|
85
92
|
var appConfig;
|
|
86
93
|
try {
|
|
87
|
-
var appConfigPath = path.resolve("app.json")
|
|
88
|
-
|
|
94
|
+
var appConfigPath = path.resolve("app.json");
|
|
95
|
+
var appConfigContents = await FSExtra.readFile(appConfigPath, "utf8");
|
|
89
96
|
appConfig = JSON.parse(appConfigContents);
|
|
90
97
|
} catch (error) {
|
|
91
|
-
throw new Error(
|
|
92
|
-
|
|
98
|
+
throw new Error("app.json checks are failing:\n" + error);
|
|
99
|
+
}
|
|
100
|
+
if (platform == "ios" || !platform) {
|
|
101
|
+
if (!doesIOSExist) {
|
|
102
|
+
await generateForPlatform(root, "ios", appConfig);
|
|
103
|
+
} else {
|
|
104
|
+
console.error("ios/ folder already exists");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (platform == "android" || !platform) {
|
|
108
|
+
if (!doesAndroidExist) {
|
|
109
|
+
await generateForPlatform(root, "android", appConfig);
|
|
110
|
+
} else {
|
|
111
|
+
console.error("android/ folder already exists");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!platform || platform === "ios") {
|
|
115
|
+
console.info(`Run cd ios && pod install`);
|
|
116
|
+
console.info("Then run `open *.xcworkspace` in your terminal to open the prebuilt iOS project, then you can either run it via Xcode or archive it for distribution.");
|
|
93
117
|
}
|
|
94
|
-
(platform == "ios" || !platform) && (doesIOSExist ? console.error("ios/ folder already exists") : await generateForPlatform(root, "ios", appConfig)), (platform == "android" || !platform) && (doesAndroidExist ? console.error("android/ folder already exists") : await generateForPlatform(root, "android", appConfig)), (!platform || platform === "ios") && (console.info("Run cd ios && pod install"), console.info("Then run `open *.xcworkspace` in your terminal to open the prebuilt iOS project, then you can either run it via Xcode or archive it for distribution."));
|
|
95
118
|
}
|
|
96
|
-
(!platform || platform === "android")
|
|
119
|
+
if (!platform || platform === "android") {
|
|
120
|
+
console.info(`
|
|
121
|
+
Android:
|
|
122
|
+
|
|
123
|
+
\`cd android\` and run \`./gradlew generateCodegenArtifactsFromSchema\`, then \`./gradlew assembleRelease\` or \`./gradlew assembleDebug\` to build the Android project.
|
|
124
|
+
|
|
125
|
+
Afterwards, you can find the built APK at \`android/app/build/outputs/apk/release/app-release.apk\` or
|
|
126
|
+
\`android/app/build/outputs/apk/debug/app-debug.apk\`.
|
|
127
|
+
|
|
128
|
+
`);
|
|
129
|
+
}
|
|
97
130
|
try {
|
|
98
131
|
resolvePath("@react-native-community/cli", root);
|
|
99
132
|
} catch (e) {
|
|
100
|
-
if (isMissingCliDependency(e))
|
|
133
|
+
if (isMissingCliDependency(e)) {
|
|
134
|
+
warnMissingCliDependency();
|
|
135
|
+
} else {
|
|
136
|
+
throw e;
|
|
137
|
+
}
|
|
101
138
|
}
|
|
102
139
|
};
|
|
103
140
|
function validateSwift6Workaround(root) {
|
|
104
141
|
var podfilePath = path.join(root, "ios", "Podfile");
|
|
105
|
-
if (FSExtra.existsSync(podfilePath))
|
|
106
|
-
|
|
107
|
-
|
|
142
|
+
if (!FSExtra.existsSync(podfilePath)) return;
|
|
143
|
+
var propsPath = path.join(root, "ios", "Podfile.properties.json");
|
|
144
|
+
if (FSExtra.existsSync(propsPath)) {
|
|
145
|
+
try {
|
|
108
146
|
var props = JSON.parse(FSExtra.readFileSync(propsPath, "utf8"));
|
|
109
147
|
if (props["one.disableSwift6Workaround"] === "true") return;
|
|
110
|
-
} catch {}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
148
|
+
} catch (unused) {}
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
var _emcVersion_match;
|
|
152
|
+
var emcPkgPath = resolvePath("expo-modules-core/package.json", root);
|
|
153
|
+
var emcVersion = JSON.parse(FSExtra.readFileSync(emcPkgPath, "utf8")).version;
|
|
154
|
+
var major = Number.parseInt(((_emcVersion_match = emcVersion.match(/^(\d+)/)) === null || _emcVersion_match === void 0 ? void 0 : _emcVersion_match[1]) || "0", 10);
|
|
155
|
+
if (major >= 56) return;
|
|
156
|
+
} catch (unused) {}
|
|
157
|
+
var podfile = FSExtra.readFileSync(podfilePath, "utf8");
|
|
158
|
+
if (!podfile.includes("SWIFT_STRICT_CONCURRENCY")) {
|
|
159
|
+
console.warn(colors.yellow(`
|
|
120
160
|
\u26A0\uFE0F Your ios/Podfile is missing the Swift 6 workaround for expo-modules-core.
|
|
121
161
|
Without this, your iOS build will fail with Swift concurrency errors.
|
|
122
162
|
|
|
@@ -141,20 +181,33 @@ ${colors.white(colors.bold(`
|
|
|
141
181
|
}`))}`);
|
|
142
182
|
}
|
|
143
183
|
async function replaceInUTF8File(filePath, findThis, replaceWith) {
|
|
144
|
-
var fileContent = await FSExtra.readFile(filePath, "utf8")
|
|
145
|
-
|
|
146
|
-
fileContent !== replacedFileContent
|
|
184
|
+
var fileContent = await FSExtra.readFile(filePath, "utf8");
|
|
185
|
+
var replacedFileContent = fileContent.replace(findThis, replaceWith);
|
|
186
|
+
if (fileContent !== replacedFileContent) {
|
|
187
|
+
await FSExtra.writeFile(filePath, replacedFileContent, "utf8");
|
|
188
|
+
}
|
|
147
189
|
}
|
|
148
190
|
function ensureRolldownPodfileProperties(root) {
|
|
149
191
|
var propsPath = path.join(root, "ios", "Podfile.properties.json");
|
|
150
|
-
if (FSExtra.existsSync(path.join(root, "ios")))
|
|
151
|
-
|
|
152
|
-
|
|
192
|
+
if (!FSExtra.existsSync(path.join(root, "ios"))) return;
|
|
193
|
+
var props = {};
|
|
194
|
+
if (FSExtra.existsSync(propsPath)) {
|
|
195
|
+
try {
|
|
153
196
|
props = JSON.parse(FSExtra.readFileSync(propsPath, "utf8"));
|
|
154
|
-
} catch {}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
197
|
+
} catch (unused) {}
|
|
198
|
+
}
|
|
199
|
+
var changed = false;
|
|
200
|
+
if (props["expo.useHermesV1"] !== "true") {
|
|
201
|
+
props["expo.useHermesV1"] = "true";
|
|
202
|
+
changed = true;
|
|
203
|
+
}
|
|
204
|
+
if (props["ios.buildReactNativeFromSource"] !== "true") {
|
|
205
|
+
props["ios.buildReactNativeFromSource"] = "true";
|
|
206
|
+
changed = true;
|
|
207
|
+
}
|
|
208
|
+
if (changed) {
|
|
209
|
+
FSExtra.writeFileSync(propsPath, JSON.stringify(props, null, 2) + "\n", "utf8");
|
|
210
|
+
console.info(colors.cyan(`[vxrn] Updated ios/Podfile.properties.json for rolldown mode (hermes v1 + build from source)`));
|
|
158
211
|
}
|
|
159
212
|
}
|
|
160
213
|
export { prebuild, replaceInUTF8File };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolvePath","detectPackageManager","FSExtra","path","colors","fillOptions","applyBuiltInPatches","generateForPlatform","prebuild","param","root","platform","noInstall","expo","options","doesIOSExist","existsSync","resolve","doesAndroidExist","importPath","expoPrebuild","default","packageJsonPath","join","packageJsonContents","readFile","replace","writeFile","error","console","removeSync","e","Error","_globalThis___vxrnPluginConfig___native","_globalThis___vxrnPluginConfig__","isMetro","process","env","ONE_METRO_MODE","globalThis","
|
|
1
|
+
{"version":3,"names":["resolvePath","detectPackageManager","FSExtra","path","colors","fillOptions","applyBuiltInPatches","generateForPlatform","prebuild","param","root","platform","noInstall","expo","options","doesIOSExist","existsSync","resolve","doesAndroidExist","importPath","expoPrebuild","default","packageJsonPath","join","packageJsonContents","readFile","replace","writeFile","error","console","removeSync","e","Error","_globalThis___vxrnPluginConfig___native","_globalThis___vxrnPluginConfig__","isMetro","process","env","ONE_METRO_MODE","globalThis","native","bundler","ensureRolldownPodfileProperties","validateSwift6Workaround","info","packageJsonPath1","packageJsonContents1","devDependencies","JSON","parse","installCommand","found","bun","pnpm","yarn","appConfig","appConfigPath","appConfigContents","isMissingCliDependency","warnMissingCliDependency","podfilePath","propsPath","props","readFileSync","unused","_emcVersion_match","emcPkgPath","emcVersion","version","major","Number","parseInt","match","podfile","includes","warn","yellow","code","test","message","red","dim","white","bold","replaceInUTF8File","filePath","findThis","replaceWith","fileContent","replacedFileContent","changed","writeFileSync","stringify","cyan"],"sources":["../../src/exports/prebuild.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAmB;AAC5B,SAASC,oBAAA,QAAqD;AAC9D,OAAOC,OAAA,MAAa;AACpB,OAAOC,IAAA,MAAU;AACjB,OAAOC,MAAA,MAAY;AACnB,SAASC,WAAA,QAAmB;AAC5B,SAASC,mBAAA,QAA2B;AACpC,SAASC,mBAAA,QAA2B;AAE7B,IAAAC,QAAM,kBAAAA,CAAkBC,KAAA;EAC7B;IAAAC,IAAA;IAAAC,QAAA;IAAA,cAAAC,SAAA;IAAAC,IAAA;EAAA,IAAAJ,KAAA;EACA,IAAAK,OAAA,SAAAT,WAAA;IACAK;EACA;EACF,MAKMJ,mBAAA,CAAAQ,OAAA;EACJ,IAAAC,YAAgB,GAAAb,OAAM,CAAAc,UAAc,CAAAb,IAAM,CAAAc,OAAA;EAE1C,IAAAC,gBAAM,GAAAhB,OAAoB,CAAAc,UAAO,CAAAb,IAAA,CAAAc,OAAA;EAEjC,IAAAJ,IAAM;IACN,IAAM;MAEF,IAAAM,UAAM,GAAAnB,WAAA,0CAAAU,IAAA;MACR,IAAIU,YAAA,iBAAAD,UAAA,GAAAE,OAAA,CAAAD,YAAA;MAEF,MAAMA,YAAA,CAAa,CACnB,IAAAT,QAAM,IACN,YAAM,EACJA,QAAI,CACJ,GAAI,KACJ,IAAAC,SAAA,IACA,eACD,QACD,0BAAI,EACF,yBAAwB,CACxB;MAEA;QACA,IAAAU,eAAA,GAAsBnB,IAAA,CAAAoB,IAAA,CAAAb,IAAA,gBAAoB;QAAA,IACxCc,mBAAA,SAAAtB,OAAA,CAAAuB,QAAA,CAAAH,eAAA;QAAAE,mBACA,GAAAA,mBAAA,CAAAE,OAAA;QACFF,mBAAA,GAAAA,mBAAA,CAAAE,OAAA;QAEA,MAAMxB,OAAA,CAAQyB,SAAA,CAAUL,eAAA,EAAiBE,mBAAA,EAAqB,MAAM;MACtE,SAASI,KAAA,EAAO;QACdC,OAAA,CAAQD,KAAA,CAAM,+BAA+BA,KAAK;MACpD;MAEA,IAAI;QACF1B,OAAA,CAAQ4B,UAAA,CAAW3B,IAAA,CAAKoB,IAAA,CAAKb,IAAA,EAAM,OAAO,kBAAkB,CAAC;MAC/D,SAASqB,CAAA,EAAG,CAEZ;IACF,SAASA,CAAA,EAAG;MACV,MAAM,IAAIC,KAAA,uCAAAD,CAAA;AAAA,uCACR;IAAuC;IAAA,IACzC,CAAApB,QAAA,IAAAA,QAAA;MACF,IAAAsB,uCAAA,EAAAC,gCAAA;MAIA,IAAKC,OAAA,GAAAC,OAAY,CAAAC,GAAA,CAAAC,cAAoB,IAAAC,UAAA,8BAAAL,gCAAA,GAAAK,UAAA,sCAAAL,gCAAA,wBAAAD,uCAAA,GAAAC,gCAAA,CAAAM,MAAA,cAAAP,uCAAA,uBAAAA,uCAAA,CAAAQ,OAAA;MACnC,KAAAN,OAAM;QAKNO,+BAAc,CAAAhC,IAAA;MACZ;IAAoC;IAExC,KAAAC,QAAA,IAAAA,QAAA;MAIAgC,wBAAiB,CAAAjC,IAAa;IAC5B;IACF,KAAAC,QAAA,IAAAA,QAAA;MAEAkB,OAAK,CAAAe,IAAA;AACH;AAAQ;AACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAAA;EAAA;IAAA,IAUF;MACF,IAAAC,gBAAA,GAAA1C,IAAA,CAAAoB,IAAA,CAAAb,IAAA;MACF,IAAOoC,oBAAA,SAAA5C,OAAA,CAAAuB,QAAA,CAAAoB,gBAAA;MACL,IAAI;QAAAE;MAAA,IAAAC,IAAA,CAAAC,KAAA,CAAAH,oBAAA;MACF,KAAAC,eAAM,mCAAgD;QACtD,IAAIG,cAAA,SAAsB,kBAAc;UACpC,IAAEC,KAAA,SAAgBlD,oBAAe;UACjC,QAAC;YACH,KAAMkD,KAAA,CAAAC,GAAA;cAEF,OAAM,6CAAmC;YACzC,KAAAD,KAAQ,CAAAE,IAAM;cACZ,OAAK,kDAAM;YACT,KAAAF,KAAO,CAAAG,IAAA;cACT,OAAK,8CAAM;YACT;cACF,OAAK,iDAAM;UACT;QAAO,GACT;QACE,UAAAtB,KAAO;AAAA,IAAAkB,cACX;MAAA;IAEJ,SAAAtB,KAAU;MAAA,MACR,IAAAI,KAAA,wCAAAJ,KAAA;IACO;IAAc,IACvB2B,SAAA;IAAA,IACF;MACF,IAAAC,aAAgB,GAAArD,IAAA,CAAAc,OAAA;MACd,IAAAwC,iBAAgB,SAAAvD,OAAA,CAAAuB,QAAA,CAAA+B,aAA4C;MAC9DD,SAAA,GAAAP,IAAA,CAAAC,KAAA,CAAAQ,iBAAA;IAGA,SAAI7B,KAAA;MACJ,MAAI,IAAAI,KAAA,oCAAAJ,KAAA;IACF;IACA,IAAAjB,QAAM,cAAAA,QAA0B;MAChC,KAAAI,YAAiB;QACnB,MAASR,mBAAO,CAAAG,IAAA,SAAA6C,SAAA;MACd,OAAM;QACR1B,OAAA,CAAAD,KAAA;MACA;IACE;IACE,IAAAjB,QAAM,kBAAoBA,QAAM;MAClC,KAAAO,gBAAO;QACL,MAAAX,mBAAc,CAAAG,IAAA,aAA4B6C,SAAA;MAC5C;QACF1B,OAAA,CAAAD,KAAA;MACA;IACE;IACE,KAAAjB,QAAM,IAAAA,QAAA,KAAoB,OAAM;MAClCkB,OAAO,CAAAe,IAAA;MACLf,OAAA,CAAAe,IAAQ,wJAAsC;IAAA;EAChD;EAEF,KAAAjC,QAAK,IAAAA,QAAY,cAAoB;IACnCkB,OAAA,CAAAe,IAAQ;AACR;AAAQ;AACN;AACF;AACF;AAEF;AACE;AAAQ;EACN;EAAA;IAAA5C,WAAA,gCAAAU,IAAA;EAAA,SAAAqB,CAAA;IAAA,IAAA2B,sBAAA,CAAA3B,CAAA;MAAA4B,wBAAA;IAAA;MAAA,MAAA5B,CAAA;IASF;EACF;AAgDA;AACE,SAAAY,wBAAYA,CAAAjC,IAAA;EACd,IAAAkD,WAAY,GAAAzD,IAAA,CAAAoB,IAAA,CAAAb,IAAA;EACV,KAAAR,OAAI,CAAAc,UAAA,CAAA4C,WAA2B;EAC7B,IAAAC,SAAA,GAAA1D,IAAA,CAAAoB,IAAA,CAAAb,IAAyB;EAAA,IAC3BR,OAAO,CAAAc,UAAA,CAAA6C,SAAA;IACL;MACF,IAAAC,KAAA,GAAAd,IAAA,CAAAC,KAAA,CAAA/C,OAAA,CAAA6D,YAAA,CAAAF,SAAA;MACF,IAAAC,KAAA;IACF,SAAAE,MAAA,GAEA;EACE;EACA,IAAI;IAGJ,IAAMC,iBAAiB;IACvB,IAAIC,UAAQ,GAAAlE,WAAW,iCAAY,EAAAU,IAAA;IACjC,IAAIyD,UAAA,GAAAnB,IAAA,CAAAC,KAAA,CAAA/C,OAAA,CAAA6D,YAAA,CAAAG,UAAA,WAAAE,OAAA;IACF,IAAAC,KAAM,GAAAC,MAAQ,CAAAC,QAAW,GAAAN,iBAAQ,GAAaE,UAAW,CAAAK,KAAO,wBAAAP,iBAAA,uBAAAA,iBAAA;IAChE,IAAAI,KAAI,IAAM;EAA2C,EACvD,OAAAL,MAAQ;EACV,IAAAS,OAAA,GAAAvE,OAAA,CAAA6D,YAAA,CAAAH,WAAA;EAGA,IAAI,CAAAa,OAAA,CAAAC,QAAA;IACF7C,OAAM,CAAA8C,IAAA,CAAAvE,MAAa,CAAAwE,MAAA;AACnB;AACA;AACA;AAAiB;AACX;AAER;AACA;AACE;AAAQ;AACQ;EAAA;AAAA;AAAA,SAAAlB,uBAAA9B,KAAA;EAAA,OAAAA,KAAA,CAAAiD,IAAA,0DAAAC,IAAA,CAAAlD,KAAA,CAAAmD,OAAA;AAAA;AAAA,SAAApB,yBAAA;EAAA9B,OAAA,CAAA8C,IAAA;AAAA,EAAAvE,MAAA,CAAA4E,GAAA,sCAAA5E,MAAA,CAAA6E,GAAA,+BAAA7E,MAAA,CAAA6E,GAAA,wEAAA7E,MAAA,CAAA6E,GAAA;AAAA,EAUnB7E,MAAA,CAAA8E,KAAA,CAAA9E,MAAA,CAAA+E,IAAA;AAAA;AACG;AAEJ;AAEA;AACE,eACQC,iBAASA,CAAAC,QAAA,EAAAC,QACf,EAAAC,WAAA;EAEJ,IAAAC,WAAA,SAAAtF,OAAA,CAAAuB,QAAA,CAAA4D,QAAA;EAEA,IAAAI,mBAAS,GAAAD,WAA2B,CAAA9D,OAAA,CAAA4D,QAAA,EAAAC,WAAA;EAClC,IAAAC,WAAa,KAAAC,mBAAA;IACb,MAAOvF,OAAI,CAAAyB,SAAI,CAAA0D,QAAA,EAAAI,mBAA8B,QAAI;EACjD;AAAO;AACK,SAAA/C,gCAAAhC,IAAA;EAAA,IAAAmD,SAAA,GAAA1D,IAAA,CAAAoB,IAAA,CAAAb,IAAA;EAAA,IAGV,CAAAR,OAAA,CAAAc,UAAA,CAAAb,IAAA,CAAAoB,IAAA,CAAAb,IAAA;EACJ,IAAGoD,KAAA;EACH,IAAA5D,OAAA,CAAAc,UAAA,CAAA6C,SAAA;IAEA;MAKEC,KAAM,GAAAd,IAAA,CAAAC,KAAc,CAAA/C,OAAM,CAAA6D,YAAiB,CAAAF,SAAU,QAAM;IAC3D,SAAMG,MAAA,GACN;EACE;EACF,IAAA0B,OAAA;EACF,IAAA5B,KAAA;IAkBAA,KAAS;IACP4B,OAAM;EACN;EAEA,IAAI5B,KAAA,iCAAiC;IACrCA,KAAI,iCAA+B;IACjC4B,OAAI;EACF;EAA0D,IAC5DA,OAAQ;IAACxF,OAAA,CAAAyF,aAAA,CAAA9B,SAAA,EAAAb,IAAA,CAAA4C,SAAA,CAAA9B,KAAA;IACXjC,OAAA,CAAAe,IAAA,CAAAxC,MAAA,CAAAyF,IAAA;EAEA;AAEA;AACE,SACArF,QAAA,EACF4E,iBAAA","ignoreList":[]}
|