vxrn 2.0.0-beta.65.1 → 2.0.0-beta.82.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/config/getBaseVitePlugins.mjs +5 -1
  2. package/dist/config/getBaseVitePlugins.mjs.map +1 -1
  3. package/dist/config/getBaseVitePlugins.native.js +5 -1
  4. package/dist/config/getBaseVitePlugins.native.js.map +1 -1
  5. package/dist/config/getOptimizeDeps.mjs +1 -0
  6. package/dist/config/getOptimizeDeps.mjs.map +1 -1
  7. package/dist/config/getOptimizeDeps.native.js +1 -0
  8. package/dist/config/getOptimizeDeps.native.js.map +1 -1
  9. package/dist/exports/prebuildWithoutExpo.mjs +102 -2
  10. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  11. package/dist/exports/prebuildWithoutExpo.native.js +182 -10
  12. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  13. package/dist/index.js +4 -0
  14. package/dist/index.mjs +4 -0
  15. package/dist/index.native.js +4 -0
  16. package/dist/utils/nearestPackageJson.mjs +16 -0
  17. package/dist/utils/nearestPackageJson.mjs.map +1 -0
  18. package/dist/utils/nearestPackageJson.native.js +16 -0
  19. package/dist/utils/nearestPackageJson.native.js.map +1 -0
  20. package/dist/utils/swiftPackageId.mjs +14 -0
  21. package/dist/utils/swiftPackageId.mjs.map +1 -0
  22. package/dist/utils/swiftPackageId.native.js +14 -0
  23. package/dist/utils/swiftPackageId.native.js.map +1 -0
  24. package/expo-plugin.cjs +3 -0
  25. package/native-project-patches.cjs +52 -0
  26. package/package.json +11 -11
  27. package/src/config/getBaseVitePlugins.ts +2 -1
  28. package/src/config/getOptimizeDeps.test.ts +7 -0
  29. package/src/config/getOptimizeDeps.ts +15 -0
  30. package/src/exports/expoPlugin.test.mjs +4 -0
  31. package/src/exports/prebuildWithoutExpo.test.ts +65 -4
  32. package/src/exports/prebuildWithoutExpo.ts +127 -2
  33. package/src/index.ts +2 -0
  34. package/src/utils/nearestPackageJson.ts +24 -0
  35. package/src/utils/swiftPackageId.ts +14 -0
  36. package/types/config/getBaseVitePlugins.d.ts.map +1 -1
  37. package/types/config/getOptimizeDeps.d.ts +5 -0
  38. package/types/config/getOptimizeDeps.d.ts.map +1 -1
  39. package/types/exports/prebuildWithoutExpo.d.ts +1 -0
  40. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  41. package/types/index.d.ts +2 -0
  42. package/types/index.d.ts.map +1 -1
  43. package/types/utils/nearestPackageJson.d.ts +2 -0
  44. package/types/utils/nearestPackageJson.d.ts.map +1 -0
  45. package/types/utils/swiftPackageId.d.ts +3 -0
  46. package/types/utils/swiftPackageId.d.ts.map +1 -0
@@ -2,6 +2,7 @@ import { createVXRNCompilerPlugin } from "@vxrn/compiler";
2
2
  import { existsSync } from "node:fs";
3
3
  import { dirname, extname, resolve } from "node:path";
4
4
  import { ssrExtensions, webExtensions } from "../constants.mjs";
5
+ import { nearestPackageJson } from "../utils/nearestPackageJson.mjs";
5
6
 
6
7
  const JS_EXTENSION_RE = /\.[cm]?[jt]sx?$/;
7
8
  const PLATFORM_RESOLVE_SOURCE_RE = /(?:\.[cm]?[jt]sx?|\.server)$/;
