vxrn 2.7.3 → 2.7.4
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/prebuildWithoutExpo.mjs +8 -0
- package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
- package/dist/exports/prebuildWithoutExpo.native.js +42 -34
- package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
- package/dist/utils/scanDepsToOptimize.mjs +8 -4
- package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
- package/dist/utils/scanDepsToOptimize.native.js +12 -4
- package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
- package/package.json +11 -11
- package/src/exports/prebuildWithoutExpo.test.ts +24 -0
- package/src/exports/prebuildWithoutExpo.ts +18 -0
- package/src/utils/scanDepsToOptimize.test.ts +58 -0
- package/src/utils/scanDepsToOptimize.ts +12 -7
- package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
- package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
|
@@ -4,12 +4,12 @@ import path, { dirname, extname, join, sep } from "node:path";
|
|
|
4
4
|
|
|
5
5
|
const { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);
|
|
6
6
|
function isPrebundleableEntry(file) {
|
|
7
|
-
return !extname(file) || /\.[cm]?[jt]s$/.test(file);
|
|
7
|
+
return !/\.d\.[cm]?ts$/i.test(file) && (!extname(file) || /\.[cm]?[jt]s$/.test(file));
|
|
8
8
|
}
|
|
9
9
|
function getExportsMap(exports) {
|
|
10
10
|
if (typeof exports === "string") return { ".": exports };
|
|
11
11
|
if (!exports || typeof exports !== "object" || Array.isArray(exports)) return {};
|
|
12
|
-
return exports;
|
|
12
|
+
return Object.keys(exports).some((k) => k.startsWith(".")) ? exports : { ".": exports };
|
|
13
13
|
}
|
|
14
14
|
function getExportImport(target) {
|
|
15
15
|
return typeof target === "string" ? target : target?.import;
|
|
@@ -165,9 +165,13 @@ async function scanDepsToOptimize(packageJsonPath, options = rootOptions) {
|
|
|
165
165
|
default: return [];
|
|
166
166
|
}
|
|
167
167
|
})();
|
|
168
|
-
const mainExport =
|
|
168
|
+
const mainExport = [
|
|
169
|
+
depPkgJson["main"],
|
|
170
|
+
depPkgJson["module"],
|
|
171
|
+
getExportImport(depPkgJsonExports["."])
|
|
172
|
+
].find((entry) => typeof entry === "string" && entry && isPrebundleableEntry(entry));
|
|
169
173
|
const exports = [...definedExports, ...specialExports].filter((d) => !EXCLUDE_LIST_SET.has(d));
|
|
170
|
-
if (
|
|
174
|
+
if (mainExport) {
|
|
171
175
|
if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport))) {
|
|
172
176
|
exports.unshift(dep);
|
|
173
177
|
}
|
|
@@ -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 !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 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 = depPkgJson[\"main\"] || depPkgJson[\"module\"] || getExportImport(depPkgJsonExports[\".\"]);\n const exports = [...definedExports, ...specialExports].filter(\n (d) => !EXCLUDE_LIST_SET.has(d)\n );\n if (typeof mainExport === \"string\" && isPrebundleableEntry(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":";;;;;AAGA,MAAM,EAAE,OAAO,iBAAiB,eAAe,yBAAyB;AACxE,SAAS,qBAAqB,MAAM;CAClC,OAAO,CAAC,QAAQ,IAAI,KAAK,gBAAgB,KAAK,IAAI;AACpD;AACA,SAAS,cAAc,SAAS;CAC9B,IAAI,OAAO,YAAY,UAAU,OAAO,EAAE,KAAK,QAAQ;CACvD,IAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAC;CAC/E,OAAO;AACT;AACA,SAAS,gBAAgB,QAAQ;CAC/B,OAAO,OAAO,WAAW,WAAW,SAAS,QAAQ;AACvD;AACA,MAAM,eAAe;CACnB;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,MAAM,mBAAmB,IAAI,IAAI,YAAY;AAC7C,MAAM,eAAe;CAEnB;CACA;CACA;AACF;AACA,MAAM,mBAAmB,IAAI,IAAI,YAAY;AAC7C,MAAM,cAAc,CAAC;AACrB,eAAe,mBAAmB,iBAAiB,UAAU,aAAa;CACxE,MAAM,EAAE,iBAAiB,CAAC,GAAG,gCAAgC,IAAI,IAAI,GAAG,mBAAmB;CAC3F,IAAI,YAAY,aAAa;EAC3B,QAAQ,KAAK,iDAAiD;CAChE;CACA,MAAM,iCAAiC,IAAI,IAAI;CAC/C,MAAM,cAAc,KAAK,QAAQ,eAAe;CAChD,MAAM,UAAU,kBAAkB,MAAM,oBAAoB,eAAe;CAC3E,MAAM,OAAO,OAAO,KAAK,QAAQ,gBAAgB,CAAC,CAAC;CACnD,MAAM,iBAAiB,SAAS,CAAC,EAAE,KAAK,eAAe,8BAA8B,KAAK,eAAe;CACzG,IAAI,gBAAgB,cAAc,OAAO;CACzC,MAAM,iBAAiB,MAAM,QAAQ,IACnC,KAAK,IAAI,OAAO,QAAQ;EACtB,IAAI,eAAe,SAAS,GAAG,GAAG;GAChC,OAAO,CAAC;EACV;EACA,MAAM,eAAe,cAAc,IAAI,GAAG;EAC1C,IAAI,cAAc;GAChB,OAAO;EACT;EACA,IAAI,iBAAiB,IAAI,GAAG,GAAG;GAC7B,OAAO,CAAC;EACV;EACA,MAAM,YAAY,MAAM,mBAAmB,KAAK,WAAW;EAC3D,IAAI,CAAC,WAAW,OAAO,CAAC;EACxB,MAAM,iBAAiB,MAAM,QAAQ,SAAS,SAAS;EACvD,IAAI,QAAQ,UAAU,CAAC,QAAQ,OAAO,cAAc,GAAG;GACrD,OAAO,CAAC;EACV;EACA,MAAM,aAAa,MAAM,oBAAoB,cAAc;EAC3D,IAAI,cAAc,UAAU,GAAG;GAC7B,gBAAgB;EAClB;EACA,IAAI,WAAW,iBAAiB,MAAM;GACpC,eAAe,IAAI,GAAG;GACtB,QAAQ,GAAG,IAAI,0DAA0D;GACzE,OAAO,CAAC;EACV;EACA,MAAM,UAAU,MAAM,mBAAmB,gBAAgB;GACvD,gBAAgB,CAAC,GAAG,gBAAgB,GAAG;GACvC,gBAAgB;GAChB;EACF,CAAC;EACD,KAAK,MAAM,QAAQ,QAAQ,gBAAgB,eAAe,IAAI,IAAI;EAClE,IAAI,QAAQ,eAAe;GACzB,gBAAgB;EAClB;EACA,MAAM,kBAAkB,QAAQ,cAAc,SAAS,KAAK,iBAAiB,IAC3E,GACF,KAAK,eAAe,YAAY,OAAO,KAGvC,CAAC,CAAC,WAAW,kBAAkB,SAAS,eAAe,YAAY,cAAc,KAAK,eAAe,YAAY,mBAAmB,KAGpI,IAAI,WAAW,QAAQ,KAAK,IAAI,WAAW,OAAO;EAClD,QAAQ,GAAG,IAAI,oBAAoB,iBAAiB;EACpD,MAAM,kBAAkB,OAAO,YAAY;GACzC,IAAI,CAAC,iBAAiB;IACpB,OAAO,CAAC;GACV;GACA,MAAM,oBAAoB,cAAc,WAAW,OAAO;GAC1D,MAAM,iBAAiB,OAAO,KAAK,iBAAiB,CAAC,CAAC,QAAQ,MAAM;IAClE,MAAM,MAAM,gBAAgB,kBAAkB,EAAE;IAChD,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,KAAK,MAAM,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG;GAC/D,MAAM,wBAAwB;IAC5B,QAAQ,KAAR;KACE,KAAK,6BACH,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;KACF,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG;KAC5B,SACE,OAAO,CAAC;IACZ;GACF,EAAC,CAAE;GACH,MAAM,aAAa,WAAW,WAAW,WAAW,aAAa,gBAAgB,kBAAkB,IAAI;GACvG,MAAM,UAAU,CAAC,GAAG,gBAAgB,GAAG,cAAc,CAAC,CAAC,QACpD,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAChC;GACA,IAAI,OAAO,eAAe,YAAY,qBAAqB,UAAU,GAAG;IACtE,IAAI,MAAM,oBAAoB,KAAK,QAAQ,cAAc,GAAG,UAAU,CAAC,GAAG;KACxE,QAAQ,QAAQ,GAAG;IACrB;GACF;GACA,OAAO;EACT,EAAC,CAAE;EACH,MAAM,SAAS,CAAC,GAAG,iBAAiB,GAAG,QAAQ,aAAa;EAC5D,eAAe,gBAAgB,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG;EAChE,cAAc,IAAI,KAAK,MAAM;EAC7B,OAAO;CACT,CAAC,CACH,EAAC,CAAE,KAAK,CAAC,CAAC,QAAQ,KAAK,OAAO,QAAQ,IAAI,QAAQ,GAAG,MAAM,KAAK;CAChE,MAAM,gBAAgB,CAAC,CAAC,QAAQ,eAAe;CAC/C,KAAK,iBAAiB,kBAAkB,YAAY,aAAa;EAC/D,IAAI,eACF,QAAQ,KACN,gCAAgC,CAAC,gBAAgB,eAAe,IAAI,gBAAgB,eAAe,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,GAClI;CACJ;CACA,OAAO;EACL;EACA,gBAAgB,CAAC,GAAG,cAAc;EAClC;EAEA;CACF;AACF;AACA,eAAe,oBAAoB,QAAQ;CACzC,MAAM,QAAQ,CACZ,QACA,GAAG,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,SAAS,MAAM,UAAU,CACtE;CACA,KAAK,MAAM,SAAS,OAAO;EACzB,IAAI,MAAM,QAAQ,WAAW,KAAK,GAAG;GACnC,OAAO;EACT;CACF;CACA,OAAO;AACT;AACA,eAAe,oBAAoB,iBAAiB;CAClD,IAAI;EACF,OAAO,MAAM,QAAQ,SAAS,eAAe;CAC/C,SAAS,GAAG;EACV,QAAQ,MACN,+DAA+D,gBAAgB,IAAI,GACrF;EACA,OAAO,CAAC;CACV;AACF;AACA,eAAe,mBAAmB,KAAK,WAAW;CAChD,IAAI,OAAO;CACX,OAAO,MAAM;EACX,MAAM,kBAAkB,KAAK,KAAK,MAAM,gBAAgB,KAAK,cAAc;EAC3E,IAAI,MAAM,QAAQ,WAAW,eAAe,GAAG;GAC7C,OAAO;EACT;EACA,MAAM,WAAW,KAAK,QAAQ,IAAI;EAClC,IAAI,aAAa,MAAM;EACvB,OAAO;CACT;CACA,QAAQ,MACN,wDAAwD,IAAI,6BAA6B,WAC3F;CACA,OAAO,KAAK;AACd;AACA,SAAS,eAAe,SAAS,SAAS;CACxC,OAAO,CAAC,EAAE,QAAQ,eAAe,YAAY,QAAQ,mBAAmB,YAAY,CAAC,QAAQ,uBAAuB,QAAQ,EAAE;AAChI"}
|
|
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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"}
|
|
@@ -4,12 +4,14 @@ import path, { dirname, extname, join, sep } from "path";
|
|
|
4
4
|
|
|
5
5
|
var { debug, debugDetails } = createDebugger(`vxrn:scanDepsToOptimize`);
|
|
6
6
|
function isPrebundleableEntry(file) {
|
|
7
|
-
return !extname(file) || /\.[cm]?[jt]s$/.test(file);
|
|
7
|
+
return !/\.d\.[cm]?ts$/i.test(file) && (!extname(file) || /\.[cm]?[jt]s$/.test(file));
|
|
8
8
|
}
|
|
9
9
|
function getExportsMap(exports) {
|
|
10
10
|
if (typeof exports === "string") return { ".": exports };
|
|
11
11
|
if (!exports || typeof exports !== "object" || Array.isArray(exports)) return {};
|
|
12
|
-
return exports
|
|
12
|
+
return Object.keys(exports).some(function(k) {
|
|
13
|
+
return k.startsWith(".");
|
|
14
|
+
}) ? exports : { ".": exports };
|
|
13
15
|
}
|
|
14
16
|
function getExportImport(target) {
|
|
15
17
|
return typeof target === "string" ? target : target === null || target === void 0 ? void 0 : target.import;
|
|
@@ -198,11 +200,17 @@ async function scanDepsToOptimize(packageJsonPath) {
|
|
|
198
200
|
default: return [];
|
|
199
201
|
}
|
|
200
202
|
})();
|
|
201
|
-
var mainExport =
|
|
203
|
+
var mainExport = [
|
|
204
|
+
depPkgJson["main"],
|
|
205
|
+
depPkgJson["module"],
|
|
206
|
+
getExportImport(depPkgJsonExports["."])
|
|
207
|
+
].find(function(entry) {
|
|
208
|
+
return typeof entry === "string" && entry && isPrebundleableEntry(entry);
|
|
209
|
+
});
|
|
202
210
|
var exports = [...definedExports, ...specialExports].filter(function(d) {
|
|
203
211
|
return !EXCLUDE_LIST_SET.has(d);
|
|
204
212
|
});
|
|
205
|
-
if (
|
|
213
|
+
if (mainExport) {
|
|
206
214
|
if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport))) {
|
|
207
215
|
exports.unshift(dep);
|
|
208
216
|
}
|
|
@@ -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 !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 exports;\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 = depPkgJson[\"main\"] || depPkgJson[\"module\"] || getExportImport(depPkgJsonExports[\".\"]);\n var exports = [\n ...definedExports,\n ...specialExports\n ].filter(function(d) {\n return !EXCLUDE_LIST_SET.has(d);\n });\n if (typeof mainExport === \"string\" && isPrebundleableEntry(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);\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxrn",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -81,15 +81,15 @@
|
|
|
81
81
|
"@react-native-community/cli": "^20.2.0",
|
|
82
82
|
"@react-native-community/cli-config": "^20.2.0",
|
|
83
83
|
"@react-native/dev-middleware": "^0.87.1",
|
|
84
|
-
"@vxrn/compiler": "2.7.
|
|
85
|
-
"@vxrn/debug": "2.7.
|
|
86
|
-
"@vxrn/query-string": "2.7.
|
|
87
|
-
"@vxrn/resolve": "2.7.
|
|
88
|
-
"@vxrn/url-parse": "2.7.
|
|
89
|
-
"@vxrn/utils": "2.7.
|
|
90
|
-
"@vxrn/vendor": "2.7.
|
|
91
|
-
"@vxrn/vite-flow": "2.7.
|
|
92
|
-
"@vxrn/vite-plugin-metro": "2.7.
|
|
84
|
+
"@vxrn/compiler": "2.7.4",
|
|
85
|
+
"@vxrn/debug": "2.7.4",
|
|
86
|
+
"@vxrn/query-string": "2.7.4",
|
|
87
|
+
"@vxrn/resolve": "2.7.4",
|
|
88
|
+
"@vxrn/url-parse": "2.7.4",
|
|
89
|
+
"@vxrn/utils": "2.7.4",
|
|
90
|
+
"@vxrn/vendor": "2.7.4",
|
|
91
|
+
"@vxrn/vite-flow": "2.7.4",
|
|
92
|
+
"@vxrn/vite-plugin-metro": "2.7.4",
|
|
93
93
|
"citty": "^0.1.6",
|
|
94
94
|
"dotenv": "^17.2.1",
|
|
95
95
|
"dotenv-expand": "^12.0.2",
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"publishConfig": {
|
|
134
134
|
"access": "public"
|
|
135
135
|
},
|
|
136
|
-
"releaseSourceCommit": "
|
|
136
|
+
"releaseSourceCommit": "f60870e3a32efb3f3577234b92e5b7de663b12b7",
|
|
137
137
|
"repository": {
|
|
138
138
|
"type": "git",
|
|
139
139
|
"url": "git+https://github.com/onejs/one.git",
|
|
@@ -485,6 +485,30 @@ extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autoli
|
|
|
485
485
|
expect(noPedometerManifest.content).not.toContain('ACTIVITY_RECOGNITION')
|
|
486
486
|
})
|
|
487
487
|
|
|
488
|
+
it('stamps the brightness write-settings permission from native.app', () => {
|
|
489
|
+
const content =
|
|
490
|
+
'<manifest>\n <uses-permission android:name="android.permission.INTERNET" />\n <activity>\n </activity>\n </application>'
|
|
491
|
+
const brightnessManifest = renderPrebuildFile({
|
|
492
|
+
relativePath: 'app/src/main/AndroidManifest.xml',
|
|
493
|
+
content,
|
|
494
|
+
platform: 'android',
|
|
495
|
+
app: { ...app, brightness: true },
|
|
496
|
+
})
|
|
497
|
+
expect(brightnessManifest.content).toContain(
|
|
498
|
+
'<uses-permission android:name="android.permission.WRITE_SETTINGS" />'
|
|
499
|
+
)
|
|
500
|
+
|
|
501
|
+
for (const brightness of [undefined, false]) {
|
|
502
|
+
const unstamped = renderPrebuildFile({
|
|
503
|
+
relativePath: 'app/src/main/AndroidManifest.xml',
|
|
504
|
+
content,
|
|
505
|
+
platform: 'android',
|
|
506
|
+
app: { ...app, brightness },
|
|
507
|
+
})
|
|
508
|
+
expect(unstamped.content).not.toContain('WRITE_SETTINGS')
|
|
509
|
+
}
|
|
510
|
+
})
|
|
511
|
+
|
|
488
512
|
it('stamps marketing and build versions from the manifest', () => {
|
|
489
513
|
const stamped = {
|
|
490
514
|
...app,
|
|
@@ -2181,6 +2181,24 @@ ${schemes.map((scheme) => `\t\t\t\t<string>${scheme}</string>`).join('\n')}
|
|
|
2181
2181
|
`${anchor}\n <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />`
|
|
2182
2182
|
)
|
|
2183
2183
|
}
|
|
2184
|
+
if (
|
|
2185
|
+
platform === 'android' &&
|
|
2186
|
+
relativePath === 'app/src/main/AndroidManifest.xml' &&
|
|
2187
|
+
app.brightness === true
|
|
2188
|
+
) {
|
|
2189
|
+
const anchor = '<uses-permission android:name="android.permission.INTERNET" />'
|
|
2190
|
+
if (!rendered.includes(anchor)) {
|
|
2191
|
+
throw new Error(
|
|
2192
|
+
'[vxrn] cannot stamp the brightness permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml'
|
|
2193
|
+
)
|
|
2194
|
+
}
|
|
2195
|
+
// a special app access grant: the user turns it on in settings, and
|
|
2196
|
+
// Settings.System.canWrite stays false for an app that never declared it.
|
|
2197
|
+
rendered = rendered.replace(
|
|
2198
|
+
anchor,
|
|
2199
|
+
`${anchor}\n <uses-permission android:name="android.permission.WRITE_SETTINGS" />`
|
|
2200
|
+
)
|
|
2201
|
+
}
|
|
2184
2202
|
if (
|
|
2185
2203
|
platform === 'android' &&
|
|
2186
2204
|
relativePath === 'app/src/main/AndroidManifest.xml' &&
|
|
@@ -262,4 +262,62 @@ describe('subpath exports', () => {
|
|
|
262
262
|
expect(scanned('string-exports')).toEqual(['string-exports'])
|
|
263
263
|
expect(scanned('array-exports')).toEqual(['array-exports'])
|
|
264
264
|
})
|
|
265
|
+
|
|
266
|
+
test('never prebundles a subpath that exports a type declaration file', async () => {
|
|
267
|
+
const root = realpathSync(mkdtempSync(join(tmpdir(), 'vxrn-dts-subpath-')))
|
|
268
|
+
writePkg(root, { name: 'fixture', dependencies: { 'expo-like': '1' } })
|
|
269
|
+
writePkg(join(root, 'node_modules', 'react'), { name: 'react', main: './index.js' })
|
|
270
|
+
// expo-modules-core 57 exports './types' as a bare declaration file
|
|
271
|
+
writePkg(join(root, 'node_modules', 'expo-like'), {
|
|
272
|
+
name: 'expo-like',
|
|
273
|
+
main: './index.js',
|
|
274
|
+
exports: {
|
|
275
|
+
'.': './index.js',
|
|
276
|
+
'./types': './types.d.ts',
|
|
277
|
+
'./module-types': './types.d.mts',
|
|
278
|
+
'./commonjs-types': './types.d.cts',
|
|
279
|
+
'./upper-types': './types.D.ts',
|
|
280
|
+
'./server': './server.ts',
|
|
281
|
+
},
|
|
282
|
+
dependencies: { react: '*' },
|
|
283
|
+
})
|
|
284
|
+
|
|
285
|
+
const result = await scanDepsToOptimize(join(root, 'package.json'))
|
|
286
|
+
expect(
|
|
287
|
+
result.prebundleDeps.filter((d) => d === 'expo-like' || d.startsWith('expo-like/'))
|
|
288
|
+
).toEqual(['expo-like', 'expo-like/server'])
|
|
289
|
+
})
|
|
290
|
+
|
|
291
|
+
test('reads an exports object of conditions as the root, not as subpaths', async () => {
|
|
292
|
+
const root = realpathSync(mkdtempSync(join(tmpdir(), 'vxrn-exports-conditions-')))
|
|
293
|
+
writePkg(root, {
|
|
294
|
+
name: 'fixture',
|
|
295
|
+
dependencies: { 'dual-pkg': '1', 'types-default': '1', 'dts-main': '1' },
|
|
296
|
+
})
|
|
297
|
+
writePkg(join(root, 'node_modules', 'react'), { name: 'react', main: './index.js' })
|
|
298
|
+
writePkg(join(root, 'node_modules', 'dual-pkg'), {
|
|
299
|
+
name: 'dual-pkg',
|
|
300
|
+
exports: { types: './index.d.ts', import: './index.js', require: './index.cjs' },
|
|
301
|
+
dependencies: { react: '*' },
|
|
302
|
+
})
|
|
303
|
+
writePkg(join(root, 'node_modules', 'types-default'), {
|
|
304
|
+
name: 'types-default',
|
|
305
|
+
exports: { types: './index.d.ts', default: './index.js' },
|
|
306
|
+
dependencies: { react: '*' },
|
|
307
|
+
})
|
|
308
|
+
// a declaration main must not hide the runtime exports root
|
|
309
|
+
writePkg(join(root, 'node_modules', 'dts-main'), {
|
|
310
|
+
name: 'dts-main',
|
|
311
|
+
main: './index.d.ts',
|
|
312
|
+
exports: { '.': { import: './index.js' } },
|
|
313
|
+
dependencies: { react: '*' },
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
const result = await scanDepsToOptimize(join(root, 'package.json'))
|
|
317
|
+
const scanned = (dep: string) =>
|
|
318
|
+
result.prebundleDeps.filter((d) => d === dep || d.startsWith(`${dep}/`))
|
|
319
|
+
expect(scanned('dual-pkg')).toEqual(['dual-pkg'])
|
|
320
|
+
expect(result.prebundleDeps.filter((d) => d.startsWith('types-default/'))).toEqual([])
|
|
321
|
+
expect(scanned('dts-main')).toEqual(['dts-main'])
|
|
322
|
+
})
|
|
265
323
|
})
|
|
@@ -13,16 +13,18 @@ export type ScanDepsResult = {
|
|
|
13
13
|
|
|
14
14
|
// match vite's default optimizable entry extensions; JSX/TSX source
|
|
15
15
|
// remains in its module graph while we still discover child dependencies.
|
|
16
|
+
// a .d.ts declaration has no runtime module to bundle.
|
|
16
17
|
function isPrebundleableEntry(file: string) {
|
|
17
|
-
return !extname(file) || /\.[cm]?[jt]s$/.test(file)
|
|
18
|
+
return !/\.d\.[cm]?ts$/i.test(file) && (!extname(file) || /\.[cm]?[jt]s$/.test(file))
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
// a string exports field
|
|
21
|
-
// for the root,
|
|
21
|
+
// a string exports field, or an object of conditions (no key starting with
|
|
22
|
+
// '.'), is sugar for { '.': target }; an array holds fallbacks for the root,
|
|
23
|
+
// never subpaths
|
|
22
24
|
function getExportsMap(exports: unknown): Record<string, any> {
|
|
23
25
|
if (typeof exports === 'string') return { '.': exports }
|
|
24
26
|
if (!exports || typeof exports !== 'object' || Array.isArray(exports)) return {}
|
|
25
|
-
return exports
|
|
27
|
+
return Object.keys(exports).some((k) => k.startsWith('.')) ? exports : { '.': exports }
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
function getExportImport(target: any): unknown {
|
|
@@ -315,13 +317,16 @@ export async function scanDepsToOptimize(
|
|
|
315
317
|
}
|
|
316
318
|
})()
|
|
317
319
|
|
|
318
|
-
const mainExport =
|
|
319
|
-
depPkgJson['main']
|
|
320
|
+
const mainExport = [
|
|
321
|
+
depPkgJson['main'],
|
|
322
|
+
depPkgJson['module'],
|
|
323
|
+
getExportImport(depPkgJsonExports['.']),
|
|
324
|
+
].find((entry) => typeof entry === 'string' && entry && isPrebundleableEntry(entry))
|
|
320
325
|
|
|
321
326
|
const exports = [...definedExports, ...specialExports].filter(
|
|
322
327
|
(d) => !EXCLUDE_LIST_SET.has(d)
|
|
323
328
|
)
|
|
324
|
-
if (
|
|
329
|
+
if (mainExport) {
|
|
325
330
|
if (await checkIfExportExists(join(dirname(depPkgJsonPath), mainExport))) {
|
|
326
331
|
exports.unshift(dep)
|
|
327
332
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prebuildWithoutExpo.d.ts","sourceRoot":"","sources":["../../src/exports/prebuildWithoutExpo.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EAEvB,MAAM,+BAA+B,CAAA;AAsEtC,YAAY,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAE3F,eAAO,MAAM,mBAAmB,0BAAoB,CAAA;AAkFpD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6DhE;AA+MD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CA8CrI;AAg8BD,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAyfD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,iBAAiB,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"prebuildWithoutExpo.d.ts","sourceRoot":"","sources":["../../src/exports/prebuildWithoutExpo.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EAEvB,MAAM,+BAA+B,CAAA;AAsEtC,YAAY,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAE3F,eAAO,MAAM,mBAAmB,0BAAoB,CAAA;AAkFpD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6DhE;AA+MD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CA8CrI;AAg8BD,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAyfD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,iBAAiB,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,oBAAoB,CA+7BvB;AAED,eAAO,MAAM,mBAAmB,SACxB,MAAM,YACF,KAAK,GAAG,SAAS,OACtB,iBAAiB,WACd,MAAM,kBAqEf,CAAA;AAgCD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,QA6EvD;AAID,wBAAsB,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,iBAsDzF;AAyFD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,iBAAiB,CAAA;IACtB,SAAS,EAAE,SAAS,yBAAyB,EAAE,CAAA;CAChD,GAAG,IAAI,CA8BP;AAID,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA+BtC;AAKD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;CACtC,GAAG,IAAI,CAaP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanDepsToOptimize.d.ts","sourceRoot":"","sources":["../../src/utils/scanDepsToOptimize.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;
|
|
1
|
+
{"version":3,"file":"scanDepsToOptimize.d.ts","sourceRoot":"","sources":["../../src/utils/scanDepsToOptimize.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;AAsBD,6EAA6E;AAC7E,eAAO,MAAM,YAAY,UAkFxB,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAwB,CAAA;AAErD,eAAO,MAAM,YAAY,UAKxB,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAwB,CAAA;AA8BrD,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,CAAA;IAC1C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACrC,8HAA8H;IAC9H,cAAc,CAAC,EAAE,GAAG,CAAA;CACP,GACd,OAAO,CAAC,cAAc,CAAC,CAuMzB;AA6BD,wBAAsB,kBAAkB,CAAC,GAAG,KAAA,EAAE,SAAS,KAAA,+BAmBtD"}
|