vxrn 2.0.0-beta.136.1 → 2.0.0-beta.137.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.
@@ -123,7 +123,7 @@ function createReactNativeDevServerPlugin(options) {
123
123
  url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\/+/, ""))}.bundle?platform=${platform}&dev=true&hot=false`
124
124
  },
125
125
  assets: [],
126
- metadata: {},
126
+ metadata: nativeApp ? { oneNativeApp: true } : {},
127
127
  extra: {
128
128
  eas: { projectId: exp.extra?.eas?.projectId ?? void 0 },
129
129
  expoClient: {
@@ -1 +1 @@
1
- {"version":3,"file":"reactNativeDevServer.js","names":[],"sources":["plugins/reactNativeDevServer.js"],"sourcesContent":["import { WebSocketServer } from \"ws\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport {\n expoClientFromNativeApp\n} from \"@vxrn/utils/nativeAppManifest\";\nimport {\n addConnectedNativeClient,\n removeConnectedNativeClient\n} from \"../utils/connectedNativeClients\";\nimport { URL } from \"node:url\";\nimport { createRequire } from \"node:module\";\nimport { extname, join, resolve, sep } from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { createDevMiddleware } from \"@react-native/dev-middleware\";\nimport { createNativeDevEngine } from \"../utils/createNativeDevEngine\";\nimport { getBoundPort } from \"../utils/getBoundPort\";\nimport {\n getNativeFramePlatform,\n isNativeBundleFrame,\n symbolicateNativeStack\n} from \"../utils/symbolicateNativeStack\";\nfunction getProjectAssetFile(root, pathname) {\n const filePath = resolve(root, pathname.slice(\"/assets/\".length));\n if (!filePath.startsWith(resolve(root) + sep)) return;\n const type = extname(filePath).slice(1);\n if (getNativeAssetContentType(type) === \"application/octet-stream\") return;\n if (!existsSync(filePath) || !statSync(filePath).isFile()) return;\n return { filePath, type };\n}\nfunction getNativeAssetContentType(type) {\n switch (type.toLowerCase()) {\n case \"bmp\":\n return \"image/bmp\";\n case \"gif\":\n return \"image/gif\";\n case \"jpeg\":\n case \"jpg\":\n return \"image/jpeg\";\n case \"json\":\n return \"application/json\";\n case \"otf\":\n return \"font/otf\";\n case \"png\":\n return \"image/png\";\n case \"svg\":\n return \"image/svg+xml\";\n case \"ttf\":\n return \"font/ttf\";\n case \"webp\":\n return \"image/webp\";\n case \"woff\":\n return \"font/woff\";\n case \"woff2\":\n return \"font/woff2\";\n default:\n return \"application/octet-stream\";\n }\n}\nfunction createReactNativeDevServerPlugin(options) {\n return {\n name: \"vite-plugin-react-native-server\",\n configureServer(server) {\n const { host } = server.config.server;\n const { root } = server.config;\n const hmrWSS = new WebSocketServer({ noServer: true });\n const clientWSS = new WebSocketServer({ noServer: true });\n const messageWSS = createMessageSocket();\n const validPlatforms = {\n ios: \"ios\",\n android: \"android\"\n };\n const devEngines = {};\n const devEngineCreating = {};\n const warnedProdBundleRequest = /* @__PURE__ */ new Set();\n const pendingReloadPlatforms = /* @__PURE__ */ new Set();\n const devToolsSocketEndpoints = [\"/inspector/device\", \"/inspector/debug\"];\n const reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`;\n const { middleware, websocketEndpoints } = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n enableStandaloneFuseboxShell: false\n }\n });\n const projectRequire = createRequire(join(root, \"package.json\"));\n const packageJsonPath = join(root, \"package.json\");\n const packageJson = existsSync(packageJsonPath) ? JSON.parse(readFileSync(packageJsonPath, \"utf8\")) : {};\n const hasExpo = Object.hasOwn(packageJson.dependencies ?? {}, \"expo\") || Object.hasOwn(packageJson.devDependencies ?? {}, \"expo\");\n const nativeApp = hasExpo ? void 0 : globalThis.__vxrnNativeEntryConfig?.app;\n const anonymousScopeId = randomUUID();\n server.middlewares.use(async (req, res, next) => {\n if (!hasExpo && !nativeApp) return next();\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n const url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n if (url.pathname !== \"/\" && url.pathname !== \"/manifest\" && url.pathname !== \"/index.exp\") {\n return next();\n }\n const header = req.headers[\"expo-platform\"] || req.headers[\"exponent-platform\"];\n const platform = validPlatforms[url.searchParams.get(\"platform\") || String(header || \"\")];\n if (!platform) return next();\n let expoConfigPath;\n if (!nativeApp) {\n try {\n expoConfigPath = projectRequire.resolve(\"@expo/config\");\n } catch {\n return next();\n }\n }\n try {\n const hostUri = req.headers.host || `localhost:${getBoundPort(server)}`;\n const { exp, mainModuleName, runtimeVersion } = nativeApp ? {\n exp: expoClientFromNativeApp(nativeApp),\n // the vite native server answers any `.bundle` path with the\n // app entry, so `index` is what a one app's native build loads.\n mainModuleName: \"index\",\n runtimeVersion: nativeApp.updates?.runtimeVersion ?? null\n } : await (async () => {\n const expoRequire = createRequire(expoConfigPath);\n const { getConfig } = expoRequire(\"@expo/config\");\n const { resolveRelativeEntryPoint } = expoRequire(\"@expo/config/paths\");\n const { Updates } = expoRequire(\"@expo/config-plugins\");\n const { exp: exp2, pkg } = getConfig(root);\n return {\n exp: exp2,\n mainModuleName: resolveRelativeEntryPoint(root, {\n platform,\n pkg\n }),\n runtimeVersion: await Updates.getRuntimeVersionAsync(\n root,\n {\n ...exp2,\n runtimeVersion: exp2.runtimeVersion ?? { policy: \"sdkVersion\" }\n },\n platform\n )\n };\n })();\n const manifest = JSON.stringify({\n id: randomUUID(),\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n runtimeVersion,\n launchAsset: {\n key: \"bundle\",\n contentType: \"application/javascript\",\n url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\\/+/, \"\"))}.bundle?platform=${platform}&dev=true&hot=false`\n },\n assets: [],\n metadata: {},\n extra: {\n eas: { projectId: exp.extra?.eas?.projectId ?? void 0 },\n expoClient: { ...exp, hostUri },\n expoGo: {\n debuggerHost: hostUri,\n developer: { tool: \"expo-cli\", projectRoot: root },\n packagerOpts: { dev: true },\n mainModuleName\n },\n scopeKey: `@anonymous/${exp.slug}-${anonymousScopeId}`\n }\n });\n const headers = {\n \"expo-protocol-version\": \"0\",\n \"expo-sfv-version\": \"0\",\n \"cache-control\": \"private, max-age=0\"\n };\n const accept = String(req.headers.accept || \"\");\n if (accept.includes(\"multipart/mixed\")) {\n const boundary = `vxrn-${randomUUID()}`;\n res.writeHead(200, {\n ...headers,\n \"content-type\": `multipart/mixed; boundary=${boundary}`\n });\n res.end(\n `--${boundary}\\r\ncontent-disposition: form-data; name=\"manifest\"\\r\ncontent-type: application/json\\r\n\\r\n${manifest}\\r\n--${boundary}--\\r\n`\n );\n return;\n }\n const contentType = accept.includes(\"application/expo+json\") ? \"application/expo+json\" : accept.includes(\"application/json\") ? \"application/json\" : \"text/plain\";\n res.writeHead(200, { ...headers, \"content-type\": contentType });\n res.end(req.method === \"HEAD\" ? void 0 : manifest);\n } catch (error) {\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(error instanceof Error ? error.stack || error.message : String(error));\n }\n });\n server.middlewares.use(async (req, res, next) => {\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n const rawUrl = req.url || \"/\";\n const rawPathname = rawUrl.split(\"?\", 1)[0];\n if (!rawPathname.startsWith(\"/assets/\")) return next();\n const url = new URL(rawUrl, `http://${req.headers.host || \"localhost\"}`);\n const platform = validPlatforms[url.searchParams.get(\"platform\") || \"\"];\n const engine = platform ? devEngines[platform] : void 0;\n let pathname;\n try {\n pathname = decodeURIComponent(rawPathname);\n } catch {\n res.writeHead(400, { \"Content-Type\": \"text/plain\" });\n res.end(\"Invalid native asset path\");\n return;\n }\n const asset = engine?.getAsset(pathname, url.searchParams.get(\"hash\") || void 0) ?? getProjectAssetFile(root, pathname);\n if (!asset) {\n if (!engine) return next();\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.end(\"Native asset not found\");\n return;\n }\n try {\n const contents = await readFile(asset.filePath);\n res.writeHead(200, {\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": String(contents.byteLength),\n \"Content-Type\": getNativeAssetContentType(asset.type)\n });\n res.end(req.method === \"HEAD\" ? void 0 : contents);\n } catch (error) {\n console.error(\n `[vxrn] failed to serve native asset ${pathname}: ${error instanceof Error ? error.message : String(error)}`\n );\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(\"Failed to read native asset\");\n }\n });\n server.middlewares.use(middleware);\n server.httpServer?.on(\"upgrade\", (req, socket, head) => {\n const url = req.url || \"\";\n for (const endpoint of devToolsSocketEndpoints) {\n if (url.startsWith(endpoint)) {\n const wss = websocketEndpoints[endpoint];\n wss.handleUpgrade(req, socket, head, (ws) => {\n wss.emit(\"connection\", ws, req);\n });\n return;\n }\n }\n if (url.startsWith(\"/hot\")) {\n const hmrUrl = new URL(url, `http://${req.headers.host || \"localhost\"}`);\n const platform = validPlatforms[hmrUrl.searchParams.get(\"platform\") || \"\"];\n const clientId = hmrUrl.searchParams.get(\"clientId\");\n if (!platform || !clientId) {\n socket.destroy();\n return;\n }\n hmrWSS.handleUpgrade(req, socket, head, (ws) => {\n Object.assign(ws, {\n vxrnClientId: clientId,\n vxrnPlatform: platform\n });\n hmrWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/message\" || url.startsWith(\"/message?\")) {\n messageWSS.handleUpgrade(req, socket, head, (ws) => {\n messageWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/__client\") {\n clientWSS.handleUpgrade(req, socket, head, (ws) => {\n clientWSS.emit(\"connection\", ws, req);\n });\n }\n });\n hmrWSS.on(\"connection\", async (socket) => {\n const currentEngine = devEngines[socket.vxrnPlatform];\n if (!currentEngine) {\n socket.close(1013, \"native dev engine unavailable\");\n return;\n }\n try {\n await currentEngine.engine.registerClient(socket.vxrnClientId);\n } catch (error) {\n console.error(\"[hmr] failed to register native client\", error);\n socket.close(1011, \"native HMR registration failed\");\n return;\n }\n addConnectedNativeClient();\n if (pendingReloadPlatforms.has(socket.vxrnPlatform)) {\n socket.send(JSON.stringify({ type: \"hmr:reload\" }));\n }\n socket.on(\"message\", (message) => {\n const value = message.toString();\n if (value === \"ping\") {\n socket.send(\"pong\");\n return;\n }\n let update;\n try {\n update = JSON.parse(value);\n } catch {\n return;\n }\n if (update.type === \"hmr:invalidate\") {\n socket.send(JSON.stringify({ type: \"hmr:reload\" }));\n }\n });\n socket.on(\"close\", () => {\n removeConnectedNativeClient();\n currentEngine.engine.removeClient(socket.vxrnClientId).catch((error) => {\n console.error(\"[hmr] failed to remove native client\", error);\n });\n });\n socket.on(\"error\", (error) => {\n console.error(\"[hmr] error\", error);\n });\n });\n clientWSS.on(\"connection\", (socket) => {\n socket.on(\"message\", (messageRaw) => {\n const message = JSON.parse(messageRaw.toString());\n switch (message.type) {\n case \"client-log\": {\n if (message.level === \"warn\" && message.data[0]?.startsWith(\n \"Sending `appearanceChanged` with no listeners registered.\"\n )) {\n return;\n }\n console.info(\n ` \\u2460 ${message.level === \"info\" ? \"\" : ` [${message.level}]`}`,\n ...message.data\n );\n return;\n }\n default: {\n console.warn(` \\u2460 Unknown message type`, message);\n }\n }\n });\n });\n const getDevEngine = async (platform) => {\n while (!devEngines[platform]) {\n if (!devEngineCreating[platform]) {\n const creating = (async () => {\n try {\n console.info(`[vxrn] creating rolldown DevEngine for ${platform}...`);\n devEngines[platform] = await createNativeDevEngine({\n root,\n port: getBoundPort(server),\n host: typeof host === \"string\" ? host : \"localhost\",\n platform,\n serverUrl: `http://${typeof host === \"string\" && host !== \"0.0.0.0\" ? host : \"localhost\"}:${getBoundPort(server)}`,\n onHmrUpdate: (update) => {\n const msg = JSON.stringify(update);\n const target = \"clientId\" in update ? update.clientId : void 0;\n if (update.type === \"hmr:reload\" && !target) {\n pendingReloadPlatforms.add(platform);\n }\n hmrWSS.clients.forEach((client) => {\n const nativeClient = client;\n if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (!target || nativeClient.vxrnClientId === target)) {\n client.send(msg);\n }\n });\n }\n });\n console.info(`[vxrn] rolldown DevEngine ready for ${platform}`);\n } finally {\n devEngineCreating[platform] = null;\n }\n })();\n devEngineCreating[platform] = creating;\n }\n await devEngineCreating[platform];\n }\n return devEngines[platform];\n };\n const handleRNBundle = async (req, res) => {\n const url = new URL(req.url, `http://${req.headers.host}`);\n const platformString = url.searchParams.get(\"platform\") || \"\";\n const platform = validPlatforms[platformString];\n if (!platform) {\n return;\n }\n if (url.searchParams.get(\"dev\") === \"false\" && !warnedProdBundleRequest.has(platform)) {\n warnedProdBundleRequest.add(platform);\n console.warn(\n `[vxrn] ${platform} bundle requested with dev=false, but the dev server only builds dev bundles. Serving a dev bundle. Use the build command for a production one.`\n );\n }\n try {\n const bundle = await (await getDevEngine(platform)).getBundle();\n res.once(\"finish\", () => pendingReloadPlatforms.delete(platform));\n res.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"text/javascript\"\n });\n res.end(bundle.code);\n } catch (err) {\n console.error(` Error building React Native bundle`);\n console.error(err);\n console.error(\n `\n\n Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the \"--clean\" flag`\n );\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(err instanceof Error ? err.stack || err.message : String(err));\n }\n };\n server.middlewares.use((req, res, next) => {\n if (req.url?.split(\"?\")[0].endsWith(\".bundle\")) {\n handleRNBundle(req, res, next);\n } else {\n next();\n }\n });\n server.middlewares.use(\"/symbolicate\", async (req, res) => {\n try {\n const chunks = [];\n for await (const chunk of req) chunks.push(chunk);\n const body = JSON.parse(\n Buffer.concat(chunks).toString(\"utf8\")\n );\n const stack = body.stack;\n if (!Array.isArray(stack)) {\n throw new Error(\"expected a `stack` array in the request body\");\n }\n const bundleFrame = stack.find((frame) => isNativeBundleFrame(frame.file));\n if (!bundleFrame) {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ stack, codeFrame: null }));\n return;\n }\n const framePlatform = getNativeFramePlatform(bundleFrame.file);\n const platform = validPlatforms[framePlatform ?? \"\"];\n if (!platform) {\n throw new Error(\n `could not tell which platform \"${bundleFrame.file}\" was bundled for`\n );\n }\n const bundle = await (await getDevEngine(platform)).getBundle();\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(symbolicateNativeStack(stack, bundle.map)));\n } catch (err) {\n console.error(`[vxrn] symbolicate failed`, err);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n error: err instanceof Error ? err.message : String(err)\n })\n );\n }\n });\n }\n };\n}\nexport {\n createReactNativeDevServerPlugin,\n getNativeAssetContentType\n};\n//# sourceMappingURL=reactNativeDevServer.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"reactNativeDevServer.js","names":[],"sources":["plugins/reactNativeDevServer.js"],"sourcesContent":["import { WebSocketServer } from \"ws\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport {\n expoClientFromNativeApp\n} from \"@vxrn/utils/nativeAppManifest\";\nimport {\n addConnectedNativeClient,\n removeConnectedNativeClient\n} from \"../utils/connectedNativeClients\";\nimport { URL } from \"node:url\";\nimport { createRequire } from \"node:module\";\nimport { extname, join, resolve, sep } from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { createDevMiddleware } from \"@react-native/dev-middleware\";\nimport { createNativeDevEngine } from \"../utils/createNativeDevEngine\";\nimport { getBoundPort } from \"../utils/getBoundPort\";\nimport {\n getNativeFramePlatform,\n isNativeBundleFrame,\n symbolicateNativeStack\n} from \"../utils/symbolicateNativeStack\";\nfunction getProjectAssetFile(root, pathname) {\n const filePath = resolve(root, pathname.slice(\"/assets/\".length));\n if (!filePath.startsWith(resolve(root) + sep)) return;\n const type = extname(filePath).slice(1);\n if (getNativeAssetContentType(type) === \"application/octet-stream\") return;\n if (!existsSync(filePath) || !statSync(filePath).isFile()) return;\n return { filePath, type };\n}\nfunction getNativeAssetContentType(type) {\n switch (type.toLowerCase()) {\n case \"bmp\":\n return \"image/bmp\";\n case \"gif\":\n return \"image/gif\";\n case \"jpeg\":\n case \"jpg\":\n return \"image/jpeg\";\n case \"json\":\n return \"application/json\";\n case \"otf\":\n return \"font/otf\";\n case \"png\":\n return \"image/png\";\n case \"svg\":\n return \"image/svg+xml\";\n case \"ttf\":\n return \"font/ttf\";\n case \"webp\":\n return \"image/webp\";\n case \"woff\":\n return \"font/woff\";\n case \"woff2\":\n return \"font/woff2\";\n default:\n return \"application/octet-stream\";\n }\n}\nfunction createReactNativeDevServerPlugin(options) {\n return {\n name: \"vite-plugin-react-native-server\",\n configureServer(server) {\n const { host } = server.config.server;\n const { root } = server.config;\n const hmrWSS = new WebSocketServer({ noServer: true });\n const clientWSS = new WebSocketServer({ noServer: true });\n const messageWSS = createMessageSocket();\n const validPlatforms = {\n ios: \"ios\",\n android: \"android\"\n };\n const devEngines = {};\n const devEngineCreating = {};\n const warnedProdBundleRequest = /* @__PURE__ */ new Set();\n const pendingReloadPlatforms = /* @__PURE__ */ new Set();\n const devToolsSocketEndpoints = [\"/inspector/device\", \"/inspector/debug\"];\n const reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`;\n const { middleware, websocketEndpoints } = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n enableStandaloneFuseboxShell: false\n }\n });\n const projectRequire = createRequire(join(root, \"package.json\"));\n const packageJsonPath = join(root, \"package.json\");\n const packageJson = existsSync(packageJsonPath) ? JSON.parse(readFileSync(packageJsonPath, \"utf8\")) : {};\n const hasExpo = Object.hasOwn(packageJson.dependencies ?? {}, \"expo\") || Object.hasOwn(packageJson.devDependencies ?? {}, \"expo\");\n const nativeApp = hasExpo ? void 0 : globalThis.__vxrnNativeEntryConfig?.app;\n const anonymousScopeId = randomUUID();\n server.middlewares.use(async (req, res, next) => {\n if (!hasExpo && !nativeApp) return next();\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n const url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n if (url.pathname !== \"/\" && url.pathname !== \"/manifest\" && url.pathname !== \"/index.exp\") {\n return next();\n }\n const header = req.headers[\"expo-platform\"] || req.headers[\"exponent-platform\"];\n const platform = validPlatforms[url.searchParams.get(\"platform\") || String(header || \"\")];\n if (!platform) return next();\n let expoConfigPath;\n if (!nativeApp) {\n try {\n expoConfigPath = projectRequire.resolve(\"@expo/config\");\n } catch {\n return next();\n }\n }\n try {\n const hostUri = req.headers.host || `localhost:${getBoundPort(server)}`;\n const { exp, mainModuleName, runtimeVersion } = nativeApp ? {\n exp: expoClientFromNativeApp(nativeApp),\n // the vite native server answers any `.bundle` path with the\n // app entry, so `index` is what a one app's native build loads.\n mainModuleName: \"index\",\n runtimeVersion: nativeApp.updates?.runtimeVersion ?? null\n } : await (async () => {\n const expoRequire = createRequire(expoConfigPath);\n const { getConfig } = expoRequire(\"@expo/config\");\n const { resolveRelativeEntryPoint } = expoRequire(\"@expo/config/paths\");\n const { Updates } = expoRequire(\"@expo/config-plugins\");\n const { exp: exp2, pkg } = getConfig(root);\n return {\n exp: exp2,\n mainModuleName: resolveRelativeEntryPoint(root, {\n platform,\n pkg\n }),\n runtimeVersion: await Updates.getRuntimeVersionAsync(\n root,\n {\n ...exp2,\n runtimeVersion: exp2.runtimeVersion ?? { policy: \"sdkVersion\" }\n },\n platform\n )\n };\n })();\n const manifest = JSON.stringify({\n id: randomUUID(),\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n runtimeVersion,\n launchAsset: {\n key: \"bundle\",\n contentType: \"application/javascript\",\n url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\\/+/, \"\"))}.bundle?platform=${platform}&dev=true&hot=false`\n },\n assets: [],\n metadata: nativeApp ? { oneNativeApp: true } : {},\n extra: {\n eas: { projectId: exp.extra?.eas?.projectId ?? void 0 },\n expoClient: { ...exp, hostUri },\n expoGo: {\n debuggerHost: hostUri,\n developer: { tool: \"expo-cli\", projectRoot: root },\n packagerOpts: { dev: true },\n mainModuleName\n },\n scopeKey: `@anonymous/${exp.slug}-${anonymousScopeId}`\n }\n });\n const headers = {\n \"expo-protocol-version\": \"0\",\n \"expo-sfv-version\": \"0\",\n \"cache-control\": \"private, max-age=0\"\n };\n const accept = String(req.headers.accept || \"\");\n if (accept.includes(\"multipart/mixed\")) {\n const boundary = `vxrn-${randomUUID()}`;\n res.writeHead(200, {\n ...headers,\n \"content-type\": `multipart/mixed; boundary=${boundary}`\n });\n res.end(\n `--${boundary}\\r\ncontent-disposition: form-data; name=\"manifest\"\\r\ncontent-type: application/json\\r\n\\r\n${manifest}\\r\n--${boundary}--\\r\n`\n );\n return;\n }\n const contentType = accept.includes(\"application/expo+json\") ? \"application/expo+json\" : accept.includes(\"application/json\") ? \"application/json\" : \"text/plain\";\n res.writeHead(200, { ...headers, \"content-type\": contentType });\n res.end(req.method === \"HEAD\" ? void 0 : manifest);\n } catch (error) {\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(error instanceof Error ? error.stack || error.message : String(error));\n }\n });\n server.middlewares.use(async (req, res, next) => {\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n const rawUrl = req.url || \"/\";\n const rawPathname = rawUrl.split(\"?\", 1)[0];\n if (!rawPathname.startsWith(\"/assets/\")) return next();\n const url = new URL(rawUrl, `http://${req.headers.host || \"localhost\"}`);\n const platform = validPlatforms[url.searchParams.get(\"platform\") || \"\"];\n const engine = platform ? devEngines[platform] : void 0;\n let pathname;\n try {\n pathname = decodeURIComponent(rawPathname);\n } catch {\n res.writeHead(400, { \"Content-Type\": \"text/plain\" });\n res.end(\"Invalid native asset path\");\n return;\n }\n const asset = engine?.getAsset(pathname, url.searchParams.get(\"hash\") || void 0) ?? getProjectAssetFile(root, pathname);\n if (!asset) {\n if (!engine) return next();\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.end(\"Native asset not found\");\n return;\n }\n try {\n const contents = await readFile(asset.filePath);\n res.writeHead(200, {\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": String(contents.byteLength),\n \"Content-Type\": getNativeAssetContentType(asset.type)\n });\n res.end(req.method === \"HEAD\" ? void 0 : contents);\n } catch (error) {\n console.error(\n `[vxrn] failed to serve native asset ${pathname}: ${error instanceof Error ? error.message : String(error)}`\n );\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(\"Failed to read native asset\");\n }\n });\n server.middlewares.use(middleware);\n server.httpServer?.on(\"upgrade\", (req, socket, head) => {\n const url = req.url || \"\";\n for (const endpoint of devToolsSocketEndpoints) {\n if (url.startsWith(endpoint)) {\n const wss = websocketEndpoints[endpoint];\n wss.handleUpgrade(req, socket, head, (ws) => {\n wss.emit(\"connection\", ws, req);\n });\n return;\n }\n }\n if (url.startsWith(\"/hot\")) {\n const hmrUrl = new URL(url, `http://${req.headers.host || \"localhost\"}`);\n const platform = validPlatforms[hmrUrl.searchParams.get(\"platform\") || \"\"];\n const clientId = hmrUrl.searchParams.get(\"clientId\");\n if (!platform || !clientId) {\n socket.destroy();\n return;\n }\n hmrWSS.handleUpgrade(req, socket, head, (ws) => {\n Object.assign(ws, {\n vxrnClientId: clientId,\n vxrnPlatform: platform\n });\n hmrWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/message\" || url.startsWith(\"/message?\")) {\n messageWSS.handleUpgrade(req, socket, head, (ws) => {\n messageWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/__client\") {\n clientWSS.handleUpgrade(req, socket, head, (ws) => {\n clientWSS.emit(\"connection\", ws, req);\n });\n }\n });\n hmrWSS.on(\"connection\", async (socket) => {\n const currentEngine = devEngines[socket.vxrnPlatform];\n if (!currentEngine) {\n socket.close(1013, \"native dev engine unavailable\");\n return;\n }\n try {\n await currentEngine.engine.registerClient(socket.vxrnClientId);\n } catch (error) {\n console.error(\"[hmr] failed to register native client\", error);\n socket.close(1011, \"native HMR registration failed\");\n return;\n }\n addConnectedNativeClient();\n if (pendingReloadPlatforms.has(socket.vxrnPlatform)) {\n socket.send(JSON.stringify({ type: \"hmr:reload\" }));\n }\n socket.on(\"message\", (message) => {\n const value = message.toString();\n if (value === \"ping\") {\n socket.send(\"pong\");\n return;\n }\n let update;\n try {\n update = JSON.parse(value);\n } catch {\n return;\n }\n if (update.type === \"hmr:invalidate\") {\n socket.send(JSON.stringify({ type: \"hmr:reload\" }));\n }\n });\n socket.on(\"close\", () => {\n removeConnectedNativeClient();\n currentEngine.engine.removeClient(socket.vxrnClientId).catch((error) => {\n console.error(\"[hmr] failed to remove native client\", error);\n });\n });\n socket.on(\"error\", (error) => {\n console.error(\"[hmr] error\", error);\n });\n });\n clientWSS.on(\"connection\", (socket) => {\n socket.on(\"message\", (messageRaw) => {\n const message = JSON.parse(messageRaw.toString());\n switch (message.type) {\n case \"client-log\": {\n if (message.level === \"warn\" && message.data[0]?.startsWith(\n \"Sending `appearanceChanged` with no listeners registered.\"\n )) {\n return;\n }\n console.info(\n ` \\u2460 ${message.level === \"info\" ? \"\" : ` [${message.level}]`}`,\n ...message.data\n );\n return;\n }\n default: {\n console.warn(` \\u2460 Unknown message type`, message);\n }\n }\n });\n });\n const getDevEngine = async (platform) => {\n while (!devEngines[platform]) {\n if (!devEngineCreating[platform]) {\n const creating = (async () => {\n try {\n console.info(`[vxrn] creating rolldown DevEngine for ${platform}...`);\n devEngines[platform] = await createNativeDevEngine({\n root,\n port: getBoundPort(server),\n host: typeof host === \"string\" ? host : \"localhost\",\n platform,\n serverUrl: `http://${typeof host === \"string\" && host !== \"0.0.0.0\" ? host : \"localhost\"}:${getBoundPort(server)}`,\n onHmrUpdate: (update) => {\n const msg = JSON.stringify(update);\n const target = \"clientId\" in update ? update.clientId : void 0;\n if (update.type === \"hmr:reload\" && !target) {\n pendingReloadPlatforms.add(platform);\n }\n hmrWSS.clients.forEach((client) => {\n const nativeClient = client;\n if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (!target || nativeClient.vxrnClientId === target)) {\n client.send(msg);\n }\n });\n }\n });\n console.info(`[vxrn] rolldown DevEngine ready for ${platform}`);\n } finally {\n devEngineCreating[platform] = null;\n }\n })();\n devEngineCreating[platform] = creating;\n }\n await devEngineCreating[platform];\n }\n return devEngines[platform];\n };\n const handleRNBundle = async (req, res) => {\n const url = new URL(req.url, `http://${req.headers.host}`);\n const platformString = url.searchParams.get(\"platform\") || \"\";\n const platform = validPlatforms[platformString];\n if (!platform) {\n return;\n }\n if (url.searchParams.get(\"dev\") === \"false\" && !warnedProdBundleRequest.has(platform)) {\n warnedProdBundleRequest.add(platform);\n console.warn(\n `[vxrn] ${platform} bundle requested with dev=false, but the dev server only builds dev bundles. Serving a dev bundle. Use the build command for a production one.`\n );\n }\n try {\n const bundle = await (await getDevEngine(platform)).getBundle();\n res.once(\"finish\", () => pendingReloadPlatforms.delete(platform));\n res.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"text/javascript\"\n });\n res.end(bundle.code);\n } catch (err) {\n console.error(` Error building React Native bundle`);\n console.error(err);\n console.error(\n `\n\n Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the \"--clean\" flag`\n );\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(err instanceof Error ? err.stack || err.message : String(err));\n }\n };\n server.middlewares.use((req, res, next) => {\n if (req.url?.split(\"?\")[0].endsWith(\".bundle\")) {\n handleRNBundle(req, res, next);\n } else {\n next();\n }\n });\n server.middlewares.use(\"/symbolicate\", async (req, res) => {\n try {\n const chunks = [];\n for await (const chunk of req) chunks.push(chunk);\n const body = JSON.parse(\n Buffer.concat(chunks).toString(\"utf8\")\n );\n const stack = body.stack;\n if (!Array.isArray(stack)) {\n throw new Error(\"expected a `stack` array in the request body\");\n }\n const bundleFrame = stack.find((frame) => isNativeBundleFrame(frame.file));\n if (!bundleFrame) {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ stack, codeFrame: null }));\n return;\n }\n const framePlatform = getNativeFramePlatform(bundleFrame.file);\n const platform = validPlatforms[framePlatform ?? \"\"];\n if (!platform) {\n throw new Error(\n `could not tell which platform \"${bundleFrame.file}\" was bundled for`\n );\n }\n const bundle = await (await getDevEngine(platform)).getBundle();\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(symbolicateNativeStack(stack, bundle.map)));\n } catch (err) {\n console.error(`[vxrn] symbolicate failed`, err);\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(\n JSON.stringify({\n error: err instanceof Error ? err.message : String(err)\n })\n );\n }\n });\n }\n };\n}\nexport {\n createReactNativeDevServerPlugin,\n getNativeAssetContentType\n};\n//# sourceMappingURL=reactNativeDevServer.js.map\n"],"mappings":"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"}
@@ -132,7 +132,7 @@ function createReactNativeDevServerPlugin(options) {
132
132
  url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\/+/, ""))}.bundle?platform=${platform}&dev=true&hot=false`
133
133
  },
134
134
  assets: [],
135
- metadata: {},
135
+ metadata: nativeApp ? { oneNativeApp: true } : {},
136
136
  extra: {
137
137
  eas: { projectId: (_ref1 = (_exp_extra = exp.extra) === null || _exp_extra === void 0 ? void 0 : (_exp_extra_eas = _exp_extra.eas) === null || _exp_extra_eas === void 0 ? void 0 : _exp_extra_eas.projectId) !== null && _ref1 !== void 0 ? _ref1 : void 0 },
138
138
  expoClient: {
@@ -1 +1 @@
1
- {"version":3,"file":"reactNativeDevServer.native.js","names":[],"sources":["plugins/reactNativeDevServer.native.js"],"sourcesContent":["import { WebSocketServer } from \"ws\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { expoClientFromNativeApp } from \"@vxrn/utils/nativeAppManifest\";\nimport { addConnectedNativeClient, removeConnectedNativeClient } from \"../utils/connectedNativeClients\";\nimport { URL } from \"url\";\nimport { createRequire } from \"module\";\nimport { extname, join, resolve, sep } from \"path\";\nimport { randomUUID } from \"crypto\";\nimport { existsSync, readFileSync, statSync } from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport { createDevMiddleware } from \"@react-native/dev-middleware\";\nimport { createNativeDevEngine } from \"../utils/createNativeDevEngine\";\nimport { getBoundPort } from \"../utils/getBoundPort\";\nimport { getNativeFramePlatform, isNativeBundleFrame, symbolicateNativeStack } from \"../utils/symbolicateNativeStack\";\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction getProjectAssetFile(root, pathname) {\n var filePath = resolve(root, pathname.slice(\"/assets/\".length));\n if (!filePath.startsWith(resolve(root) + sep)) return;\n var type = extname(filePath).slice(1);\n if (getNativeAssetContentType(type) === \"application/octet-stream\") return;\n if (!existsSync(filePath) || !statSync(filePath).isFile()) return;\n return {\n filePath,\n type\n };\n}\nfunction getNativeAssetContentType(type) {\n switch (type.toLowerCase()) {\n case \"bmp\":\n return \"image/bmp\";\n case \"gif\":\n return \"image/gif\";\n case \"jpeg\":\n case \"jpg\":\n return \"image/jpeg\";\n case \"json\":\n return \"application/json\";\n case \"otf\":\n return \"font/otf\";\n case \"png\":\n return \"image/png\";\n case \"svg\":\n return \"image/svg+xml\";\n case \"ttf\":\n return \"font/ttf\";\n case \"webp\":\n return \"image/webp\";\n case \"woff\":\n return \"font/woff\";\n case \"woff2\":\n return \"font/woff2\";\n default:\n return \"application/octet-stream\";\n }\n}\nfunction createReactNativeDevServerPlugin(options) {\n return {\n name: \"vite-plugin-react-native-server\",\n configureServer(server) {\n var _packageJson_dependencies, _packageJson_devDependencies;\n var _globalThis___vxrnNativeEntryConfig, _server_httpServer;\n var { host } = server.config.server;\n var { root } = server.config;\n var hmrWSS = new WebSocketServer({\n noServer: true\n });\n var clientWSS = new WebSocketServer({\n noServer: true\n });\n var messageWSS = createMessageSocket();\n var validPlatforms = {\n ios: \"ios\",\n android: \"android\"\n };\n var devEngines = {};\n var devEngineCreating = {};\n var warnedProdBundleRequest = /* @__PURE__ */ new Set();\n var pendingReloadPlatforms = /* @__PURE__ */ new Set();\n var devToolsSocketEndpoints = [\n \"/inspector/device\",\n \"/inspector/debug\"\n ];\n var reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`;\n var { middleware, websocketEndpoints } = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n enableStandaloneFuseboxShell: false\n }\n });\n var projectRequire = createRequire(join(root, \"package.json\"));\n var packageJsonPath = join(root, \"package.json\");\n var packageJson = existsSync(packageJsonPath) ? JSON.parse(readFileSync(packageJsonPath, \"utf8\")) : {};\n var hasExpo = Object.hasOwn((_packageJson_dependencies = packageJson.dependencies) !== null && _packageJson_dependencies !== void 0 ? _packageJson_dependencies : {}, \"expo\") || Object.hasOwn((_packageJson_devDependencies = packageJson.devDependencies) !== null && _packageJson_devDependencies !== void 0 ? _packageJson_devDependencies : {}, \"expo\");\n var nativeApp = hasExpo ? void 0 : (_globalThis___vxrnNativeEntryConfig = globalThis.__vxrnNativeEntryConfig) === null || _globalThis___vxrnNativeEntryConfig === void 0 ? void 0 : _globalThis___vxrnNativeEntryConfig.app;\n var anonymousScopeId = randomUUID();\n server.middlewares.use(async function(req, res, next) {\n if (!hasExpo && !nativeApp) return next();\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n var url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n if (url.pathname !== \"/\" && url.pathname !== \"/manifest\" && url.pathname !== \"/index.exp\") {\n return next();\n }\n var header = req.headers[\"expo-platform\"] || req.headers[\"exponent-platform\"];\n var platform = validPlatforms[url.searchParams.get(\"platform\") || String(header || \"\")];\n if (!platform) return next();\n var expoConfigPath;\n if (!nativeApp) {\n try {\n expoConfigPath = projectRequire.resolve(\"@expo/config\");\n } catch (unused) {\n return next();\n }\n }\n try {\n var _ref, _ref1;\n var _nativeApp_updates, _exp_extra_eas, _exp_extra;\n var hostUri = req.headers.host || `localhost:${getBoundPort(server)}`;\n var { exp, mainModuleName, runtimeVersion } = nativeApp ? {\n exp: expoClientFromNativeApp(nativeApp),\n // the vite native server answers any `.bundle` path with the\n // app entry, so `index` is what a one app's native build loads.\n mainModuleName: \"index\",\n runtimeVersion: (_ref = (_nativeApp_updates = nativeApp.updates) === null || _nativeApp_updates === void 0 ? void 0 : _nativeApp_updates.runtimeVersion) !== null && _ref !== void 0 ? _ref : null\n } : await (async function() {\n var _exp_runtimeVersion;\n var expoRequire = createRequire(expoConfigPath);\n var { getConfig } = expoRequire(\"@expo/config\");\n var { resolveRelativeEntryPoint } = expoRequire(\"@expo/config/paths\");\n var { Updates } = expoRequire(\"@expo/config-plugins\");\n var { exp: exp2, pkg } = getConfig(root);\n return {\n exp: exp2,\n mainModuleName: resolveRelativeEntryPoint(root, {\n platform,\n pkg\n }),\n runtimeVersion: await Updates.getRuntimeVersionAsync(root, {\n ...exp2,\n runtimeVersion: (_exp_runtimeVersion = exp2.runtimeVersion) !== null && _exp_runtimeVersion !== void 0 ? _exp_runtimeVersion : {\n policy: \"sdkVersion\"\n }\n }, platform)\n };\n })();\n var manifest = JSON.stringify({\n id: randomUUID(),\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n runtimeVersion,\n launchAsset: {\n key: \"bundle\",\n contentType: \"application/javascript\",\n url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\\/+/, \"\"))}.bundle?platform=${platform}&dev=true&hot=false`\n },\n assets: [],\n metadata: {},\n extra: {\n eas: {\n projectId: (_ref1 = (_exp_extra = exp.extra) === null || _exp_extra === void 0 ? void 0 : (_exp_extra_eas = _exp_extra.eas) === null || _exp_extra_eas === void 0 ? void 0 : _exp_extra_eas.projectId) !== null && _ref1 !== void 0 ? _ref1 : void 0\n },\n expoClient: {\n ...exp,\n hostUri\n },\n expoGo: {\n debuggerHost: hostUri,\n developer: {\n tool: \"expo-cli\",\n projectRoot: root\n },\n packagerOpts: {\n dev: true\n },\n mainModuleName\n },\n scopeKey: `@anonymous/${exp.slug}-${anonymousScopeId}`\n }\n });\n var headers = {\n \"expo-protocol-version\": \"0\",\n \"expo-sfv-version\": \"0\",\n \"cache-control\": \"private, max-age=0\"\n };\n var accept = String(req.headers.accept || \"\");\n if (accept.includes(\"multipart/mixed\")) {\n var boundary = `vxrn-${randomUUID()}`;\n res.writeHead(200, {\n ...headers,\n \"content-type\": `multipart/mixed; boundary=${boundary}`\n });\n res.end(`--${boundary}\\r\ncontent-disposition: form-data; name=\"manifest\"\\r\ncontent-type: application/json\\r\n\\r\n${manifest}\\r\n--${boundary}--\\r\n`);\n return;\n }\n var contentType = accept.includes(\"application/expo+json\") ? \"application/expo+json\" : accept.includes(\"application/json\") ? \"application/json\" : \"text/plain\";\n res.writeHead(200, {\n ...headers,\n \"content-type\": contentType\n });\n res.end(req.method === \"HEAD\" ? void 0 : manifest);\n } catch (error) {\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(error instanceof Error ? error.stack || error.message : String(error));\n }\n });\n server.middlewares.use(async function(req, res, next) {\n var _ref;\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n var rawUrl = req.url || \"/\";\n var rawPathname = rawUrl.split(\"?\", 1)[0];\n if (!rawPathname.startsWith(\"/assets/\")) return next();\n var url = new URL(rawUrl, `http://${req.headers.host || \"localhost\"}`);\n var platform = validPlatforms[url.searchParams.get(\"platform\") || \"\"];\n var engine = platform ? devEngines[platform] : void 0;\n var pathname;\n try {\n pathname = decodeURIComponent(rawPathname);\n } catch (unused) {\n res.writeHead(400, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Invalid native asset path\");\n return;\n }\n var asset = (_ref = engine === null || engine === void 0 ? void 0 : engine.getAsset(pathname, url.searchParams.get(\"hash\") || void 0)) !== null && _ref !== void 0 ? _ref : getProjectAssetFile(root, pathname);\n if (!asset) {\n if (!engine) return next();\n res.writeHead(404, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Native asset not found\");\n return;\n }\n try {\n var contents = await readFile(asset.filePath);\n res.writeHead(200, {\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": String(contents.byteLength),\n \"Content-Type\": getNativeAssetContentType(asset.type)\n });\n res.end(req.method === \"HEAD\" ? void 0 : contents);\n } catch (error) {\n console.error(`[vxrn] failed to serve native asset ${pathname}: ${error instanceof Error ? error.message : String(error)}`);\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Failed to read native asset\");\n }\n });\n server.middlewares.use(middleware);\n (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 ? void 0 : _server_httpServer.on(\"upgrade\", function(req, socket, head) {\n var url = req.url || \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var endpoint = _step.value;\n if (url.startsWith(endpoint)) {\n var wss = websocketEndpoints[endpoint];\n wss.handleUpgrade(req, socket, head, function(ws) {\n wss.emit(\"connection\", ws, req);\n });\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = devToolsSocketEndpoints[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\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 (url.startsWith(\"/hot\")) {\n var hmrUrl = new URL(url, `http://${req.headers.host || \"localhost\"}`);\n var platform = validPlatforms[hmrUrl.searchParams.get(\"platform\") || \"\"];\n var clientId = hmrUrl.searchParams.get(\"clientId\");\n if (!platform || !clientId) {\n socket.destroy();\n return;\n }\n hmrWSS.handleUpgrade(req, socket, head, function(ws) {\n Object.assign(ws, {\n vxrnClientId: clientId,\n vxrnPlatform: platform\n });\n hmrWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/message\" || url.startsWith(\"/message?\")) {\n messageWSS.handleUpgrade(req, socket, head, function(ws) {\n messageWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/__client\") {\n clientWSS.handleUpgrade(req, socket, head, function(ws) {\n clientWSS.emit(\"connection\", ws, req);\n });\n }\n });\n hmrWSS.on(\"connection\", async function(socket) {\n var currentEngine = devEngines[socket.vxrnPlatform];\n if (!currentEngine) {\n socket.close(1013, \"native dev engine unavailable\");\n return;\n }\n try {\n await currentEngine.engine.registerClient(socket.vxrnClientId);\n } catch (error) {\n console.error(\"[hmr] failed to register native client\", error);\n socket.close(1011, \"native HMR registration failed\");\n return;\n }\n addConnectedNativeClient();\n if (pendingReloadPlatforms.has(socket.vxrnPlatform)) {\n socket.send(JSON.stringify({\n type: \"hmr:reload\"\n }));\n }\n socket.on(\"message\", function(message) {\n var value = message.toString();\n if (value === \"ping\") {\n socket.send(\"pong\");\n return;\n }\n var update;\n try {\n update = JSON.parse(value);\n } catch (unused) {\n return;\n }\n if (update.type === \"hmr:invalidate\") {\n socket.send(JSON.stringify({\n type: \"hmr:reload\"\n }));\n }\n });\n socket.on(\"close\", function() {\n removeConnectedNativeClient();\n currentEngine.engine.removeClient(socket.vxrnClientId).catch(function(error) {\n console.error(\"[hmr] failed to remove native client\", error);\n });\n });\n socket.on(\"error\", function(error) {\n console.error(\"[hmr] error\", error);\n });\n });\n clientWSS.on(\"connection\", function(socket) {\n socket.on(\"message\", function(messageRaw) {\n var message = JSON.parse(messageRaw.toString());\n switch (message.type) {\n case \"client-log\": {\n var _message_data_;\n if (message.level === \"warn\" && ((_message_data_ = message.data[0]) === null || _message_data_ === void 0 ? void 0 : _message_data_.startsWith(\"Sending `appearanceChanged` with no listeners registered.\"))) {\n return;\n }\n console.info(` \\u2460 ${message.level === \"info\" ? \"\" : ` [${message.level}]`}`, ...message.data);\n return;\n }\n default: {\n console.warn(` \\u2460 Unknown message type`, message);\n }\n }\n });\n });\n var getDevEngine = async function(platform) {\n while (!devEngines[platform]) {\n if (!devEngineCreating[platform]) {\n var creating = (async function() {\n try {\n console.info(`[vxrn] creating rolldown DevEngine for ${platform}...`);\n devEngines[platform] = await createNativeDevEngine({\n root,\n port: getBoundPort(server),\n host: typeof host === \"string\" ? host : \"localhost\",\n platform,\n serverUrl: `http://${typeof host === \"string\" && host !== \"0.0.0.0\" ? host : \"localhost\"}:${getBoundPort(server)}`,\n onHmrUpdate: function(update) {\n var msg = JSON.stringify(update);\n var target = \"clientId\" in update ? update.clientId : void 0;\n if (update.type === \"hmr:reload\" && !target) {\n pendingReloadPlatforms.add(platform);\n }\n hmrWSS.clients.forEach(function(client) {\n var nativeClient = client;\n if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (!target || nativeClient.vxrnClientId === target)) {\n client.send(msg);\n }\n });\n }\n });\n console.info(`[vxrn] rolldown DevEngine ready for ${platform}`);\n } finally {\n devEngineCreating[platform] = null;\n }\n })();\n devEngineCreating[platform] = creating;\n }\n await devEngineCreating[platform];\n }\n return devEngines[platform];\n };\n var handleRNBundle = async function(req, res) {\n var url = new URL(req.url, `http://${req.headers.host}`);\n var platformString = url.searchParams.get(\"platform\") || \"\";\n var platform = validPlatforms[platformString];\n if (!platform) {\n return;\n }\n if (url.searchParams.get(\"dev\") === \"false\" && !warnedProdBundleRequest.has(platform)) {\n warnedProdBundleRequest.add(platform);\n console.warn(`[vxrn] ${platform} bundle requested with dev=false, but the dev server only builds dev bundles. Serving a dev bundle. Use the build command for a production one.`);\n }\n try {\n var bundle = await (await getDevEngine(platform)).getBundle();\n res.once(\"finish\", function() {\n return pendingReloadPlatforms.delete(platform);\n });\n res.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"text/javascript\"\n });\n res.end(bundle.code);\n } catch (err) {\n console.error(` Error building React Native bundle`);\n console.error(err);\n console.error(`\n\n Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the \"--clean\" flag`);\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(err instanceof Error ? err.stack || err.message : String(err));\n }\n };\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.split(\"?\")[0].endsWith(\".bundle\")) {\n handleRNBundle(req, res, next);\n } else {\n next();\n }\n });\n server.middlewares.use(\"/symbolicate\", async function(req, res) {\n try {\n var chunks = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = req[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var chunk = _step.value;\n chunks.push(chunk);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var body = JSON.parse(Buffer.concat(chunks).toString(\"utf8\"));\n var stack = body.stack;\n if (!Array.isArray(stack)) {\n throw new Error(\"expected a `stack` array in the request body\");\n }\n var bundleFrame = stack.find(function(frame) {\n return isNativeBundleFrame(frame.file);\n });\n if (!bundleFrame) {\n res.writeHead(200, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify({\n stack,\n codeFrame: null\n }));\n return;\n }\n var framePlatform = getNativeFramePlatform(bundleFrame.file);\n var platform = validPlatforms[framePlatform !== null && framePlatform !== void 0 ? framePlatform : \"\"];\n if (!platform) {\n throw new Error(`could not tell which platform \"${bundleFrame.file}\" was bundled for`);\n }\n var bundle = await (await getDevEngine(platform)).getBundle();\n res.writeHead(200, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify(symbolicateNativeStack(stack, bundle.map)));\n } catch (err) {\n console.error(`[vxrn] symbolicate failed`, err);\n res.writeHead(500, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify({\n error: err instanceof Error ? err.message : String(err)\n }));\n }\n });\n }\n };\n}\nexport {\n createReactNativeDevServerPlugin,\n getNativeAssetContentType\n};\n//# sourceMappingURL=reactNativeDevServer.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"reactNativeDevServer.native.js","names":[],"sources":["plugins/reactNativeDevServer.native.js"],"sourcesContent":["import { WebSocketServer } from \"ws\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { expoClientFromNativeApp } from \"@vxrn/utils/nativeAppManifest\";\nimport { addConnectedNativeClient, removeConnectedNativeClient } from \"../utils/connectedNativeClients\";\nimport { URL } from \"url\";\nimport { createRequire } from \"module\";\nimport { extname, join, resolve, sep } from \"path\";\nimport { randomUUID } from \"crypto\";\nimport { existsSync, readFileSync, statSync } from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport { createDevMiddleware } from \"@react-native/dev-middleware\";\nimport { createNativeDevEngine } from \"../utils/createNativeDevEngine\";\nimport { getBoundPort } from \"../utils/getBoundPort\";\nimport { getNativeFramePlatform, isNativeBundleFrame, symbolicateNativeStack } from \"../utils/symbolicateNativeStack\";\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction getProjectAssetFile(root, pathname) {\n var filePath = resolve(root, pathname.slice(\"/assets/\".length));\n if (!filePath.startsWith(resolve(root) + sep)) return;\n var type = extname(filePath).slice(1);\n if (getNativeAssetContentType(type) === \"application/octet-stream\") return;\n if (!existsSync(filePath) || !statSync(filePath).isFile()) return;\n return {\n filePath,\n type\n };\n}\nfunction getNativeAssetContentType(type) {\n switch (type.toLowerCase()) {\n case \"bmp\":\n return \"image/bmp\";\n case \"gif\":\n return \"image/gif\";\n case \"jpeg\":\n case \"jpg\":\n return \"image/jpeg\";\n case \"json\":\n return \"application/json\";\n case \"otf\":\n return \"font/otf\";\n case \"png\":\n return \"image/png\";\n case \"svg\":\n return \"image/svg+xml\";\n case \"ttf\":\n return \"font/ttf\";\n case \"webp\":\n return \"image/webp\";\n case \"woff\":\n return \"font/woff\";\n case \"woff2\":\n return \"font/woff2\";\n default:\n return \"application/octet-stream\";\n }\n}\nfunction createReactNativeDevServerPlugin(options) {\n return {\n name: \"vite-plugin-react-native-server\",\n configureServer(server) {\n var _packageJson_dependencies, _packageJson_devDependencies;\n var _globalThis___vxrnNativeEntryConfig, _server_httpServer;\n var { host } = server.config.server;\n var { root } = server.config;\n var hmrWSS = new WebSocketServer({\n noServer: true\n });\n var clientWSS = new WebSocketServer({\n noServer: true\n });\n var messageWSS = createMessageSocket();\n var validPlatforms = {\n ios: \"ios\",\n android: \"android\"\n };\n var devEngines = {};\n var devEngineCreating = {};\n var warnedProdBundleRequest = /* @__PURE__ */ new Set();\n var pendingReloadPlatforms = /* @__PURE__ */ new Set();\n var devToolsSocketEndpoints = [\n \"/inspector/device\",\n \"/inspector/debug\"\n ];\n var reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`;\n var { middleware, websocketEndpoints } = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n enableStandaloneFuseboxShell: false\n }\n });\n var projectRequire = createRequire(join(root, \"package.json\"));\n var packageJsonPath = join(root, \"package.json\");\n var packageJson = existsSync(packageJsonPath) ? JSON.parse(readFileSync(packageJsonPath, \"utf8\")) : {};\n var hasExpo = Object.hasOwn((_packageJson_dependencies = packageJson.dependencies) !== null && _packageJson_dependencies !== void 0 ? _packageJson_dependencies : {}, \"expo\") || Object.hasOwn((_packageJson_devDependencies = packageJson.devDependencies) !== null && _packageJson_devDependencies !== void 0 ? _packageJson_devDependencies : {}, \"expo\");\n var nativeApp = hasExpo ? void 0 : (_globalThis___vxrnNativeEntryConfig = globalThis.__vxrnNativeEntryConfig) === null || _globalThis___vxrnNativeEntryConfig === void 0 ? void 0 : _globalThis___vxrnNativeEntryConfig.app;\n var anonymousScopeId = randomUUID();\n server.middlewares.use(async function(req, res, next) {\n if (!hasExpo && !nativeApp) return next();\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n var url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n if (url.pathname !== \"/\" && url.pathname !== \"/manifest\" && url.pathname !== \"/index.exp\") {\n return next();\n }\n var header = req.headers[\"expo-platform\"] || req.headers[\"exponent-platform\"];\n var platform = validPlatforms[url.searchParams.get(\"platform\") || String(header || \"\")];\n if (!platform) return next();\n var expoConfigPath;\n if (!nativeApp) {\n try {\n expoConfigPath = projectRequire.resolve(\"@expo/config\");\n } catch (unused) {\n return next();\n }\n }\n try {\n var _ref, _ref1;\n var _nativeApp_updates, _exp_extra_eas, _exp_extra;\n var hostUri = req.headers.host || `localhost:${getBoundPort(server)}`;\n var { exp, mainModuleName, runtimeVersion } = nativeApp ? {\n exp: expoClientFromNativeApp(nativeApp),\n // the vite native server answers any `.bundle` path with the\n // app entry, so `index` is what a one app's native build loads.\n mainModuleName: \"index\",\n runtimeVersion: (_ref = (_nativeApp_updates = nativeApp.updates) === null || _nativeApp_updates === void 0 ? void 0 : _nativeApp_updates.runtimeVersion) !== null && _ref !== void 0 ? _ref : null\n } : await (async function() {\n var _exp_runtimeVersion;\n var expoRequire = createRequire(expoConfigPath);\n var { getConfig } = expoRequire(\"@expo/config\");\n var { resolveRelativeEntryPoint } = expoRequire(\"@expo/config/paths\");\n var { Updates } = expoRequire(\"@expo/config-plugins\");\n var { exp: exp2, pkg } = getConfig(root);\n return {\n exp: exp2,\n mainModuleName: resolveRelativeEntryPoint(root, {\n platform,\n pkg\n }),\n runtimeVersion: await Updates.getRuntimeVersionAsync(root, {\n ...exp2,\n runtimeVersion: (_exp_runtimeVersion = exp2.runtimeVersion) !== null && _exp_runtimeVersion !== void 0 ? _exp_runtimeVersion : {\n policy: \"sdkVersion\"\n }\n }, platform)\n };\n })();\n var manifest = JSON.stringify({\n id: randomUUID(),\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n runtimeVersion,\n launchAsset: {\n key: \"bundle\",\n contentType: \"application/javascript\",\n url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\\/+/, \"\"))}.bundle?platform=${platform}&dev=true&hot=false`\n },\n assets: [],\n metadata: nativeApp ? {\n oneNativeApp: true\n } : {},\n extra: {\n eas: {\n projectId: (_ref1 = (_exp_extra = exp.extra) === null || _exp_extra === void 0 ? void 0 : (_exp_extra_eas = _exp_extra.eas) === null || _exp_extra_eas === void 0 ? void 0 : _exp_extra_eas.projectId) !== null && _ref1 !== void 0 ? _ref1 : void 0\n },\n expoClient: {\n ...exp,\n hostUri\n },\n expoGo: {\n debuggerHost: hostUri,\n developer: {\n tool: \"expo-cli\",\n projectRoot: root\n },\n packagerOpts: {\n dev: true\n },\n mainModuleName\n },\n scopeKey: `@anonymous/${exp.slug}-${anonymousScopeId}`\n }\n });\n var headers = {\n \"expo-protocol-version\": \"0\",\n \"expo-sfv-version\": \"0\",\n \"cache-control\": \"private, max-age=0\"\n };\n var accept = String(req.headers.accept || \"\");\n if (accept.includes(\"multipart/mixed\")) {\n var boundary = `vxrn-${randomUUID()}`;\n res.writeHead(200, {\n ...headers,\n \"content-type\": `multipart/mixed; boundary=${boundary}`\n });\n res.end(`--${boundary}\\r\ncontent-disposition: form-data; name=\"manifest\"\\r\ncontent-type: application/json\\r\n\\r\n${manifest}\\r\n--${boundary}--\\r\n`);\n return;\n }\n var contentType = accept.includes(\"application/expo+json\") ? \"application/expo+json\" : accept.includes(\"application/json\") ? \"application/json\" : \"text/plain\";\n res.writeHead(200, {\n ...headers,\n \"content-type\": contentType\n });\n res.end(req.method === \"HEAD\" ? void 0 : manifest);\n } catch (error) {\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(error instanceof Error ? error.stack || error.message : String(error));\n }\n });\n server.middlewares.use(async function(req, res, next) {\n var _ref;\n if (req.method !== \"GET\" && req.method !== \"HEAD\") return next();\n var rawUrl = req.url || \"/\";\n var rawPathname = rawUrl.split(\"?\", 1)[0];\n if (!rawPathname.startsWith(\"/assets/\")) return next();\n var url = new URL(rawUrl, `http://${req.headers.host || \"localhost\"}`);\n var platform = validPlatforms[url.searchParams.get(\"platform\") || \"\"];\n var engine = platform ? devEngines[platform] : void 0;\n var pathname;\n try {\n pathname = decodeURIComponent(rawPathname);\n } catch (unused) {\n res.writeHead(400, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Invalid native asset path\");\n return;\n }\n var asset = (_ref = engine === null || engine === void 0 ? void 0 : engine.getAsset(pathname, url.searchParams.get(\"hash\") || void 0)) !== null && _ref !== void 0 ? _ref : getProjectAssetFile(root, pathname);\n if (!asset) {\n if (!engine) return next();\n res.writeHead(404, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Native asset not found\");\n return;\n }\n try {\n var contents = await readFile(asset.filePath);\n res.writeHead(200, {\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": String(contents.byteLength),\n \"Content-Type\": getNativeAssetContentType(asset.type)\n });\n res.end(req.method === \"HEAD\" ? void 0 : contents);\n } catch (error) {\n console.error(`[vxrn] failed to serve native asset ${pathname}: ${error instanceof Error ? error.message : String(error)}`);\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(\"Failed to read native asset\");\n }\n });\n server.middlewares.use(middleware);\n (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 ? void 0 : _server_httpServer.on(\"upgrade\", function(req, socket, head) {\n var url = req.url || \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var endpoint = _step.value;\n if (url.startsWith(endpoint)) {\n var wss = websocketEndpoints[endpoint];\n wss.handleUpgrade(req, socket, head, function(ws) {\n wss.emit(\"connection\", ws, req);\n });\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = devToolsSocketEndpoints[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\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 (url.startsWith(\"/hot\")) {\n var hmrUrl = new URL(url, `http://${req.headers.host || \"localhost\"}`);\n var platform = validPlatforms[hmrUrl.searchParams.get(\"platform\") || \"\"];\n var clientId = hmrUrl.searchParams.get(\"clientId\");\n if (!platform || !clientId) {\n socket.destroy();\n return;\n }\n hmrWSS.handleUpgrade(req, socket, head, function(ws) {\n Object.assign(ws, {\n vxrnClientId: clientId,\n vxrnPlatform: platform\n });\n hmrWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/message\" || url.startsWith(\"/message?\")) {\n messageWSS.handleUpgrade(req, socket, head, function(ws) {\n messageWSS.emit(\"connection\", ws, req);\n });\n return;\n }\n if (url === \"/__client\") {\n clientWSS.handleUpgrade(req, socket, head, function(ws) {\n clientWSS.emit(\"connection\", ws, req);\n });\n }\n });\n hmrWSS.on(\"connection\", async function(socket) {\n var currentEngine = devEngines[socket.vxrnPlatform];\n if (!currentEngine) {\n socket.close(1013, \"native dev engine unavailable\");\n return;\n }\n try {\n await currentEngine.engine.registerClient(socket.vxrnClientId);\n } catch (error) {\n console.error(\"[hmr] failed to register native client\", error);\n socket.close(1011, \"native HMR registration failed\");\n return;\n }\n addConnectedNativeClient();\n if (pendingReloadPlatforms.has(socket.vxrnPlatform)) {\n socket.send(JSON.stringify({\n type: \"hmr:reload\"\n }));\n }\n socket.on(\"message\", function(message) {\n var value = message.toString();\n if (value === \"ping\") {\n socket.send(\"pong\");\n return;\n }\n var update;\n try {\n update = JSON.parse(value);\n } catch (unused) {\n return;\n }\n if (update.type === \"hmr:invalidate\") {\n socket.send(JSON.stringify({\n type: \"hmr:reload\"\n }));\n }\n });\n socket.on(\"close\", function() {\n removeConnectedNativeClient();\n currentEngine.engine.removeClient(socket.vxrnClientId).catch(function(error) {\n console.error(\"[hmr] failed to remove native client\", error);\n });\n });\n socket.on(\"error\", function(error) {\n console.error(\"[hmr] error\", error);\n });\n });\n clientWSS.on(\"connection\", function(socket) {\n socket.on(\"message\", function(messageRaw) {\n var message = JSON.parse(messageRaw.toString());\n switch (message.type) {\n case \"client-log\": {\n var _message_data_;\n if (message.level === \"warn\" && ((_message_data_ = message.data[0]) === null || _message_data_ === void 0 ? void 0 : _message_data_.startsWith(\"Sending `appearanceChanged` with no listeners registered.\"))) {\n return;\n }\n console.info(` \\u2460 ${message.level === \"info\" ? \"\" : ` [${message.level}]`}`, ...message.data);\n return;\n }\n default: {\n console.warn(` \\u2460 Unknown message type`, message);\n }\n }\n });\n });\n var getDevEngine = async function(platform) {\n while (!devEngines[platform]) {\n if (!devEngineCreating[platform]) {\n var creating = (async function() {\n try {\n console.info(`[vxrn] creating rolldown DevEngine for ${platform}...`);\n devEngines[platform] = await createNativeDevEngine({\n root,\n port: getBoundPort(server),\n host: typeof host === \"string\" ? host : \"localhost\",\n platform,\n serverUrl: `http://${typeof host === \"string\" && host !== \"0.0.0.0\" ? host : \"localhost\"}:${getBoundPort(server)}`,\n onHmrUpdate: function(update) {\n var msg = JSON.stringify(update);\n var target = \"clientId\" in update ? update.clientId : void 0;\n if (update.type === \"hmr:reload\" && !target) {\n pendingReloadPlatforms.add(platform);\n }\n hmrWSS.clients.forEach(function(client) {\n var nativeClient = client;\n if (nativeClient.readyState === 1 && nativeClient.vxrnPlatform === platform && (!target || nativeClient.vxrnClientId === target)) {\n client.send(msg);\n }\n });\n }\n });\n console.info(`[vxrn] rolldown DevEngine ready for ${platform}`);\n } finally {\n devEngineCreating[platform] = null;\n }\n })();\n devEngineCreating[platform] = creating;\n }\n await devEngineCreating[platform];\n }\n return devEngines[platform];\n };\n var handleRNBundle = async function(req, res) {\n var url = new URL(req.url, `http://${req.headers.host}`);\n var platformString = url.searchParams.get(\"platform\") || \"\";\n var platform = validPlatforms[platformString];\n if (!platform) {\n return;\n }\n if (url.searchParams.get(\"dev\") === \"false\" && !warnedProdBundleRequest.has(platform)) {\n warnedProdBundleRequest.add(platform);\n console.warn(`[vxrn] ${platform} bundle requested with dev=false, but the dev server only builds dev bundles. Serving a dev bundle. Use the build command for a production one.`);\n }\n try {\n var bundle = await (await getDevEngine(platform)).getBundle();\n res.once(\"finish\", function() {\n return pendingReloadPlatforms.delete(platform);\n });\n res.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"text/javascript\"\n });\n res.end(bundle.code);\n } catch (err) {\n console.error(` Error building React Native bundle`);\n console.error(err);\n console.error(`\n\n Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the \"--clean\" flag`);\n res.writeHead(500, {\n \"Content-Type\": \"text/plain\"\n });\n res.end(err instanceof Error ? err.stack || err.message : String(err));\n }\n };\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.split(\"?\")[0].endsWith(\".bundle\")) {\n handleRNBundle(req, res, next);\n } else {\n next();\n }\n });\n server.middlewares.use(\"/symbolicate\", async function(req, res) {\n try {\n var chunks = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = req[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var chunk = _step.value;\n chunks.push(chunk);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var body = JSON.parse(Buffer.concat(chunks).toString(\"utf8\"));\n var stack = body.stack;\n if (!Array.isArray(stack)) {\n throw new Error(\"expected a `stack` array in the request body\");\n }\n var bundleFrame = stack.find(function(frame) {\n return isNativeBundleFrame(frame.file);\n });\n if (!bundleFrame) {\n res.writeHead(200, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify({\n stack,\n codeFrame: null\n }));\n return;\n }\n var framePlatform = getNativeFramePlatform(bundleFrame.file);\n var platform = validPlatforms[framePlatform !== null && framePlatform !== void 0 ? framePlatform : \"\"];\n if (!platform) {\n throw new Error(`could not tell which platform \"${bundleFrame.file}\" was bundled for`);\n }\n var bundle = await (await getDevEngine(platform)).getBundle();\n res.writeHead(200, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify(symbolicateNativeStack(stack, bundle.map)));\n } catch (err) {\n console.error(`[vxrn] symbolicate failed`, err);\n res.writeHead(500, {\n \"Content-Type\": \"application/json\"\n });\n res.end(JSON.stringify({\n error: err instanceof Error ? err.message : String(err)\n }));\n }\n });\n }\n };\n}\nexport {\n createReactNativeDevServerPlugin,\n getNativeAssetContentType\n};\n//# sourceMappingURL=reactNativeDevServer.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.0.0-beta.136.1",
3
+ "version": "2.0.0-beta.137.1",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -72,15 +72,15 @@
72
72
  "@react-native/codegen": "^0.87.1",
73
73
  "@react-native-community/cli-config": "^20.2.0",
74
74
  "@react-native/dev-middleware": "^0.87.1",
75
- "@vxrn/compiler": "2.0.0-beta.136.1",
76
- "@vxrn/debug": "2.0.0-beta.136.1",
77
- "@vxrn/query-string": "2.0.0-beta.136.1",
78
- "@vxrn/resolve": "2.0.0-beta.136.1",
79
- "@vxrn/url-parse": "2.0.0-beta.136.1",
80
- "@vxrn/utils": "2.0.0-beta.136.1",
81
- "@vxrn/vendor": "2.0.0-beta.136.1",
82
- "@vxrn/vite-flow": "2.0.0-beta.136.1",
83
- "@vxrn/vite-plugin-metro": "2.0.0-beta.136.1",
75
+ "@vxrn/compiler": "2.0.0-beta.137.1",
76
+ "@vxrn/debug": "2.0.0-beta.137.1",
77
+ "@vxrn/query-string": "2.0.0-beta.137.1",
78
+ "@vxrn/resolve": "2.0.0-beta.137.1",
79
+ "@vxrn/url-parse": "2.0.0-beta.137.1",
80
+ "@vxrn/utils": "2.0.0-beta.137.1",
81
+ "@vxrn/vendor": "2.0.0-beta.137.1",
82
+ "@vxrn/vite-flow": "2.0.0-beta.137.1",
83
+ "@vxrn/vite-plugin-metro": "2.0.0-beta.137.1",
84
84
  "citty": "^0.1.6",
85
85
  "dotenv": "^17.2.1",
86
86
  "dotenv-expand": "^12.0.2",
@@ -204,7 +204,7 @@ export function createReactNativeDevServerPlugin(
204
204
  url: `http://${hostUri}/${encodeURI(mainModuleName.replace(/^\/+/, ''))}.bundle?platform=${platform}&dev=true&hot=false`,
205
205
  },
206
206
  assets: [],
207
- metadata: {},
207
+ metadata: nativeApp ? { oneNativeApp: true } : {},
208
208
  extra: {
209
209
  eas: { projectId: exp.extra?.eas?.projectId ?? undefined },
210
210
  expoClient: { ...exp, hostUri },