@@ -84,7 +85,10 @@ function getBaseVitePlugins() {
84
85
  for (const platformExtension of platformSpecificExtension) {
85
86
  const fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;
86
87
  if (cachedPathExists(fullPath)) {
87
- return { id: fullPath };
88
+ return {
89
+ id: fullPath,
90
+ packageJsonPath: nearestPackageJson(fullPath)
91
+ };
88
92
  }
89
93
  }
90
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getBaseVitePlugins.js","names":[],"sources":["config/getBaseVitePlugins.js"],"sourcesContent":["import { createVXRNCompilerPlugin } from \"@vxrn/compiler\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, extname, resolve } from \"node:path\";\nimport { ssrExtensions, webExtensions } from \"../constants\";\nconst JS_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\nconst PLATFORM_RESOLVE_SOURCE_RE = /(?:\\.[cm]?[jt]sx?|\\.server)$/;\nconst PLATFORM_EXTENSIONS_BY_ENVIRONMENT = {\n client: [\"web\"],\n ssr: [\"server\", \"web\"],\n worker: [\"server\", \"web\"],\n ios: [\"ios\", \"native\"],\n android: [\"android\", \"native\"]\n};\nfunction getBaseVitePlugins() {\n const pathExistsCache = /* @__PURE__ */ new Map();\n let isBuild = false;\n function cachedPathExists(path) {\n if (!isBuild) return existsSync(path);\n const cached = pathExistsCache.get(path);\n if (cached !== void 0) return cached;\n const exists = existsSync(path);\n pathExistsCache.set(path, exists);\n return exists;\n }\n return [\n {\n name: \"platform-specific-resolve\",\n enforce: \"pre\",\n config(_, { command }) {\n isBuild = command === \"build\";\n return {\n resolve: {\n // if this is on it breaks resolveId below\n // optimizeDeps config should apply to packages in monorepo\n // https://vite.dev/config/shared-options#resolve-preservesymlinks\n // preserveSymlinks: true,\n },\n environments: {\n ssr: {\n resolve: {\n extensions: ssrExtensions,\n conditions: [\"vxrn-web\"],\n externalConditions: [\"vxrn-web\"]\n }\n },\n client: {\n resolve: {\n extensions: webExtensions,\n conditions: [\"vxrn-web\"]\n }\n }\n }\n };\n },\n load: {\n filter: { id: /^\\0server-only-stub:/ },\n handler(id) {\n const source = id.slice(\"\\0server-only-stub:\".length);\n return `throw new Error(\"[one] .server file cannot be imported on client: ${source}\")`;\n }\n },\n // vite's resolve.extensions already prefers platform variants for\n // extensionless imports in every environment (webExtensions /\n // ssrExtensions here, getNativeExtensions for ios+android), verified by\n // building with this hook disabled. the only thing left for this hook is\n // an import that already carries an extension, since resolve.extensions\n // only ever appends. so filter to those rust-side, plus bare `.server`\n // which still needs an extension appended to be recognised as a server\n // file. measured on onestack.dev this takes the hook from 25422 calls to\n // 6880.\n resolveId: {\n filter: { id: PLATFORM_RESOLVE_SOURCE_RE },\n async handler(source, importer, options) {\n if (options?.scan) return;\n let resolvedId;\n if (JS_EXTENSION_RE.test(source)) {\n if (source[0] === \"/\") {\n resolvedId = source;\n } else if (source[0] === \".\" && importer) {\n resolvedId = resolve(dirname(importer), source);\n }\n }\n if (!resolvedId) {\n const resolved = await this.resolve(source, importer, options);\n if (!resolved) return resolved;\n resolvedId = resolved.id;\n }\n if (resolvedId.includes(\"node_modules\")) {\n return;\n }\n if (this.environment.name !== \"ssr\" && this.environment.name !== \"worker\" && /\\.server\\.\\w+$/.test(resolvedId)) {\n return { id: `\\0server-only-stub:${source}` };\n }\n if (process.env.VXRN_SKIP_STRICTER_PLATFORM_RESOLVE) {\n return void 0;\n }\n const jsExtension = extname(resolvedId);\n const withoutExt = resolvedId.slice(0, resolvedId.length - jsExtension.length);\n const platformSpecificExtension = PLATFORM_EXTENSIONS_BY_ENVIRONMENT[this.environment.name];\n if (platformSpecificExtension) {\n for (const platformExtension of platformSpecificExtension) {\n const fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;\n if (cachedPathExists(fullPath)) {\n return { id: fullPath };\n }\n }\n }\n }\n },\n // adding or deleting a .web/.native sibling changes what a source\n // resolves to, so drop the exists cache when the watcher sees a change\n watchChange() {\n pathExistsCache.clear();\n }\n },\n // temp fix\n // avoid logging the optimizeDeps we add that aren't in the app:\n // likely we need a whole better solution to optimize deps\n {\n name: `avoid-optimize-logs`,\n configureServer() {\n const ogWarn = console.warn;\n console.warn = (...args) => {\n if (typeof args[0] === \"string\" && args[0].startsWith(`Failed to resolve dependency:`)) {\n return;\n }\n return ogWarn(...args);\n };\n }\n },\n createVXRNCompilerPlugin({})\n ];\n}\nexport {\n getBaseVitePlugins\n};\n//# sourceMappingURL=getBaseVitePlugins.js.map\n"],"mappings":";;;;;;AAIA,MAAM,kBAAkB;AACxB,MAAM,6BAA6B;AACnC,MAAM,qCAAqC;CACzC,QAAQ,CAAC,KAAK;CACd,KAAK,CAAC,UAAU,KAAK;CACrB,QAAQ,CAAC,UAAU,KAAK;CACxB,KAAK,CAAC,OAAO,QAAQ;CACrB,SAAS,CAAC,WAAW,QAAQ;AAC/B;AACA,SAAS,qBAAqB;CAC5B,MAAM,kCAAkC,IAAI,IAAI;CAChD,IAAI,UAAU;CACd,SAAS,iBAAiB,MAAM;EAC9B,IAAI,CAAC,SAAS,OAAO,WAAW,IAAI;EACpC,MAAM,SAAS,gBAAgB,IAAI,IAAI;EACvC,IAAI,WAAW,KAAK,GAAG,OAAO;EAC9B,MAAM,SAAS,WAAW,IAAI;EAC9B,gBAAgB,IAAI,MAAM,MAAM;EAChC,OAAO;CACT;CACA,OAAO;EACL;GACE,MAAM;GACN,SAAS;GACT,OAAO,GAAG,EAAE,WAAW;IACrB,UAAU,YAAY;IACtB,OAAO;KACL,SAAS,CAKT;KACA,cAAc;MACZ,KAAK,EACH,SAAS;OACP,YAAY;OACZ,YAAY,CAAC,UAAU;OACvB,oBAAoB,CAAC,UAAU;MACjC,EACF;MACA,QAAQ,EACN,SAAS;OACP,YAAY;OACZ,YAAY,CAAC,UAAU;MACzB,EACF;KACF;IACF;GACF;GACA,MAAM;IACJ,QAAQ,EAAE,IAAI,uBAAuB;IACrC,QAAQ,IAAI;KACV,MAAM,SAAS,GAAG,MAAM,sBAAsB,MAAM;KACpD,OAAO,qEAAqE,OAAO;IACrF;GACF;GAUA,WAAW;IACT,QAAQ,EAAE,IAAI,2BAA2B;IACzC,MAAM,QAAQ,QAAQ,UAAU,SAAS;KACvC,IAAI,SAAS,MAAM;KACnB,IAAI;KACJ,IAAI,gBAAgB,KAAK,MAAM,GAAG;MAChC,IAAI,OAAO,OAAO,KAAK;OACrB,aAAa;MACf,OAAO,IAAI,OAAO,OAAO,OAAO,UAAU;OACxC,aAAa,QAAQ,QAAQ,QAAQ,GAAG,MAAM;MAChD;KACF;KACA,IAAI,CAAC,YAAY;MACf,MAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ,UAAU,OAAO;MAC7D,IAAI,CAAC,UAAU,OAAO;MACtB,aAAa,SAAS;KACxB;KACA,IAAI,WAAW,SAAS,cAAc,GAAG;MACvC;KACF;KACA,IAAI,KAAK,YAAY,SAAS,SAAS,KAAK,YAAY,SAAS,YAAY,iBAAiB,KAAK,UAAU,GAAG;MAC9G,OAAO,EAAE,IAAI,sBAAsB,SAAS;KAC9C;KACA,IAAI,QAAQ,IAAI,qCAAqC;MACnD,OAAO,KAAK;KACd;KACA,MAAM,cAAc,QAAQ,UAAU;KACtC,MAAM,aAAa,WAAW,MAAM,GAAG,WAAW,SAAS,YAAY,MAAM;KAC7E,MAAM,4BAA4B,mCAAmC,KAAK,YAAY;KACtF,IAAI,2BAA2B;MAC7B,KAAK,MAAM,qBAAqB,2BAA2B;OACzD,MAAM,WAAW,GAAG,WAAW,GAAG,oBAAoB;OACtD,IAAI,iBAAiB,QAAQ,GAAG;QAC9B,OAAO,EAAE,IAAI,SAAS;OACxB;MACF;KACF;IACF;GACF;GAGA,cAAc;IACZ,gBAAgB,MAAM;GACxB;EACF;EAIA;GACE,MAAM;GACN,kBAAkB;IAChB,MAAM,SAAS,QAAQ;IACvB,QAAQ,QAAQ,GAAG,SAAS;KAC1B,IAAI,OAAO,KAAK,OAAO,YAAY,KAAK,EAAE,CAAC,WAAW,+BAA+B,GAAG;MACtF;KACF;KACA,OAAO,OAAO,GAAG,IAAI;IACvB;GACF;EACF;EACA,yBAAyB,CAAC,CAAC;CAC7B;AACF"}
1
+ {"version":3,"file":"getBaseVitePlugins.js","names":[],"sources":["config/getBaseVitePlugins.js"],"sourcesContent":["import { createVXRNCompilerPlugin } from \"@vxrn/compiler\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, extname, resolve } from \"node:path\";\nimport { ssrExtensions, webExtensions } from \"../constants\";\nimport { nearestPackageJson } from \"../utils/nearestPackageJson\";\nconst JS_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\nconst PLATFORM_RESOLVE_SOURCE_RE = /(?:\\.[cm]?[jt]sx?|\\.server)$/;\nconst PLATFORM_EXTENSIONS_BY_ENVIRONMENT = {\n client: [\"web\"],\n ssr: [\"server\", \"web\"],\n worker: [\"server\", \"web\"],\n ios: [\"ios\", \"native\"],\n android: [\"android\", \"native\"]\n};\nfunction getBaseVitePlugins() {\n const pathExistsCache = /* @__PURE__ */ new Map();\n let isBuild = false;\n function cachedPathExists(path) {\n if (!isBuild) return existsSync(path);\n const cached = pathExistsCache.get(path);\n if (cached !== void 0) return cached;\n const exists = existsSync(path);\n pathExistsCache.set(path, exists);\n return exists;\n }\n return [\n {\n name: \"platform-specific-resolve\",\n enforce: \"pre\",\n config(_, { command }) {\n isBuild = command === \"build\";\n return {\n resolve: {\n // if this is on it breaks resolveId below\n // optimizeDeps config should apply to packages in monorepo\n // https://vite.dev/config/shared-options#resolve-preservesymlinks\n // preserveSymlinks: true,\n },\n environments: {\n ssr: {\n resolve: {\n extensions: ssrExtensions,\n conditions: [\"vxrn-web\"],\n externalConditions: [\"vxrn-web\"]\n }\n },\n client: {\n resolve: {\n extensions: webExtensions,\n conditions: [\"vxrn-web\"]\n }\n }\n }\n };\n },\n load: {\n filter: { id: /^\\0server-only-stub:/ },\n handler(id) {\n const source = id.slice(\"\\0server-only-stub:\".length);\n return `throw new Error(\"[one] .server file cannot be imported on client: ${source}\")`;\n }\n },\n // vite's resolve.extensions already prefers platform variants for\n // extensionless imports in every environment (webExtensions /\n // ssrExtensions here, getNativeExtensions for ios+android), verified by\n // building with this hook disabled. the only thing left for this hook is\n // an import that already carries an extension, since resolve.extensions\n // only ever appends. so filter to those rust-side, plus bare `.server`\n // which still needs an extension appended to be recognised as a server\n // file. measured on onestack.dev this takes the hook from 25422 calls to\n // 6880.\n resolveId: {\n filter: { id: PLATFORM_RESOLVE_SOURCE_RE },\n async handler(source, importer, options) {\n if (options?.scan) return;\n let resolvedId;\n if (JS_EXTENSION_RE.test(source)) {\n if (source[0] === \"/\") {\n resolvedId = source;\n } else if (source[0] === \".\" && importer) {\n resolvedId = resolve(dirname(importer), source);\n }\n }\n if (!resolvedId) {\n const resolved = await this.resolve(source, importer, options);\n if (!resolved) return resolved;\n resolvedId = resolved.id;\n }\n if (resolvedId.includes(\"node_modules\")) {\n return;\n }\n if (this.environment.name !== \"ssr\" && this.environment.name !== \"worker\" && /\\.server\\.\\w+$/.test(resolvedId)) {\n return { id: `\\0server-only-stub:${source}` };\n }\n if (process.env.VXRN_SKIP_STRICTER_PLATFORM_RESOLVE) {\n return void 0;\n }\n const jsExtension = extname(resolvedId);\n const withoutExt = resolvedId.slice(0, resolvedId.length - jsExtension.length);\n const platformSpecificExtension = PLATFORM_EXTENSIONS_BY_ENVIRONMENT[this.environment.name];\n if (platformSpecificExtension) {\n for (const platformExtension of platformSpecificExtension) {\n const fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;\n if (cachedPathExists(fullPath)) {\n return { id: fullPath, packageJsonPath: nearestPackageJson(fullPath) };\n }\n }\n }\n }\n },\n // adding or deleting a .web/.native sibling changes what a source\n // resolves to, so drop the exists cache when the watcher sees a change\n watchChange() {\n pathExistsCache.clear();\n }\n },\n // temp fix\n // avoid logging the optimizeDeps we add that aren't in the app:\n // likely we need a whole better solution to optimize deps\n {\n name: `avoid-optimize-logs`,\n configureServer() {\n const ogWarn = console.warn;\n console.warn = (...args) => {\n if (typeof args[0] === \"string\" && args[0].startsWith(`Failed to resolve dependency:`)) {\n return;\n }\n return ogWarn(...args);\n };\n }\n },\n createVXRNCompilerPlugin({})\n ];\n}\nexport {\n getBaseVitePlugins\n};\n//# sourceMappingURL=getBaseVitePlugins.js.map\n"],"mappings":";;;;;;;AAKA,MAAM,kBAAkB;AACxB,MAAM,6BAA6B;AACnC,MAAM,qCAAqC;CACzC,QAAQ,CAAC,KAAK;CACd,KAAK,CAAC,UAAU,KAAK;CACrB,QAAQ,CAAC,UAAU,KAAK;CACxB,KAAK,CAAC,OAAO,QAAQ;CACrB,SAAS,CAAC,WAAW,QAAQ;AAC/B;AACA,SAAS,qBAAqB;CAC5B,MAAM,kCAAkC,IAAI,IAAI;CAChD,IAAI,UAAU;CACd,SAAS,iBAAiB,MAAM;EAC9B,IAAI,CAAC,SAAS,OAAO,WAAW,IAAI;EACpC,MAAM,SAAS,gBAAgB,IAAI,IAAI;EACvC,IAAI,WAAW,KAAK,GAAG,OAAO;EAC9B,MAAM,SAAS,WAAW,IAAI;EAC9B,gBAAgB,IAAI,MAAM,MAAM;EAChC,OAAO;CACT;CACA,OAAO;EACL;GACE,MAAM;GACN,SAAS;GACT,OAAO,GAAG,EAAE,WAAW;IACrB,UAAU,YAAY;IACtB,OAAO;KACL,SAAS,CAKT;KACA,cAAc;MACZ,KAAK,EACH,SAAS;OACP,YAAY;OACZ,YAAY,CAAC,UAAU;OACvB,oBAAoB,CAAC,UAAU;MACjC,EACF;MACA,QAAQ,EACN,SAAS;OACP,YAAY;OACZ,YAAY,CAAC,UAAU;MACzB,EACF;KACF;IACF;GACF;GACA,MAAM;IACJ,QAAQ,EAAE,IAAI,uBAAuB;IACrC,QAAQ,IAAI;KACV,MAAM,SAAS,GAAG,MAAM,sBAAsB,MAAM;KACpD,OAAO,qEAAqE,OAAO;IACrF;GACF;GAUA,WAAW;IACT,QAAQ,EAAE,IAAI,2BAA2B;IACzC,MAAM,QAAQ,QAAQ,UAAU,SAAS;KACvC,IAAI,SAAS,MAAM;KACnB,IAAI;KACJ,IAAI,gBAAgB,KAAK,MAAM,GAAG;MAChC,IAAI,OAAO,OAAO,KAAK;OACrB,aAAa;MACf,OAAO,IAAI,OAAO,OAAO,OAAO,UAAU;OACxC,aAAa,QAAQ,QAAQ,QAAQ,GAAG,MAAM;MAChD;KACF;KACA,IAAI,CAAC,YAAY;MACf,MAAM,WAAW,MAAM,KAAK,QAAQ,QAAQ,UAAU,OAAO;MAC7D,IAAI,CAAC,UAAU,OAAO;MACtB,aAAa,SAAS;KACxB;KACA,IAAI,WAAW,SAAS,cAAc,GAAG;MACvC;KACF;KACA,IAAI,KAAK,YAAY,SAAS,SAAS,KAAK,YAAY,SAAS,YAAY,iBAAiB,KAAK,UAAU,GAAG;MAC9G,OAAO,EAAE,IAAI,sBAAsB,SAAS;KAC9C;KACA,IAAI,QAAQ,IAAI,qCAAqC;MACnD,OAAO,KAAK;KACd;KACA,MAAM,cAAc,QAAQ,UAAU;KACtC,MAAM,aAAa,WAAW,MAAM,GAAG,WAAW,SAAS,YAAY,MAAM;KAC7E,MAAM,4BAA4B,mCAAmC,KAAK,YAAY;KACtF,IAAI,2BAA2B;MAC7B,KAAK,MAAM,qBAAqB,2BAA2B;OACzD,MAAM,WAAW,GAAG,WAAW,GAAG,oBAAoB;OACtD,IAAI,iBAAiB,QAAQ,GAAG;QAC9B,OAAO;SAAE,IAAI;SAAU,iBAAiB,mBAAmB,QAAQ;QAAE;OACvE;MACF;KACF;IACF;GACF;GAGA,cAAc;IACZ,gBAAgB,MAAM;GACxB;EACF;EAIA;GACE,MAAM;GACN,kBAAkB;IAChB,MAAM,SAAS,QAAQ;IACvB,QAAQ,QAAQ,GAAG,SAAS;KAC1B,IAAI,OAAO,KAAK,OAAO,YAAY,KAAK,EAAE,CAAC,WAAW,+BAA+B,GAAG;MACtF;KACF;KACA,OAAO,OAAO,GAAG,IAAI;IACvB;GACF;EACF;EACA,yBAAyB,CAAC,CAAC;CAC7B;AACF"}
@@ -2,6 +2,7 @@ import { createVXRNCompilerPlugin } from "@vxrn/compiler";
2
2
  import { existsSync } from "fs";
