vxrn 2.8.1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/clean.mjs +128 -19
- package/dist/exports/clean.mjs.map +1 -1
- package/dist/exports/clean.native.js +147 -21
- package/dist/exports/clean.native.js.map +1 -1
- package/dist/exports/prebuild.mjs +2 -1
- package/dist/exports/prebuild.mjs.map +1 -1
- package/dist/exports/prebuild.native.js +2 -1
- package/dist/exports/prebuild.native.js.map +1 -1
- package/dist/exports/prebuildWithoutExpo.mjs +196 -7
- package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
- package/dist/exports/prebuildWithoutExpo.native.js +280 -42
- package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
- package/dist/plugins/reactNativeDevServer.mjs +1 -1
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +1 -1
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/user-interface/index.mjs +31 -24
- package/dist/user-interface/index.mjs.map +1 -1
- package/dist/user-interface/index.native.js +32 -25
- package/dist/user-interface/index.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +111 -14
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +143 -14
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/scanDepsToOptimize.mjs +10 -6
- package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
- package/dist/utils/scanDepsToOptimize.native.js +12 -6
- package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
- package/expo-plugin.cjs +71 -8
- package/package.json +13 -13
- package/src/exports/clean.test.ts +502 -5
- package/src/exports/clean.ts +176 -19
- package/src/exports/expoPlugin.test.mjs +44 -1
- package/src/exports/prebuild.ts +6 -0
- package/src/exports/prebuildWithoutExpo.test.ts +134 -2
- package/src/exports/prebuildWithoutExpo.ts +235 -10
- package/src/plugins/reactNativeDevServer.ts +1 -1
- package/src/user-interface/index.ts +50 -42
- package/src/utils/createNativeDevEngine.test.ts +480 -1
- package/src/utils/createNativeDevEngine.ts +220 -17
- package/src/utils/imageSizePatch.test.ts +3 -3
- package/src/utils/scanDepsToOptimize.test.ts +35 -2
- package/src/utils/scanDepsToOptimize.ts +25 -8
- package/types/exports/clean.d.ts.map +1 -1
- package/types/exports/prebuild.d.ts +2 -1
- package/types/exports/prebuild.d.ts.map +1 -1
- package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
- package/types/user-interface/index.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts +1 -1
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
- package/types/utils/scanDepsToOptimize.d.ts +25 -0
- package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
|
@@ -76,10 +76,10 @@ const INCLUDE_LIST = [
|
|
|
76
76
|
"jotai"
|
|
77
77
|
];
|
|
78
78
|
const INCLUDE_LIST_SET = new Set(INCLUDE_LIST);
|
|
79
|
-
|
|
80
|
-
async function scanDepsToOptimize(packageJsonPath, options = rootOptions) {
|
|
79
|
+
async function scanDepsToOptimize(packageJsonPath, options = {}) {
|
|
81
80
|
const { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;
|
|
82
|
-
|
|
81
|
+
const isRoot = !options.parentDepNames;
|
|
82
|
+
if (isRoot) {
|
|
83
83
|
console.info(`[one] Scanning node_modules to auto-optimize...`);
|
|
84
84
|
}
|
|
85
85
|
const noExternalDeps = /* @__PURE__ */ new Set();
|
|
@@ -87,7 +87,7 @@ async function scanDepsToOptimize(packageJsonPath, options = rootOptions) {
|
|
|
87
87
|
const pkgJson = pkgJsonContent || await readPackageJsonSafe(packageJsonPath);
|
|
88
88
|
const deps = Object.keys(pkgJson.dependencies || {});
|
|
89
89
|
const needsWorklets = (json) => !!(json.dependencies?.["react-native-reanimated"] || json.dependencies?.["react-native-worklets"]);
|
|
90
|
-
let hasReanimated = needsWorklets(pkgJson);
|
|
90
|
+
let hasReanimated = isRoot ? (await Promise.all(["react-native-reanimated", "react-native-worklets"].map((dep) => resolveDepPkgJsonPath(dep, currentRoot)))).some(Boolean) : needsWorklets(pkgJson);
|
|
91
91
|
const prebundleDeps = (await Promise.all(deps.map(async (dep) => {
|
|
92
92
|
if (parentDepNames.includes(dep)) {
|
|
93
93
|
return [];
|
|
@@ -184,7 +184,7 @@ async function scanDepsToOptimize(packageJsonPath, options = rootOptions) {
|
|
|
184
184
|
return result;
|
|
185
185
|
}))).flat().filter((dep, index, arr) => arr.indexOf(dep) === index);
|
|
186
186
|
const hasNativewind = !!pkgJson.dependencies?.["nativewind"];
|
|
187
|
-
if ((hasNativewind || hasReanimated) &&
|
|
187
|
+
if ((hasNativewind || hasReanimated) && isRoot) {
|
|
188
188
|
if (hasReanimated) console.info(`[one] Enabled babel plugins: ${[hasReanimated ? "Reanimated" : "", hasNativewind ? "Nativewind" : ""].filter(Boolean).join(", ")}`);
|
|
189
189
|
}
|
|
190
190
|
return {
|
|
@@ -211,7 +211,7 @@ async function readPackageJsonSafe(packageJsonPath) {
|
|
|
211
211
|
return {};
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
async function
|
|
214
|
+
async function resolveDepPkgJsonPath(dep, dependent) {
|
|
215
215
|
let root = dependent;
|
|
216
216
|
while (root) {
|
|
217
217
|
const possiblePkgJson = path.join(root, "node_modules", dep, "package.json");
|
|
@@ -222,6 +222,10 @@ async function findDepPkgJsonPath(dep, dependent) {
|
|
|
222
222
|
if (nextRoot === root) break;
|
|
223
223
|
root = nextRoot;
|
|
224
224
|
}
|
|
225
|
+
}
|
|
226
|
+
async function findDepPkgJsonPath(dep, dependent) {
|
|
227
|
+
const found = await resolveDepPkgJsonPath(dep, dependent);
|
|
228
|
+
if (found) return found;
|
|
225
229
|
console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);
|
|
226
230
|
return void 0;
|
|
227
231
|
}
|
|
@@ -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);\nconst rootOptions = {};\nasync function scanDepsToOptimize(packageJsonPath, options = rootOptions) {\n const { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n if (options === rootOptions) {\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);\n const deps = Object.keys(pkgJson.dependencies || {});\n const needsWorklets = (json) => !!(json.dependencies?.[\"react-native-reanimated\"] || json.dependencies?.[\"react-native-worklets\"]);\n let hasReanimated = 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 findDepPkgJsonPath(dep, currentRoot);\n if (!localPath) return [];\n const depPkgJsonPath = await FSExtra.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n const depPkgJson = await readPackageJsonSafe(depPkgJsonPath);\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 scanDepsToOptimize(depPkgJsonPath, {\n parentDepNames: [...parentDepNames, dep],\n pkgJsonContent: depPkgJson,\n proceededDeps\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((entry) => typeof entry === \"string\" && entry && isPrebundleableEntry(entry));\n const exports = [...definedExports, ...specialExports].filter(\n (d) => !EXCLUDE_LIST_SET.has(d)\n );\n if (mainExport) {\n if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport))) {\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) && options === rootOptions) {\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) {\n const paths = [\n pathIn,\n ...extname(pathIn) ? [] : [pathIn + \".js\", pathIn + sep + \"index.js\"]\n ];\n for (const path2 of paths) {\n if (await FSExtra.pathExists(path2)) {\n return true;\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath) {\n try {\n return await FSExtra.readJson(packageJsonPath);\n } catch (e) {\n console.error(\n `[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`\n );\n return {};\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n let root = dependent;\n while (root) {\n const possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await FSExtra.pathExists(possiblePkgJson)) {\n return possiblePkgJson;\n }\n const nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\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 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 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);\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)\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 findDepPkgJsonPath(dep, currentRoot);\n if (!localPath) return [];\n const depPkgJsonPath = await FSExtra.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n const depPkgJson = await readPackageJsonSafe(depPkgJsonPath);\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 scanDepsToOptimize(depPkgJsonPath, {\n parentDepNames: [...parentDepNames, dep],\n pkgJsonContent: depPkgJson,\n proceededDeps\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(join(dirname(depPkgJsonPath), mainExport))) {\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) {\n const paths = [\n pathIn,\n ...extname(pathIn) ? [] : [pathIn + \".js\", pathIn + sep + \"index.js\"]\n ];\n for (const path2 of paths) {\n if (await FSExtra.pathExists(path2)) {\n return true;\n }\n }\n return false;\n}\nasync function readPackageJsonSafe(packageJsonPath) {\n try {\n return await FSExtra.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) {\n let root = dependent;\n while (root) {\n const possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await FSExtra.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 const found = await resolveDepPkgJsonPath(dep, dependent);\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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"}
|
|
@@ -78,14 +78,14 @@ var INCLUDE_LIST = [
|
|
|
78
78
|
"jotai"
|
|
79
79
|
];
|
|
80
80
|
var INCLUDE_LIST_SET = new Set(INCLUDE_LIST);
|
|
81
|
-
var rootOptions = {};
|
|
82
81
|
async function scanDepsToOptimize(packageJsonPath) {
|
|
83
82
|
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] :
|
|
84
83
|
/** If the content of the package.json is already read before calling this function, pass it here to avoid reading it again */
|
|
85
|
-
|
|
84
|
+
{};
|
|
86
85
|
var _pkgJson_dependencies;
|
|
87
86
|
var { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;
|
|
88
|
-
|
|
87
|
+
var isRoot = !options.parentDepNames;
|
|
88
|
+
if (isRoot) {
|
|
89
89
|
console.info(`[one] Scanning node_modules to auto-optimize...`);
|
|
90
90
|
}
|
|
91
91
|
var noExternalDeps = /* @__PURE__ */ new Set();
|
|
@@ -96,7 +96,9 @@ async function scanDepsToOptimize(packageJsonPath) {
|
|
|
96
96
|
var _json_dependencies, _json_dependencies1;
|
|
97
97
|
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"]));
|
|
98
98
|
};
|
|
99
|
-
var hasReanimated =
|
|
99
|
+
var hasReanimated = isRoot ? (await Promise.all(["react-native-reanimated", "react-native-worklets"].map(function(dep) {
|
|
100
|
+
return resolveDepPkgJsonPath(dep, currentRoot);
|
|
101
|
+
}))).some(Boolean) : needsWorklets(pkgJson);
|
|
100
102
|
var prebundleDeps = (await Promise.all(deps.map(async function(dep) {
|
|
101
103
|
var _depPkgJson_peerDependencies;
|
|
102
104
|
if (parentDepNames.includes(dep)) {
|
|
@@ -225,7 +227,7 @@ async function scanDepsToOptimize(packageJsonPath) {
|
|
|
225
227
|
return arr.indexOf(dep) === index;
|
|
226
228
|
});
|
|
227
229
|
var hasNativewind = !!((_pkgJson_dependencies = pkgJson.dependencies) === null || _pkgJson_dependencies === void 0 ? void 0 : _pkgJson_dependencies["nativewind"]);
|
|
228
|
-
if ((hasNativewind || hasReanimated) &&
|
|
230
|
+
if ((hasNativewind || hasReanimated) && isRoot) {
|
|
229
231
|
if (hasReanimated) console.info(`[one] Enabled babel plugins: ${[hasReanimated ? "Reanimated" : "", hasNativewind ? "Nativewind" : ""].filter(Boolean).join(", ")}`);
|
|
230
232
|
}
|
|
231
233
|
return {
|
|
@@ -269,7 +271,7 @@ async function readPackageJsonSafe(packageJsonPath) {
|
|
|
269
271
|
return {};
|
|
270
272
|
}
|
|
271
273
|
}
|
|
272
|
-
async function
|
|
274
|
+
async function resolveDepPkgJsonPath(dep, dependent) {
|
|
273
275
|
var root = dependent;
|
|
274
276
|
while (root) {
|
|
275
277
|
var possiblePkgJson = path.join(root, "node_modules", dep, "package.json");
|
|
@@ -280,6 +282,10 @@ async function findDepPkgJsonPath(dep, dependent) {
|
|
|
280
282
|
if (nextRoot === root) break;
|
|
281
283
|
root = nextRoot;
|
|
282
284
|
}
|
|
285
|
+
}
|
|
286
|
+
async function findDepPkgJsonPath(dep, dependent) {
|
|
287
|
+
var found = await resolveDepPkgJsonPath(dep, dependent);
|
|
288
|
+
if (found) return found;
|
|
283
289
|
console.error(`[findDepPkgJsonPath] Could not find package.json for ${dep}, which is a dependency of ${dependent}`);
|
|
284
290
|
return void 0;
|
|
285
291
|
}
|
|
@@ -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);\nvar rootOptions = {};\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 rootOptions\n );\n var _pkgJson_dependencies;\n var { parentDepNames = [], proceededDeps = /* @__PURE__ */ new Map(), pkgJsonContent } = options;\n if (options === rootOptions) {\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);\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 = 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 findDepPkgJsonPath(dep, currentRoot);\n if (!localPath) return [];\n var depPkgJsonPath = await FSExtra.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n var depPkgJson = await readPackageJsonSafe(depPkgJsonPath);\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 scanDepsToOptimize(depPkgJsonPath, {\n parentDepNames: [\n ...parentDepNames,\n dep\n ],\n pkgJsonContent: depPkgJson,\n proceededDeps\n });\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))) {\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) && options === rootOptions) {\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) {\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 FSExtra.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) {\n try {\n return await FSExtra.readJson(packageJsonPath);\n } catch (e) {\n console.error(`[scanDepsToPreBundleForSsr] Error reading package.json from ${packageJsonPath}: ${e}`);\n return {};\n }\n}\nasync function findDepPkgJsonPath(dep, dependent) {\n var root = dependent;\n while (root) {\n var possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await FSExtra.pathExists(possiblePkgJson)) {\n return possiblePkgJson;\n }\n var nextRoot = path.dirname(root);\n if (nextRoot === root) break;\n root = nextRoot;\n }\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
|
+
{"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 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);\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);\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 findDepPkgJsonPath(dep, currentRoot);\n if (!localPath) return [];\n var depPkgJsonPath = await FSExtra.realpath(localPath);\n if (options.filter && !options.filter(depPkgJsonPath)) {\n return [];\n }\n var depPkgJson = await readPackageJsonSafe(depPkgJsonPath);\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 scanDepsToOptimize(depPkgJsonPath, {\n parentDepNames: [\n ...parentDepNames,\n dep\n ],\n pkgJsonContent: depPkgJson,\n proceededDeps\n });\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))) {\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) {\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 FSExtra.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) {\n try {\n return await FSExtra.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) {\n var root = dependent;\n while (root) {\n var possiblePkgJson = path.join(root, \"node_modules\", dep, \"package.json\");\n if (await FSExtra.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 var found = await resolveDepPkgJsonPath(dep, dependent);\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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"}
|
package/expo-plugin.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const fs = require('node:fs')
|
|
2
2
|
const { createRequire } = require('node:module')
|
|
3
3
|
const path = require('node:path')
|
|
4
|
+
const { pathToFileURL } = require('node:url')
|
|
4
5
|
const nativeProjectPatches = require('./native-project-patches.cjs')
|
|
5
6
|
|
|
6
7
|
// options: { notifications: { push?: boolean, mode?: 'development' | 'production' } }
|
|
@@ -50,6 +51,7 @@ module.exports = function withVxrn(config, options = {}) {
|
|
|
50
51
|
withMainActivity,
|
|
51
52
|
withMainApplication,
|
|
52
53
|
withPlugins,
|
|
54
|
+
withPodfileProperties,
|
|
53
55
|
withXcodeProject,
|
|
54
56
|
} = projectRequire('@expo/config-plugins')
|
|
55
57
|
|
|
@@ -673,6 +675,72 @@ extern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **)
|
|
|
673
675
|
return { sources: sources.length, hasViews }
|
|
674
676
|
}
|
|
675
677
|
|
|
678
|
+
const injectSwiftPackagesPodfile = (platformProjectRoot) => {
|
|
679
|
+
const podfilePath = path.join(platformProjectRoot, 'Podfile')
|
|
680
|
+
if (!fs.existsSync(podfilePath)) return
|
|
681
|
+
const podfile = fs.readFileSync(podfilePath, 'utf8')
|
|
682
|
+
fs.writeFileSync(
|
|
683
|
+
podfilePath,
|
|
684
|
+
nativeProjectPatches.injectOneSwiftPackagesIntoPodfile(podfile),
|
|
685
|
+
'utf8'
|
|
686
|
+
)
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
// the sdk pod and typescript facades one prebuild writes, from the same
|
|
690
|
+
// generator: writeAppSdkPod in the one package's built sdk.
|
|
691
|
+
const writeExpoSdkBindings = async () => {
|
|
692
|
+
let appModule
|
|
693
|
+
try {
|
|
694
|
+
appModule = path.join(
|
|
695
|
+
path.dirname(projectRequire.resolve('one/package.json')),
|
|
696
|
+
'dist',
|
|
697
|
+
'sdk',
|
|
698
|
+
'app.mjs'
|
|
699
|
+
)
|
|
700
|
+
} catch (error) {
|
|
701
|
+
throw new Error(`[vxrn/expo-plugin] cannot resolve the one package: ${error.message}`)
|
|
702
|
+
}
|
|
703
|
+
const { writeAppSdkPod } = await import(pathToFileURL(appModule).href)
|
|
704
|
+
return writeAppSdkPod(projectRoot)
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
// expo's default ios deployment target sits below the one the One pod
|
|
708
|
+
// requires, so pod install would refuse One until it is raised.
|
|
709
|
+
const deploymentTargetPlugins = [
|
|
710
|
+
[
|
|
711
|
+
withPodfileProperties,
|
|
712
|
+
(nextConfig) => {
|
|
713
|
+
const { minimumVersion } = JSON.parse(
|
|
714
|
+
fs.readFileSync(
|
|
715
|
+
path.join(path.dirname(projectRequire.resolve('one/package.json')), 'schema.json'),
|
|
716
|
+
'utf8'
|
|
717
|
+
)
|
|
718
|
+
)
|
|
719
|
+
const current = parseFloat(nextConfig.modResults['ios.deploymentTarget'] ?? '0')
|
|
720
|
+
if (!(current >= minimumVersion)) {
|
|
721
|
+
nextConfig.modResults['ios.deploymentTarget'] = `${minimumVersion}.0`
|
|
722
|
+
}
|
|
723
|
+
return nextConfig
|
|
724
|
+
},
|
|
725
|
+
],
|
|
726
|
+
]
|
|
727
|
+
|
|
728
|
+
const sdkBindingsPlugins = [
|
|
729
|
+
[
|
|
730
|
+
withDangerousMod,
|
|
731
|
+
[
|
|
732
|
+
'ios',
|
|
733
|
+
async (nextConfig) => {
|
|
734
|
+
const frameworks = await writeExpoSdkBindings()
|
|
735
|
+
if (frameworks.length > 0) {
|
|
736
|
+
injectSwiftPackagesPodfile(nextConfig.modRequest.platformProjectRoot)
|
|
737
|
+
}
|
|
738
|
+
return nextConfig
|
|
739
|
+
},
|
|
740
|
+
],
|
|
741
|
+
],
|
|
742
|
+
]
|
|
743
|
+
|
|
676
744
|
const nativeSourcePlugins = !nativeSource
|
|
677
745
|
? []
|
|
678
746
|
: [
|
|
@@ -684,14 +752,7 @@ extern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **)
|
|
|
684
752
|
const { platformProjectRoot } = nextConfig.modRequest
|
|
685
753
|
const contract = await loadNativeSourceContract()
|
|
686
754
|
const count = writeExpoSwiftPackages({ platformProjectRoot, contract })
|
|
687
|
-
if (count > 0)
|
|
688
|
-
const podfilePath = path.join(platformProjectRoot, 'Podfile')
|
|
689
|
-
if (fs.existsSync(podfilePath)) {
|
|
690
|
-
let podfile = fs.readFileSync(podfilePath, 'utf8')
|
|
691
|
-
podfile = nativeProjectPatches.injectOneSwiftPackagesIntoPodfile(podfile)
|
|
692
|
-
fs.writeFileSync(podfilePath, podfile, 'utf8')
|
|
693
|
-
}
|
|
694
|
-
}
|
|
755
|
+
if (count > 0) injectSwiftPackagesPodfile(platformProjectRoot)
|
|
695
756
|
return nextConfig
|
|
696
757
|
},
|
|
697
758
|
],
|
|
@@ -781,6 +842,8 @@ extern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **)
|
|
|
781
842
|
...notificationPlugins,
|
|
782
843
|
...updatesPlugins,
|
|
783
844
|
...launchScreenPlugins,
|
|
845
|
+
...deploymentTargetPlugins,
|
|
846
|
+
...sdkBindingsPlugins,
|
|
784
847
|
...nativeSourcePlugins,
|
|
785
848
|
[
|
|
786
849
|
withXcodeProject,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxrn",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -80,14 +80,14 @@
|
|
|
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.
|
|
84
|
-
"@vxrn/debug": "2.
|
|
85
|
-
"@vxrn/query-string": "2.
|
|
86
|
-
"@vxrn/resolve": "2.
|
|
87
|
-
"@vxrn/url-parse": "2.
|
|
88
|
-
"@vxrn/utils": "2.
|
|
89
|
-
"@vxrn/vendor": "2.
|
|
90
|
-
"@vxrn/vite-flow": "2.
|
|
83
|
+
"@vxrn/compiler": "2.9.0",
|
|
84
|
+
"@vxrn/debug": "2.9.0",
|
|
85
|
+
"@vxrn/query-string": "2.9.0",
|
|
86
|
+
"@vxrn/resolve": "2.9.0",
|
|
87
|
+
"@vxrn/url-parse": "2.9.0",
|
|
88
|
+
"@vxrn/utils": "2.9.0",
|
|
89
|
+
"@vxrn/vendor": "2.9.0",
|
|
90
|
+
"@vxrn/vite-flow": "2.9.0",
|
|
91
91
|
"citty": "^0.1.6",
|
|
92
92
|
"dotenv": "^17.2.1",
|
|
93
93
|
"dotenv-expand": "^12.0.2",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"oxc-transform": "^0.148.0",
|
|
98
98
|
"oxc-transform-react": "^0.145.0",
|
|
99
99
|
"fast-glob": "^3.3.3",
|
|
100
|
-
"image-size": "
|
|
100
|
+
"image-size": "2.0.3",
|
|
101
101
|
"magic-string": "^0.30.21",
|
|
102
102
|
"micromatch": "^4.0.8",
|
|
103
103
|
"find-node-modules": "^2.1.3",
|
|
@@ -127,20 +127,20 @@
|
|
|
127
127
|
"react-native": "0.88.0",
|
|
128
128
|
"typescript": "7.0.2",
|
|
129
129
|
"vitest": "^4.1.0",
|
|
130
|
-
"@vxrn/vite-plugin-metro": "2.
|
|
130
|
+
"@vxrn/vite-plugin-metro": "2.9.0"
|
|
131
131
|
},
|
|
132
132
|
"publishConfig": {
|
|
133
133
|
"access": "public"
|
|
134
134
|
},
|
|
135
135
|
"peerDependencies": {
|
|
136
|
-
"@vxrn/vite-plugin-metro": "2.
|
|
136
|
+
"@vxrn/vite-plugin-metro": "2.9.0"
|
|
137
137
|
},
|
|
138
138
|
"peerDependenciesMeta": {
|
|
139
139
|
"@vxrn/vite-plugin-metro": {
|
|
140
140
|
"optional": true
|
|
141
141
|
}
|
|
142
142
|
},
|
|
143
|
-
"releaseSourceCommit": "
|
|
143
|
+
"releaseSourceCommit": "28cc4531bbc4fa1e392a92dc05529d318278d832",
|
|
144
144
|
"repository": {
|
|
145
145
|
"type": "git",
|
|
146
146
|
"url": "git+https://github.com/onejs/one.git",
|