vxrn 2.13.8 → 2.13.10

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.
Files changed (118) hide show
  1. package/dist/cli.mjs +3 -2
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/cli.native.js +5 -2
  4. package/dist/cli.native.js.map +1 -1
  5. package/dist/config/getBaseViteConfigOnly.mjs +3 -3
  6. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  7. package/dist/config/getBaseViteConfigOnly.native.js +3 -3
  8. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  9. package/dist/config/getOptionsFilled.mjs +24 -2
  10. package/dist/config/getOptionsFilled.mjs.map +1 -1
  11. package/dist/config/getOptionsFilled.native.js +25 -2
  12. package/dist/config/getOptionsFilled.native.js.map +1 -1
  13. package/dist/config/getServerOptionsFilled.mjs +119 -1
  14. package/dist/config/getServerOptionsFilled.mjs.map +1 -1
  15. package/dist/config/getServerOptionsFilled.native.js +137 -1
  16. package/dist/config/getServerOptionsFilled.native.js.map +1 -1
  17. package/dist/exports/build.mjs +5 -5
  18. package/dist/exports/build.mjs.map +1 -1
  19. package/dist/exports/build.native.js +5 -5
  20. package/dist/exports/build.native.js.map +1 -1
  21. package/dist/exports/dev.mjs +4 -6
  22. package/dist/exports/dev.mjs.map +1 -1
  23. package/dist/exports/dev.native.js +6 -6
  24. package/dist/exports/dev.native.js.map +1 -1
  25. package/dist/exports/prebuild.mjs +4 -4
  26. package/dist/exports/prebuild.mjs.map +1 -1
  27. package/dist/exports/prebuild.native.js +4 -4
  28. package/dist/exports/prebuild.native.js.map +1 -1
  29. package/dist/exports/prebuildWithoutExpo.mjs +95 -88
  30. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  31. package/dist/exports/prebuildWithoutExpo.native.js +95 -88
  32. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  33. package/dist/plugins/autoDepOptimizePlugin.mjs +3 -3
  34. package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
  35. package/dist/plugins/autoDepOptimizePlugin.native.js +3 -3
  36. package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
  37. package/dist/plugins/reactNativeDevAssetPlugin.mjs +4 -4
  38. package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
  39. package/dist/plugins/reactNativeDevAssetPlugin.native.js +4 -4
  40. package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
  41. package/dist/rn-commands/bundle/buildBundle.mjs +18 -5
  42. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  43. package/dist/rn-commands/bundle/buildBundle.native.js +18 -5
  44. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  45. package/dist/user-interface/index.mjs +1 -1
  46. package/dist/user-interface/index.mjs.map +1 -1
  47. package/dist/user-interface/index.native.js +1 -1
  48. package/dist/user-interface/index.native.js.map +1 -1
  49. package/dist/utils/env-editor.mjs +198 -0
  50. package/dist/utils/env-editor.mjs.map +1 -0
  51. package/dist/utils/env-editor.native.js +266 -0
  52. package/dist/utils/env-editor.native.js.map +1 -0
  53. package/dist/utils/fs.mjs +48 -0
  54. package/dist/utils/fs.mjs.map +1 -0
  55. package/dist/utils/fs.native.js +48 -0
  56. package/dist/utils/fs.native.js.map +1 -0
  57. package/dist/utils/getVitePath.mjs +2 -2
  58. package/dist/utils/getVitePath.mjs.map +1 -1
  59. package/dist/utils/getVitePath.native.js +2 -2
  60. package/dist/utils/getVitePath.native.js.map +1 -1
  61. package/dist/utils/patches.mjs +38 -29
  62. package/dist/utils/patches.mjs.map +1 -1
  63. package/dist/utils/patches.native.js +38 -29
  64. package/dist/utils/patches.native.js.map +1 -1
  65. package/dist/utils/scanDepsToOptimize.mjs +12 -11
  66. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  67. package/dist/utils/scanDepsToOptimize.native.js +12 -11
  68. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  69. package/dist/utils/state.mjs +5 -5
  70. package/dist/utils/state.mjs.map +1 -1
  71. package/dist/utils/state.native.js +5 -5
  72. package/dist/utils/state.native.js.map +1 -1
  73. package/dist/utils/utils.mjs +4 -3
  74. package/dist/utils/utils.mjs.map +1 -1
  75. package/dist/utils/utils.native.js +4 -3
  76. package/dist/utils/utils.native.js.map +1 -1
  77. package/package.json +12 -18
  78. package/src/cli.ts +5 -4
  79. package/src/config/getBaseViteConfigOnly.ts +3 -3
  80. package/src/config/getOptionsFilled.ts +35 -2
  81. package/src/config/getServerOptionsFilled.test.ts +37 -0
  82. package/src/config/getServerOptionsFilled.ts +57 -1
  83. package/src/exports/build.ts +5 -5
  84. package/src/exports/clean.test.ts +1 -1
  85. package/src/exports/dev.ts +5 -6
  86. package/src/exports/prebuild.ts +4 -4
  87. package/src/exports/prebuildWithoutExpo.ts +102 -89
  88. package/src/plugins/autoDepOptimizePlugin.ts +3 -3
  89. package/src/plugins/reactNativeDevAssetPlugin.ts +4 -4
  90. package/src/rn-commands/bundle/buildBundle.ts +15 -5
  91. package/src/user-interface/index.ts +1 -1
  92. package/src/utils/env-editor.LICENSE +9 -0
  93. package/src/utils/env-editor.ts +214 -0
  94. package/src/utils/fs.ts +59 -0
  95. package/src/utils/getVitePath.ts +2 -2
  96. package/src/utils/patches.test.ts +36 -36
  97. package/src/utils/patches.ts +39 -27
  98. package/src/utils/scanDepsToOptimize.test.ts +2 -2
  99. package/src/utils/scanDepsToOptimize.ts +6 -5
  100. package/src/utils/state.ts +5 -7
  101. package/src/utils/utils.ts +5 -5
  102. package/types/config/getOptionsFilled.d.ts +9 -2
  103. package/types/config/getOptionsFilled.d.ts.map +1 -1
  104. package/types/config/getServerOptionsFilled.d.ts.map +1 -1
  105. package/types/exports/build.d.ts +1 -1
  106. package/types/exports/dev.d.ts.map +1 -1
  107. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  108. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  109. package/types/user-interface/index.d.ts.map +1 -1
  110. package/types/utils/env-editor.d.ts +9 -0
  111. package/types/utils/env-editor.d.ts.map +1 -0
  112. package/types/utils/fs.d.ts +9 -0
  113. package/types/utils/fs.d.ts.map +1 -0
  114. package/types/utils/patches.d.ts.map +1 -1
  115. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
  116. package/types/utils/state.d.ts.map +1 -1
  117. package/types/utils/utils.d.ts +2 -2
  118. package/types/utils/utils.d.ts.map +1 -1
@@ -1,6 +1,7 @@
1
1
  import { createDebugger } from "@vxrn/debug";
2
- import FSExtra from "fs-extra";
2
+ import { realpath } from "node:fs/promises";
3
3
  import path, { dirname, extname, join, sep } from "node:path";
4
+ import { pathExists, readJSON } from "./fs.mjs";
4
5
 
5
6
  const { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);
