vxrn 1.25.8 → 1.25.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/getViteServerConfig.mjs +6 -0
- package/dist/config/getViteServerConfig.mjs.map +1 -1
- package/dist/config/getViteServerConfig.native.js +6 -0
- package/dist/config/getViteServerConfig.native.js.map +1 -1
- package/dist/config/getViteServerConfig.test.mjs +26 -0
- package/dist/config/getViteServerConfig.test.mjs.map +1 -0
- package/dist/config/getViteServerConfig.test.native.js +26 -0
- package/dist/config/getViteServerConfig.test.native.js.map +1 -0
- package/dist/exports/dev.mjs +26 -1
- package/dist/exports/dev.mjs.map +1 -1
- package/dist/exports/dev.native.js +26 -1
- package/dist/exports/dev.native.js.map +1 -1
- package/dist/plugins/reactNativeDevServer.mjs +80 -7
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
- package/dist/plugins/reactNativeDevServer.native.js +80 -7
- package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
- package/dist/runtime/native-prelude.mjs +7 -0
- package/dist/runtime/native-prelude.mjs.map +1 -1
- package/dist/runtime/native-prelude.native.js +7 -0
- package/dist/runtime/native-prelude.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.mjs +302 -197
- package/dist/utils/createNativeDevEngine.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.native.js +410 -221
- package/dist/utils/createNativeDevEngine.native.js.map +1 -1
- package/dist/utils/createNativeDevEngine.test.mjs +536 -6
- package/dist/utils/createNativeDevEngine.test.mjs.map +1 -1
- package/dist/utils/createNativeDevEngine.test.native.js +559 -6
- package/dist/utils/createNativeDevEngine.test.native.js.map +1 -1
- package/package.json +11 -11
- package/src/config/getViteServerConfig.test.ts +29 -0
- package/src/config/getViteServerConfig.ts +11 -0
- package/src/exports/dev.ts +34 -3
- package/src/plugins/reactNativeDevServer.ts +89 -12
- package/src/runtime/native-prelude.ts +7 -0
- package/src/utils/createNativeDevEngine.test.ts +682 -5
- package/src/utils/createNativeDevEngine.ts +516 -229
- package/types/config/getViteServerConfig.d.ts.map +1 -1
- package/types/config/getViteServerConfig.test.d.ts +2 -0
- package/types/config/getViteServerConfig.test.d.ts.map +1 -0
- package/types/exports/dev.d.ts.map +1 -1
- package/types/plugins/reactNativeDevServer.d.ts +1 -0
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
- package/types/runtime/native-prelude.d.ts.map +1 -1
- package/types/utils/createNativeDevEngine.d.ts +40 -2
- package/types/utils/createNativeDevEngine.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mkdtemp","rm","writeFile","tmpdir","join","rolldown","dev","describe","expect","it","getHermesSWCIncludes","getHmrRuntimeSource","getNativeTransformConfig","hermesCompatSWCPlugin","hmrClientNoopPlugin","vxrnCompilerPlugin","wrapNativeBundleModuleScope","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","timeout","testRoot","entry","source","version","resolveInitialOutput","initialOutput","Promise","resolve","resolveHmrUpdate","hmrUpdate","registeredClientId","engine","cwd","input","experimental","devMode","implement","format","onOutput","result2","onHmrUpdates","Error","updates","some","item","clientId","update","type","_result_updates_find","run","initial","chunk","output","find","isEntry","toBeTruthy","globalThis","__rolldown_runtime__","Buffer","from","code","toString","runtime","toBe","registerClient","patch","race","_","reject","setTimeout","applyHmrUpdate","changedIds","seq","__vxrnHmrBody","__vxrnHmrAccepted","close","recursive","force","root","_loop","_i2","_iter2","_loop2","_i12","_iter12","dev2","platform","define","JSON","stringify","envObject","parse","TAMAGUI_TARGET","TAMAGUI_ENVIRONMENT","_i1","_iter1","length","_i","_iter","RUNTIME_MARKER","out","openIdx","indexOf","toBeGreaterThan","toBeLessThan","Function","not","toThrow","CLASS_SET","toEqual","arrayContaining","toContain","build","plugins","generate","result","plugin","resolveId","load","VIRTUAL_ID","each","importer","id","external","toBeUndefined","moduleType","method","previousNodeEnv","process","env","NODE_ENV","transform"],"sources":["createNativeDevEngine.test.native.js"],"sourcesContent":["import { mkdtemp, rm, writeFile } from \"fs/promises\";\nimport { tmpdir } from \"os\";\nimport { join } from \"path\";\nimport { rolldown } from \"rolldown\";\nimport { dev } from \"rolldown/experimental\";\nimport { describe, expect, it } from \"vitest\";\nimport { getHermesSWCIncludes, getHmrRuntimeSource, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, vxrnCompilerPlugin, wrapNativeBundleModuleScope } from \"./createNativeDevEngine\";\n\nfunction _instanceof(left, right) {\n\tif (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);\n\telse return left instanceof right;\n}\nfunction _type_of(obj) {\n\t\"@swc/helpers - typeof\";\n\treturn obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\ndescribe(\"native Rolldown HMR runtime\", function() {\n\tit(\"registers a Rolldown 1.2 client and applies a self-accepted patch\", { timeout: 3e4 }, async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-hmr-\"));\n\t\tvar entry = join(testRoot, \"entry.js\");\n\t\tvar source = function(version) {\n\t\t\treturn `\nglobalThis.__vxrnHmrBody = '${version}'\nexport const value = '${version}'\nif (import.meta.hot) {\n import.meta.hot.accept((next) => {\n globalThis.__vxrnHmrAccepted = next.value\n })\n}\n`;\n\t\t};\n\t\tawait writeFile(entry, source(\"v1\"));\n\t\tvar resolveInitialOutput;\n\t\tvar initialOutput = new Promise(function(resolve) {\n\t\t\tresolveInitialOutput = resolve;\n\t\t});\n\t\tvar resolveHmrUpdate;\n\t\tvar hmrUpdate = new Promise(function(resolve) {\n\t\t\tresolveHmrUpdate = resolve;\n\t\t});\n\t\tvar registeredClientId;\n\t\tvar engine = await dev({\n\t\t\tcwd: testRoot,\n\t\t\tinput: entry,\n\t\t\texperimental: { devMode: { implement: getHmrRuntimeSource() } }\n\t\t}, { format: \"esm\" }, {\n\t\t\tonOutput(result2) {\n\t\t\t\tresolveInitialOutput(result2);\n\t\t\t},\n\t\t\tonHmrUpdates(result2) {\n\t\t\t\tif (!_instanceof(result2, Error) && result2.updates.some(function(item) {\n\t\t\t\t\treturn item.clientId === registeredClientId && item.update.type === \"Patch\";\n\t\t\t\t})) resolveHmrUpdate(result2);\n\t\t\t}\n\t\t});\n\t\ttry {\n\t\t\tvar _result_updates_find;\n\t\t\tawait engine.run();\n\t\t\tvar initial = await initialOutput;\n\t\t\tif (_instanceof(initial, Error)) throw initial;\n\t\t\tvar chunk = initial.output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\" && item.isEntry;\n\t\t\t});\n\t\t\texpect(chunk).toBeTruthy();\n\t\t\tdelete globalThis.__rolldown_runtime__;\n\t\t\tawait import(`data:text/javascript;base64,${Buffer.from(chunk.code).toString(\"base64\")}`);\n\t\t\tvar runtime = globalThis.__rolldown_runtime__;\n\t\t\texpect(_type_of(runtime.clientId)).toBe(\"string\");\n\t\t\tregisteredClientId = runtime.clientId;\n\t\t\tawait engine.registerClient(runtime.clientId);\n\t\t\tawait writeFile(entry, source(\"v2\"));\n\t\t\tvar patch = (_result_updates_find = (await Promise.race([hmrUpdate, new Promise(function(_, reject) {\n\t\t\t\treturn setTimeout(function() {\n\t\t\t\t\treturn reject(/* @__PURE__ */ new Error(\"timed out waiting for HMR patch\"));\n\t\t\t\t}, 1e4);\n\t\t\t})])).updates.find(function(item) {\n\t\t\t\treturn item.clientId === runtime.clientId && item.update.type === \"Patch\";\n\t\t\t})) === null || _result_updates_find === void 0 ? void 0 : _result_updates_find.update;\n\t\t\texpect(patch).toBeTruthy();\n\t\t\texpect(runtime.applyHmrUpdate(patch.code, patch.changedIds, patch.seq)).toBe(true);\n\t\t\texpect(globalThis.__vxrnHmrBody).toBe(\"v2\");\n\t\t\texpect(globalThis.__vxrnHmrAccepted).toBe(\"v2\");\n\t\t} finally {\n\t\t\tawait engine.close();\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tdelete globalThis.__rolldown_runtime__;\n\t\t\tdelete globalThis.__vxrnHmrBody;\n\t\t\tdelete globalThis.__vxrnHmrAccepted;\n\t\t}\n\t});\n});\nvar root = \"/tmp/vxrn-native-env-define-test-nonexistent\";\ndescribe(\"getNativeTransformConfig platform env defines\", function() {\n\tvar _loop = function(_i2, _iter2) {\n\t\tvar _loop2 = function(_i12, _iter12) {\n\t\t\tvar dev2 = _iter12[_i12];\n\t\t\tit(`injects TAMAGUI_TARGET=native for ${platform} (dev=${dev2})`, function() {\n\t\t\t\tvar { define } = getNativeTransformConfig(platform, dev2, root);\n\t\t\t\texpect(define[\"import.meta.env.TAMAGUI_TARGET\"]).toBe(\"\\\"native\\\"\");\n\t\t\t\texpect(define[\"process.env.TAMAGUI_TARGET\"]).toBe(\"\\\"native\\\"\");\n\t\t\t\texpect(define[\"import.meta.env.TAMAGUI_ENVIRONMENT\"]).toBe(JSON.stringify(platform));\n\t\t\t\texpect(define[\"import.meta.env.VITE_ENVIRONMENT\"]).toBe(JSON.stringify(platform));\n\t\t\t\texpect(define[\"import.meta.env.VITE_NATIVE\"]).toBe(\"\\\"1\\\"\");\n\t\t\t\texpect(define[\"import.meta.env.EXPO_OS\"]).toBe(JSON.stringify(platform));\n\t\t\t\tvar envObject = JSON.parse(define[\"import.meta.env\"]);\n\t\t\t\texpect(envObject.TAMAGUI_TARGET).toBe(\"native\");\n\t\t\t\texpect(envObject.TAMAGUI_ENVIRONMENT).toBe(platform);\n\t\t\t});\n\t\t};\n\t\tvar platform = _iter2[_i2];\n\t\tfor (var _i1 = 0, _iter1 = [true, false]; _i1 < _iter1.length; _i1++) _loop2(_i1, _iter1);\n\t};\n\tfor (var _i = 0, _iter = [\"ios\", \"android\"]; _i < _iter.length; _i++) _loop(_i, _iter);\n});\ndescribe(\"wrapNativeBundleModuleScope\", function() {\n\tvar RUNTIME_MARKER = \"//#region \\\\0rolldown/runtime.js\";\n\tit(\"wraps module code after the prelude so top-level vars do not leak to global\", function() {\n\t\tvar out = wrapNativeBundleModuleScope(`globalThis.global = globalThis;\nglobalThis.__DEV__ = true;\n${RUNTIME_MARKER}\nvar fetch_hot, fetch$1, Headers, Request, Response$1;\nglobalThis.__rolldown_runtime__ = {};\n`);\n\t\tvar openIdx = out.indexOf(\";(function() {\");\n\t\texpect(openIdx).toBeGreaterThan(-1);\n\t\texpect(out.indexOf(\"globalThis.__DEV__\")).toBeLessThan(openIdx);\n\t\texpect(out.indexOf(\"var fetch_hot\")).toBeGreaterThan(openIdx);\n\t\texpect(function() {\n\t\t\treturn new Function(out);\n\t\t}).not.toThrow();\n\t});\n\tit(\"is a no-op when the runtime marker is absent (e.g. prod bundle)\", function() {\n\t\tvar input = \"var x = 1;\\nconsole.log(x);\\n\";\n\t\texpect(wrapNativeBundleModuleScope(input)).toBe(input);\n\t});\n});\ndescribe(\"getHermesSWCIncludes\", function() {\n\tvar CLASS_SET = [\n\t\t\"transform-classes\",\n\t\t\"transform-parameters\",\n\t\t\"transform-class-properties\",\n\t\t\"transform-class-static-block\",\n\t\t\"transform-private-methods\",\n\t\t\"transform-private-property-in-object\"\n\t];\n\tit(\"always includes the full Hermes class-transform set (dev and prod)\", function() {\n\t\texpect(getHermesSWCIncludes(true)).toEqual(expect.arrayContaining(CLASS_SET));\n\t\texpect(getHermesSWCIncludes(false)).toEqual(expect.arrayContaining(CLASS_SET));\n\t});\n\tit(\"adds transform-async-to-generator only in production\", function() {\n\t\texpect(getHermesSWCIncludes(true)).not.toContain(\"transform-async-to-generator\");\n\t\texpect(getHermesSWCIncludes(false)).toContain(\"transform-async-to-generator\");\n\t});\n\tit(\"bundles lowered classes whose constructors use default and rest parameters\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-hermes-parameters-\"));\n\t\tvar entry = join(testRoot, \"entry.js\");\n\t\tawait writeFile(entry, `\nclass ParameterProbe {\n prefix = 'value'\n\n constructor(value = 'default', ...rest) {\n this.result = [this.prefix, value, ...rest].join(':')\n }\n}\n\nexport const result = new ParameterProbe(undefined, 'rest-a', 'rest-b').result\n`);\n\t\tvar build = await rolldown({\n\t\t\tinput: entry,\n\t\t\tplugins: [hermesCompatSWCPlugin(true)]\n\t\t});\n\t\ttry {\n\t\t\tvar chunk = (await build.generate({ format: \"esm\" })).output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\";\n\t\t\t});\n\t\t\texpect(chunk).toBeTruthy();\n\t\t\tif (!chunk) throw new Error(\"Rolldown did not emit a JavaScript chunk\");\n\t\t\texpect((await import(`data:text/javascript;base64,${Buffer.from(chunk.code).toString(\"base64\")}`)).result).toBe(\"value:default:rest-a:rest-b\");\n\t\t} finally {\n\t\t\tawait build.close();\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\ndescribe(\"hmrClientNoopPlugin\", function() {\n\tvar plugin = hmrClientNoopPlugin();\n\tvar resolveId = plugin.resolveId;\n\tvar load = plugin.load;\n\tvar VIRTUAL_ID = \"\\0vxrn-hmr-client-noop\";\n\tit.each([\n\t\t[\"react-native/Libraries/Utilities/HMRClient\", void 0],\n\t\t[\"../Utilities/HMRClient\", \"/project/node_modules/react-native/Libraries/Core.js\"],\n\t\t[\"../../Utilities/HMRClient.js\", \"/project/react-native/Libraries/Core.js\"],\n\t\t[\"..\\\\Utilities\\\\HMRClient.js\", \"C:\\\\project\\\\react-native\\\\Libraries\\\\Core.js\"],\n\t\t[\"../Utilities/HMRClient.ts\", \"/project/node_modules/react-native/Core.js\"],\n\t\t[\"../Utilities/HMRClient.tsx\", \"/project/node_modules/react-native/Core.js\"],\n\t\t[\"../Utilities/HMRClient.cjs\", \"/project/node_modules/react-native/Core.js\"]\n\t])(\"aliases RN HMRClient specifier %j to the no-op virtual module\", function(source, importer) {\n\t\texpect(resolveId(source, importer)).toEqual({\n\t\t\tid: VIRTUAL_ID,\n\t\t\texternal: false\n\t\t});\n\t});\n\tit.each([\n\t\t\"react-native/Libraries/Utilities/HMRClientRegistry\",\n\t\t\"some/MyUtilities/HMRClient\",\n\t\t\"react-native/Libraries/Core/setUpDeveloperTools\",\n\t\t\"react\"\n\t])(\"does not touch unrelated specifier %j\", function(source) {\n\t\texpect(resolveId(source)).toBeUndefined();\n\t});\n\tit(\"does not alias an app-authored Utilities/HMRClient module\", function() {\n\t\texpect(resolveId(\"../Utilities/HMRClient\", \"/project/src/App.tsx\")).toBeUndefined();\n\t});\n\tit(\"loads a no-op module exposing every HMRClient method RN calls\", function() {\n\t\tvar result = load(VIRTUAL_ID);\n\t\texpect(result === null || result === void 0 ? void 0 : result.moduleType).toBe(\"js\");\n\t\tfor (var _i = 0, _iter = [\n\t\t\t\"setup\",\n\t\t\t\"enable\",\n\t\t\t\"disable\",\n\t\t\t\"registerBundle\",\n\t\t\t\"log\",\n\t\t\t\"isEnabled\"\n\t\t]; _i < _iter.length; _i++) {\n\t\t\tvar method = _iter[_i];\n\t\t\texpect(result.code).toContain(method);\n\t\t}\n\t\texpect(result.code).toContain(\"export default HMRClient\");\n\t});\n\tit(\"does not load unrelated ids\", function() {\n\t\texpect(load(\"\\0some-other-virtual\")).toBeUndefined();\n\t});\n});\ndescribe(\"vxrnCompilerPlugin React Refresh registration\", function() {\n\tit(\"keeps initial-bundle registrations visible to rolldown\", async function() {\n\t\tvar previousNodeEnv = process.env.NODE_ENV;\n\t\tprocess.env.NODE_ENV = \"test\";\n\t\ttry {\n\t\t\tvar transform = vxrnCompilerPlugin(\"ios\", true).transform;\n\t\t\tvar code = (await transform(\"export const marker = \\\"$RefreshReg$(\\\"; export function Probe() { return <div>probe</div> }\", \"/project/src/Probe.tsx\")).code;\n\t\t\texpect(code).toContain(\"var __vxrnRefreshReg = globalThis.$RefreshReg$\");\n\t\t\texpect(code).toContain(\"__vxrnRefreshReg(\");\n\t\t\texpect(code).toContain(\"\\\"$RefreshReg$(\\\"\");\n\t\t} finally {\n\t\t\tprocess.env.NODE_ENV = previousNodeEnv;\n\t\t}\n\t});\n});\n\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["existsSync","mkdir","mkdtemp","rm","writeFile","tmpdir","join","runInNewContext","rolldown","dev","describe","expect","it","getNativePrelude","buildNativeBundle","createNativeDevAssetRegistry","getHermesSWCIncludes","getHmrRuntimeSource","getNativeAssetData","getNativeTransformConfig","hermesCompatSWCPlugin","hmrClientNoopPlugin","nativeAnimatedGuardPlugin","normalizeNativeCommonJSInterop","vxrnCompilerPlugin","wrapNativeBundleModuleScope","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","nativeTransformProbe","createWorkletsProject","throwOnTransform","arguments","length","testRoot","packageRoot","recursive","JSON","stringify","name","context","addEventListener","platform","Reflect","get","toBeUndefined","removeEventListener","toBe","timeout","entry","source","version","resolveInitialOutput","initialOutput","Promise","resolve","resolveHmrUpdate","hmrUpdate","registeredClientId","engine","cwd","input","experimental","devMode","implement","format","onOutput","result2","onHmrUpdates","Error","updates","some","item","clientId","update","type","_result_updates_find","run","initial","chunk","output","find","isEntry","toBeTruthy","globalThis","__rolldown_runtime__","Buffer","from","code","toString","runtime","registerClient","patch","race","_","reject","setTimeout","applyHmrUpdate","apply","changedIds","seq","__vxrnHmrBody","__vxrnHmrAccepted","close","force","leaf","previousRefreshRuntime","set","isLikelyComponentType","value","deleteProperty","result","root","entryFile","not","toContain","process","env","plugin","transform","split","toHaveLength","map","toEqual","sources","sourcesContent","names","mappings","_loop","_i2","_iter2","_loop2","_i12","_iter12","dev2","define","envObject","parse","TAMAGUI_TARGET","TAMAGUI_ENVIRONMENT","_i1","_iter1","_i","_iter","key","previous","RUNTIME_MARKER","out","openIdx","indexOf","toBeGreaterThan","toBeLessThan","Function","toThrow","CLASS_SET","arrayContaining","build","plugins","generate","resolveId","load","VIRTUAL_ID","each","importer","id","external","moduleType","method","previousNodeEnv","NODE_ENV","compiler","configureVXRNCompilerPlugin","enableReanimated","rejects","resolveOutput","toBeInstanceOf","String","compilerPlugin","hermesPlugin","appRoot","appAssets","packageAssets","assetsDest","_registry_resolve","assetData","scales","files","file2","slice","hash","registry","register","filePath","toMatch","file","file1","exports","import","require","clearTimeout","console","main","codeSplitting","strictExecutionOrder","nodeModeCode","replace","normalized"],"sources":["createNativeDevEngine.test.native.js"],"sourcesContent":["import { existsSync } from \"fs\";\nimport { mkdir, mkdtemp, rm, writeFile } from \"fs/promises\";\nimport { tmpdir } from \"os\";\nimport { join } from \"path\";\nimport { runInNewContext } from \"vm\";\nimport { rolldown } from \"rolldown\";\nimport { dev } from \"rolldown/experimental\";\nimport { describe, expect, it } from \"vitest\";\nimport { getNativePrelude } from \"../runtime/native-prelude\";\nimport { buildNativeBundle, createNativeDevAssetRegistry, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope } from \"./createNativeDevEngine\";\n\nfunction _instanceof(left, right) {\n\tif (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);\n\telse return left instanceof right;\n}\nfunction _type_of(obj) {\n\t\"@swc/helpers - typeof\";\n\treturn obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nvar nativeTransformProbe = `\nexport const transformProbe = () => {\n 'worklet'\n return 'transformed'\n}\n`;\nasync function createWorkletsProject() {\n\tvar throwOnTransform = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-transform-failure-\"));\n\tvar packageRoot = join(testRoot, \"node_modules/react-native-worklets\");\n\tawait mkdir(packageRoot, { recursive: true });\n\tawait writeFile(join(packageRoot, \"package.json\"), JSON.stringify({ name: \"react-native-worklets\" }));\n\tawait writeFile(join(packageRoot, \"plugin.js\"), throwOnTransform ? `module.exports = () => ({\n visitor: {\n Program() {\n throw new Error('NATIVE_TRANSFORM_NEGATIVE_CONTROL')\n }\n }\n })` : `module.exports = () => ({ visitor: {} })`);\n\tawait writeFile(join(testRoot, \"entry.ts\"), nativeTransformProbe);\n\treturn testRoot;\n}\ndescribe(\"native prelude\", function() {\n\tit(\"does not advertise a host event API that cannot remove listeners\", function() {\n\t\tvar context = { addEventListener() {} };\n\t\trunInNewContext(getNativePrelude({\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\"\n\t\t}), context);\n\t\texpect(Reflect.get(context, \"addEventListener\")).toBeUndefined();\n\t});\n\tit(\"preserves a complete host event API\", function() {\n\t\tvar addEventListener = function() {};\n\t\tvar removeEventListener = function() {};\n\t\tvar context = {\n\t\t\taddEventListener,\n\t\t\tremoveEventListener\n\t\t};\n\t\trunInNewContext(getNativePrelude({\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\"\n\t\t}), context);\n\t\texpect(context.addEventListener).toBe(addEventListener);\n\t\texpect(context.removeEventListener).toBe(removeEventListener);\n\t});\n});\ndescribe(\"native Rolldown HMR runtime\", function() {\n\tit(\"registers a Rolldown 1.2 client and applies a self-accepted patch\", { timeout: 3e4 }, async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-hmr-\"));\n\t\tvar entry = join(testRoot, \"entry.js\");\n\t\tvar source = function(version) {\n\t\t\treturn `\nglobalThis.__vxrnHmrBody = '${version}'\nexport const value = '${version}'\nif (import.meta.hot) {\n import.meta.hot.accept((next) => {\n globalThis.__vxrnHmrAccepted = next.value\n })\n}\n`;\n\t\t};\n\t\tawait writeFile(entry, source(\"v1\"));\n\t\tvar resolveInitialOutput;\n\t\tvar initialOutput = new Promise(function(resolve) {\n\t\t\tresolveInitialOutput = resolve;\n\t\t});\n\t\tvar resolveHmrUpdate;\n\t\tvar hmrUpdate = new Promise(function(resolve) {\n\t\t\tresolveHmrUpdate = resolve;\n\t\t});\n\t\tvar registeredClientId;\n\t\tvar engine = await dev({\n\t\t\tcwd: testRoot,\n\t\t\tinput: entry,\n\t\t\texperimental: { devMode: { implement: getHmrRuntimeSource() } }\n\t\t}, { format: \"esm\" }, {\n\t\t\tonOutput(result2) {\n\t\t\t\tresolveInitialOutput(result2);\n\t\t\t},\n\t\t\tonHmrUpdates(result2) {\n\t\t\t\tif (!_instanceof(result2, Error) && result2.updates.some(function(item) {\n\t\t\t\t\treturn item.clientId === registeredClientId && item.update.type === \"Patch\";\n\t\t\t\t})) resolveHmrUpdate(result2);\n\t\t\t}\n\t\t});\n\t\ttry {\n\t\t\tvar _result_updates_find;\n\t\t\tawait engine.run();\n\t\t\tvar initial = await initialOutput;\n\t\t\tif (_instanceof(initial, Error)) throw initial;\n\t\t\tvar chunk = initial.output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\" && item.isEntry;\n\t\t\t});\n\t\t\texpect(chunk).toBeTruthy();\n\t\t\tdelete globalThis.__rolldown_runtime__;\n\t\t\tawait import(`data:text/javascript;base64,${Buffer.from(chunk.code).toString(\"base64\")}`);\n\t\t\tvar runtime = globalThis.__rolldown_runtime__;\n\t\t\texpect(_type_of(runtime.clientId)).toBe(\"string\");\n\t\t\tregisteredClientId = runtime.clientId;\n\t\t\tawait engine.registerClient(runtime.clientId);\n\t\t\tawait writeFile(entry, source(\"v2\"));\n\t\t\tvar patch = (_result_updates_find = (await Promise.race([hmrUpdate, new Promise(function(_, reject) {\n\t\t\t\treturn setTimeout(function() {\n\t\t\t\t\treturn reject(/* @__PURE__ */ new Error(\"timed out waiting for HMR patch\"));\n\t\t\t\t}, 1e4);\n\t\t\t})])).updates.find(function(item) {\n\t\t\t\treturn item.clientId === runtime.clientId && item.update.type === \"Patch\";\n\t\t\t})) === null || _result_updates_find === void 0 ? void 0 : _result_updates_find.update;\n\t\t\texpect(patch).toBeTruthy();\n\t\t\tvar applyHmrUpdate = Reflect.get(runtime, \"applyHmrUpdate\");\n\t\t\texpect(Reflect.apply(applyHmrUpdate, runtime, [\n\t\t\t\tpatch.code,\n\t\t\t\tpatch.changedIds,\n\t\t\t\tpatch.seq\n\t\t\t])).toBe(true);\n\t\t\texpect(globalThis.__vxrnHmrBody).toBe(\"v2\");\n\t\t\texpect(globalThis.__vxrnHmrAccepted).toBe(\"v2\");\n\t\t} finally {\n\t\t\tawait engine.close();\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tdelete globalThis.__rolldown_runtime__;\n\t\t\tdelete globalThis.__vxrnHmrBody;\n\t\t\tdelete globalThis.__vxrnHmrAccepted;\n\t\t}\n\t});\n\tit(\"propagates a non-component update to a React Refresh boundary\", { timeout: 3e4 }, async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-refresh-boundary-\"));\n\t\tvar entry = join(testRoot, \"entry.js\");\n\t\tvar leaf = join(testRoot, \"leaf.js\");\n\t\tawait writeFile(entry, `\nimport { value } from './leaf.js'\nglobalThis.__vxrnRefreshBoundaryValue = value\nexport function App() {}\nif (import.meta.hot) {\n import.meta.hot.acceptReactRefresh(() => {\n globalThis.__vxrnRefreshBoundaryAccepted = true\n })\n}\n`);\n\t\tawait writeFile(leaf, `export const value = 'v1'`);\n\t\tvar resolveInitialOutput;\n\t\tvar initialOutput = new Promise(function(resolve) {\n\t\t\tresolveInitialOutput = resolve;\n\t\t});\n\t\tvar resolveHmrUpdate;\n\t\tvar hmrUpdate = new Promise(function(resolve) {\n\t\t\tresolveHmrUpdate = resolve;\n\t\t});\n\t\tvar registeredClientId;\n\t\tvar engine = await dev({\n\t\t\tcwd: testRoot,\n\t\t\tinput: entry,\n\t\t\texperimental: { devMode: { implement: getHmrRuntimeSource() } }\n\t\t}, { format: \"esm\" }, {\n\t\t\tonOutput(result2) {\n\t\t\t\tresolveInitialOutput(result2);\n\t\t\t},\n\t\t\tonHmrUpdates(result2) {\n\t\t\t\tif (!_instanceof(result2, Error) && result2.updates.some(function(item) {\n\t\t\t\t\treturn item.clientId === registeredClientId && item.update.type === \"Patch\";\n\t\t\t\t})) resolveHmrUpdate(result2);\n\t\t\t}\n\t\t});\n\t\tvar previousRefreshRuntime = Reflect.get(globalThis, \"__ReactRefresh\");\n\t\tReflect.set(globalThis, \"__ReactRefresh\", { isLikelyComponentType(value) {\n\t\t\treturn typeof value === \"function\";\n\t\t} });\n\t\ttry {\n\t\t\tvar _result_updates_find;\n\t\t\tawait engine.run();\n\t\t\tvar initial = await initialOutput;\n\t\t\tif (_instanceof(initial, Error)) throw initial;\n\t\t\tvar chunk = initial.output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\" && item.isEntry;\n\t\t\t});\n\t\t\texpect(chunk).toBeTruthy();\n\t\t\tReflect.deleteProperty(globalThis, \"__rolldown_runtime__\");\n\t\t\tawait import(`data:text/javascript;base64,${Buffer.from(chunk.code).toString(\"base64\")}`);\n\t\t\tvar runtime = Reflect.get(globalThis, \"__rolldown_runtime__\");\n\t\t\tregisteredClientId = runtime.clientId;\n\t\t\tawait engine.registerClient(runtime.clientId);\n\t\t\tawait writeFile(leaf, `export const value = 'v2'`);\n\t\t\tvar patch = (_result_updates_find = (await Promise.race([hmrUpdate, new Promise(function(_, reject) {\n\t\t\t\treturn setTimeout(function() {\n\t\t\t\t\treturn reject(/* @__PURE__ */ new Error(\"timed out waiting for HMR patch\"));\n\t\t\t\t}, 1e4);\n\t\t\t})])).updates.find(function(item) {\n\t\t\t\treturn item.clientId === runtime.clientId && item.update.type === \"Patch\";\n\t\t\t})) === null || _result_updates_find === void 0 ? void 0 : _result_updates_find.update;\n\t\t\texpect(patch).toBeTruthy();\n\t\t\tvar applyHmrUpdate = Reflect.get(runtime, \"applyHmrUpdate\");\n\t\t\texpect(Reflect.apply(applyHmrUpdate, runtime, [\n\t\t\t\tpatch.code,\n\t\t\t\tpatch.changedIds,\n\t\t\t\tpatch.seq\n\t\t\t])).toBe(true);\n\t\t\texpect(Reflect.get(globalThis, \"__vxrnRefreshBoundaryValue\")).toBe(\"v2\");\n\t\t\texpect(Reflect.get(globalThis, \"__vxrnRefreshBoundaryAccepted\")).toBe(true);\n\t\t} finally {\n\t\t\tawait engine.close();\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t\tReflect.deleteProperty(globalThis, \"__rolldown_runtime__\");\n\t\t\tReflect.deleteProperty(globalThis, \"__vxrnRefreshBoundaryValue\");\n\t\t\tReflect.deleteProperty(globalThis, \"__vxrnRefreshBoundaryAccepted\");\n\t\t\tif (previousRefreshRuntime === void 0) Reflect.deleteProperty(globalThis, \"__ReactRefresh\");\n\t\t\telse Reflect.set(globalThis, \"__ReactRefresh\", previousRefreshRuntime);\n\t\t}\n\t});\n});\ndescribe(\"native production import.meta lowering\", function() {\n\tit(\"emits a Hermes-compatible bundle for guarded import.meta.env reads\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-import-meta-\"));\n\t\tawait writeFile(join(testRoot, \"entry.js\"), `globalThis.__vxrnNativeImportMetaProbe = typeof import.meta !== 'undefined' && import.meta.env.DEV`);\n\t\ttry {\n\t\t\tvar result = await buildNativeBundle({\n\t\t\t\troot: testRoot,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\tentryFile: \"entry.js\"\n\t\t\t});\n\t\t\texpect(result.code).not.toContain(\"typeof import.meta\");\n\t\t\tvar context = {\n\t\t\t\tglobalThis: {},\n\t\t\t\tprocess: { env: {} }\n\t\t\t};\n\t\t\trunInNewContext(result.code, context);\n\t\t\texpect(Reflect.get(context.globalThis, \"__vxrnNativeImportMetaProbe\")).toBe(false);\n\t\t} finally {\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\ndescribe(\"native animated guard transform\", function() {\n\tit(\"preserves line count and returns a composable source map\", async function() {\n\t\tvar plugin = nativeAnimatedGuardPlugin();\n\t\tif (typeof plugin.transform !== \"function\") throw new Error(\"native animated guard transform hook is not callable\");\n\t\tvar source = [\n\t\t\t\"function call(methodName) {\",\n\t\t\t\" const method = nullthrows(NativeAnimatedModule)[methodName];\",\n\t\t\t\" method();\",\n\t\t\t\"}\"\n\t\t].join(\"\\n\");\n\t\tvar result = await Reflect.apply(plugin.transform, void 0, [source, \"/project/node_modules/react-native/src/private/animated/NativeAnimatedHelper.js\"]);\n\t\texpect(result.code.split(\"\\n\")).toHaveLength(source.split(\"\\n\").length);\n\t\texpect(result.code).toContain(\"if (typeof method !== 'function') return\");\n\t\texpect(result.map).toEqual({\n\t\t\tversion: 3,\n\t\t\tsources: [\"/project/node_modules/react-native/src/private/animated/NativeAnimatedHelper.js\"],\n\t\t\tsourcesContent: [source],\n\t\t\tnames: [],\n\t\t\tmappings: \"AAAA;AACA;AACA;AACA\"\n\t\t});\n\t});\n});\nvar root = \"/tmp/vxrn-native-env-define-test-nonexistent\";\ndescribe(\"getNativeTransformConfig platform env defines\", function() {\n\tvar _loop = function(_i2, _iter2) {\n\t\tvar _loop2 = function(_i12, _iter12) {\n\t\t\tvar dev2 = _iter12[_i12];\n\t\t\tit(`injects TAMAGUI_TARGET=native for ${platform} (dev=${dev2})`, function() {\n\t\t\t\tvar { define } = getNativeTransformConfig(platform, dev2, root);\n\t\t\t\texpect(define[\"import.meta.env.TAMAGUI_TARGET\"]).toBe(\"\\\"native\\\"\");\n\t\t\t\texpect(define[\"process.env.TAMAGUI_TARGET\"]).toBe(\"\\\"native\\\"\");\n\t\t\t\texpect(define[\"import.meta.env.TAMAGUI_ENVIRONMENT\"]).toBe(JSON.stringify(platform));\n\t\t\t\texpect(define[\"import.meta.env.VITE_ENVIRONMENT\"]).toBe(JSON.stringify(platform));\n\t\t\t\texpect(define[\"import.meta.env.VITE_NATIVE\"]).toBe(\"\\\"1\\\"\");\n\t\t\t\texpect(define[\"import.meta.env.EXPO_OS\"]).toBe(JSON.stringify(platform));\n\t\t\t\tvar envObject = JSON.parse(define[\"import.meta.env\"]);\n\t\t\t\texpect(envObject.TAMAGUI_TARGET).toBe(\"native\");\n\t\t\t\texpect(envObject.TAMAGUI_ENVIRONMENT).toBe(platform);\n\t\t\t});\n\t\t};\n\t\tvar platform = _iter2[_i2];\n\t\tfor (var _i1 = 0, _iter1 = [true, false]; _i1 < _iter1.length; _i1++) _loop2(_i1, _iter1);\n\t};\n\tfor (var _i = 0, _iter = [\"ios\", \"android\"]; _i < _iter.length; _i++) _loop(_i, _iter);\n\tit(\"inlines EXPO_PUBLIC values supplied by the native build environment\", function() {\n\t\tvar key = \"EXPO_PUBLIC_VXRN_NATIVE_ENV_PROBE\";\n\t\tvar previous = process.env[key];\n\t\tprocess.env[key] = \"native-env-value\";\n\t\ttry {\n\t\t\tvar { define } = getNativeTransformConfig(\"ios\", false, root);\n\t\t\texpect(define[`process.env.${key}`]).toBe(\"\\\"native-env-value\\\"\");\n\t\t\texpect(define[`import.meta.env.${key}`]).toBe(\"\\\"native-env-value\\\"\");\n\t\t\texpect(JSON.parse(define[\"import.meta.env\"])[key]).toBe(\"native-env-value\");\n\t\t} finally {\n\t\t\tif (previous === void 0) delete process.env[key];\n\t\t\telse process.env[key] = previous;\n\t\t}\n\t});\n});\ndescribe(\"wrapNativeBundleModuleScope\", function() {\n\tvar RUNTIME_MARKER = \"//#region \\\\0rolldown/runtime.js\";\n\tit(\"wraps module code after the prelude so top-level vars do not leak to global\", function() {\n\t\tvar out = wrapNativeBundleModuleScope(`globalThis.global = globalThis;\nglobalThis.__DEV__ = true;\n${RUNTIME_MARKER}\nvar fetch_hot, fetch$1, Headers, Request, Response$1;\nglobalThis.__rolldown_runtime__ = {};\n`);\n\t\tvar openIdx = out.indexOf(\";(function() {\");\n\t\texpect(openIdx).toBeGreaterThan(-1);\n\t\texpect(out.indexOf(\"globalThis.__DEV__\")).toBeLessThan(openIdx);\n\t\texpect(out.indexOf(\"var fetch_hot\")).toBeGreaterThan(openIdx);\n\t\texpect(function() {\n\t\t\treturn new Function(out);\n\t\t}).not.toThrow();\n\t});\n\tit(\"is a no-op when the runtime marker is absent (e.g. prod bundle)\", function() {\n\t\tvar input = \"var x = 1;\\nconsole.log(x);\\n\";\n\t\texpect(wrapNativeBundleModuleScope(input)).toBe(input);\n\t});\n});\ndescribe(\"getHermesSWCIncludes\", function() {\n\tvar CLASS_SET = [\n\t\t\"transform-classes\",\n\t\t\"transform-parameters\",\n\t\t\"transform-block-scoping\",\n\t\t\"transform-class-properties\",\n\t\t\"transform-class-static-block\",\n\t\t\"transform-private-methods\",\n\t\t\"transform-private-property-in-object\"\n\t];\n\tit(\"always includes the full Hermes class-transform set (dev and prod)\", function() {\n\t\texpect(getHermesSWCIncludes(true)).toEqual(expect.arrayContaining(CLASS_SET));\n\t\texpect(getHermesSWCIncludes(false)).toEqual(expect.arrayContaining(CLASS_SET));\n\t});\n\tit(\"adds transform-async-to-generator in development and production\", function() {\n\t\texpect(getHermesSWCIncludes(true)).toContain(\"transform-async-to-generator\");\n\t\texpect(getHermesSWCIncludes(false)).toContain(\"transform-async-to-generator\");\n\t});\n\tit(\"lowers async generators for the Hermes development interpreter\", async function() {\n\t\tvar plugin = hermesCompatSWCPlugin(true);\n\t\tif (typeof plugin.transform !== \"function\") throw new Error(\"Hermes compatibility transform hook is not callable\");\n\t\tvar result = await Reflect.apply(plugin.transform, void 0, [\"export async function* values() { yield await Promise.resolve(1) }\", \"/project/async-generator.ts\"]);\n\t\texpect(result.code).not.toContain(\"async function*\");\n\t\texpect(result.code).not.toContain(\"async function *\");\n\t});\n\tit(\"preserves per-iteration bindings used by lazy method getters\", async function() {\n\t\tvar plugin = hermesCompatSWCPlugin(true);\n\t\tif (typeof plugin.transform !== \"function\") throw new Error(\"Hermes compatibility transform hook is not callable\");\n\t\tvar result = await Reflect.apply(plugin.transform, void 0, [`\nconst installedGroups = new WeakMap()\nfunction install(inst, methods) {\n const proto = Object.getPrototypeOf(inst)\n for (const key in methods) {\n const fn = methods[key]\n Object.defineProperty(proto, key, {\n get() { return fn.bind(this) }\n })\n }\n}\nfunction Schema() {\n install(this, {\n nullish() { return 'nullish' },\n apply(fn) { return fn(this) }\n })\n}\nglobalThis.__vxrnBlockScopeProbe = new Schema().nullish()\n`, \"/project/block-scope-loop.ts\"]);\n\t\ttry {\n\t\t\tnew Function(result.code)();\n\t\t\texpect(Reflect.get(globalThis, \"__vxrnBlockScopeProbe\")).toBe(\"nullish\");\n\t\t} finally {\n\t\t\tReflect.deleteProperty(globalThis, \"__vxrnBlockScopeProbe\");\n\t\t}\n\t});\n\tit(\"bundles lowered classes whose constructors use default and rest parameters\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-hermes-parameters-\"));\n\t\tvar entry = join(testRoot, \"entry.js\");\n\t\tawait writeFile(entry, `\nclass ParameterProbe {\n prefix = 'value'\n\n constructor(value = 'default', ...rest) {\n this.result = [this.prefix, value, ...rest].join(':')\n }\n}\n\nexport const result = new ParameterProbe(undefined, 'rest-a', 'rest-b').result\n`);\n\t\tvar build = await rolldown({\n\t\t\tinput: entry,\n\t\t\tplugins: [hermesCompatSWCPlugin(true)]\n\t\t});\n\t\ttry {\n\t\t\tvar chunk = (await build.generate({ format: \"esm\" })).output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\";\n\t\t\t});\n\t\t\texpect(chunk).toBeTruthy();\n\t\t\tif (!chunk) throw new Error(\"Rolldown did not emit a JavaScript chunk\");\n\t\t\texpect((await import(`data:text/javascript;base64,${Buffer.from(chunk.code).toString(\"base64\")}`)).result).toBe(\"value:default:rest-a:rest-b\");\n\t\t} finally {\n\t\t\tawait build.close();\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\ndescribe(\"hmrClientNoopPlugin\", function() {\n\tvar plugin = hmrClientNoopPlugin();\n\tvar resolveId = plugin.resolveId;\n\tvar load = plugin.load;\n\tvar VIRTUAL_ID = \"\\0vxrn-hmr-client-noop\";\n\tit.each([\n\t\t[\"react-native/Libraries/Utilities/HMRClient\", void 0],\n\t\t[\"../Utilities/HMRClient\", \"/project/node_modules/react-native/Libraries/Core.js\"],\n\t\t[\"../../Utilities/HMRClient.js\", \"/project/react-native/Libraries/Core.js\"],\n\t\t[\"..\\\\Utilities\\\\HMRClient.js\", \"C:\\\\project\\\\react-native\\\\Libraries\\\\Core.js\"],\n\t\t[\"../Utilities/HMRClient.ts\", \"/project/node_modules/react-native/Core.js\"],\n\t\t[\"../Utilities/HMRClient.tsx\", \"/project/node_modules/react-native/Core.js\"],\n\t\t[\"../Utilities/HMRClient.cjs\", \"/project/node_modules/react-native/Core.js\"]\n\t])(\"aliases RN HMRClient specifier %j to the no-op virtual module\", function(source, importer) {\n\t\texpect(resolveId(source, importer)).toEqual({\n\t\t\tid: VIRTUAL_ID,\n\t\t\texternal: false\n\t\t});\n\t});\n\tit.each([\n\t\t\"react-native/Libraries/Utilities/HMRClientRegistry\",\n\t\t\"some/MyUtilities/HMRClient\",\n\t\t\"react-native/Libraries/Core/setUpDeveloperTools\",\n\t\t\"react\"\n\t])(\"does not touch unrelated specifier %j\", function(source) {\n\t\texpect(resolveId(source)).toBeUndefined();\n\t});\n\tit(\"does not alias an app-authored Utilities/HMRClient module\", function() {\n\t\texpect(resolveId(\"../Utilities/HMRClient\", \"/project/src/App.tsx\")).toBeUndefined();\n\t});\n\tit(\"loads a no-op module exposing every HMRClient method RN calls\", function() {\n\t\tvar result = load(VIRTUAL_ID);\n\t\texpect(result === null || result === void 0 ? void 0 : result.moduleType).toBe(\"js\");\n\t\tfor (var _i = 0, _iter = [\n\t\t\t\"setup\",\n\t\t\t\"enable\",\n\t\t\t\"disable\",\n\t\t\t\"registerBundle\",\n\t\t\t\"log\",\n\t\t\t\"isEnabled\"\n\t\t]; _i < _iter.length; _i++) {\n\t\t\tvar method = _iter[_i];\n\t\t\texpect(result.code).toContain(method);\n\t\t}\n\t\texpect(result.code).toContain(\"export default HMRClient\");\n\t});\n\tit(\"does not load unrelated ids\", function() {\n\t\texpect(load(\"\\0some-other-virtual\")).toBeUndefined();\n\t});\n});\ndescribe(\"vxrnCompilerPlugin React Refresh registration\", function() {\n\tit(\"keeps initial-bundle registrations visible to rolldown\", async function() {\n\t\tvar previousNodeEnv = process.env.NODE_ENV;\n\t\tprocess.env.NODE_ENV = \"test\";\n\t\ttry {\n\t\t\tvar transform = vxrnCompilerPlugin(\"ios\", true).transform;\n\t\t\tvar code = (await transform(\"export const marker = \\\"$RefreshReg$(\\\"; export function Probe() { return <div>probe</div> }\", \"/project/src/Probe.tsx\")).code;\n\t\t\texpect(code).toContain(\"var __vxrnRefreshReg = globalThis.$RefreshReg$\");\n\t\t\texpect(code).toContain(\"__vxrnRefreshReg(\");\n\t\t\texpect(code).toContain(\"\\\"$RefreshReg$(\\\"\");\n\t\t\texpect(code).toContain(\"import.meta.hot.acceptReactRefresh(\");\n\t\t} finally {\n\t\t\tprocess.env.NODE_ENV = previousNodeEnv;\n\t\t}\n\t});\n});\ndescribe(\"native required transform failures\", function() {\n\tit.each([true, false])(\"rejects valid worklet source when its required compiler transform fails (dev=%s)\", async function(dev2) {\n\t\tvar testRoot = await createWorkletsProject();\n\t\tvar compiler = await import(\"@vxrn/compiler\");\n\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: true });\n\t\ttry {\n\t\t\tvar plugin = vxrnCompilerPlugin(\"ios\", dev2, testRoot);\n\t\t\tif (typeof plugin.transform !== \"function\") throw new Error(\"vxrn compiler transform hook is not callable\");\n\t\t\tawait expect(Reflect.apply(plugin.transform, void 0, [nativeTransformProbe, join(testRoot, \"entry.ts\")])).rejects.toThrow(\"NATIVE_TRANSFORM_NEGATIVE_CONTROL\");\n\t\t} finally {\n\t\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: false });\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"returns a dev build error and no output when the required compiler transform fails\", async function() {\n\t\tvar testRoot = await createWorkletsProject();\n\t\tvar compiler = await import(\"@vxrn/compiler\");\n\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: true });\n\t\tvar resolveOutput;\n\t\tvar output = new Promise(function(resolve) {\n\t\t\tresolveOutput = resolve;\n\t\t});\n\t\tvar engine = await dev({\n\t\t\tcwd: testRoot,\n\t\t\tinput: join(testRoot, \"entry.ts\"),\n\t\t\tplugins: [vxrnCompilerPlugin(\"ios\", true, testRoot)]\n\t\t}, { format: \"esm\" }, { onOutput: resolveOutput });\n\t\ttry {\n\t\t\tawait engine.run();\n\t\t\tvar result = await output;\n\t\t\texpect(result).toBeInstanceOf(Error);\n\t\t\texpect(String(result)).toContain(\"NATIVE_TRANSFORM_NEGATIVE_CONTROL\");\n\t\t} finally {\n\t\t\tawait engine.close();\n\t\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: false });\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"emits no production bundle when the required compiler transform fails\", async function() {\n\t\tvar testRoot = await createWorkletsProject();\n\t\tvar compiler = await import(\"@vxrn/compiler\");\n\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: true });\n\t\ttry {\n\t\t\tawait expect(buildNativeBundle({\n\t\t\t\troot: testRoot,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\tentryFile: \"entry.ts\"\n\t\t\t})).rejects.toThrow(\"NATIVE_TRANSFORM_NEGATIVE_CONTROL\");\n\t\t} finally {\n\t\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: false });\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"rejects Hermes compatibility transform errors instead of returning source\", async function() {\n\t\tvar plugin = hermesCompatSWCPlugin(true);\n\t\tif (typeof plugin.transform !== \"function\") throw new Error(\"Hermes compatibility transform hook is not callable\");\n\t\tawait expect(Reflect.apply(plugin.transform, void 0, [\"class TransformProbe { value = ; }\", \"/project/TransformProbe.ts\"])).rejects.toBeTruthy();\n\t});\n\tit(\"returns maps for every required production transform\", async function() {\n\t\tvar testRoot = await createWorkletsProject(false);\n\t\tvar compiler = await import(\"@vxrn/compiler\");\n\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: true });\n\t\ttry {\n\t\t\tvar compilerPlugin = vxrnCompilerPlugin(\"ios\", false, testRoot, true);\n\t\t\tif (typeof compilerPlugin.transform !== \"function\") throw new Error(\"vxrn compiler transform hook is not callable\");\n\t\t\texpect((await Reflect.apply(compilerPlugin.transform, void 0, [nativeTransformProbe, join(testRoot, \"entry.ts\")])).map).toBeTruthy();\n\t\t\tvar hermesPlugin = hermesCompatSWCPlugin(false, true);\n\t\t\tif (typeof hermesPlugin.transform !== \"function\") throw new Error(\"Hermes compatibility transform hook is not callable\");\n\t\t\texpect((await Reflect.apply(hermesPlugin.transform, void 0, [\"export class TransformProbe { value = 1 }\", join(testRoot, \"TransformProbe.ts\")])).map).toBeTruthy();\n\t\t} finally {\n\t\t\tcompiler.configureVXRNCompilerPlugin({ enableReanimated: false });\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\ndescribe(\"native production assets\", function() {\n\tit(\"registers scale siblings and keeps monorepo assets inside assetsDest\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-assets-\"));\n\t\tvar appRoot = join(testRoot, \"workspace/apps/native-app\");\n\t\tvar appAssets = join(appRoot, \"assets\");\n\t\tvar packageAssets = join(testRoot, \"workspace/node_modules/example/assets\");\n\t\tvar assetsDest = join(testRoot, \"output\");\n\t\tawait mkdir(appAssets, { recursive: true });\n\t\tawait mkdir(packageAssets, { recursive: true });\n\t\tawait writeFile(join(appAssets, \"icon.png\"), \"icon-1x\");\n\t\tawait writeFile(join(appAssets, \"icon@2x.png\"), \"icon-2x\");\n\t\tawait writeFile(join(appAssets, \"icon@3x.png\"), \"icon-3x\");\n\t\tawait writeFile(join(packageAssets, \"back.png\"), \"back-1x\");\n\t\tawait writeFile(join(packageAssets, \"back@2x.png\"), \"back-2x\");\n\t\tawait writeFile(join(appRoot, \"entry.js\"), `\nimport icon from './assets/icon.png'\nimport back from '../../node_modules/example/assets/back.png'\nglobalThis.__nativeAssetProbe = [icon, back]\n`);\n\t\ttry {\n\t\t\tvar _registry_resolve;\n\t\t\tvar assetData = await getNativeAssetData(join(appAssets, \"icon.png\"), appRoot, \"ios\");\n\t\t\texpect(assetData.scales).toEqual([\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t\t3\n\t\t\t]);\n\t\t\texpect(assetData.files.map(function(file2) {\n\t\t\t\treturn file2.slice(appAssets.length + 1);\n\t\t\t})).toEqual([\n\t\t\t\t\"icon.png\",\n\t\t\t\t\"icon@2x.png\",\n\t\t\t\t\"icon@3x.png\"\n\t\t\t]);\n\t\t\texpect(assetData.hash).not.toBe(\"\");\n\t\t\tvar registry = createNativeDevAssetRegistry();\n\t\t\tregistry.register(assetData);\n\t\t\texpect((_registry_resolve = registry.resolve(\"/assets/assets/icon@2x.png\", assetData.hash)) === null || _registry_resolve === void 0 ? void 0 : _registry_resolve.filePath).toBe(join(appAssets, \"icon@2x.png\"));\n\t\t\texpect(registry.resolve(\"/assets/assets/icon.png\", \"stale-content-hash\")).toBeUndefined();\n\t\t\texpect(registry.resolve(\"/assets/../../package.json\", assetData.hash)).toBeUndefined();\n\t\t\texpect((await buildNativeBundle({\n\t\t\t\troot: appRoot,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\tentryFile: \"entry.js\",\n\t\t\t\tassetsDest\n\t\t\t})).code).toMatch(/\"scales\":\\s*\\[\\s*1,\\s*2,\\s*3\\s*\\]/);\n\t\t\tfor (var _i = 0, _iter = [\n\t\t\t\t\"icon.png\",\n\t\t\t\t\"icon@2x.png\",\n\t\t\t\t\"icon@3x.png\"\n\t\t\t]; _i < _iter.length; _i++) {\n\t\t\t\tvar file = _iter[_i];\n\t\t\t\texpect(existsSync(join(assetsDest, \"assets/assets\", file))).toBe(true);\n\t\t\t}\n\t\t\tfor (var _i1 = 0, _iter1 = [\"back.png\", \"back@2x.png\"]; _i1 < _iter1.length; _i1++) {\n\t\t\t\tvar file1 = _iter1[_i1];\n\t\t\t\texpect(existsSync(join(assetsDest, \"assets/_/_/node_modules/example/assets\", file1))).toBe(true);\n\t\t\t}\n\t\t\texpect(existsSync(join(testRoot, \"node_modules/example/assets/back.png\"))).toBe(false);\n\t\t} finally {\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\ndescribe(\"native conditional exports\", function() {\n\tit(\"uses the require condition for CommonJS calls\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-conditions-\"));\n\t\tvar packageRoot = join(testRoot, \"node_modules/conditional-helper\");\n\t\tawait mkdir(packageRoot, { recursive: true });\n\t\tawait writeFile(join(packageRoot, \"package.json\"), JSON.stringify({\n\t\t\tname: \"conditional-helper\",\n\t\t\texports: { \".\": {\n\t\t\t\timport: \"./esm.js\",\n\t\t\t\trequire: \"./cjs.cjs\"\n\t\t\t} },\n\t\t\ttype: \"module\"\n\t\t}));\n\t\tawait writeFile(join(packageRoot, \"esm.js\"), `export default function helper() { return 'import' }`);\n\t\tawait writeFile(join(packageRoot, \"cjs.cjs\"), `module.exports = function helper() { return 'require' }`);\n\t\tawait writeFile(join(testRoot, \"entry.cjs\"), `\nconst helper = require('conditional-helper')\nglobalThis.__vxrnConditionalExportProbe = helper()\n`);\n\t\ttry {\n\t\t\tvar result = await buildNativeBundle({\n\t\t\t\troot: testRoot,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\tentryFile: \"entry.cjs\",\n\t\t\t\tdev: true\n\t\t\t});\n\t\t\tvar context = {\n\t\t\t\tclearTimeout,\n\t\t\t\tconsole,\n\t\t\t\tprocess: { env: {} },\n\t\t\t\tsetTimeout\n\t\t\t};\n\t\t\trunInNewContext(result.code, context);\n\t\t\texpect(Reflect.get(context, \"__vxrnConditionalExportProbe\")).toBe(\"require\");\n\t\t} finally {\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"unwraps the default export of Babel CommonJS modules in dev output\", { timeout: 3e4 }, async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-cjs-default-\"));\n\t\tvar packageRoot = join(testRoot, \"node_modules/default-export-helper\");\n\t\tawait mkdir(packageRoot, { recursive: true });\n\t\tawait writeFile(join(packageRoot, \"package.json\"), JSON.stringify({\n\t\t\tname: \"default-export-helper\",\n\t\t\tmain: \"./index.js\"\n\t\t}));\n\t\tawait writeFile(join(packageRoot, \"index.js\"), `Object.defineProperty(exports, '__esModule', { value: true }); exports.default = function Component() {}`);\n\t\tawait writeFile(join(testRoot, \"entry.js\"), `import Component from 'default-export-helper'; globalThis.__vxrnCjsDefaultProbe = typeof Component`);\n\t\tvar resolveOutput;\n\t\tvar output = new Promise(function(resolve) {\n\t\t\tresolveOutput = resolve;\n\t\t});\n\t\tvar engine = await dev({\n\t\t\tcwd: testRoot,\n\t\t\tinput: join(testRoot, \"entry.js\"),\n\t\t\texperimental: { devMode: { implement: getHmrRuntimeSource() } }\n\t\t}, {\n\t\t\tformat: \"esm\",\n\t\t\tcodeSplitting: false,\n\t\t\tstrictExecutionOrder: true\n\t\t}, { onOutput: resolveOutput });\n\t\ttry {\n\t\t\tawait engine.run();\n\t\t\tvar result = await output;\n\t\t\tif (_instanceof(result, Error)) throw result;\n\t\t\tvar chunk = result.output.find(function(item) {\n\t\t\t\treturn item.type === \"chunk\" && item.isEntry;\n\t\t\t});\n\t\t\tif (!chunk || chunk.type !== \"chunk\") throw new Error(\"Rolldown did not emit a native dev entry chunk\");\n\t\t\tvar nodeModeCode = chunk.code.replace(/(\\b__toESM(?:\\$\\d+)?\\(\\s*require[\\w$]*\\(\\)\\s*)\\)/, \"$1, 1)\");\n\t\t\texpect(nodeModeCode).not.toBe(chunk.code);\n\t\t\tReflect.deleteProperty(globalThis, \"__rolldown_runtime__\");\n\t\t\tawait import(`data:text/javascript;base64,${Buffer.from(nodeModeCode).toString(\"base64\")}`);\n\t\t\texpect(Reflect.get(globalThis, \"__vxrnCjsDefaultProbe\")).toBe(\"object\");\n\t\t\tReflect.deleteProperty(globalThis, \"__rolldown_runtime__\");\n\t\t\tReflect.deleteProperty(globalThis, \"__vxrnCjsDefaultProbe\");\n\t\t\tvar normalized = normalizeNativeCommonJSInterop(nodeModeCode);\n\t\t\tawait import(`data:text/javascript;base64,${Buffer.from(normalized).toString(\"base64\")}`);\n\t\t\texpect(Reflect.get(globalThis, \"__vxrnCjsDefaultProbe\")).toBe(\"function\");\n\t\t} finally {\n\t\t\tawait engine.close();\n\t\t\tReflect.deleteProperty(globalThis, \"__rolldown_runtime__\");\n\t\t\tReflect.deleteProperty(globalThis, \"__vxrnCjsDefaultProbe\");\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"unwraps the default export of Babel CommonJS modules in production output\", async function() {\n\t\tvar testRoot = await mkdtemp(join(tmpdir(), \"vxrn-native-prod-cjs-default-\"));\n\t\tvar packageRoot = join(testRoot, \"node_modules/default-export-helper\");\n\t\tawait mkdir(packageRoot, { recursive: true });\n\t\tawait writeFile(join(packageRoot, \"package.json\"), JSON.stringify({\n\t\t\tname: \"default-export-helper\",\n\t\t\tmain: \"./index.js\"\n\t\t}));\n\t\tawait writeFile(join(packageRoot, \"index.js\"), `Object.defineProperty(exports, '__esModule', { value: true }); exports.default = function Component() {}`);\n\t\tawait writeFile(join(testRoot, \"entry.js\"), `import Component from 'default-export-helper'; globalThis.__vxrnProdCjsDefaultProbe = typeof Component`);\n\t\ttry {\n\t\t\tvar result = await buildNativeBundle({\n\t\t\t\troot: testRoot,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\tentryFile: \"entry.js\"\n\t\t\t});\n\t\t\tvar context = {\n\t\t\t\tclearTimeout,\n\t\t\t\tconsole,\n\t\t\t\tprocess: { env: {} },\n\t\t\t\tsetTimeout\n\t\t\t};\n\t\t\trunInNewContext(result.code, context);\n\t\t\texpect(Reflect.get(context, \"__vxrnProdCjsDefaultProbe\")).toBe(\"function\");\n\t\t} finally {\n\t\t\tawait rm(testRoot, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n});\n\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vxrn",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.9",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -62,16 +62,16 @@
|
|
|
62
62
|
"@expo/config-plugins": "~57.0.6",
|
|
63
63
|
"@hono/node-server": "^1.19.14",
|
|
64
64
|
"@react-native/dev-middleware": "^0.86.2",
|
|
65
|
-
"@vxrn/compiler": "1.25.
|
|
66
|
-
"@vxrn/debug": "1.25.
|
|
67
|
-
"@vxrn/query-string": "1.25.
|
|
68
|
-
"@vxrn/resolve": "1.25.
|
|
69
|
-
"@vxrn/safe-area": "1.25.
|
|
70
|
-
"@vxrn/url-parse": "1.25.
|
|
71
|
-
"@vxrn/utils": "1.25.
|
|
72
|
-
"@vxrn/vendor": "1.25.
|
|
73
|
-
"@vxrn/vite-flow": "1.25.
|
|
74
|
-
"@vxrn/vite-plugin-metro": "1.25.
|
|
65
|
+
"@vxrn/compiler": "1.25.9",
|
|
66
|
+
"@vxrn/debug": "1.25.9",
|
|
67
|
+
"@vxrn/query-string": "1.25.9",
|
|
68
|
+
"@vxrn/resolve": "1.25.9",
|
|
69
|
+
"@vxrn/safe-area": "1.25.9",
|
|
70
|
+
"@vxrn/url-parse": "1.25.9",
|
|
71
|
+
"@vxrn/utils": "1.25.9",
|
|
72
|
+
"@vxrn/vendor": "1.25.9",
|
|
73
|
+
"@vxrn/vite-flow": "1.25.9",
|
|
74
|
+
"@vxrn/vite-plugin-metro": "1.25.9",
|
|
75
75
|
"citty": "^0.1.6",
|
|
76
76
|
"dotenv": "^17.2.1",
|
|
77
77
|
"dotenv-expand": "^12.0.2",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest'
|
|
2
|
+
import type { VXRNOptionsFilled } from './getOptionsFilled'
|
|
3
|
+
import { getViteServerConfig } from './getViteServerConfig'
|
|
4
|
+
|
|
5
|
+
describe('getViteServerConfig', () => {
|
|
6
|
+
test('preserves the resolved CLI address over a static Vite server block', async () => {
|
|
7
|
+
const config = {
|
|
8
|
+
root: process.cwd(),
|
|
9
|
+
mode: 'development',
|
|
10
|
+
server: {
|
|
11
|
+
host: '127.0.0.1',
|
|
12
|
+
https: undefined,
|
|
13
|
+
port: 4301,
|
|
14
|
+
},
|
|
15
|
+
} as VXRNOptionsFilled
|
|
16
|
+
|
|
17
|
+
const result = await getViteServerConfig(config, {
|
|
18
|
+
server: {
|
|
19
|
+
host: '0.0.0.0',
|
|
20
|
+
port: 4280,
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
expect(result.server).toMatchObject({
|
|
25
|
+
host: '127.0.0.1',
|
|
26
|
+
port: 4301,
|
|
27
|
+
})
|
|
28
|
+
})
|
|
29
|
+
})
|
|
@@ -54,6 +54,17 @@ export async function getViteServerConfig(
|
|
|
54
54
|
|
|
55
55
|
serverConfig = mergeUserConfig(optimizeDeps, serverConfig, mergableUserConf)
|
|
56
56
|
|
|
57
|
+
// fillOptions has already resolved the CLI/env address and checked that an
|
|
58
|
+
// explicitly requested port is available. Preserve that resolved address
|
|
59
|
+
// after merging the user's Vite config so a static server block cannot
|
|
60
|
+
// silently route this CLI launch back to a different server.
|
|
61
|
+
serverConfig.server = {
|
|
62
|
+
...serverConfig.server,
|
|
63
|
+
host: server.host,
|
|
64
|
+
https: server.https,
|
|
65
|
+
port: server.port,
|
|
66
|
+
}
|
|
67
|
+
|
|
57
68
|
if (rerouteNoExternalConfig) {
|
|
58
69
|
serverConfig.ssr!.noExternal = true
|
|
59
70
|
}
|
package/src/exports/dev.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process'
|
|
1
2
|
import FSExtra from 'fs-extra'
|
|
2
3
|
import colors from 'picocolors'
|
|
3
4
|
import { debounce } from 'perfect-debounce'
|
|
@@ -6,14 +7,44 @@ import type { VXRNOptions } from '../types'
|
|
|
6
7
|
|
|
7
8
|
const { ensureDir } = FSExtra
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
function readParentPid(pid: number): number | undefined {
|
|
11
|
+
try {
|
|
12
|
+
const output = execFileSync('ps', ['-o', 'ppid=', '-p', `${pid}`], {
|
|
13
|
+
encoding: 'utf8',
|
|
14
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
15
|
+
}).trim()
|
|
16
|
+
const ppid = Number.parseInt(output, 10)
|
|
17
|
+
return Number.isFinite(ppid) ? ppid : undefined
|
|
18
|
+
} catch {
|
|
19
|
+
return undefined
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function processExists(pid: number): boolean {
|
|
24
|
+
try {
|
|
25
|
+
process.kill(pid, 0)
|
|
26
|
+
return true
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return (error as NodeJS.ErrnoException).code !== 'ESRCH'
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Exit if we become orphaned (parent dies). `bun run` stays between One and
|
|
33
|
+
// its launcher, so monitor the launcher's PID too instead of only Bun's PID.
|
|
10
34
|
function setupOrphanDetection() {
|
|
11
35
|
if (process.platform === 'win32') return
|
|
12
36
|
|
|
13
37
|
const initialPpid = process.ppid
|
|
38
|
+
const launcherPid = readParentPid(initialPpid)
|
|
39
|
+
if (initialPpid === 1 || launcherPid === 1) {
|
|
40
|
+
process.exit(0)
|
|
41
|
+
}
|
|
42
|
+
|
|
14
43
|
const interval = setInterval(() => {
|
|
15
|
-
|
|
16
|
-
|
|
44
|
+
if (
|
|
45
|
+
process.ppid !== initialPpid ||
|
|
46
|
+
(launcherPid !== undefined && !processExists(launcherPid))
|
|
47
|
+
) {
|
|
17
48
|
process.exit(0)
|
|
18
49
|
}
|
|
19
50
|
}, 500)
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
} from '../utils/connectedNativeClients'
|
|
8
8
|
import type { VXRNOptionsFilled } from '../config/getOptionsFilled'
|
|
9
9
|
import { URL } from 'node:url'
|
|
10
|
+
import { readFile } from 'node:fs/promises'
|
|
10
11
|
import { createDevMiddleware } from '@react-native/dev-middleware'
|
|
11
12
|
import { createNativeDevEngine } from '../utils/createNativeDevEngine'
|
|
12
13
|
import { getBoundPort } from '../utils/getBoundPort'
|
|
@@ -22,6 +23,36 @@ type NativeHmrSocket = WebSocket & {
|
|
|
22
23
|
vxrnPlatform: 'ios' | 'android'
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
export function getNativeAssetContentType(type: string): string {
|
|
27
|
+
switch (type.toLowerCase()) {
|
|
28
|
+
case 'bmp':
|
|
29
|
+
return 'image/bmp'
|
|
30
|
+
case 'gif':
|
|
31
|
+
return 'image/gif'
|
|
32
|
+
case 'jpeg':
|
|
33
|
+
case 'jpg':
|
|
34
|
+
return 'image/jpeg'
|
|
35
|
+
case 'json':
|
|
36
|
+
return 'application/json'
|
|
37
|
+
case 'otf':
|
|
38
|
+
return 'font/otf'
|
|
39
|
+
case 'png':
|
|
40
|
+
return 'image/png'
|
|
41
|
+
case 'svg':
|
|
42
|
+
return 'image/svg+xml'
|
|
43
|
+
case 'ttf':
|
|
44
|
+
return 'font/ttf'
|
|
45
|
+
case 'webp':
|
|
46
|
+
return 'image/webp'
|
|
47
|
+
case 'woff':
|
|
48
|
+
return 'font/woff'
|
|
49
|
+
case 'woff2':
|
|
50
|
+
return 'font/woff2'
|
|
51
|
+
default:
|
|
52
|
+
return 'application/octet-stream'
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
25
56
|
export function createReactNativeDevServerPlugin(
|
|
26
57
|
options?: Partial<
|
|
27
58
|
Pick<VXRNOptionsFilled, 'cacheDir' | 'debugBundle' | 'debugBundlePaths' | 'entries'>
|
|
@@ -36,6 +67,15 @@ export function createReactNativeDevServerPlugin(
|
|
|
36
67
|
const hmrWSS = new WebSocketServer({ noServer: true })
|
|
37
68
|
const clientWSS = new WebSocketServer({ noServer: true })
|
|
38
69
|
const messageWSS = createMessageSocket()
|
|
70
|
+
const validPlatforms: Record<string, 'ios' | 'android' | undefined> = {
|
|
71
|
+
ios: 'ios',
|
|
72
|
+
android: 'android',
|
|
73
|
+
}
|
|
74
|
+
const devEngines: Record<
|
|
75
|
+
string,
|
|
76
|
+
Awaited<ReturnType<typeof createNativeDevEngine>> | null
|
|
77
|
+
> = {}
|
|
78
|
+
const devEngineCreating: Record<string, Promise<unknown> | null> = {}
|
|
39
79
|
|
|
40
80
|
const devToolsSocketEndpoints = ['/inspector/device', '/inspector/debug']
|
|
41
81
|
const reactNativeDevToolsUrl = `http://${host}:${getBoundPort(server)}`
|
|
@@ -47,6 +87,55 @@ export function createReactNativeDevServerPlugin(
|
|
|
47
87
|
},
|
|
48
88
|
})
|
|
49
89
|
|
|
90
|
+
// Native AssetSourceResolver requests the URL registered in the Rolldown
|
|
91
|
+
// bundle. Install this before React Native's generic middleware, which
|
|
92
|
+
// otherwise terminates unknown /assets requests with an HTML 404.
|
|
93
|
+
server.middlewares.use(async (req, res, next) => {
|
|
94
|
+
if (req.method !== 'GET' && req.method !== 'HEAD') return next()
|
|
95
|
+
|
|
96
|
+
const rawUrl = req.url || '/'
|
|
97
|
+
const rawPathname = rawUrl.split('?', 1)[0]
|
|
98
|
+
if (!rawPathname.startsWith('/assets/')) return next()
|
|
99
|
+
|
|
100
|
+
const url = new URL(rawUrl, `http://${req.headers.host || 'localhost'}`)
|
|
101
|
+
|
|
102
|
+
const platform = validPlatforms[url.searchParams.get('platform') || '']
|
|
103
|
+
const engine = platform ? devEngines[platform] : undefined
|
|
104
|
+
if (!engine) return next()
|
|
105
|
+
|
|
106
|
+
let pathname: string
|
|
107
|
+
try {
|
|
108
|
+
pathname = decodeURIComponent(rawPathname)
|
|
109
|
+
} catch {
|
|
110
|
+
res.writeHead(400, { 'Content-Type': 'text/plain' })
|
|
111
|
+
res.end('Invalid native asset path')
|
|
112
|
+
return
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const asset = engine.getAsset(pathname, url.searchParams.get('hash') || undefined)
|
|
116
|
+
if (!asset) {
|
|
117
|
+
res.writeHead(404, { 'Content-Type': 'text/plain' })
|
|
118
|
+
res.end('Native asset not found')
|
|
119
|
+
return
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
const contents = await readFile(asset.filePath)
|
|
124
|
+
res.writeHead(200, {
|
|
125
|
+
'Cache-Control': 'no-cache',
|
|
126
|
+
'Content-Length': String(contents.byteLength),
|
|
127
|
+
'Content-Type': getNativeAssetContentType(asset.type),
|
|
128
|
+
})
|
|
129
|
+
res.end(req.method === 'HEAD' ? undefined : contents)
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error(
|
|
132
|
+
`[vxrn] failed to serve native asset ${pathname}: ${error instanceof Error ? error.message : String(error)}`
|
|
133
|
+
)
|
|
134
|
+
res.writeHead(500, { 'Content-Type': 'text/plain' })
|
|
135
|
+
res.end('Failed to read native asset')
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
|
|
50
139
|
server.middlewares.use(middleware)
|
|
51
140
|
|
|
52
141
|
// link up sockets
|
|
@@ -177,18 +266,6 @@ export function createReactNativeDevServerPlugin(
|
|
|
177
266
|
})
|
|
178
267
|
})
|
|
179
268
|
|
|
180
|
-
const validPlatforms: Record<string, 'ios' | 'android' | undefined> = {
|
|
181
|
-
ios: 'ios',
|
|
182
|
-
android: 'android',
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// rolldown DevEngine instances (per platform)
|
|
186
|
-
const devEngines: Record<
|
|
187
|
-
string,
|
|
188
|
-
Awaited<ReturnType<typeof createNativeDevEngine>> | null
|
|
189
|
-
> = {}
|
|
190
|
-
const devEngineCreating: Record<string, Promise<any> | null> = {}
|
|
191
|
-
|
|
192
269
|
// React Native bundle handler
|
|
193
270
|
const handleRNBundle: Connect.NextHandleFunction = async (req, res) => {
|
|
194
271
|
const url = new URL(req.url!, `http://${req.headers.host}`)
|
|
@@ -30,6 +30,13 @@ global.self = global.self || global;
|
|
|
30
30
|
global.navigator = global.navigator || { product: 'ReactNative', userAgent: '' };
|
|
31
31
|
global.performance = global.performance || { now: function() { return Date.now(); } };
|
|
32
32
|
|
|
33
|
+
// hermes can expose addEventListener without the matching removal API. browser
|
|
34
|
+
// libraries use addEventListener as their capability check, then crash during
|
|
35
|
+
// cleanup. keep the incomplete host API from advertising browser event support.
|
|
36
|
+
if (typeof global.addEventListener === 'function' && typeof global.removeEventListener !== 'function') {
|
|
37
|
+
global.addEventListener = undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
33
40
|
// ErrorUtils - used by RN's error handling system
|
|
34
41
|
if (!global.ErrorUtils) {
|
|
35
42
|
var _handler = null;
|