3
3
  import { dirname, extname, resolve } from "path";
4
4
  import { ssrExtensions, webExtensions } from "../constants.native.js";
5
+ import { nearestPackageJson } from "../utils/nearestPackageJson.native.js";
5
6
 
6
7
  var JS_EXTENSION_RE = /\.[cm]?[jt]sx?$/;
7
8
  var PLATFORM_RESOLVE_SOURCE_RE = /(?:\.[cm]?[jt]sx?|\.server)$/;
@@ -88,7 +89,10 @@ function getBaseVitePlugins() {
88
89
  var platformExtension = _step.value;
89
90
  var fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;
90
91
  if (cachedPathExists(fullPath)) {
91
- return { id: fullPath };
92
+ return {
93
+ id: fullPath,
94
+ packageJsonPath: nearestPackageJson(fullPath)
95
+ };
92
96
  }
93
97
  }
94
98
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"getBaseVitePlugins.native.js","names":[],"sources":["config/getBaseVitePlugins.native.js"],"sourcesContent":["import { createVXRNCompilerPlugin } from \"@vxrn/compiler\";\nimport { existsSync } from \"fs\";\nimport { dirname, extname, resolve } from \"path\";\nimport { ssrExtensions, webExtensions } from \"../constants\";\nvar JS_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\nvar PLATFORM_RESOLVE_SOURCE_RE = /(?:\\.[cm]?[jt]sx?|\\.server)$/;\nvar PLATFORM_EXTENSIONS_BY_ENVIRONMENT = {\n client: [\n \"web\"\n ],\n ssr: [\n \"server\",\n \"web\"\n ],\n worker: [\n \"server\",\n \"web\"\n ],\n ios: [\n \"ios\",\n \"native\"\n ],\n android: [\n \"android\",\n \"native\"\n ]\n};\nfunction getBaseVitePlugins() {\n var pathExistsCache = /* @__PURE__ */ new Map();\n var isBuild = false;\n function cachedPathExists(path) {\n if (!isBuild) return existsSync(path);\n var cached = pathExistsCache.get(path);\n if (cached !== void 0) return cached;\n var exists = existsSync(path);\n pathExistsCache.set(path, exists);\n return exists;\n }\n return [\n {\n name: \"platform-specific-resolve\",\n enforce: \"pre\",\n config(_, param) {\n var { command } = param;\n isBuild = command === \"build\";\n return {\n resolve: {},\n // if this is on it breaks resolveId below\n // optimizeDeps config should apply to packages in monorepo\n // https://vite.dev/config/shared-options#resolve-preservesymlinks\n // preserveSymlinks: true,\n environments: {\n ssr: {\n resolve: {\n extensions: ssrExtensions,\n conditions: [\n \"vxrn-web\"\n ],\n externalConditions: [\n \"vxrn-web\"\n ]\n }\n },\n client: {\n resolve: {\n extensions: webExtensions,\n conditions: [\n \"vxrn-web\"\n ]\n }\n }\n }\n };\n },\n load: {\n filter: {\n id: /^\\0server-only-stub:/\n },\n handler(id) {\n var source = id.slice(\"\\0server-only-stub:\".length);\n return `throw new Error(\"[one] .server file cannot be imported on client: ${source}\")`;\n }\n },\n // vite's resolve.extensions already prefers platform variants for\n // extensionless imports in every environment (webExtensions /\n // ssrExtensions here, getNativeExtensions for ios+android), verified by\n // building with this hook disabled. the only thing left for this hook is\n // an import that already carries an extension, since resolve.extensions\n // only ever appends. so filter to those rust-side, plus bare `.server`\n // which still needs an extension appended to be recognised as a server\n // file. measured on onestack.dev this takes the hook from 25422 calls to\n // 6880.\n resolveId: {\n filter: {\n id: PLATFORM_RESOLVE_SOURCE_RE\n },\n async handler(source, importer, options) {\n if (options === null || options === void 0 ? void 0 : options.scan) return;\n var resolvedId;\n if (JS_EXTENSION_RE.test(source)) {\n if (source[0] === \"/\") {\n resolvedId = source;\n } else if (source[0] === \".\" && importer) {\n resolvedId = resolve(dirname(importer), source);\n }\n }\n if (!resolvedId) {\n var resolved = await this.resolve(source, importer, options);\n if (!resolved) return resolved;\n resolvedId = resolved.id;\n }\n if (resolvedId.includes(\"node_modules\")) {\n return;\n }\n if (this.environment.name !== \"ssr\" && this.environment.name !== \"worker\" && /\\.server\\.\\w+$/.test(resolvedId)) {\n return {\n id: `\\0server-only-stub:${source}`\n };\n }\n if (process.env.VXRN_SKIP_STRICTER_PLATFORM_RESOLVE) {\n return void 0;\n }\n var jsExtension = extname(resolvedId);\n var withoutExt = resolvedId.slice(0, resolvedId.length - jsExtension.length);\n var platformSpecificExtension = PLATFORM_EXTENSIONS_BY_ENVIRONMENT[this.environment.name];\n if (platformSpecificExtension) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = platformSpecificExtension[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var platformExtension = _step.value;\n var fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;\n if (cachedPathExists(fullPath)) {\n return {\n id: fullPath\n };\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 }\n }\n },\n // adding or deleting a .web/.native sibling changes what a source\n // resolves to, so drop the exists cache when the watcher sees a change\n watchChange() {\n pathExistsCache.clear();\n }\n },\n // temp fix\n // avoid logging the optimizeDeps we add that aren't in the app:\n // likely we need a whole better solution to optimize deps\n {\n name: `avoid-optimize-logs`,\n configureServer() {\n var ogWarn = console.warn;\n console.warn = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === \"string\" && args[0].startsWith(`Failed to resolve dependency:`)) {\n return;\n }\n return ogWarn(...args);\n };\n }\n },\n createVXRNCompilerPlugin({})\n ];\n}\nexport {\n getBaseVitePlugins\n};\n//# sourceMappingURL=getBaseVitePlugins.js.map\n"],"mappings":";;;;;;AAIA,IAAI,kBAAkB;AACtB,IAAI,6BAA6B;AACjC,IAAI,qCAAqC;CACvC,QAAQ,CACN,KACF;CACA,KAAK,CACH,UACA,KACF;CACA,QAAQ,CACN,UACA,KACF;CACA,KAAK,CACH,OACA,QACF;CACA,SAAS,CACP,WACA,QACF;AACF;AACA,SAAS,qBAAqB;CAC5B,IAAI,kCAAkC,IAAI,IAAI;CAC9C,IAAI,UAAU;CACd,SAAS,iBAAiB,MAAM;EAC9B,IAAI,CAAC,SAAS,OAAO,WAAW,IAAI;EACpC,IAAI,SAAS,gBAAgB,IAAI,IAAI;EACrC,IAAI,WAAW,KAAK,GAAG,OAAO;EAC9B,IAAI,SAAS,WAAW,IAAI;EAC5B,gBAAgB,IAAI,MAAM,MAAM;EAChC,OAAO;CACT;CACA,OAAO;EACL;GACE,MAAM;GACN,SAAS;GACT,OAAO,GAAG,OAAO;IACf,IAAI,EAAE,YAAY;IAClB,UAAU,YAAY;IACtB,OAAO;KACL,SAAS,CAAC;KAKV,cAAc;MACZ,KAAK,EACH,SAAS;OACP,YAAY;OACZ,YAAY,CACV,UACF;OACA,oBAAoB,CAClB,UACF;MACF,EACF;MACA,QAAQ,EACN,SAAS;OACP,YAAY;OACZ,YAAY,CACV,UACF;MACF,EACF;KACF;IACF;GACF;GACA,MAAM;IACJ,QAAQ,EACN,IAAI,uBACN;IACA,QAAQ,IAAI;KACV,IAAI,SAAS,GAAG,MAAM,sBAAsB,MAAM;KAClD,OAAO,qEAAqE,OAAO;IACrF;GACF;GAUA,WAAW;IACT,QAAQ,EACN,IAAI,2BACN;IACA,MAAM,QAAQ,QAAQ,UAAU,SAAS;KACvC,IAAI,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,MAAM;KACpE,IAAI;KACJ,IAAI,gBAAgB,KAAK,MAAM,GAAG;MAChC,IAAI,OAAO,OAAO,KAAK;OACrB,aAAa;MACf,OAAO,IAAI,OAAO,OAAO,OAAO,UAAU;OACxC,aAAa,QAAQ,QAAQ,QAAQ,GAAG,MAAM;MAChD;KACF;KACA,IAAI,CAAC,YAAY;MACf,IAAI,WAAW,MAAM,KAAK,QAAQ,QAAQ,UAAU,OAAO;MAC3D,IAAI,CAAC,UAAU,OAAO;MACtB,aAAa,SAAS;KACxB;KACA,IAAI,WAAW,SAAS,cAAc,GAAG;MACvC;KACF;KACA,IAAI,KAAK,YAAY,SAAS,SAAS,KAAK,YAAY,SAAS,YAAY,iBAAiB,KAAK,UAAU,GAAG;MAC9G,OAAO,EACL,IAAI,sBAAsB,SAC5B;KACF;KACA,IAAI,QAAQ,IAAI,qCAAqC;MACnD,OAAO,KAAK;KACd;KACA,IAAI,cAAc,QAAQ,UAAU;KACpC,IAAI,aAAa,WAAW,MAAM,GAAG,WAAW,SAAS,YAAY,MAAM;KAC3E,IAAI,4BAA4B,mCAAmC,KAAK,YAAY;KACpF,IAAI,2BAA2B;MAC7B,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;MACvF,IAAI;OACF,KAAK,IAAI,YAAY,0BAA0B,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;QAC1K,IAAI,oBAAoB,MAAM;QAC9B,IAAI,WAAW,GAAG,WAAW,GAAG,oBAAoB;QACpD,IAAI,iBAAiB,QAAQ,GAAG;SAC9B,OAAO,EACL,IAAI,SACN;QACF;OACF;MACF,SAAS,KAAK;OACZ,oBAAoB;OACpB,iBAAiB;MACnB,UAAU;OACR,IAAI;QACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;SAC1D,UAAU,OAAO;QACnB;OACF,UAAU;QACR,IAAI,mBAAmB;SACrB,MAAM;QACR;OACF;MACF;KACF;IACF;GACF;GAGA,cAAc;IACZ,gBAAgB,MAAM;GACxB;EACF;EAIA;GACE,MAAM;GACN,kBAAkB;IAChB,IAAI,SAAS,QAAQ;IACrB,QAAQ,OAAO,WAAW;KACxB,KAAK,IAAI,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;MACvF,KAAK,QAAQ,UAAU;KACzB;KACA,IAAI,OAAO,KAAK,OAAO,YAAY,KAAK,EAAE,CAAC,WAAW,+BAA+B,GAAG;MACtF;KACF;KACA,OAAO,OAAO,GAAG,IAAI;IACvB;GACF;EACF;EACA,yBAAyB,CAAC,CAAC;CAC7B;AACF"}
1
+ {"version":3,"file":"getBaseVitePlugins.native.js","names":[],"sources":["config/getBaseVitePlugins.native.js"],"sourcesContent":["import { createVXRNCompilerPlugin } from \"@vxrn/compiler\";\nimport { existsSync } from \"fs\";\nimport { dirname, extname, resolve } from \"path\";\nimport { ssrExtensions, webExtensions } from \"../constants\";\nimport { nearestPackageJson } from \"../utils/nearestPackageJson\";\nvar JS_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\nvar PLATFORM_RESOLVE_SOURCE_RE = /(?:\\.[cm]?[jt]sx?|\\.server)$/;\nvar PLATFORM_EXTENSIONS_BY_ENVIRONMENT = {\n client: [\n \"web\"\n ],\n ssr: [\n \"server\",\n \"web\"\n ],\n worker: [\n \"server\",\n \"web\"\n ],\n ios: [\n \"ios\",\n \"native\"\n ],\n android: [\n \"android\",\n \"native\"\n ]\n};\nfunction getBaseVitePlugins() {\n var pathExistsCache = /* @__PURE__ */ new Map();\n var isBuild = false;\n function cachedPathExists(path) {\n if (!isBuild) return existsSync(path);\n var cached = pathExistsCache.get(path);\n if (cached !== void 0) return cached;\n var exists = existsSync(path);\n pathExistsCache.set(path, exists);\n return exists;\n }\n return [\n {\n name: \"platform-specific-resolve\",\n enforce: \"pre\",\n config(_, param) {\n var { command } = param;\n isBuild = command === \"build\";\n return {\n resolve: {},\n // if this is on it breaks resolveId below\n // optimizeDeps config should apply to packages in monorepo\n // https://vite.dev/config/shared-options#resolve-preservesymlinks\n // preserveSymlinks: true,\n environments: {\n ssr: {\n resolve: {\n extensions: ssrExtensions,\n conditions: [\n \"vxrn-web\"\n ],\n externalConditions: [\n \"vxrn-web\"\n ]\n }\n },\n client: {\n resolve: {\n extensions: webExtensions,\n conditions: [\n \"vxrn-web\"\n ]\n }\n }\n }\n };\n },\n load: {\n filter: {\n id: /^\\0server-only-stub:/\n },\n handler(id) {\n var source = id.slice(\"\\0server-only-stub:\".length);\n return `throw new Error(\"[one] .server file cannot be imported on client: ${source}\")`;\n }\n },\n // vite's resolve.extensions already prefers platform variants for\n // extensionless imports in every environment (webExtensions /\n // ssrExtensions here, getNativeExtensions for ios+android), verified by\n // building with this hook disabled. the only thing left for this hook is\n // an import that already carries an extension, since resolve.extensions\n // only ever appends. so filter to those rust-side, plus bare `.server`\n // which still needs an extension appended to be recognised as a server\n // file. measured on onestack.dev this takes the hook from 25422 calls to\n // 6880.\n resolveId: {\n filter: {\n id: PLATFORM_RESOLVE_SOURCE_RE\n },\n async handler(source, importer, options) {\n if (options === null || options === void 0 ? void 0 : options.scan) return;\n var resolvedId;\n if (JS_EXTENSION_RE.test(source)) {\n if (source[0] === \"/\") {\n resolvedId = source;\n } else if (source[0] === \".\" && importer) {\n resolvedId = resolve(dirname(importer), source);\n }\n }\n if (!resolvedId) {\n var resolved = await this.resolve(source, importer, options);\n if (!resolved) return resolved;\n resolvedId = resolved.id;\n }\n if (resolvedId.includes(\"node_modules\")) {\n return;\n }\n if (this.environment.name !== \"ssr\" && this.environment.name !== \"worker\" && /\\.server\\.\\w+$/.test(resolvedId)) {\n return {\n id: `\\0server-only-stub:${source}`\n };\n }\n if (process.env.VXRN_SKIP_STRICTER_PLATFORM_RESOLVE) {\n return void 0;\n }\n var jsExtension = extname(resolvedId);\n var withoutExt = resolvedId.slice(0, resolvedId.length - jsExtension.length);\n var platformSpecificExtension = PLATFORM_EXTENSIONS_BY_ENVIRONMENT[this.environment.name];\n if (platformSpecificExtension) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = platformSpecificExtension[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var platformExtension = _step.value;\n var fullPath = `${withoutExt}.${platformExtension}${jsExtension}`;\n if (cachedPathExists(fullPath)) {\n return {\n id: fullPath,\n packageJsonPath: nearestPackageJson(fullPath)\n };\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 }\n }\n },\n // adding or deleting a .web/.native sibling changes what a source\n // resolves to, so drop the exists cache when the watcher sees a change\n watchChange() {\n pathExistsCache.clear();\n }\n },\n // temp fix\n // avoid logging the optimizeDeps we add that aren't in the app:\n // likely we need a whole better solution to optimize deps\n {\n name: `avoid-optimize-logs`,\n configureServer() {\n var ogWarn = console.warn;\n console.warn = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === \"string\" && args[0].startsWith(`Failed to resolve dependency:`)) {\n return;\n }\n return ogWarn(...args);\n };\n }\n },\n createVXRNCompilerPlugin({})\n ];\n}\nexport {\n getBaseVitePlugins\n};\n//# sourceMappingURL=getBaseVitePlugins.js.map\n"],"mappings":"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"}
@@ -120,6 +120,7 @@ function getOptimizeDeps(mode) {
120
120
  holdUntilCrawlEnd: false,
121
121
  rolldownOptions: {
122
122
  resolve: { extensions: webExtensions },
123
+ transform: { define: { "process.env.EXPO_OS": "\"web\"" } },
123
124
  moduleTypes: {
124
125
  ".js": "jsx",
125
126
  ".ts": "ts",
@@ -1 +1 @@
1
- {"version":3,"file":"getOptimizeDeps.js","names":[],"sources":["config/getOptimizeDeps.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n const needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/safe-area\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n const depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: { \".js\": \"jsx\", \".ts\": \"ts\", \".tsx\": \"tsx\" },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,MAAM,eAAe;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM,iBAAiB;EACrB,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAMA,aAAa;KAAE,OAAO;KAAO,OAAO;KAAM,QAAQ;IAAM;IAKxD,oBAAoB;GACtB;EACF;CACF;AACF"}
1
+ {"version":3,"file":"getOptimizeDeps.js","names":[],"sources":["config/getOptimizeDeps.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n const needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/safe-area\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n const depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: { \".js\": \"jsx\", \".ts\": \"ts\", \".tsx\": \"tsx\" },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,MAAM,eAAe;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM,iBAAiB;EACrB,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAWA,WAAW,EACT,QAAQ,EACN,uBAAuB,UACzB,EACF;IAMA,aAAa;KAAE,OAAO;KAAO,OAAO;KAAM,QAAQ;IAAM;IAKxD,oBAAoB;GACtB;EACF;CACF;AACF"}
@@ -120,6 +120,7 @@ function getOptimizeDeps(mode) {
120
120
  holdUntilCrawlEnd: false,
121
121
  rolldownOptions: {
122
122
  resolve: { extensions: webExtensions },
123
+ transform: { define: { "process.env.EXPO_OS": "\"web\"" } },
123
124
  moduleTypes: {
124
125
  ".js": "jsx",
125
126
  ".ts": "ts",
@@ -1 +1 @@
1
- {"version":3,"file":"getOptimizeDeps.native.js","names":[],"sources":["config/getOptimizeDeps.native.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n var needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/safe-area\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n var depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: {\n \".js\": \"jsx\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\"\n },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,IAAI,eAAe;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,iBAAiB;EACnB,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAMA,aAAa;KACX,OAAO;KACP,OAAO;KACP,QAAQ;IACV;IAKA,oBAAoB;GACtB;EACF;CACF;AACF"}
1
+ {"version":3,"file":"getOptimizeDeps.native.js","names":[],"sources":["config/getOptimizeDeps.native.js"],"sourcesContent":["import { webExtensions } from \"../constants\";\nfunction getOptimizeDeps(mode) {\n var needsInterop = [\n \"nativewind\",\n \"react-native-css-interop/jsx-runtime\",\n \"react-native-css-interop/jsx-dev-runtime\",\n \"react-native-css-interop\",\n \"secure-json-parse\",\n \"@react-native/normalize-colors\",\n \"@vxrn/safe-area\",\n \"@vxrn/vendor/react-19-prod\",\n \"@vxrn/vendor/react-19\",\n \"@vxrn/vendor/react-19-compiler-runtime\",\n \"@vxrn/vendor/react-dom-19\",\n \"@vxrn/vendor/react-dom-client-19\",\n \"@vxrn/vendor/react-dom-server.browser-19\",\n \"@vxrn/vendor/react-jsx-19\",\n \"@vxrn/vendor/react-jsx-dev-19\",\n \"react\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n \"react/compiler-runtime\",\n \"react-dom\",\n \"react-dom/server\",\n \"react-dom/client\",\n \"react-native-web-internals\",\n \"@react-native-masked-view/masked-view\",\n \"url-parse\",\n \"query-string\",\n \"escape-string-regexp\",\n \"use-latest-callback\",\n \"react-is\",\n \"fast-deep-equal\",\n \"@supabase/auth-helpers-react\",\n \"@supabase/postgres-js\",\n \"core-js\",\n \"parse-numeric-range\",\n \"use-sync-external-store\",\n \"use-sync-external-store/shim\",\n \"inline-style-prefixer\",\n \"@docsearch/react\",\n \"@algolia/autocomplete-core\",\n \"@algolia/autocomplete-plugin-algolia-insights\",\n \"@algolia/autocomplete-shared\",\n \"moti\"\n ];\n var depsToOptimize = [\n ...needsInterop,\n \"fast-xml-parser\",\n \"set-cookie-parser\",\n \"ipaddr.js\",\n \"cross-fetch\",\n \"pg\",\n \"react-native-svg\",\n \"react-native-screens\",\n \"ws\",\n \"lodash\",\n // added these when using a worker env\n \"reading-time\",\n \"mdx-bundler/client\",\n \"gray-matter\",\n \"glob\",\n \"memoize-one\",\n \"css-in-js-utils\",\n \"hyphenate-style-name\",\n \"use-sync-external-store\",\n \"react-native-reanimated\",\n // uses .web.js extensions\n \"@react-navigation/core\",\n \"@react-navigation/native\",\n \"@react-navigation/elements\",\n \"@react-navigation/bottom-tabs\",\n \"@react-navigation/native-stack\",\n \"one\",\n \"styleq\",\n \"fbjs\",\n \"@vxrn/universal-color-scheme\",\n \"@vxrn/color-scheme\",\n \"requires-port\",\n \"querystringify\",\n \"compare-versions\",\n \"strict-uri-encode\",\n \"decode-uri-component\",\n \"split-on-first\",\n \"filter-obj\",\n \"scheduler\",\n \"warn-once\",\n \"@radix-ui/react-compose-refs\",\n \"@radix-ui/react-slot\",\n \"nanoid\",\n \"swr\",\n \"swr/mutation\",\n \"one\",\n \"one/zero\",\n \"refractor/lang/tsx\",\n \"invariant\",\n \"tamagui/linear-gradient\",\n \"@react-native/normalize-color\",\n \"react-native\",\n \"@floating-ui/react\",\n \"@floating-ui/react-dom\",\n \"tamagui\",\n \"reforest\"\n ];\n if (mode === \"build\") {\n depsToOptimize.push(\"@babel/runtime\");\n }\n return {\n needsInterop,\n depsToOptimize,\n optimizeDeps: {\n include: depsToOptimize,\n exclude: [\n \"util\",\n \"@swc/wasm\",\n \"@swc/core-darwin-arm64\",\n \"moti/author\",\n \"@hot-updater/cli-tools\"\n ],\n needsInterop,\n // Enable lazy optimization - don't wait for all deps before starting server\n // This allows browser to process requests in parallel for faster initial load\n holdUntilCrawlEnd: false,\n rolldownOptions: {\n resolve: {\n extensions: webExtensions\n },\n // expo reads its platform from this constant, which babel-preset-expo\n // inlines during transform. a pre-bundled dep never goes through babel,\n // so the constant has to be defined here or it reads as undefined and\n // every expo module in a client chunk takes its native branch. expo's\n // dev HMR client is the one that bites: setupHMR calls\n // HMRClient.setup({ isEnabled: true }), the web form, and the native\n // branch asserts a string platform, so the whole client fails to\n // initialize and every route renders blank. rolldown takes define under\n // `transform`, and vite's dep optimizer merges that one key into its own\n // define; a top-level `define` is typed `never` and is rejected outright.\n transform: {\n define: {\n \"process.env.EXPO_OS\": '\"web\"'\n }\n },\n // some packages ship JSX in .js files (e.g., react-native-css-interop/dist/doctor.js).\n // .ts/.tsx must be declared too. when es-module-lexer can't read a dep entry,\n // vite's extractExportsData retries it as `moduleTypes[extname] || 'jsx'`, and\n // lexer always fails on TS syntax, so an undeclared .ts entry gets re-parsed as\n // JSX and dies on the first inline type specifier (`import { type Foo }`).\n moduleTypes: {\n \".js\": \"jsx\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\"\n },\n // react-native packages import native-only exports (TurboModuleRegistry etc.)\n // from react-native, which is aliased to react-native-web on web. react-native-web\n // doesn't export these, so rolldown would error. shimMissingExports creates\n // undefined shims instead, matching esbuild's lenient behavior.\n shimMissingExports: true\n }\n }\n };\n}\nexport {\n getOptimizeDeps\n};\n//# sourceMappingURL=getOptimizeDeps.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,MAAM;CAC7B,IAAI,eAAe;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,iBAAiB;EACnB,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,SAAS,SAAS;EACpB,eAAe,KAAK,gBAAgB;CACtC;CACA,OAAO;EACL;EACA;EACA,cAAc;GACZ,SAAS;GACT,SAAS;IACP;IACA;IACA;IACA;IACA;GACF;GACA;GAGA,mBAAmB;GACnB,iBAAiB;IACf,SAAS,EACP,YAAY,cACd;IAWA,WAAW,EACT,QAAQ,EACN,uBAAuB,UACzB,EACF;IAMA,aAAa;KACX,OAAO;KACP,OAAO;KACP,QAAQ;IACV;IAKA,oBAAoB;GACtB;EACF;CACF;AACF"}
@@ -5,6 +5,7 @@ import { pathToFileURL } from "node:url";
5
5
  import { validateNativeApp } from "@vxrn/utils/nativeAppManifest";
6
6
  import FSExtra from "fs-extra";
7
7
  import sharp from "sharp";
8
+ import { swiftPackageId } from "../utils/swiftPackageId.mjs";
8
9
 
9
10
  const nativeProjectPatches = module.createRequire(import.meta.url)("../../native-project-patches.cjs");
10
11
  const validatePrebuildApp = validateNativeApp;
@@ -382,7 +383,7 @@ async function generateSplashScreen(args) {
382
383
  `);
383
384
  }
384
385
  function renderPrebuildFile(args) {
385
- const { relativePath, content, platform, app } = args;
386
+ const { relativePath, content, platform, app, nitroWebImage } = args;
386
387
  const appName = app.name;
387
388
  const schemes = app.scheme === void 0 ? [] : Array.isArray(app.scheme) ? app.scheme : [app.scheme];
388
389
  let destRelativePath = transformPath(relativePath);
@@ -444,6 +445,25 @@ ${anchor}`);
444
445
  rendered = rendered.replace(anchor, `${anchor}
445
446
  <uses-permission android:name="android.permission.CAMERA" />`);
446
447
  }
448
+ if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.android?.googleMapsApiKey !== void 0) {
449
+ const anchor = " </application>";
450
+ if (!rendered.includes(anchor)) {
451
+ throw new Error("[vxrn] cannot stamp the maps api key: expected </application> in app/src/main/AndroidManifest.xml");
452
+ }
453
+ rendered = rendered.replace(anchor, ` <meta-data android:name="com.google.android.geo.API_KEY" android:value="${escapeXml(app.android.googleMapsApiKey)}" />
454
+ ${anchor}`);
455
+ }
456
+ if (platform === "android" && relativePath === "gradle.properties" && app.android?.googleMapsApiKey !== void 0) {
457
+ const line = "oneNativeMaps=true";
458
+ if (!rendered.includes(line)) {
459
+ const trailed = rendered.endsWith("\n") ? rendered : `${rendered}
460
+ `;
461
+ rendered = `${trailed}
462
+ # One.UI.Map: set by native.app.android.googleMapsApiKey.
463
+ ${line}
464
+ `;
465
+ }
466
+ }
447
467
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && schemes.length) {
448
468
  rendered = rendered.replace(" </activity>", ` <intent-filter>
449
469
  <action android:name="android.intent.action.VIEW" />
@@ -508,6 +528,8 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
508
528
  rendered = nativeProjectPatches.injectReactNativeScreensGammaIntoPodfile(rendered);
509
529
  }
510
530
  rendered = nativeProjectPatches.injectFmtCxx17FixIntoPodfile(rendered);
531
+ rendered = nativeProjectPatches.injectOneSwiftPackagesIntoPodfile(rendered);
532
+ if (nitroWebImage) rendered = nativeProjectPatches.injectNitroWebImageModularHeaderIntoPodfile(rendered);
511
533
  rendered = nativeProjectPatches.injectHermesMinificationPatchIntoPodfile(rendered);
512
534
  if (!rendered.includes("[vxrn/one] fmt c++17 fix") || !rendered.includes("[vxrn/one] minify iOS Hermes Release bundle input")) {
513
535
  throw new Error("[vxrn] failed to apply required iOS Podfile patches");
@@ -554,6 +576,7 @@ const generateForPlatform = async (root, platform, app, outDir = path.resolve(ro
554
576
  throw new Error("[vxrn] could not resolve the community template walker");
555
577
  }
556
578
  const files = [...walkFn(src)].sort();
579
+ const nitroWebImage = platform === "ios" && nativeProjectPatches.hasNitroWebImage(root);
557
580
  FSExtra.removeSync(dest);
558
581
  for (const absoluteSrc of files) {
559
582
  const relativeFilePath = path.relative(src, absoluteSrc);
@@ -569,7 +592,8 @@ const generateForPlatform = async (root, platform, app, outDir = path.resolve(ro
569
592
  relativePath: relativeFilePath,
570
593
  content: raw,
571
594
  platform,
572
- app
595
+ app,
596
+ nitroWebImage
573
597
  });
574
598
  const destPath = path.resolve(dest, destRelativePath);
575
599
  FSExtra.mkdirSync(path.dirname(destPath), { recursive: true });
@@ -600,7 +624,83 @@ const generateForPlatform = async (root, platform, app, outDir = path.resolve(ro
600
624
  platform,
601
625
  app
602
626
  });
627
+ if (platform === "ios") generateSwiftPackages({
628
+ root,
629
+ dest
630
+ });
603
631
  };
632
+ function generateSwiftPackages({ root, dest }) {
633
+ const skip = /* @__PURE__ */ new Set([
634
+ "node_modules",
635
+ "ios",
636
+ "android",
637
+ "dist",
638
+ "types",
639
+ "build"
640
+ ]);
641
+ const packageDirs = [];
642
+ const walk = (dir) => {
643
+ const entries = FSExtra.readdirSync(dir, { withFileTypes: true });
644
+ if (entries.some((entry) => entry.isFile() && entry.name === "Package.swift")) {
645
+ packageDirs.push(dir);
646
+ return;
647
+ }
648
+ for (const entry of entries) {
649
+ if (!entry.isDirectory() || entry.name.startsWith(".") || skip.has(entry.name)) continue;
650
+ walk(path.join(dir, entry.name));
651
+ }
652
+ };
653
+ walk(root);
654
+ for (const packageDir of packageDirs) {
655
+ const id = swiftPackageId(packageDir);
656
+ const podDir = path.join(dest, "OneSwiftPackages", id);
657
+ const sources = [];
658
+ const collect = (dir) => {
659
+ for (const entry of FSExtra.readdirSync(dir, { withFileTypes: true })) {
660
+ if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
661
+ const full = path.join(dir, entry.name);
662
+ if (entry.isDirectory()) collect(full);
663
+ else if (entry.name.endsWith(".swift") && entry.name !== "Package.swift") sources.push(full);
664
+ }
665
+ };
666
+ collect(packageDir);
667
+ for (const source of sources) {
668
+ const link = path.join(podDir, "Sources", path.relative(packageDir, source));
669
+ FSExtra.mkdirSync(path.dirname(link), { recursive: true });
670
+ FSExtra.symlinkSync(FSExtra.realpathSync(source), link);
671
+ }
672
+ FSExtra.writeFileSync(path.join(podDir, `${id}.podspec`), `Pod::Spec.new do |s|
673
+ s.name = '${id}'
674
+ s.version = '0.0.0'
675
+ s.summary = 'swift package ${path.relative(root, packageDir) || "."}'
676
+ s.homepage = 'https://onestack.dev'
677
+ s.license = 'MIT'
678
+ s.author = 'one'
679
+ s.source = { :path => '.' }
680
+ s.swift_version = '6.0'
681
+ s.source_files = 'Sources/**/*.swift', 'Register.m'
682
+ s.dependency 'VxrnNative'
683
+ s.pod_target_xcconfig = {
684
+ 'OTHER_SWIFT_FLAGS' => '$(inherited) -Xfrontend -import-module -Xfrontend VxrnNative -Xfrontend -entry-point-function-name -Xfrontend ${id}_main',
685
+ }
686
+ end
687
+ `);
688
+ FSExtra.writeFileSync(path.join(podDir, "Register.m"), `#import <Foundation/Foundation.h>
689
+
690
+ extern int ${id}_main(int argc, char **argv);
691
+ extern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **));
692
+
693
+ @interface OneSwiftPackage_${id} : NSObject
694
+ @end
695
+
696
+ @implementation OneSwiftPackage_${id}
697
+ + (void)load {
698
+ OneSwiftRegisterPackage("${id}", ${id}_main);
699
+ }
700
+ @end
701
+ `);
702
+ }
703
+ }
604
704
  function applyAndroidDependencyPatches(args) {
605
705
  const { root, app, inventory } = args;
606
706
  if (!app.android || !inventory.some((dependency) => dependency.name === "react-native-screens" && dependency.platforms.includes("android"))) {