6
7
  function isPrebundleableEntry(file) {
@@ -78,9 +79,9 @@ const INCLUDE_LIST = [
78
79
  const INCLUDE_LIST_SET = new Set(INCLUDE_LIST);
79
80
  async function scanDepsToOptimize(packageJsonPath, options = {}) {
80
81
  return scanDeps(packageJsonPath, options, {
81
- pathExists: memoizeRead((file) => FSExtra.pathExists(file)),
82
- realpath: memoizeRead((file) => FSExtra.realpath(file)),
83
- readJson: memoizeRead((file) => FSExtra.readJson(file))
82
+ pathExists: memoizeRead((file) => pathExists(file)),
83
+ realpath: memoizeRead((file) => realpath(file)),
84
+ readJson: memoizeRead((file) => readJSON(file))
84
85
  });
85
86
  }
86
87
  function memoizeRead(read) {
@@ -213,10 +214,10 @@ async function scanDeps(packageJsonPath, options, fs) {
213
214
  hasNativewind
214
215
  };
215
216
  }
216
- async function checkIfExportExists(pathIn, pathExists) {
217
+ async function checkIfExportExists(pathIn, pathExists2) {
217
218
  const paths = [pathIn, ...extname(pathIn) ? [] : [pathIn + ".js", pathIn + sep + "index.js"]];
218
219
  for (const path2 of paths) {
219
- if (await pathExists(path2)) {
220
+ if (await pathExists2(path2)) {
220
221
  return true;
221
222
  }
222
223
  }
@@ -230,11 +231,11 @@ async function readPackageJsonSafe(packageJsonPath, readJson) {
230
231
  return {};
231
232
  }
232
233
  }
233
- async function resolveDepPkgJsonPath(dep, dependent, pathExists) {
234
+ async function resolveDepPkgJsonPath(dep, dependent, pathExists2) {
234
235
  let root = dependent;
235
236
  while (root) {
236
237
  const possiblePkgJson = path.join(root, "node_modules", dep, "package.json");
237
- if (await pathExists(possiblePkgJson)) {
238
+ if (await pathExists2(possiblePkgJson)) {
238
239
  return possiblePkgJson;
239
240
  }
240
241
  const nextRoot = path.dirname(root);
@@ -243,10 +244,10 @@ async function resolveDepPkgJsonPath(dep, dependent, pathExists) {
243
244
  }
244
245
  }
245
246
  async function findDepPkgJsonPath(dep, dependent) {
246
- return findDepPkgJsonPathWithFs(dep, dependent, (file) => FSExtra.pathExists(file));
247
+ return findDepPkgJsonPathWithFs(dep, dependent, (file) => pathExists(file));
247
248
  }
248
- async function findDepPkgJsonPathWithFs(dep, dependent, pathExists) {
249
- const found = await resolveDepPkgJsonPath(dep, dependent, pathExists);
249
+ async function findDepPkgJsonPathWithFs(dep, dependent, pathExists2) {
250
+ const found = await resolveDepPkgJsonPath(dep, dependent, pathExists2);
250
251
  if (found) return found;
251
252
  console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);
252
253
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"scanDepsToOptimize.js","names":[],"sources":["utils/scanDepsToOptimize.js"],"sourcesContent":["import { createDebugger } from \"@vxrn/debug\";\nimport FSExtra from \"fs-extra\";\nimport path, { dirname, extname, join, sep } from \"node:path\";\nconst { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);\nfunction isPrebundleableEntry(file) {\n return !/\\.d\\.[cm]?ts$/i.test(file) && (!extname(file) || /\\.[cm]?[jt]s$/.test(file));\n}\nfunction getExportsMap(exports) {\n if (typeof exports === \"string\") return { \".\": exports };\n if (!exports || typeof exports !== \"object\" || Array.isArray(exports)) return {};\n return Object.keys(exports).some((k) => k.startsWith(\".\")) ? exports : { \".\": exports };\n}\nfunction getExportImport(target) {\n return typeof target === \"string\" ? target : target?.import;\n}\nconst EXCLUDE_LIST = [\n \"jsc-android\",\n \"react-shallow-renderer\",\n \"fsevents\",\n \"@swc/core\",\n \"@swc/core-darwin-arm64\",\n \"@swc/core-darwin-x64\",\n \"@swc/core-linux-arm-gnueabihf\",\n \"@swc/core-linux-arm64-gnu\",\n \"@swc/core-linux-arm64-musl\",\n \"@swc/core-linux-x64-gnu\",\n \"@swc/core-linux-x64-musl\",\n \"@swc/core-win32-arm64-msvc\",\n \"@swc/core-win32-ia32-msvc\",\n \"@swc/core-win32-x64-msvc\",\n \"lightningcss\",\n // this breaks fileToUrlPath in upstreams, like @discordjs/client\n \"url\",\n \"sharp\",\n \"@sentry/react-native\",\n // not used by web anyway\n // Could not read from file: /Users/n8/one/node_modules/react-native-web/dist/cjs/index.js/Libraries/Image/AssetRegistry\n // /lib/module/Platform/Platform.web.js:132:20\n \"@shopify/react-native-skia\",\n \"@react-native/virtualized-lists\",\n // Unexpected \"typeof\" in `node_modules/@react-native/virtualized-lists/index.js`\n // Native only, we don't expect SSR to use these packages.\n // Also, some of these packages might attempt to import from react-native internals, which will break in SSR while react-native is aliased to react-native-web.\n \"@vxrn/vite-native-hmr\",\n \"@vxrn/compiler\",\n \"@vxrn/vite-native-client\",\n // build-time only, and they load native .node addons the ssr dep optimizer\n // cannot parse. apps list vxrn as a dependency because it is their dev\n // server, which is exactly why it must never be pre-bundled for ssr.\n \"vxrn\",\n \"@vxrn/vite-plugin-metro\",\n \"oxc-transform\",\n \"oxc-parser\",\n \"react-native-ios-utilities\",\n \"react-native-ios-modal\",\n \"react-native-ios-context-menu\",\n \"react-native-haptic-feedback\",\n \"react-native-sortables\",\n \"react-native-image-colors\",\n \"react-native-fast-image\",\n \"react-native-fast-squircle\",\n \"react-native-device-info\",\n // CLI/scripts shouldn't be used in SSR runtime\n \"@tamagui/cli\",\n // only used by static/plugin\n \"@tamagui/static\",\n \"@tamagui/config-default\",\n \"@tamagui/vite-plugin\",\n \"@take-out/scripts\",\n \"@take-out/cli\",\n // Should be used on native only\n \"@tamagui/core/native-test\",\n \"@storybook/react\",\n // native-only or not needed in SSR\n \"@nandorojo/galeria\",\n \"react-native-pager-view\",\n \"@react-native/debugger-shell\",\n // expo's debugger is a standalone app, not an SSR runtime dependency.\n \"@expo/cli\",\n \"@expo/log-box\",\n \"@hot-updater/react-native\",\n \"@hot-updater/plugin-core\",\n \"validator\",\n \"zlib\"\n];\nconst EXCLUDE_LIST_SET = new Set(EXCLUDE_LIST);\nconst INCLUDE_LIST = [\n // ReferenceError: exports is not defined - at eval (.../node_modules/inline-style-prefixer/lib/createPrefixer.js:3:23)\n \"inline-style-prefixer\",\n \"react-native-vector-icons\",\n \"jotai\"\n];\nconst INCLUDE_LIST_SET = new Set(INCLUDE_LIST);\nasync function scanDepsToOptimize(packageJsonPath, options = {}) {\n return scanDeps(packageJsonPath, options, {\n pathExists: memoizeRead((file) => FSExtra.pathExists(file)),\n realpath: memoizeRead((file) => FSExtra.realpath(file)),\n readJson: memoizeRead((file) => FSExtra.readJson(file))\n });\n}\nfunction memoizeRead(read) {\n const pending = /* @__PURE__ */ new Map();\n return (file) => {\n const key = path.resolve(file);\n let result = pending.get(key);\n if (!result) {\n result = read(key);\n pending.set(key, result);\n }\n return result;\n };\n}\nasync function scanDeps(packageJsonPath, options, fs) {\n const { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n const isRoot = !options.parentDepNames;\n if (isRoot) {\n console.info(`[one] Scanning node_modules to auto-optimize...`);\n }\n const noExternalDeps = /* @__PURE__ */ new Set();\n const currentRoot = path.dirname(packageJsonPath);\n const pkgJson = pkgJsonContent || await readPackageJsonSafe(packageJsonPath, fs.readJson);\n const deps = Object.keys(pkgJson.dependencies || {});\n const needsWorklets = (json) => !!(json.dependencies?.[\"react-native-reanimated\"] || json.dependencies?.[\"react-native-worklets\"]);\n let hasReanimated = isRoot ? (await Promise.all(\n [\"react-native-reanimated\", \"react-native-worklets\"].map(\n (dep) => resolveDepPkgJsonPath(dep, currentRoot, fs.pathExists)\n )\n )).some(Boolean) : needsWorklets(pkgJson);\n const prebundleDeps = (await Promise.all(\n deps.map(async (dep) => {\n if (parentDepNames.includes(dep)) {\n return [];\n }\n const cachedResult = proceededDeps.get(dep);\n if (cachedResult) {\n return cachedResult;\n }\n if (EXCLUDE_LIST_SET.has(dep)) {\n return [];\n }\n const localPath = await findDepPkgJsonPathWithFs(dep, currentRoot, fs.pathExists);\n if (!localPath) return [];\n const depPkgJsonPath = await fs.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n const depPkgJson = await readPackageJsonSafe(depPkgJsonPath, fs.readJson);\n if (needsWorklets(depPkgJson)) {\n hasReanimated = true;\n }\n if (depPkgJson.codegenConfig != null) {\n noExternalDeps.add(dep);\n debug?.(`${dep} skipped: declares codegenConfig (native codegen package)`);\n return [];\n }\n const subDeps = await scanDeps(\n depPkgJsonPath,\n {\n parentDepNames: [...parentDepNames, dep],\n pkgJsonContent: depPkgJson,\n proceededDeps\n },\n fs\n );\n for (const dep2 of subDeps.noExternalDeps) noExternalDeps.add(dep2);\n if (subDeps.hasReanimated) {\n hasReanimated = true;\n }\n const shouldPreBundle = subDeps.prebundleDeps.length > 0 || INCLUDE_LIST_SET.has(\n dep\n ) || hasRequiredDep(depPkgJson, \"react\") || // an optional react peer still means the package ships react\n // entrypoints (e.g. better-auth/react). left external, those load a\n // second react copy in SSR and crash hooks with a null dispatcher.\n !!depPkgJson.peerDependencies?.react || hasRequiredDep(depPkgJson, \"react-native\") || hasRequiredDep(depPkgJson, \"expo-modules-core\") || // expo packages publish extensionless ESM imports that Node cannot\n // execute directly. Keep installed Expo modules inside Vite's SSR\n // graph without making Expo a framework dependency.\n dep.startsWith(\"@expo/\") || dep.startsWith(\"expo-\");\n debug?.(`${dep} shouldPreBundle? ${shouldPreBundle}`);\n const depsToPreBundle = await (async () => {\n if (!shouldPreBundle) {\n return [];\n }\n const depPkgJsonExports = getExportsMap(depPkgJson.exports);\n const definedExports = Object.keys(depPkgJsonExports).filter((k) => {\n const imp = getExportImport(depPkgJsonExports[k]);\n if (typeof imp !== \"string\") {\n return false;\n }\n if (!isPrebundleableEntry(imp)) {\n return false;\n }\n if (!k.match(/^(\\.\\/)?[a-zA-Z0-9-_]+$/)) {\n return false;\n }\n return true;\n }).map((k) => k.replace(/^\\.\\/?/, \"\")).map((k) => `${dep}/${k}`);\n const specialExports = (() => {\n switch (dep) {\n case \"react-native-vector-icons\":\n return [\n \"AntDesign\",\n \"Entypo\",\n \"EvilIcons\",\n \"Feather\",\n \"FontAwesome\",\n \"FontAwesome5\",\n \"FontAwesome5Pro\",\n \"Fontisto\",\n \"Foundation\",\n \"Ionicons\",\n \"MaterialCommunityIcons\",\n \"MaterialIcons\",\n \"Octicons\",\n \"SimpleLineIcons\",\n \"Zocial\"\n ].map((n) => `${dep}/${n}`);\n default:\n return [];\n }\n })();\n const mainExport = [\n depPkgJson[\"main\"],\n depPkgJson[\"module\"],\n getExportImport(depPkgJsonExports[\".\"])\n ].find(\n (entry) => typeof entry === \"string\" && entry && isPrebundleableEntry(entry)\n );\n const exports = [...definedExports, ...specialExports].filter(\n (d) => !EXCLUDE_LIST_SET.has(d)\n );\n if (mainExport) {\n if (await checkIfExportExists(\n join(dirname(depPkgJsonPath), mainExport),\n fs.pathExists\n )) {\n exports.unshift(dep);\n }\n }\n return exports;\n })();\n const result = [...depsToPreBundle, ...subDeps.prebundleDeps];\n debugDetails?.(`final result ${JSON.stringify(result, null, 2)}`);\n proceededDeps.set(dep, result);\n return result;\n })\n )).flat().filter((dep, index, arr) => arr.indexOf(dep) === index);\n const hasNativewind = !!pkgJson.dependencies?.[\"nativewind\"];\n if ((hasNativewind || hasReanimated) && isRoot) {\n if (hasReanimated)\n console.info(\n `[one] Enabled babel plugins: ${[hasReanimated ? \"Reanimated\" : \"\", hasNativewind ? \"Nativewind\" : \"\"].filter(Boolean).join(\", \")}`\n );\n }\n return {\n prebundleDeps,\n noExternalDeps: [...noExternalDeps],\n hasReanimated,\n // only check if set in root, dont want to enable css mode too easily\n hasNativewind\n };\n}\nasync function checkIfExportExists(pathIn, pathExists) {\n const paths = [\n pathIn,\n ...extname(pathIn) ? [] : [pathIn + \".js\", pathIn + sep + \"index.js\"]\n ];\n for (const path2 of paths) {\n if (await pathExists(path2)) {\n return true;\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath, readJson) {\n try {\n return await readJson(packageJsonPath);\n } catch (e) {\n console.error(\n `[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`\n );\n return {};\n }\n}\nasync function resolveDepPkgJsonPath(dep, dependent, pathExists) {\n let root = dependent;\n while (root) {\n const possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await pathExists(possiblePkgJson)) {\n return possiblePkgJson;\n }\n const nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n return findDepPkgJsonPathWithFs(dep, dependent, (file) => FSExtra.pathExists(file));\n}\nasync function findDepPkgJsonPathWithFs(dep, dependent, pathExists) {\n const found = await resolveDepPkgJsonPath(dep, dependent, pathExists);\n if (found) return found;\n console.error(\n `[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`\n );\n return void 0;\n}\nfunction hasRequiredDep(pkgJson, depName) {\n return !!(pkgJson.dependencies?.[depName] || pkgJson.peerDependencies?.[depName] && !pkgJson.peerDependenciesMeta?.[depName]?.optional);\n}\nexport {\n EXCLUDE_LIST,\n EXCLUDE_LIST_SET,\n INCLUDE_LIST,\n INCLUDE_LIST_SET,\n findDepPkgJsonPath,\n scanDepsToOptimize\n};\n//# sourceMappingURL=scanDepsToOptimize.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"scanDepsToOptimize.js","names":[],"sources":["utils/scanDepsToOptimize.js"],"sourcesContent":["import { createDebugger } from \"@vxrn/debug\";\nimport { realpath } from \"node:fs/promises\";\nimport path, { dirname, extname, join, sep } from \"node:path\";\nimport { pathExists, readJSON } from \"./fs\";\nconst { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);\nfunction isPrebundleableEntry(file) {\n return !/\\.d\\.[cm]?ts$/i.test(file) && (!extname(file) || /\\.[cm]?[jt]s$/.test(file));\n}\nfunction getExportsMap(exports) {\n if (typeof exports === \"string\") return { \".\": exports };\n if (!exports || typeof exports !== \"object\" || Array.isArray(exports)) return {};\n return Object.keys(exports).some((k) => k.startsWith(\".\")) ? exports : { \".\": exports };\n}\nfunction getExportImport(target) {\n return typeof target === \"string\" ? target : target?.import;\n}\nconst EXCLUDE_LIST = [\n \"jsc-android\",\n \"react-shallow-renderer\",\n \"fsevents\",\n \"@swc/core\",\n \"@swc/core-darwin-arm64\",\n \"@swc/core-darwin-x64\",\n \"@swc/core-linux-arm-gnueabihf\",\n \"@swc/core-linux-arm64-gnu\",\n \"@swc/core-linux-arm64-musl\",\n \"@swc/core-linux-x64-gnu\",\n \"@swc/core-linux-x64-musl\",\n \"@swc/core-win32-arm64-msvc\",\n \"@swc/core-win32-ia32-msvc\",\n \"@swc/core-win32-x64-msvc\",\n \"lightningcss\",\n // this breaks fileToUrlPath in upstreams, like @discordjs/client\n \"url\",\n \"sharp\",\n \"@sentry/react-native\",\n // not used by web anyway\n // Could not read from file: /Users/n8/one/node_modules/react-native-web/dist/cjs/index.js/Libraries/Image/AssetRegistry\n // /lib/module/Platform/Platform.web.js:132:20\n \"@shopify/react-native-skia\",\n \"@react-native/virtualized-lists\",\n // Unexpected \"typeof\" in `node_modules/@react-native/virtualized-lists/index.js`\n // Native only, we don't expect SSR to use these packages.\n // Also, some of these packages might attempt to import from react-native internals, which will break in SSR while react-native is aliased to react-native-web.\n \"@vxrn/vite-native-hmr\",\n \"@vxrn/compiler\",\n \"@vxrn/vite-native-client\",\n // build-time only, and they load native .node addons the ssr dep optimizer\n // cannot parse. apps list vxrn as a dependency because it is their dev\n // server, which is exactly why it must never be pre-bundled for ssr.\n \"vxrn\",\n \"@vxrn/vite-plugin-metro\",\n \"oxc-transform\",\n \"oxc-parser\",\n \"react-native-ios-utilities\",\n \"react-native-ios-modal\",\n \"react-native-ios-context-menu\",\n \"react-native-haptic-feedback\",\n \"react-native-sortables\",\n \"react-native-image-colors\",\n \"react-native-fast-image\",\n \"react-native-fast-squircle\",\n \"react-native-device-info\",\n // CLI/scripts shouldn't be used in SSR runtime\n \"@tamagui/cli\",\n // only used by static/plugin\n \"@tamagui/static\",\n \"@tamagui/config-default\",\n \"@tamagui/vite-plugin\",\n \"@take-out/scripts\",\n \"@take-out/cli\",\n // Should be used on native only\n \"@tamagui/core/native-test\",\n \"@storybook/react\",\n // native-only or not needed in SSR\n \"@nandorojo/galeria\",\n \"react-native-pager-view\",\n \"@react-native/debugger-shell\",\n // expo's debugger is a standalone app, not an SSR runtime dependency.\n \"@expo/cli\",\n \"@expo/log-box\",\n \"@hot-updater/react-native\",\n \"@hot-updater/plugin-core\",\n \"validator\",\n \"zlib\"\n];\nconst EXCLUDE_LIST_SET = new Set(EXCLUDE_LIST);\nconst INCLUDE_LIST = [\n // ReferenceError: exports is not defined - at eval (.../node_modules/inline-style-prefixer/lib/createPrefixer.js:3:23)\n \"inline-style-prefixer\",\n \"react-native-vector-icons\",\n \"jotai\"\n];\nconst INCLUDE_LIST_SET = new Set(INCLUDE_LIST);\nasync function scanDepsToOptimize(packageJsonPath, options = {}) {\n return scanDeps(packageJsonPath, options, {\n pathExists: memoizeRead((file) => pathExists(file)),\n realpath: memoizeRead((file) => realpath(file)),\n readJson: memoizeRead((file) => readJSON(file))\n });\n}\nfunction memoizeRead(read) {\n const pending = /* @__PURE__ */ new Map();\n return (file) => {\n const key = path.resolve(file);\n let result = pending.get(key);\n if (!result) {\n result = read(key);\n pending.set(key, result);\n }\n return result;\n };\n}\nasync function scanDeps(packageJsonPath, options, fs) {\n const { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n const isRoot = !options.parentDepNames;\n if (isRoot) {\n console.info(`[one] Scanning node_modules to auto-optimize...`);\n }\n const noExternalDeps = /* @__PURE__ */ new Set();\n const currentRoot = path.dirname(packageJsonPath);\n const pkgJson = pkgJsonContent || await readPackageJsonSafe(packageJsonPath, fs.readJson);\n const deps = Object.keys(pkgJson.dependencies || {});\n const needsWorklets = (json) => !!(json.dependencies?.[\"react-native-reanimated\"] || json.dependencies?.[\"react-native-worklets\"]);\n let hasReanimated = isRoot ? (await Promise.all(\n [\"react-native-reanimated\", \"react-native-worklets\"].map(\n (dep) => resolveDepPkgJsonPath(dep, currentRoot, fs.pathExists)\n )\n )).some(Boolean) : needsWorklets(pkgJson);\n const prebundleDeps = (await Promise.all(\n deps.map(async (dep) => {\n if (parentDepNames.includes(dep)) {\n return [];\n }\n const cachedResult = proceededDeps.get(dep);\n if (cachedResult) {\n return cachedResult;\n }\n if (EXCLUDE_LIST_SET.has(dep)) {\n return [];\n }\n const localPath = await findDepPkgJsonPathWithFs(dep, currentRoot, fs.pathExists);\n if (!localPath) return [];\n const depPkgJsonPath = await fs.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n const depPkgJson = await readPackageJsonSafe(depPkgJsonPath, fs.readJson);\n if (needsWorklets(depPkgJson)) {\n hasReanimated = true;\n }\n if (depPkgJson.codegenConfig != null) {\n noExternalDeps.add(dep);\n debug?.(`${dep} skipped: declares codegenConfig (native codegen package)`);\n return [];\n }\n const subDeps = await scanDeps(\n depPkgJsonPath,\n {\n parentDepNames: [...parentDepNames, dep],\n pkgJsonContent: depPkgJson,\n proceededDeps\n },\n fs\n );\n for (const dep2 of subDeps.noExternalDeps) noExternalDeps.add(dep2);\n if (subDeps.hasReanimated) {\n hasReanimated = true;\n }\n const shouldPreBundle = subDeps.prebundleDeps.length > 0 || INCLUDE_LIST_SET.has(\n dep\n ) || hasRequiredDep(depPkgJson, \"react\") || // an optional react peer still means the package ships react\n // entrypoints (e.g. better-auth/react). left external, those load a\n // second react copy in SSR and crash hooks with a null dispatcher.\n !!depPkgJson.peerDependencies?.react || hasRequiredDep(depPkgJson, \"react-native\") || hasRequiredDep(depPkgJson, \"expo-modules-core\") || // expo packages publish extensionless ESM imports that Node cannot\n // execute directly. Keep installed Expo modules inside Vite's SSR\n // graph without making Expo a framework dependency.\n dep.startsWith(\"@expo/\") || dep.startsWith(\"expo-\");\n debug?.(`${dep} shouldPreBundle? ${shouldPreBundle}`);\n const depsToPreBundle = await (async () => {\n if (!shouldPreBundle) {\n return [];\n }\n const depPkgJsonExports = getExportsMap(depPkgJson.exports);\n const definedExports = Object.keys(depPkgJsonExports).filter((k) => {\n const imp = getExportImport(depPkgJsonExports[k]);\n if (typeof imp !== \"string\") {\n return false;\n }\n if (!isPrebundleableEntry(imp)) {\n return false;\n }\n if (!k.match(/^(\\.\\/)?[a-zA-Z0-9-_]+$/)) {\n return false;\n }\n return true;\n }).map((k) => k.replace(/^\\.\\/?/, \"\")).map((k) => `${dep}/${k}`);\n const specialExports = (() => {\n switch (dep) {\n case \"react-native-vector-icons\":\n return [\n \"AntDesign\",\n \"Entypo\",\n \"EvilIcons\",\n \"Feather\",\n \"FontAwesome\",\n \"FontAwesome5\",\n \"FontAwesome5Pro\",\n \"Fontisto\",\n \"Foundation\",\n \"Ionicons\",\n \"MaterialCommunityIcons\",\n \"MaterialIcons\",\n \"Octicons\",\n \"SimpleLineIcons\",\n \"Zocial\"\n ].map((n) => `${dep}/${n}`);\n default:\n return [];\n }\n })();\n const mainExport = [\n depPkgJson[\"main\"],\n depPkgJson[\"module\"],\n getExportImport(depPkgJsonExports[\".\"])\n ].find(\n (entry) => typeof entry === \"string\" && entry && isPrebundleableEntry(entry)\n );\n const exports = [...definedExports, ...specialExports].filter(\n (d) => !EXCLUDE_LIST_SET.has(d)\n );\n if (mainExport) {\n if (await checkIfExportExists(\n join(dirname(depPkgJsonPath), mainExport),\n fs.pathExists\n )) {\n exports.unshift(dep);\n }\n }\n return exports;\n })();\n const result = [...depsToPreBundle, ...subDeps.prebundleDeps];\n debugDetails?.(`final result ${JSON.stringify(result, null, 2)}`);\n proceededDeps.set(dep, result);\n return result;\n })\n )).flat().filter((dep, index, arr) => arr.indexOf(dep) === index);\n const hasNativewind = !!pkgJson.dependencies?.[\"nativewind\"];\n if ((hasNativewind || hasReanimated) && isRoot) {\n if (hasReanimated)\n console.info(\n `[one] Enabled babel plugins: ${[hasReanimated ? \"Reanimated\" : \"\", hasNativewind ? \"Nativewind\" : \"\"].filter(Boolean).join(\", \")}`\n );\n }\n return {\n prebundleDeps,\n noExternalDeps: [...noExternalDeps],\n hasReanimated,\n // only check if set in root, dont want to enable css mode too easily\n hasNativewind\n };\n}\nasync function checkIfExportExists(pathIn, pathExists2) {\n const paths = [\n pathIn,\n ...extname(pathIn) ? [] : [pathIn + \".js\", pathIn + sep + \"index.js\"]\n ];\n for (const path2 of paths) {\n if (await pathExists2(path2)) {\n return true;\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath, readJson) {\n try {\n return await readJson(packageJsonPath);\n } catch (e) {\n console.error(\n `[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`\n );\n return {};\n }\n}\nasync function resolveDepPkgJsonPath(dep, dependent, pathExists2) {\n let root = dependent;\n while (root) {\n const possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await pathExists2(possiblePkgJson)) {\n return possiblePkgJson;\n }\n const nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n return findDepPkgJsonPathWithFs(dep, dependent, (file) => pathExists(file));\n}\nasync function findDepPkgJsonPathWithFs(dep, dependent, pathExists2) {\n const found = await resolveDepPkgJsonPath(dep, dependent, pathExists2);\n if (found) return found;\n console.error(\n `[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`\n );\n return void 0;\n}\nfunction hasRequiredDep(pkgJson, depName) {\n return !!(pkgJson.dependencies?.[depName] || pkgJson.peerDependencies?.[depName] && !pkgJson.peerDependenciesMeta?.[depName]?.optional);\n}\nexport {\n EXCLUDE_LIST,\n EXCLUDE_LIST_SET,\n INCLUDE_LIST,\n INCLUDE_LIST_SET,\n findDepPkgJsonPath,\n scanDepsToOptimize\n};\n//# sourceMappingURL=scanDepsToOptimize.js.map\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { createDebugger } from "@vxrn/debug";
2
- import FSExtra from "fs-extra";
2
+ import { realpath } from "fs/promises";
3
3
  import path, { dirname, extname, join, sep } from "path";
4
+ import { pathExists, readJSON } from "./fs.native.js";
4
5
 
5
6
  var { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);
6
7
  function isPrebundleableEntry(file) {
@@ -84,13 +85,13 @@ async function scanDepsToOptimize(packageJsonPath) {
84
85
  {};
85
86
  return scanDeps(packageJsonPath, options, {
86
87
  pathExists: memoizeRead(function(file) {
87
- return FSExtra.pathExists(file);
88
+ return pathExists(file);
88
89
  }),
89
90
  realpath: memoizeRead(function(file) {
90
- return FSExtra.realpath(file);
91
+ return realpath(file);
91
92
  }),
92
93
  readJson: memoizeRead(function(file) {
93
- return FSExtra.readJson(file);
94
+ return readJSON(file);
94
95
  })
95
96
  });
96
97
  }
@@ -262,13 +263,13 @@ async function scanDeps(packageJsonPath, options, fs) {
262
263
  hasNativewind
263
264
  };
264
265
  }
265
- async function checkIfExportExists(pathIn, pathExists) {
266
+ async function checkIfExportExists(pathIn, pathExists2) {
266
267
  var paths = [pathIn, ...extname(pathIn) ? [] : [pathIn + ".js", pathIn + sep + "index.js"]];
267
268
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
268
269
  try {
269
270
  for (var _iterator = paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
270
271
  var path2 = _step.value;
271
- if (await pathExists(path2)) {
272
+ if (await pathExists2(path2)) {
272
273
  return true;
273
274
  }
274
275
  }
@@ -296,11 +297,11 @@ async function readPackageJsonSafe(packageJsonPath, readJson) {
296
297
  return {};
297
298
  }
298
299
  }
299
- async function resolveDepPkgJsonPath(dep, dependent, pathExists) {
300
+ async function resolveDepPkgJsonPath(dep, dependent, pathExists2) {
300
301
  var root = dependent;
301
302
  while (root) {
302
303
  var possiblePkgJson = path.join(root, "node_modules", dep, "package.json");
303
- if (await pathExists(possiblePkgJson)) {
304
+ if (await pathExists2(possiblePkgJson)) {
304
305
  return possiblePkgJson;
305
306
  }
306
307
  var nextRoot = path.dirname(root);
@@ -310,11 +311,11 @@ async function resolveDepPkgJsonPath(dep, dependent, pathExists) {
310
311
  }
311
312
  async function findDepPkgJsonPath(dep, dependent) {
312
313
  return findDepPkgJsonPathWithFs(dep, dependent, function(file) {
313
- return FSExtra.pathExists(file);
314
+ return pathExists(file);
314
315
  });
315
316
  }
316
- async function findDepPkgJsonPathWithFs(dep, dependent, pathExists) {
317
- var found = await resolveDepPkgJsonPath(dep, dependent, pathExists);
317
+ async function findDepPkgJsonPathWithFs(dep, dependent, pathExists2) {
318
+ var found = await resolveDepPkgJsonPath(dep, dependent, pathExists2);
318
319
  if (found) return found;
319
320
  console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);
320
321
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"scanDepsToOptimize.native.js","names":[],"sources":["utils/scanDepsToOptimize.native.js"],"sourcesContent":["import { createDebugger } from \"@vxrn/debug\";\nimport FSExtra from \"fs-extra\";\nimport path, { dirname, extname, join, sep } from \"path\";\nvar { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);\nfunction isPrebundleableEntry(file) {\n return !/\\.d\\.[cm]?ts$/i.test(file) && (!extname(file) || /\\.[cm]?[jt]s$/.test(file));\n}\nfunction getExportsMap(exports) {\n if (typeof exports === \"string\") return {\n \".\": exports\n };\n if (!exports || typeof exports !== \"object\" || Array.isArray(exports)) return {};\n return Object.keys(exports).some(function(k) {\n return k.startsWith(\".\");\n }) ? exports : {\n \".\": exports\n };\n}\nfunction getExportImport(target) {\n return typeof target === \"string\" ? target : target === null || target === void 0 ? void 0 : target.import;\n}\nvar EXCLUDE_LIST = [\n \"jsc-android\",\n \"react-shallow-renderer\",\n \"fsevents\",\n \"@swc/core\",\n \"@swc/core-darwin-arm64\",\n \"@swc/core-darwin-x64\",\n \"@swc/core-linux-arm-gnueabihf\",\n \"@swc/core-linux-arm64-gnu\",\n \"@swc/core-linux-arm64-musl\",\n \"@swc/core-linux-x64-gnu\",\n \"@swc/core-linux-x64-musl\",\n \"@swc/core-win32-arm64-msvc\",\n \"@swc/core-win32-ia32-msvc\",\n \"@swc/core-win32-x64-msvc\",\n \"lightningcss\",\n // this breaks fileToUrlPath in upstreams, like @discordjs/client\n \"url\",\n \"sharp\",\n \"@sentry/react-native\",\n // not used by web anyway\n // Could not read from file: /Users/n8/one/node_modules/react-native-web/dist/cjs/index.js/Libraries/Image/AssetRegistry\n // /lib/module/Platform/Platform.web.js:132:20\n \"@shopify/react-native-skia\",\n \"@react-native/virtualized-lists\",\n // Unexpected \"typeof\" in `node_modules/@react-native/virtualized-lists/index.js`\n // Native only, we don't expect SSR to use these packages.\n // Also, some of these packages might attempt to import from react-native internals, which will break in SSR while react-native is aliased to react-native-web.\n \"@vxrn/vite-native-hmr\",\n \"@vxrn/compiler\",\n \"@vxrn/vite-native-client\",\n // build-time only, and they load native .node addons the ssr dep optimizer\n // cannot parse. apps list vxrn as a dependency because it is their dev\n // server, which is exactly why it must never be pre-bundled for ssr.\n \"vxrn\",\n \"@vxrn/vite-plugin-metro\",\n \"oxc-transform\",\n \"oxc-parser\",\n \"react-native-ios-utilities\",\n \"react-native-ios-modal\",\n \"react-native-ios-context-menu\",\n \"react-native-haptic-feedback\",\n \"react-native-sortables\",\n \"react-native-image-colors\",\n \"react-native-fast-image\",\n \"react-native-fast-squircle\",\n \"react-native-device-info\",\n // CLI/scripts shouldn't be used in SSR runtime\n \"@tamagui/cli\",\n // only used by static/plugin\n \"@tamagui/static\",\n \"@tamagui/config-default\",\n \"@tamagui/vite-plugin\",\n \"@take-out/scripts\",\n \"@take-out/cli\",\n // Should be used on native only\n \"@tamagui/core/native-test\",\n \"@storybook/react\",\n // native-only or not needed in SSR\n \"@nandorojo/galeria\",\n \"react-native-pager-view\",\n \"@react-native/debugger-shell\",\n // expo's debugger is a standalone app, not an SSR runtime dependency.\n \"@expo/cli\",\n \"@expo/log-box\",\n \"@hot-updater/react-native\",\n \"@hot-updater/plugin-core\",\n \"validator\",\n \"zlib\"\n];\nvar EXCLUDE_LIST_SET = new Set(EXCLUDE_LIST);\nvar INCLUDE_LIST = [\n // ReferenceError: exports is not defined - at eval (.../node_modules/inline-style-prefixer/lib/createPrefixer.js:3:23)\n \"inline-style-prefixer\",\n \"react-native-vector-icons\",\n \"jotai\"\n];\nvar INCLUDE_LIST_SET = new Set(INCLUDE_LIST);\nasync function scanDepsToOptimize(packageJsonPath) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (\n /** If the content of the package.json is already read before calling this function, pass it here to avoid reading it again */\n {}\n );\n return scanDeps(packageJsonPath, options, {\n pathExists: memoizeRead(function(file) {\n return FSExtra.pathExists(file);\n }),\n realpath: memoizeRead(function(file) {\n return FSExtra.realpath(file);\n }),\n readJson: memoizeRead(function(file) {\n return FSExtra.readJson(file);\n })\n });\n}\nfunction memoizeRead(read) {\n var pending = /* @__PURE__ */ new Map();\n return function(file) {\n var key = path.resolve(file);\n var result = pending.get(key);\n if (!result) {\n result = read(key);\n pending.set(key, result);\n }\n return result;\n };\n}\nasync function scanDeps(packageJsonPath, options, fs) {\n var _pkgJson_dependencies;\n var { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n var isRoot = !options.parentDepNames;\n if (isRoot) {\n console.info(`[one] Scanning node_modules to auto-optimize...`);\n }\n var noExternalDeps = /* @__PURE__ */ new Set();\n var currentRoot = path.dirname(packageJsonPath);\n var pkgJson = pkgJsonContent || await readPackageJsonSafe(packageJsonPath, fs.readJson);\n var deps = Object.keys(pkgJson.dependencies || {});\n var needsWorklets = function needsWorklets2(json) {\n var _json_dependencies, _json_dependencies1;\n return !!(((_json_dependencies = json.dependencies) === null || _json_dependencies === void 0 ? void 0 : _json_dependencies[\"react-native-reanimated\"]) || ((_json_dependencies1 = json.dependencies) === null || _json_dependencies1 === void 0 ? void 0 : _json_dependencies1[\"react-native-worklets\"]));\n };\n var hasReanimated = isRoot ? (await Promise.all([\n \"react-native-reanimated\",\n \"react-native-worklets\"\n ].map(function(dep) {\n return resolveDepPkgJsonPath(dep, currentRoot, fs.pathExists);\n }))).some(Boolean) : needsWorklets(pkgJson);\n var prebundleDeps = (await Promise.all(deps.map(async function(dep) {\n var _depPkgJson_peerDependencies;\n if (parentDepNames.includes(dep)) {\n return [];\n }\n var cachedResult = proceededDeps.get(dep);\n if (cachedResult) {\n return cachedResult;\n }\n if (EXCLUDE_LIST_SET.has(dep)) {\n return [];\n }\n var localPath = await findDepPkgJsonPathWithFs(dep, currentRoot, fs.pathExists);\n if (!localPath) return [];\n var depPkgJsonPath = await fs.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n var depPkgJson = await readPackageJsonSafe(depPkgJsonPath, fs.readJson);\n if (needsWorklets(depPkgJson)) {\n hasReanimated = true;\n }\n if (depPkgJson.codegenConfig != null) {\n noExternalDeps.add(dep);\n debug === null || debug === void 0 ? void 0 : debug(`${dep} skipped: declares codegenConfig (native codegen package)`);\n return [];\n }\n var subDeps = await scanDeps(depPkgJsonPath, {\n parentDepNames: [\n ...parentDepNames,\n dep\n ],\n pkgJsonContent: depPkgJson,\n proceededDeps\n }, fs);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = subDeps.noExternalDeps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _$dep = _step.value;\n noExternalDeps.add(_$dep);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (subDeps.hasReanimated) {\n hasReanimated = true;\n }\n var shouldPreBundle = subDeps.prebundleDeps.length > 0 || /* If this dep is depending on other deps that need pre-bundling, then also pre-bundle this dep */\n INCLUDE_LIST_SET.has(dep) || /* If this dep is in the include list, then pre-bundle it */\n hasRequiredDep(depPkgJson, \"react\") || // an optional react peer still means the package ships react\n // entrypoints (e.g. better-auth/react). left external, those load a\n // second react copy in SSR and crash hooks with a null dispatcher.\n !!((_depPkgJson_peerDependencies = depPkgJson.peerDependencies) === null || _depPkgJson_peerDependencies === void 0 ? void 0 : _depPkgJson_peerDependencies.react) || hasRequiredDep(depPkgJson, \"react-native\") || hasRequiredDep(depPkgJson, \"expo-modules-core\") || // expo packages publish extensionless ESM imports that Node cannot\n // execute directly. Keep installed Expo modules inside Vite's SSR\n // graph without making Expo a framework dependency.\n dep.startsWith(\"@expo/\") || dep.startsWith(\"expo-\");\n debug === null || debug === void 0 ? void 0 : debug(`${dep} shouldPreBundle? ${shouldPreBundle}`);\n var depsToPreBundle = await (async function() {\n if (!shouldPreBundle) {\n return [];\n }\n var depPkgJsonExports = getExportsMap(depPkgJson.exports);\n var definedExports = Object.keys(depPkgJsonExports).filter(function(k) {\n var imp = getExportImport(depPkgJsonExports[k]);\n if (typeof imp !== \"string\") {\n return false;\n }\n if (!isPrebundleableEntry(imp)) {\n return false;\n }\n if (!k.match(/^(\\.\\/)?[a-zA-Z0-9-_]+$/)) {\n return false;\n }\n return true;\n }).map(function(k) {\n return k.replace(/^\\.\\/?/, \"\");\n }).map(function(k) {\n return `${dep}/${k}`;\n });\n var specialExports = (function() {\n switch (dep) {\n case \"react-native-vector-icons\":\n return [\n \"AntDesign\",\n \"Entypo\",\n \"EvilIcons\",\n \"Feather\",\n \"FontAwesome\",\n \"FontAwesome5\",\n \"FontAwesome5Pro\",\n \"Fontisto\",\n \"Foundation\",\n \"Ionicons\",\n \"MaterialCommunityIcons\",\n \"MaterialIcons\",\n \"Octicons\",\n \"SimpleLineIcons\",\n \"Zocial\"\n ].map(function(n) {\n return `${dep}/${n}`;\n });\n default:\n return [];\n }\n })();\n var mainExport = [\n depPkgJson[\"main\"],\n depPkgJson[\"module\"],\n getExportImport(depPkgJsonExports[\".\"])\n ].find(function(entry) {\n return typeof entry === \"string\" && entry && isPrebundleableEntry(entry);\n });\n var exports = [\n ...definedExports,\n ...specialExports\n ].filter(function(d) {\n return !EXCLUDE_LIST_SET.has(d);\n });\n if (mainExport) {\n if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport), fs.pathExists)) {\n exports.unshift(dep);\n }\n }\n return exports;\n })();\n var result = [\n ...depsToPreBundle,\n ...subDeps.prebundleDeps\n ];\n debugDetails === null || debugDetails === void 0 ? void 0 : debugDetails(`final result ${JSON.stringify(result, null, 2)}`);\n proceededDeps.set(dep, result);\n return result;\n }))).flat().filter(function(dep, index, arr) {\n return arr.indexOf(dep) === index;\n });\n var hasNativewind = !!((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0 ? void 0 : _pkgJson_dependencies[\"nativewind\"]);\n if ((hasNativewind || hasReanimated) && isRoot) {\n if (hasReanimated) console.info(`[one] Enabled babel plugins: ${[\n hasReanimated ? \"Reanimated\" : \"\",\n hasNativewind ? \"Nativewind\" : \"\"\n ].filter(Boolean).join(\", \")}`);\n }\n return {\n prebundleDeps,\n noExternalDeps: [\n ...noExternalDeps\n ],\n hasReanimated,\n // only check if set in root, dont want to enable css mode too easily\n hasNativewind\n };\n}\nasync function checkIfExportExists(pathIn, pathExists) {\n var paths = [\n pathIn,\n ...extname(pathIn) ? [] : [\n pathIn + \".js\",\n pathIn + sep + \"index.js\"\n ]\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var path2 = _step.value;\n if (await pathExists(path2)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath, readJson) {\n try {\n return await readJson(packageJsonPath);\n } catch (e) {\n console.error(`[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`);\n return {};\n }\n}\nasync function resolveDepPkgJsonPath(dep, dependent, pathExists) {\n var root = dependent;\n while (root) {\n var possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await pathExists(possiblePkgJson)) {\n return possiblePkgJson;\n }\n var nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n return findDepPkgJsonPathWithFs(dep, dependent, function(file) {\n return FSExtra.pathExists(file);\n });\n}\nasync function findDepPkgJsonPathWithFs(dep, dependent, pathExists) {\n var found = await resolveDepPkgJsonPath(dep, dependent, pathExists);\n if (found) return found;\n console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);\n return void 0;\n}\nfunction hasRequiredDep(pkgJson, depName) {\n var _pkgJson_dependencies, _pkgJson_peerDependencies, _pkgJson_peerDependenciesMeta_depName, _pkgJson_peerDependenciesMeta;\n return !!(((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0 ? void 0 : _pkgJson_dependencies[depName]) || ((_pkgJson_peerDependencies = pkgJson.peerDependencies) === null || _pkgJson_peerDependencies === void 0 ? void 0 : _pkgJson_peerDependencies[depName]) && !((_pkgJson_peerDependenciesMeta = pkgJson.peerDependenciesMeta) === null || _pkgJson_peerDependenciesMeta === void 0 ? void 0 : (_pkgJson_peerDependenciesMeta_depName = _pkgJson_peerDependenciesMeta[depName]) === null || _pkgJson_peerDependenciesMeta_depName === void 0 ? void 0 : _pkgJson_peerDependenciesMeta_depName.optional));\n}\nexport {\n EXCLUDE_LIST,\n EXCLUDE_LIST_SET,\n INCLUDE_LIST,\n INCLUDE_LIST_SET,\n findDepPkgJsonPath,\n scanDepsToOptimize\n};\n//# sourceMappingURL=scanDepsToOptimize.js.map\n"],"mappings":";;;;;AAGA,IAAI,EAAE,OAAO,iBAAiB,eAAe,yBAAyB;AACtE,SAAS,qBAAqB,MAAM;CAClC,OAAO,CAAC,iBAAiB,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,gBAAgB,KAAK,IAAI;AACrF;AACA,SAAS,cAAc,SAAS;CAC9B,IAAI,OAAO,YAAY,UAAU,OAAO,EACtC,KAAK,QACP;CACA,IAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAC;CAC/E,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC,KAAK,SAAS,GAAG;EAC3C,OAAO,EAAE,WAAW,GAAG;CACzB,CAAC,IAAI,UAAU,EACb,KAAK,QACP;AACF;AACA,SAAS,gBAAgB,QAAQ;CAC/B,OAAO,OAAO,WAAW,WAAW,SAAS,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO;AACtG;AACA,IAAI,eAAe;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CAIA;CACA;CAIA;CACA;CACA;CAIA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAI,mBAAmB,IAAI,IAAI,YAAY;AAC3C,IAAI,eAAe;CAEjB;CACA;CACA;AACF;AACA,IAAI,mBAAmB,IAAI,IAAI,YAAY;AAC3C,eAAe,mBAAmB,iBAAiB;CACjD,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU;;CAExE,CAAC;CAEH,OAAO,SAAS,iBAAiB,SAAS;EACxC,YAAY,YAAY,SAAS,MAAM;GACrC,OAAO,QAAQ,WAAW,IAAI;EAChC,CAAC;EACD,UAAU,YAAY,SAAS,MAAM;GACnC,OAAO,QAAQ,SAAS,IAAI;EAC9B,CAAC;EACD,UAAU,YAAY,SAAS,MAAM;GACnC,OAAO,QAAQ,SAAS,IAAI;EAC9B,CAAC;CACH,CAAC;AACH;AACA,SAAS,YAAY,MAAM;CACzB,IAAI,0BAA0B,IAAI,IAAI;CACtC,OAAO,SAAS,MAAM;EACpB,IAAI,MAAM,KAAK,QAAQ,IAAI;EAC3B,IAAI,SAAS,QAAQ,IAAI,GAAG;EAC5B,IAAI,CAAC,QAAQ;GACX,SAAS,KAAK,GAAG;GACjB,QAAQ,IAAI,KAAK,MAAM;EACzB;EACA,OAAO;CACT;AACF;AACA,eAAe,SAAS,iBAAiB,SAAS,IAAI;CACpD,IAAI;CACJ,IAAI,EAAE,iBAAiB,CAAC,GAAG,gCAAgC,IAAI,IAAI,GAAG,mBAAmB;CACzF,IAAI,SAAS,CAAC,QAAQ;CACtB,IAAI,QAAQ;EACV,QAAQ,KAAK,iDAAiD;CAChE;CACA,IAAI,iCAAiC,IAAI,IAAI;CAC7C,IAAI,cAAc,KAAK,QAAQ,eAAe;CAC9C,IAAI,UAAU,kBAAkB,MAAM,oBAAoB,iBAAiB,GAAG,QAAQ;CACtF,IAAI,OAAO,OAAO,KAAK,QAAQ,gBAAgB,CAAC,CAAC;CACjD,IAAI,gBAAgB,SAAS,eAAe,MAAM;EAChD,IAAI,oBAAoB;EACxB,OAAO,CAAC,IAAI,qBAAqB,KAAK,kBAAkB,QAAQ,uBAAuB,KAAK,IAAI,KAAK,IAAI,mBAAmB,iCAAiC,sBAAsB,KAAK,kBAAkB,QAAQ,wBAAwB,KAAK,IAAI,KAAK,IAAI,oBAAoB;CAClR;CACA,IAAI,gBAAgB,UAAU,MAAM,QAAQ,IAAI,CAC9C,2BACA,uBACF,CAAC,CAAC,IAAI,SAAS,KAAK;EAClB,OAAO,sBAAsB,KAAK,aAAa,GAAG,UAAU;CAC9D,CAAC,CAAC,EAAC,CAAE,KAAK,OAAO,IAAI,cAAc,OAAO;CAC1C,IAAI,iBAAiB,MAAM,QAAQ,IAAI,KAAK,IAAI,eAAe,KAAK;EAClE,IAAI;EACJ,IAAI,eAAe,SAAS,GAAG,GAAG;GAChC,OAAO,CAAC;EACV;EACA,IAAI,eAAe,cAAc,IAAI,GAAG;EACxC,IAAI,cAAc;GAChB,OAAO;EACT;EACA,IAAI,iBAAiB,IAAI,GAAG,GAAG;GAC7B,OAAO,CAAC;EACV;EACA,IAAI,YAAY,MAAM,yBAAyB,KAAK,aAAa,GAAG,UAAU;EAC9E,IAAI,CAAC,WAAW,OAAO,CAAC;EACxB,IAAI,iBAAiB,MAAM,GAAG,SAAS,SAAS;EAChD,IAAI,QAAQ,UAAU,CAAC,QAAQ,OAAO,cAAc,GAAG;GACrD,OAAO,CAAC;EACV;EACA,IAAI,aAAa,MAAM,oBAAoB,gBAAgB,GAAG,QAAQ;EACtE,IAAI,cAAc,UAAU,GAAG;GAC7B,gBAAgB;EAClB;EACA,IAAI,WAAW,iBAAiB,MAAM;GACpC,eAAe,IAAI,GAAG;GACtB,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,0DAA0D;GACrH,OAAO,CAAC;EACV;EACA,IAAI,UAAU,MAAM,SAAS,gBAAgB;GAC3C,gBAAgB,CACd,GAAG,gBACH,GACF;GACA,gBAAgB;GAChB;EACF,GAAG,EAAE;EACL,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,QAAQ,eAAe,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IACvK,IAAI,QAAQ,MAAM;IAClB,eAAe,IAAI,KAAK;GAC1B;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,IAAI,QAAQ,eAAe;GACzB,gBAAgB;EAClB;EACA,IAAI,kBAAkB,QAAQ,cAAc,SAAS,KACrD,iBAAiB,IAAI,GAAG,KACxB,eAAe,YAAY,OAAO,KAGlC,CAAC,GAAG,+BAA+B,WAAW,sBAAsB,QAAQ,iCAAiC,KAAK,IAAI,KAAK,IAAI,6BAA6B,UAAU,eAAe,YAAY,cAAc,KAAK,eAAe,YAAY,mBAAmB,KAGlQ,IAAI,WAAW,QAAQ,KAAK,IAAI,WAAW,OAAO;EAClD,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,oBAAoB,iBAAiB;EAChG,IAAI,kBAAkB,OAAO,iBAAiB;GAC5C,IAAI,CAAC,iBAAiB;IACpB,OAAO,CAAC;GACV;GACA,IAAI,oBAAoB,cAAc,WAAW,OAAO;GACxD,IAAI,iBAAiB,OAAO,KAAK,iBAAiB,CAAC,CAAC,OAAO,SAAS,GAAG;IACrE,IAAI,MAAM,gBAAgB,kBAAkB,EAAE;IAC9C,IAAI,OAAO,QAAQ,UAAU;KAC3B,OAAO;IACT;IACA,IAAI,CAAC,qBAAqB,GAAG,GAAG;KAC9B,OAAO;IACT;IACA,IAAI,CAAC,EAAE,MAAM,yBAAyB,GAAG;KACvC,OAAO;IACT;IACA,OAAO;GACT,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG;IACjB,OAAO,EAAE,QAAQ,UAAU,EAAE;GAC/B,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG;IACjB,OAAO,GAAG,IAAI,GAAG;GACnB,CAAC;GACD,IAAI,kBAAkB,WAAW;IAC/B,QAAQ,KAAR;KACE,KAAK,6BACH,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;KACF,CAAC,CAAC,IAAI,SAAS,GAAG;MAChB,OAAO,GAAG,IAAI,GAAG;KACnB,CAAC;KACH,SACE,OAAO,CAAC;IACZ;GACF,EAAC,CAAE;GACH,IAAI,aAAa;IACf,WAAW;IACX,WAAW;IACX,gBAAgB,kBAAkB,IAAI;GACxC,CAAC,CAAC,KAAK,SAAS,OAAO;IACrB,OAAO,OAAO,UAAU,YAAY,SAAS,qBAAqB,KAAK;GACzE,CAAC;GACD,IAAI,UAAU,CACZ,GAAG,gBACH,GAAG,cACL,CAAC,CAAC,OAAO,SAAS,GAAG;IACnB,OAAO,CAAC,iBAAiB,IAAI,CAAC;GAChC,CAAC;GACD,IAAI,YAAY;IACd,IAAI,MAAM,oBAAoB,KAAK,QAAQ,cAAc,GAAG,UAAU,GAAG,GAAG,UAAU,GAAG;KACvF,QAAQ,QAAQ,GAAG;IACrB;GACF;GACA,OAAO;EACT,EAAC,CAAE;EACH,IAAI,SAAS,CACX,GAAG,iBACH,GAAG,QAAQ,aACb;EACA,iBAAiB,QAAQ,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa,gBAAgB,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG;EAC1H,cAAc,IAAI,KAAK,MAAM;EAC7B,OAAO;CACT,CAAC,CAAC,EAAC,CAAE,KAAK,CAAC,CAAC,OAAO,SAAS,KAAK,OAAO,KAAK;EAC3C,OAAO,IAAI,QAAQ,GAAG,MAAM;CAC9B,CAAC;CACD,IAAI,gBAAgB,CAAC,GAAG,wBAAwB,QAAQ,kBAAkB,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB;CACpJ,KAAK,iBAAiB,kBAAkB,QAAQ;EAC9C,IAAI,eAAe,QAAQ,KAAK,gCAAgC,CAC9D,gBAAgB,eAAe,IAC/B,gBAAgB,eAAe,EACjC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG;CAChC;CACA,OAAO;EACL;EACA,gBAAgB,CACd,GAAG,cACL;EACA;EAEA;CACF;AACF;AACA,eAAe,oBAAoB,QAAQ,YAAY;CACrD,IAAI,QAAQ,CACV,QACA,GAAG,QAAQ,MAAM,IAAI,CAAC,IAAI,CACxB,SAAS,OACT,SAAS,MAAM,UACjB,CACF;CACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,MAAM,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACtJ,IAAI,QAAQ,MAAM;GAClB,IAAI,MAAM,WAAW,KAAK,GAAG;IAC3B,OAAO;GACT;EACF;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,OAAO;AACT;AACA,eAAe,oBAAoB,iBAAiB,UAAU;CAC5D,IAAI;EACF,OAAO,MAAM,SAAS,eAAe;CACvC,SAAS,GAAG;EACV,QAAQ,MAAM,+DAA+D,gBAAgB,IAAI,GAAG;EACpG,OAAO,CAAC;CACV;AACF;AACA,eAAe,sBAAsB,KAAK,WAAW,YAAY;CAC/D,IAAI,OAAO;CACX,OAAO,MAAM;EACX,IAAI,kBAAkB,KAAK,KAAK,MAAM,gBAAgB,KAAK,cAAc;EACzE,IAAI,MAAM,WAAW,eAAe,GAAG;GACrC,OAAO;EACT;EACA,IAAI,WAAW,KAAK,QAAQ,IAAI;EAChC,IAAI,aAAa,MAAM;EACvB,OAAO;CACT;AACF;AACA,eAAe,mBAAmB,KAAK,WAAW;CAChD,OAAO,yBAAyB,KAAK,WAAW,SAAS,MAAM;EAC7D,OAAO,QAAQ,WAAW,IAAI;CAChC,CAAC;AACH;AACA,eAAe,yBAAyB,KAAK,WAAW,YAAY;CAClE,IAAI,QAAQ,MAAM,sBAAsB,KAAK,WAAW,UAAU;CAClE,IAAI,OAAO,OAAO;CAClB,QAAQ,MAAM,wDAAwD,IAAI,6BAA6B,WAAW;CAClH,OAAO,KAAK;AACd;AACA,SAAS,eAAe,SAAS,SAAS;CACxC,IAAI,uBAAuB,2BAA2B,uCAAuC;CAC7F,OAAO,CAAC,IAAI,wBAAwB,QAAQ,kBAAkB,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB,eAAe,4BAA4B,QAAQ,sBAAsB,QAAQ,8BAA8B,KAAK,IAAI,KAAK,IAAI,0BAA0B,aAAa,GAAG,gCAAgC,QAAQ,0BAA0B,QAAQ,kCAAkC,KAAK,IAAI,KAAK,KAAK,wCAAwC,8BAA8B,cAAc,QAAQ,0CAA0C,KAAK,IAAI,KAAK,IAAI,sCAAsC;AAClnB"}
1
+ {"version":3,"file":"scanDepsToOptimize.native.js","names":[],"sources":["utils/scanDepsToOptimize.native.js"],"sourcesContent":["import { createDebugger } from \"@vxrn/debug\";\nimport { realpath } from \"fs/promises\";\nimport path, { dirname, extname, join, sep } from \"path\";\nimport { pathExists, readJSON } from \"./fs\";\nvar { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);\nfunction isPrebundleableEntry(file) {\n return !/\\.d\\.[cm]?ts$/i.test(file) && (!extname(file) || /\\.[cm]?[jt]s$/.test(file));\n}\nfunction getExportsMap(exports) {\n if (typeof exports === \"string\") return {\n \".\": exports\n };\n if (!exports || typeof exports !== \"object\" || Array.isArray(exports)) return {};\n return Object.keys(exports).some(function(k) {\n return k.startsWith(\".\");\n }) ? exports : {\n \".\": exports\n };\n}\nfunction getExportImport(target) {\n return typeof target === \"string\" ? target : target === null || target === void 0 ? void 0 : target.import;\n}\nvar EXCLUDE_LIST = [\n \"jsc-android\",\n \"react-shallow-renderer\",\n \"fsevents\",\n \"@swc/core\",\n \"@swc/core-darwin-arm64\",\n \"@swc/core-darwin-x64\",\n \"@swc/core-linux-arm-gnueabihf\",\n \"@swc/core-linux-arm64-gnu\",\n \"@swc/core-linux-arm64-musl\",\n \"@swc/core-linux-x64-gnu\",\n \"@swc/core-linux-x64-musl\",\n \"@swc/core-win32-arm64-msvc\",\n \"@swc/core-win32-ia32-msvc\",\n \"@swc/core-win32-x64-msvc\",\n \"lightningcss\",\n // this breaks fileToUrlPath in upstreams, like @discordjs/client\n \"url\",\n \"sharp\",\n \"@sentry/react-native\",\n // not used by web anyway\n // Could not read from file: /Users/n8/one/node_modules/react-native-web/dist/cjs/index.js/Libraries/Image/AssetRegistry\n // /lib/module/Platform/Platform.web.js:132:20\n \"@shopify/react-native-skia\",\n \"@react-native/virtualized-lists\",\n // Unexpected \"typeof\" in `node_modules/@react-native/virtualized-lists/index.js`\n // Native only, we don't expect SSR to use these packages.\n // Also, some of these packages might attempt to import from react-native internals, which will break in SSR while react-native is aliased to react-native-web.\n \"@vxrn/vite-native-hmr\",\n \"@vxrn/compiler\",\n \"@vxrn/vite-native-client\",\n // build-time only, and they load native .node addons the ssr dep optimizer\n // cannot parse. apps list vxrn as a dependency because it is their dev\n // server, which is exactly why it must never be pre-bundled for ssr.\n \"vxrn\",\n \"@vxrn/vite-plugin-metro\",\n \"oxc-transform\",\n \"oxc-parser\",\n \"react-native-ios-utilities\",\n \"react-native-ios-modal\",\n \"react-native-ios-context-menu\",\n \"react-native-haptic-feedback\",\n \"react-native-sortables\",\n \"react-native-image-colors\",\n \"react-native-fast-image\",\n \"react-native-fast-squircle\",\n \"react-native-device-info\",\n // CLI/scripts shouldn't be used in SSR runtime\n \"@tamagui/cli\",\n // only used by static/plugin\n \"@tamagui/static\",\n \"@tamagui/config-default\",\n \"@tamagui/vite-plugin\",\n \"@take-out/scripts\",\n \"@take-out/cli\",\n // Should be used on native only\n \"@tamagui/core/native-test\",\n \"@storybook/react\",\n // native-only or not needed in SSR\n \"@nandorojo/galeria\",\n \"react-native-pager-view\",\n \"@react-native/debugger-shell\",\n // expo's debugger is a standalone app, not an SSR runtime dependency.\n \"@expo/cli\",\n \"@expo/log-box\",\n \"@hot-updater/react-native\",\n \"@hot-updater/plugin-core\",\n \"validator\",\n \"zlib\"\n];\nvar EXCLUDE_LIST_SET = new Set(EXCLUDE_LIST);\nvar INCLUDE_LIST = [\n // ReferenceError: exports is not defined - at eval (.../node_modules/inline-style-prefixer/lib/createPrefixer.js:3:23)\n \"inline-style-prefixer\",\n \"react-native-vector-icons\",\n \"jotai\"\n];\nvar INCLUDE_LIST_SET = new Set(INCLUDE_LIST);\nasync function scanDepsToOptimize(packageJsonPath) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (\n /** If the content of the package.json is already read before calling this function, pass it here to avoid reading it again */\n {}\n );\n return scanDeps(packageJsonPath, options, {\n pathExists: memoizeRead(function(file) {\n return pathExists(file);\n }),\n realpath: memoizeRead(function(file) {\n return realpath(file);\n }),\n readJson: memoizeRead(function(file) {\n return readJSON(file);\n })\n });\n}\nfunction memoizeRead(read) {\n var pending = /* @__PURE__ */ new Map();\n return function(file) {\n var key = path.resolve(file);\n var result = pending.get(key);\n if (!result) {\n result = read(key);\n pending.set(key, result);\n }\n return result;\n };\n}\nasync function scanDeps(packageJsonPath, options, fs) {\n var _pkgJson_dependencies;\n var { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n var isRoot = !options.parentDepNames;\n if (isRoot) {\n console.info(`[one] Scanning node_modules to auto-optimize...`);\n }\n var noExternalDeps = /* @__PURE__ */ new Set();\n var currentRoot = path.dirname(packageJsonPath);\n var pkgJson = pkgJsonContent || await readPackageJsonSafe(packageJsonPath, fs.readJson);\n var deps = Object.keys(pkgJson.dependencies || {});\n var needsWorklets = function needsWorklets2(json) {\n var _json_dependencies, _json_dependencies1;\n return !!(((_json_dependencies = json.dependencies) === null || _json_dependencies === void 0 ? void 0 : _json_dependencies[\"react-native-reanimated\"]) || ((_json_dependencies1 = json.dependencies) === null || _json_dependencies1 === void 0 ? void 0 : _json_dependencies1[\"react-native-worklets\"]));\n };\n var hasReanimated = isRoot ? (await Promise.all([\n \"react-native-reanimated\",\n \"react-native-worklets\"\n ].map(function(dep) {\n return resolveDepPkgJsonPath(dep, currentRoot, fs.pathExists);\n }))).some(Boolean) : needsWorklets(pkgJson);\n var prebundleDeps = (await Promise.all(deps.map(async function(dep) {\n var _depPkgJson_peerDependencies;\n if (parentDepNames.includes(dep)) {\n return [];\n }\n var cachedResult = proceededDeps.get(dep);\n if (cachedResult) {\n return cachedResult;\n }\n if (EXCLUDE_LIST_SET.has(dep)) {\n return [];\n }\n var localPath = await findDepPkgJsonPathWithFs(dep, currentRoot, fs.pathExists);\n if (!localPath) return [];\n var depPkgJsonPath = await fs.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n var depPkgJson = await readPackageJsonSafe(depPkgJsonPath, fs.readJson);\n if (needsWorklets(depPkgJson)) {\n hasReanimated = true;\n }\n if (depPkgJson.codegenConfig != null) {\n noExternalDeps.add(dep);\n debug === null || debug === void 0 ? void 0 : debug(`${dep} skipped: declares codegenConfig (native codegen package)`);\n return [];\n }\n var subDeps = await scanDeps(depPkgJsonPath, {\n parentDepNames: [\n ...parentDepNames,\n dep\n ],\n pkgJsonContent: depPkgJson,\n proceededDeps\n }, fs);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = subDeps.noExternalDeps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _$dep = _step.value;\n noExternalDeps.add(_$dep);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (subDeps.hasReanimated) {\n hasReanimated = true;\n }\n var shouldPreBundle = subDeps.prebundleDeps.length > 0 || /* If this dep is depending on other deps that need pre-bundling, then also pre-bundle this dep */\n INCLUDE_LIST_SET.has(dep) || /* If this dep is in the include list, then pre-bundle it */\n hasRequiredDep(depPkgJson, \"react\") || // an optional react peer still means the package ships react\n // entrypoints (e.g. better-auth/react). left external, those load a\n // second react copy in SSR and crash hooks with a null dispatcher.\n !!((_depPkgJson_peerDependencies = depPkgJson.peerDependencies) === null || _depPkgJson_peerDependencies === void 0 ? void 0 : _depPkgJson_peerDependencies.react) || hasRequiredDep(depPkgJson, \"react-native\") || hasRequiredDep(depPkgJson, \"expo-modules-core\") || // expo packages publish extensionless ESM imports that Node cannot\n // execute directly. Keep installed Expo modules inside Vite's SSR\n // graph without making Expo a framework dependency.\n dep.startsWith(\"@expo/\") || dep.startsWith(\"expo-\");\n debug === null || debug === void 0 ? void 0 : debug(`${dep} shouldPreBundle? ${shouldPreBundle}`);\n var depsToPreBundle = await (async function() {\n if (!shouldPreBundle) {\n return [];\n }\n var depPkgJsonExports = getExportsMap(depPkgJson.exports);\n var definedExports = Object.keys(depPkgJsonExports).filter(function(k) {\n var imp = getExportImport(depPkgJsonExports[k]);\n if (typeof imp !== \"string\") {\n return false;\n }\n if (!isPrebundleableEntry(imp)) {\n return false;\n }\n if (!k.match(/^(\\.\\/)?[a-zA-Z0-9-_]+$/)) {\n return false;\n }\n return true;\n }).map(function(k) {\n return k.replace(/^\\.\\/?/, \"\");\n }).map(function(k) {\n return `${dep}/${k}`;\n });\n var specialExports = (function() {\n switch (dep) {\n case \"react-native-vector-icons\":\n return [\n \"AntDesign\",\n \"Entypo\",\n \"EvilIcons\",\n \"Feather\",\n \"FontAwesome\",\n \"FontAwesome5\",\n \"FontAwesome5Pro\",\n \"Fontisto\",\n \"Foundation\",\n \"Ionicons\",\n \"MaterialCommunityIcons\",\n \"MaterialIcons\",\n \"Octicons\",\n \"SimpleLineIcons\",\n \"Zocial\"\n ].map(function(n) {\n return `${dep}/${n}`;\n });\n default:\n return [];\n }\n })();\n var mainExport = [\n depPkgJson[\"main\"],\n depPkgJson[\"module\"],\n getExportImport(depPkgJsonExports[\".\"])\n ].find(function(entry) {\n return typeof entry === \"string\" && entry && isPrebundleableEntry(entry);\n });\n var exports = [\n ...definedExports,\n ...specialExports\n ].filter(function(d) {\n return !EXCLUDE_LIST_SET.has(d);\n });\n if (mainExport) {\n if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport), fs.pathExists)) {\n exports.unshift(dep);\n }\n }\n return exports;\n })();\n var result = [\n ...depsToPreBundle,\n ...subDeps.prebundleDeps\n ];\n debugDetails === null || debugDetails === void 0 ? void 0 : debugDetails(`final result ${JSON.stringify(result, null, 2)}`);\n proceededDeps.set(dep, result);\n return result;\n }))).flat().filter(function(dep, index, arr) {\n return arr.indexOf(dep) === index;\n });\n var hasNativewind = !!((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0 ? void 0 : _pkgJson_dependencies[\"nativewind\"]);\n if ((hasNativewind || hasReanimated) && isRoot) {\n if (hasReanimated) console.info(`[one] Enabled babel plugins: ${[\n hasReanimated ? \"Reanimated\" : \"\",\n hasNativewind ? \"Nativewind\" : \"\"\n ].filter(Boolean).join(\", \")}`);\n }\n return {\n prebundleDeps,\n noExternalDeps: [\n ...noExternalDeps\n ],\n hasReanimated,\n // only check if set in root, dont want to enable css mode too easily\n hasNativewind\n };\n}\nasync function checkIfExportExists(pathIn, pathExists2) {\n var paths = [\n pathIn,\n ...extname(pathIn) ? [] : [\n pathIn + \".js\",\n pathIn + sep + \"index.js\"\n ]\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var path2 = _step.value;\n if (await pathExists2(path2)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath, readJson) {\n try {\n return await readJson(packageJsonPath);\n } catch (e) {\n console.error(`[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`);\n return {};\n }\n}\nasync function resolveDepPkgJsonPath(dep, dependent, pathExists2) {\n var root = dependent;\n while (root) {\n var possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await pathExists2(possiblePkgJson)) {\n return possiblePkgJson;\n }\n var nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n return findDepPkgJsonPathWithFs(dep, dependent, function(file) {\n return pathExists(file);\n });\n}\nasync function findDepPkgJsonPathWithFs(dep, dependent, pathExists2) {\n var found = await resolveDepPkgJsonPath(dep, dependent, pathExists2);\n if (found) return found;\n console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);\n return void 0;\n}\nfunction hasRequiredDep(pkgJson, depName) {\n var _pkgJson_dependencies, _pkgJson_peerDependencies, _pkgJson_peerDependenciesMeta_depName, _pkgJson_peerDependenciesMeta;\n return !!(((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0 ? void 0 : _pkgJson_dependencies[depName]) || ((_pkgJson_peerDependencies = pkgJson.peerDependencies) === null || _pkgJson_peerDependencies === void 0 ? void 0 : _pkgJson_peerDependencies[depName]) && !((_pkgJson_peerDependenciesMeta = pkgJson.peerDependenciesMeta) === null || _pkgJson_peerDependenciesMeta === void 0 ? void 0 : (_pkgJson_peerDependenciesMeta_depName = _pkgJson_peerDependenciesMeta[depName]) === null || _pkgJson_peerDependenciesMeta_depName === void 0 ? void 0 : _pkgJson_peerDependenciesMeta_depName.optional));\n}\nexport {\n EXCLUDE_LIST,\n EXCLUDE_LIST_SET,\n INCLUDE_LIST,\n INCLUDE_LIST_SET,\n findDepPkgJsonPath,\n scanDepsToOptimize\n};\n//# sourceMappingURL=scanDepsToOptimize.js.map\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import FSExtra from "fs-extra";
2
1
  import { randomUUID } from "node:crypto";
3
- import { rename, rm } from "node:fs/promises";
2
+ import { mkdir, rename, rm } from "node:fs/promises";
4
3
  import { join } from "node:path";
4
+ import { pathExists, readJSON, writeJSON } from "./fs.mjs";
5
5
 
6
6
  async function readState(cacheDir) {
7
7
  const statePath = join(cacheDir, "state.json");
8
8
  try {
9
- const state = await FSExtra.pathExists(statePath) ? await FSExtra.readJSON(statePath) : {};
9
+ const state = await pathExists(statePath) ? await readJSON(statePath) : {};
10
10
  return state;
11
11
  } catch {
12
12
  return {};
@@ -15,9 +15,9 @@ async function readState(cacheDir) {
15
15
  async function writeState(cacheDir, state) {
16
16
  const statePath = join(cacheDir, "state.json");
17
17
  const pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;
18
- await FSExtra.ensureDir(cacheDir);
18
+ await mkdir(cacheDir, { recursive: true });
19
19
  try {
20
- await FSExtra.writeJSON(pendingStatePath, state);
20
+ await writeJSON(pendingStatePath, state);
21
21
  await rename(pendingStatePath, statePath);
22
22
  } finally {
23
23
  await rm(pendingStatePath, { force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","names":[],"sources":["utils/state.js"],"sourcesContent":["import FSExtra from \"fs-extra\";\nimport { randomUUID } from \"node:crypto\";\nimport { rename, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nasync function readState(cacheDir) {\n const statePath = join(cacheDir, \"state.json\");\n try {\n const state = await FSExtra.pathExists(statePath) ? await FSExtra.readJSON(statePath) : {};\n return state;\n } catch {\n return {};\n }\n}\nasync function writeState(cacheDir, state) {\n const statePath = join(cacheDir, \"state.json\");\n const pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;\n await FSExtra.ensureDir(cacheDir);\n try {\n await FSExtra.writeJSON(pendingStatePath, state);\n await rename(pendingStatePath, statePath);\n } finally {\n await rm(pendingStatePath, { force: true });\n }\n}\nexport {\n readState,\n writeState\n};\n//# sourceMappingURL=state.js.map\n"],"mappings":";;;;;;AAIA,eAAe,UAAU,UAAU;CACjC,MAAM,YAAY,KAAK,UAAU,YAAY;CAC7C,IAAI;EACF,MAAM,QAAQ,MAAM,QAAQ,WAAW,SAAS,IAAI,MAAM,QAAQ,SAAS,SAAS,IAAI,CAAC;EACzF,OAAO;CACT,QAAQ;EACN,OAAO,CAAC;CACV;AACF;AACA,eAAe,WAAW,UAAU,OAAO;CACzC,MAAM,YAAY,KAAK,UAAU,YAAY;CAC7C,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,IAAI,GAAG,WAAW,EAAE;CACrE,MAAM,QAAQ,UAAU,QAAQ;CAChC,IAAI;EACF,MAAM,QAAQ,UAAU,kBAAkB,KAAK;EAC/C,MAAM,OAAO,kBAAkB,SAAS;CAC1C,UAAU;EACR,MAAM,GAAG,kBAAkB,EAAE,OAAO,KAAK,CAAC;CAC5C;AACF"}
1
+ {"version":3,"file":"state.js","names":[],"sources":["utils/state.js"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { mkdir, rename, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { pathExists, readJSON, writeJSON } from \"./fs\";\nasync function readState(cacheDir) {\n const statePath = join(cacheDir, \"state.json\");\n try {\n const state = await pathExists(statePath) ? await readJSON(statePath) : {};\n return state;\n } catch {\n return {};\n }\n}\nasync function writeState(cacheDir, state) {\n const statePath = join(cacheDir, \"state.json\");\n const pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;\n await mkdir(cacheDir, { recursive: true });\n try {\n await writeJSON(pendingStatePath, state);\n await rename(pendingStatePath, statePath);\n } finally {\n await rm(pendingStatePath, { force: true });\n }\n}\nexport {\n readState,\n writeState\n};\n//# sourceMappingURL=state.js.map\n"],"mappings":";;;;;;AAIA,eAAe,UAAU,UAAU;CACjC,MAAM,YAAY,KAAK,UAAU,YAAY;CAC7C,IAAI;EACF,MAAM,QAAQ,MAAM,WAAW,SAAS,IAAI,MAAM,SAAS,SAAS,IAAI,CAAC;EACzE,OAAO;CACT,QAAQ;EACN,OAAO,CAAC;CACV;AACF;AACA,eAAe,WAAW,UAAU,OAAO;CACzC,MAAM,YAAY,KAAK,UAAU,YAAY;CAC7C,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,IAAI,GAAG,WAAW,EAAE;CACrE,MAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;CACzC,IAAI;EACF,MAAM,UAAU,kBAAkB,KAAK;EACvC,MAAM,OAAO,kBAAkB,SAAS;CAC1C,UAAU;EACR,MAAM,GAAG,kBAAkB,EAAE,OAAO,KAAK,CAAC;CAC5C;AACF"}
@@ -1,12 +1,12 @@
1
- import FSExtra from "fs-extra";
2
1
  import { randomUUID } from "crypto";
3
- import { rename, rm } from "fs/promises";
2
+ import { mkdir, rename, rm } from "fs/promises";
4
3
  import { join } from "path";
4
+ import { pathExists, readJSON, writeJSON } from "./fs.native.js";
5
5
 
6
6
  async function readState(cacheDir) {
7
7
  var statePath = join(cacheDir, "state.json");
8
8
  try {
9
- var state = await FSExtra.pathExists(statePath) ? await FSExtra.readJSON(statePath) : {};
9
+ var state = await pathExists(statePath) ? await readJSON(statePath) : {};
10
10
  return state;
11
11
  } catch (unused) {
12
12
  return {};
@@ -15,9 +15,9 @@ async function readState(cacheDir) {
15
15
  async function writeState(cacheDir, state) {
16
16
  var statePath = join(cacheDir, "state.json");
17
17
  var pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;
18
- await FSExtra.ensureDir(cacheDir);
18
+ await mkdir(cacheDir, { recursive: true });
19
19
  try {
20
- await FSExtra.writeJSON(pendingStatePath, state);
20
+ await writeJSON(pendingStatePath, state);
21
21
  await rename(pendingStatePath, statePath);
22
22
  } finally {
23
23
  await rm(pendingStatePath, { force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"state.native.js","names":[],"sources":["utils/state.native.js"],"sourcesContent":["import FSExtra from \"fs-extra\";\nimport { randomUUID } from \"crypto\";\nimport { rename, rm } from \"fs/promises\";\nimport { join } from \"path\";\nasync function readState(cacheDir) {\n var statePath = join(cacheDir, \"state.json\");\n try {\n var state = await FSExtra.pathExists(statePath) ? await FSExtra.readJSON(statePath) : {};\n return state;\n } catch (unused) {\n return {};\n }\n}\nasync function writeState(cacheDir, state) {\n var statePath = join(cacheDir, \"state.json\");\n var pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;\n await FSExtra.ensureDir(cacheDir);\n try {\n await FSExtra.writeJSON(pendingStatePath, state);\n await rename(pendingStatePath, statePath);\n } finally {\n await rm(pendingStatePath, {\n force: true\n });\n }\n}\nexport {\n readState,\n writeState\n};\n//# sourceMappingURL=state.js.map\n"],"mappings":";;;;;;AAIA,eAAe,UAAU,UAAU;CACjC,IAAI,YAAY,KAAK,UAAU,YAAY;CAC3C,IAAI;EACF,IAAI,QAAQ,MAAM,QAAQ,WAAW,SAAS,IAAI,MAAM,QAAQ,SAAS,SAAS,IAAI,CAAC;EACvF,OAAO;CACT,SAAS,QAAQ;EACf,OAAO,CAAC;CACV;AACF;AACA,eAAe,WAAW,UAAU,OAAO;CACzC,IAAI,YAAY,KAAK,UAAU,YAAY;CAC3C,IAAI,mBAAmB,GAAG,UAAU,GAAG,QAAQ,IAAI,GAAG,WAAW,EAAE;CACnE,MAAM,QAAQ,UAAU,QAAQ;CAChC,IAAI;EACF,MAAM,QAAQ,UAAU,kBAAkB,KAAK;EAC/C,MAAM,OAAO,kBAAkB,SAAS;CAC1C,UAAU;EACR,MAAM,GAAG,kBAAkB,EACzB,OAAO,KACT,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"state.native.js","names":[],"sources":["utils/state.native.js"],"sourcesContent":["import { randomUUID } from \"crypto\";\nimport { mkdir, rename, rm } from \"fs/promises\";\nimport { join } from \"path\";\nimport { pathExists, readJSON, writeJSON } from \"./fs\";\nasync function readState(cacheDir) {\n var statePath = join(cacheDir, \"state.json\");\n try {\n var state = await pathExists(statePath) ? await readJSON(statePath) : {};\n return state;\n } catch (unused) {\n return {};\n }\n}\nasync function writeState(cacheDir, state) {\n var statePath = join(cacheDir, \"state.json\");\n var pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;\n await mkdir(cacheDir, {\n recursive: true\n });\n try {\n await writeJSON(pendingStatePath, state);\n await rename(pendingStatePath, statePath);\n } finally {\n await rm(pendingStatePath, {\n force: true\n });\n }\n}\nexport {\n readState,\n writeState\n};\n//# sourceMappingURL=state.js.map\n"],"mappings":";;;;;;AAIA,eAAe,UAAU,UAAU;CACjC,IAAI,YAAY,KAAK,UAAU,YAAY;CAC3C,IAAI;EACF,IAAI,QAAQ,MAAM,WAAW,SAAS,IAAI,MAAM,SAAS,SAAS,IAAI,CAAC;EACvE,OAAO;CACT,SAAS,QAAQ;EACf,OAAO,CAAC;CACV;AACF;AACA,eAAe,WAAW,UAAU,OAAO;CACzC,IAAI,YAAY,KAAK,UAAU,YAAY;CAC3C,IAAI,mBAAmB,GAAG,UAAU,GAAG,QAAQ,IAAI,GAAG,WAAW,EAAE;CACnE,MAAM,MAAM,UAAU,EACpB,WAAW,KACb,CAAC;CACD,IAAI;EACF,MAAM,UAAU,kBAAkB,KAAK;EACvC,MAAM,OAAO,kBAAkB,SAAS;CAC1C,UAAU;EACR,MAAM,GAAG,kBAAkB,EACzB,OAAO,KACT,CAAC;CACH;AACF"}
@@ -1,10 +1,11 @@
1
- import FSExtra from "fs-extra";
1
+ import { statSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
2
3
  import path from "node:path";
3
4
  import { createHash } from "node:crypto";
4
5
 
5
6
  function tryStatSync(file) {
6
7
  try {
7
- return FSExtra.statSync(file, { throwIfNoEntry: false });
8
+ return statSync(file, { throwIfNoEntry: false });
8
9
  } catch {}
9
10
  }
10
11
  async function lookupFile(dir, fileNames) {
@@ -24,7 +25,7 @@ function getHash(text, length = 8) {
24
25
  return h.padEnd(length, "_");
25
26
  }
26
27
  async function getFileHash(path2) {
27
- const content = await FSExtra.readFile(path2, "utf-8");
28
+ const content = await readFile(path2, "utf-8");
28
29
  return getHash(content);
29
30
  }
30
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["utils/utils.js"],"sourcesContent":["import FSExtra from \"fs-extra\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\nfunction tryStatSync(file) {\n try {\n return FSExtra.statSync(file, { throwIfNoEntry: false });\n } catch {\n }\n}\nasync function lookupFile(dir, fileNames) {\n while (dir) {\n for (const fileName of fileNames) {\n const fullPath = path.join(dir, fileName);\n if (tryStatSync(fullPath)?.isFile()) return fullPath;\n }\n const parentDir = path.dirname(dir);\n if (parentDir === dir) return;\n dir = parentDir;\n }\n}\nfunction getHash(text, length = 8) {\n const h = createHash(\"sha256\").update(text).digest(\"hex\").substring(0, length);\n if (length <= 64) return h;\n return h.padEnd(length, \"_\");\n}\nasync function getFileHash(path2) {\n const content = await FSExtra.readFile(path2, \"utf-8\");\n return getHash(content);\n}\nexport {\n getFileHash,\n getHash,\n lookupFile,\n tryStatSync\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":";;;;;AAGA,SAAS,YAAY,MAAM;CACzB,IAAI;EACF,OAAO,QAAQ,SAAS,MAAM,EAAE,gBAAgB,MAAM,CAAC;CACzD,QAAQ,CACR;AACF;AACA,eAAe,WAAW,KAAK,WAAW;CACxC,OAAO,KAAK;EACV,KAAK,MAAM,YAAY,WAAW;GAChC,MAAM,WAAW,KAAK,KAAK,KAAK,QAAQ;GACxC,IAAI,YAAY,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;EAC9C;EACA,MAAM,YAAY,KAAK,QAAQ,GAAG;EAClC,IAAI,cAAc,KAAK;EACvB,MAAM;CACR;AACF;AACA,SAAS,QAAQ,MAAM,SAAS,GAAG;CACjC,MAAM,IAAI,WAAW,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,UAAU,GAAG,MAAM;CAC7E,IAAI,UAAU,IAAI,OAAO;CACzB,OAAO,EAAE,OAAO,QAAQ,GAAG;AAC7B;AACA,eAAe,YAAY,OAAO;CAChC,MAAM,UAAU,MAAM,QAAQ,SAAS,OAAO,OAAO;CACrD,OAAO,QAAQ,OAAO;AACxB"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["utils/utils.js"],"sourcesContent":["import { statSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\nfunction tryStatSync(file) {\n try {\n return statSync(file, { throwIfNoEntry: false });\n } catch {\n }\n}\nasync function lookupFile(dir, fileNames) {\n while (dir) {\n for (const fileName of fileNames) {\n const fullPath = path.join(dir, fileName);\n if (tryStatSync(fullPath)?.isFile()) return fullPath;\n }\n const parentDir = path.dirname(dir);\n if (parentDir === dir) return;\n dir = parentDir;\n }\n}\nfunction getHash(text, length = 8) {\n const h = createHash(\"sha256\").update(text).digest(\"hex\").substring(0, length);\n if (length <= 64) return h;\n return h.padEnd(length, \"_\");\n}\nasync function getFileHash(path2) {\n const content = await readFile(path2, \"utf-8\");\n return getHash(content);\n}\nexport {\n getFileHash,\n getHash,\n lookupFile,\n tryStatSync\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":";;;;;;AAIA,SAAS,YAAY,MAAM;CACzB,IAAI;EACF,OAAO,SAAS,MAAM,EAAE,gBAAgB,MAAM,CAAC;CACjD,QAAQ,CACR;AACF;AACA,eAAe,WAAW,KAAK,WAAW;CACxC,OAAO,KAAK;EACV,KAAK,MAAM,YAAY,WAAW;GAChC,MAAM,WAAW,KAAK,KAAK,KAAK,QAAQ;GACxC,IAAI,YAAY,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;EAC9C;EACA,MAAM,YAAY,KAAK,QAAQ,GAAG;EAClC,IAAI,cAAc,KAAK;EACvB,MAAM;CACR;AACF;AACA,SAAS,QAAQ,MAAM,SAAS,GAAG;CACjC,MAAM,IAAI,WAAW,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,UAAU,GAAG,MAAM;CAC7E,IAAI,UAAU,IAAI,OAAO;CACzB,OAAO,EAAE,OAAO,QAAQ,GAAG;AAC7B;AACA,eAAe,YAAY,OAAO;CAChC,MAAM,UAAU,MAAM,SAAS,OAAO,OAAO;CAC7C,OAAO,QAAQ,OAAO;AACxB"}
@@ -1,10 +1,11 @@
1
- import FSExtra from "fs-extra";
1
+ import { statSync } from "fs";
2
+ import { readFile } from "fs/promises";
2
3
  import path from "path";
3
4
  import { createHash } from "crypto";
4
5
 
5
6
  function tryStatSync(file) {
6
7
  try {
7
- return FSExtra.statSync(file, { throwIfNoEntry: false });
8
+ return statSync(file, { throwIfNoEntry: false });
8
9
  } catch (unused) {}
9
10
  }
10
11
  async function lookupFile(dir, fileNames) {
@@ -43,7 +44,7 @@ function getHash(text) {
43
44
  return h.padEnd(length, "_");
44
45
  }
45
46
  async function getFileHash(path2) {
46
- var content = await FSExtra.readFile(path2, "utf-8");
47
+ var content = await readFile(path2, "utf-8");
47
48
  return getHash(content);
48
49
  }
49
50
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.native.js","names":[],"sources":["utils/utils.native.js"],"sourcesContent":["import FSExtra from \"fs-extra\";\nimport path from \"path\";\nimport { createHash } from \"crypto\";\nfunction tryStatSync(file) {\n try {\n return FSExtra.statSync(file, {\n throwIfNoEntry: false\n });\n } catch (unused) {\n }\n}\nasync function lookupFile(dir, fileNames) {\n while (dir) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = fileNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var fileName = _step.value;\n var _tryStatSync;\n var fullPath = path.join(dir, fileName);\n if ((_tryStatSync = tryStatSync(fullPath)) === null || _tryStatSync === void 0 ? void 0 : _tryStatSync.isFile()) return fullPath;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var parentDir = path.dirname(dir);\n if (parentDir === dir) return;\n dir = parentDir;\n }\n}\nfunction getHash(text) {\n var length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 8;\n var h = createHash(\"sha256\").update(text).digest(\"hex\").substring(0, length);\n if (length <= 64) return h;\n return h.padEnd(length, \"_\");\n}\nasync function getFileHash(path2) {\n var content = await FSExtra.readFile(path2, \"utf-8\");\n return getHash(content);\n}\nexport {\n getFileHash,\n getHash,\n lookupFile,\n tryStatSync\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":";;;;;AAGA,SAAS,YAAY,MAAM;CACzB,IAAI;EACF,OAAO,QAAQ,SAAS,MAAM,EAC5B,gBAAgB,MAClB,CAAC;CACH,SAAS,QAAQ,CACjB;AACF;AACA,eAAe,WAAW,KAAK,WAAW;CACxC,OAAO,KAAK;EACV,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,UAAU,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAC1J,IAAI,WAAW,MAAM;IACrB,IAAI;IACJ,IAAI,WAAW,KAAK,KAAK,KAAK,QAAQ;IACtC,KAAK,eAAe,YAAY,QAAQ,OAAO,QAAQ,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa,OAAO,GAAG,OAAO;GAC1H;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,IAAI,YAAY,KAAK,QAAQ,GAAG;EAChC,IAAI,cAAc,KAAK;EACvB,MAAM;CACR;AACF;AACA,SAAS,QAAQ,MAAM;CACrB,IAAI,SAAS,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAC9E,IAAI,IAAI,WAAW,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,UAAU,GAAG,MAAM;CAC3E,IAAI,UAAU,IAAI,OAAO;CACzB,OAAO,EAAE,OAAO,QAAQ,GAAG;AAC7B;AACA,eAAe,YAAY,OAAO;CAChC,IAAI,UAAU,MAAM,QAAQ,SAAS,OAAO,OAAO;CACnD,OAAO,QAAQ,OAAO;AACxB"}
1
+ {"version":3,"file":"utils.native.js","names":[],"sources":["utils/utils.native.js"],"sourcesContent":["import { statSync } from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport path from \"path\";\nimport { createHash } from \"crypto\";\nfunction tryStatSync(file) {\n try {\n return statSync(file, {\n throwIfNoEntry: false\n });\n } catch (unused) {\n }\n}\nasync function lookupFile(dir, fileNames) {\n while (dir) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = fileNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var fileName = _step.value;\n var _tryStatSync;\n var fullPath = path.join(dir, fileName);\n if ((_tryStatSync = tryStatSync(fullPath)) === null || _tryStatSync === void 0 ? void 0 : _tryStatSync.isFile()) return fullPath;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var parentDir = path.dirname(dir);\n if (parentDir === dir) return;\n dir = parentDir;\n }\n}\nfunction getHash(text) {\n var length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 8;\n var h = createHash(\"sha256\").update(text).digest(\"hex\").substring(0, length);\n if (length <= 64) return h;\n return h.padEnd(length, \"_\");\n}\nasync function getFileHash(path2) {\n var content = await readFile(path2, \"utf-8\");\n return getHash(content);\n}\nexport {\n getFileHash,\n getHash,\n lookupFile,\n tryStatSync\n};\n//# sourceMappingURL=utils.js.map\n"],"mappings":";;;;;;AAIA,SAAS,YAAY,MAAM;CACzB,IAAI;EACF,OAAO,SAAS,MAAM,EACpB,gBAAgB,MAClB,CAAC;CACH,SAAS,QAAQ,CACjB;AACF;AACA,eAAe,WAAW,KAAK,WAAW;CACxC,OAAO,KAAK;EACV,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,UAAU,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAC1J,IAAI,WAAW,MAAM;IACrB,IAAI;IACJ,IAAI,WAAW,KAAK,KAAK,KAAK,QAAQ;IACtC,KAAK,eAAe,YAAY,QAAQ,OAAO,QAAQ,iBAAiB,KAAK,IAAI,KAAK,IAAI,aAAa,OAAO,GAAG,OAAO;GAC1H;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,IAAI,YAAY,KAAK,QAAQ,GAAG;EAChC,IAAI,cAAc,KAAK;EACvB,MAAM;CACR;AACF;AACA,SAAS,QAAQ,MAAM;CACrB,IAAI,SAAS,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAC9E,IAAI,IAAI,WAAW,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,UAAU,GAAG,MAAM;CAC3E,IAAI,UAAU,IAAI,OAAO;CACzB,OAAO,EAAE,OAAO,QAAQ,GAAG;AAC7B;AACA,eAAe,YAAY,OAAO;CAChC,IAAI,UAAU,MAAM,SAAS,OAAO,OAAO;CAC3C,OAAO,QAAQ,OAAO;AACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxrn",
3
- "version": "2.13.8",
3
+ "version": "2.13.10",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -80,18 +80,17 @@
80
80
  "@react-native-community/cli": "^20.2.0",
81
81
  "@react-native-community/cli-config": "^20.2.0",
82
82
  "@react-native/dev-middleware": "^0.88.0",
83
- "@vxrn/compiler": "2.13.8",
84
- "@vxrn/debug": "2.13.8",
85
- "@vxrn/query-string": "2.13.8",
86
- "@vxrn/resolve": "2.13.8",
87
- "@vxrn/url-parse": "2.13.8",
88
- "@vxrn/utils": "2.13.8",
89
- "@vxrn/vendor": "2.13.8",
90
- "@vxrn/vite-flow": "2.13.8",
83
+ "@vxrn/compiler": "2.13.10",
84
+ "@vxrn/debug": "2.13.10",
85
+ "@vxrn/query-string": "2.13.10",
86
+ "@vxrn/resolve": "2.13.10",
87
+ "@vxrn/url-parse": "2.13.10",
88
+ "@vxrn/utils": "2.13.10",
89
+ "@vxrn/vendor": "2.13.10",
90
+ "@vxrn/vite-flow": "2.13.10",
91
91
  "citty": "^0.1.6",
92
92
  "dotenv": "^17.2.1",
93
93
  "dotenv-expand": "^12.0.2",
94
- "env-editor": "^1.1.0",
95
94
  "es-module-lexer": "^1.3.0",
96
95
  "oxc-parser": "^0.112.0",
97
96
  "oxc-transform": "^0.148.0",
@@ -100,13 +99,9 @@
100
99
  "image-size": "2.0.3",
101
100
  "magic-string": "^0.30.21",
102
101
  "micromatch": "^4.0.8",
103
- "find-node-modules": "^2.1.3",
104
- "fs-extra": "^11.2.0",
105
- "get-port-please": "^3.1.2",
106
102
  "hono": "^4.13.11",
107
103
  "perfect-debounce": "^1.0.0",
108
104
  "picocolors": "^1.0.0",
109
- "pkg-types": "^1.0.3",
110
105
  "rolldown": "^1.2.8",
111
106
  "semver": "^7.6.3",
112
107
  "sharp": "^0.35.5",
@@ -118,7 +113,6 @@
118
113
  "@biomejs/biome": "2.5.15",
119
114
  "@jridgewell/gen-mapping": "^0.3.5",
120
115
  "@tamagui/build": "3.2.3",
121
- "@types/find-node-modules": "^2.1.2",
122
116
  "@types/node": "^24.10.0",
123
117
  "@types/ws": "^8.18.1",
124
118
  "depcheck": "^1.4.7",
@@ -127,20 +121,20 @@
127
121
  "react-native": "0.88.0",
128
122
  "typescript": "7.0.2",
129
123
  "vitest": "^4.1.0",
130
- "@vxrn/vite-plugin-metro": "2.13.8"
124
+ "@vxrn/vite-plugin-metro": "2.13.10"
131
125
  },
132
126
  "publishConfig": {
133
127
  "access": "public"
134
128
  },
135
129
  "peerDependencies": {
136
- "@vxrn/vite-plugin-metro": "2.13.8"
130
+ "@vxrn/vite-plugin-metro": "2.13.10"
137
131
  },
138
132
  "peerDependenciesMeta": {
139
133
  "@vxrn/vite-plugin-metro": {
140
134
  "optional": true
141
135
  }
142
136
  },
143
- "releaseSourceCommit": "2a379b5922aff42ba8f245121e858ef29fb21e70",
137
+ "releaseSourceCommit": "10ae059cc30ab9f70a12d9711ba8346d596d61d2",
144
138
  "repository": {
145
139
  "type": "git",
146
140
  "url": "git+https://github.com/onejs/one.git",
package/src/cli.ts CHANGED
@@ -22,10 +22,11 @@ function lastValue<T>(arg: T | T[]): T | undefined {
22
22
  return arg
23
23
  }
24
24
 
25
- if (typeof import.meta.dirname !== 'string') {
26
- console.error(
27
- `One uses "import.meta.dirname", for Node this is version 20.11.0 or greater`
28
- )
25
+ const [nodeMajor, nodeMinor] = process.versions.node.split('.').map((part) => Number(part))
26
+ if (
27
+ !((nodeMajor === 20 && nodeMinor >= 19) || (nodeMajor === 22 && nodeMinor >= 12) || nodeMajor > 22)
28
+ ) {
29
+ console.error('One requires Node ^20.19.0 || >=22.12.0')
29
30
  process.exit(1)
30
31
  }
31
32
 
@@ -1,7 +1,7 @@
1
1
  import type { InlineConfig } from 'vite'
2
2
  import { resolvePath } from '@vxrn/resolve'
3
- import FSExtra from 'fs-extra'
4
3
  import { join } from 'node:path'
4
+ import { pathExists, readJSON } from '../utils/fs'
5
5
  import type { VXRNOptionsFilled } from './getOptionsFilled'
6
6
 
7
7
  // essentially base web config not base everything
@@ -52,7 +52,7 @@ export async function getBaseViteConfig(
52
52
  const postCSSConfigPath = (
53
53
  await Promise.all(
54
54
  postCSSPaths.map(async (x) => {
55
- if (await FSExtra.pathExists(x)) {
55
+ if (await pathExists(x)) {
56
56
  return x
57
57
  }
58
58
  })
@@ -60,7 +60,7 @@ export async function getBaseViteConfig(
60
60
  ).find((x) => typeof x === 'string')
61
61
 
62
62
  const reactNativePackageJsonPath = resolvePath('react-native/package.json', root)
63
- const { version } = await FSExtra.readJSON(reactNativePackageJsonPath)
63
+ const { version } = await readJSON(reactNativePackageJsonPath)
64
64
 
65
65
  return {
66
66
  mode,