@vxrn/vite-plugin-metro 1.27.0 → 1.27.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.
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +18 -4
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +18 -4
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.test.cjs +132 -0
- package/dist/cjs/transformer/metroNativeWorker.test.native.js +139 -0
- package/dist/cjs/transformer/metroNativeWorker.test.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +18 -4
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +18 -4
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.test.mjs +130 -1
- package/dist/esm/transformer/metroNativeWorker.test.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.test.native.js +137 -1
- package/dist/esm/transformer/metroNativeWorker.test.native.js.map +1 -1
- package/package.json +4 -4
- package/src/metro-config/getMetroConfigFromViteConfig.ts +43 -30
- package/src/transformer/loadBabelConfig.ts +2 -0
- package/src/transformer/metroNativeWorker.test.ts +154 -1
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/transformer/loadBabelConfig.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["beforeEach","describe","expect","it","vi","vm","parseSync","fs","path","createRequire","applyEnvironmentGuard","applyInlineEnvVars","assertNoUnportedBabelPlugins","extractDependencies","getCacheKey","getRemoveServerCodeRouterRoot","transform","wrapModule","buildMetroConfigInputFromViteConfig","__require","x","require","Proxy","get","a","b","apply","arguments","Error","babelCalls","transformSync","transformAsync","transformFromAstSync","parse","mock","importOriginal","actual","fn","args","assertZeroBabelCalls","toBe","each","filename","sourceMap","result","minifierPath","import","meta","url","resolve","minifierConfig","Buffer","from","endsWith","dev","minify","platform","type","module","exports","code","map","output","data","runInNewContext","__d","factory","answer","every","entry","length","source","mangle","msm","fullMap","fromRawMappings","toMap","offset","indexOf","toBeGreaterThan","prefix","slice","split","position","Consumer","originalPositionFor","line","column","at","deps","names","d","name","toContain","not","reactDep","find","isESMImportAtSource","asyncType","toBeNull","locs","loc","start","toBeGreaterThanOrEqual","end","helperDep","isOptional","toBeUndefined","on","allowOptionalDependencies","exclude","wrappedWithoutId","moduleId","dependencyIds","toHaveLength","lineCount","depNames","dependencies","sourceCode","Object","entries","toMatch","jsonSource","JSON","stringify","version","toEqual","assetRegistryPath","publicPath","key1","globalPrefix","projectRoot","key2","key3","mockViteConfig","root","process","cwd","env","ONE_METRO_NATIVE_TRANSFORMS","configDefault","defaultConfig","transformerPath","transformer","nativeTransforms","tempDir","join","Date","now","mkdirSync","recursive","writeFileSync","babelConfigPath","rmSync","force","depSource","aSource","depRes","aRes","aEmittedCode","polyfillPath","polyfillCode","readFileSync","contextObj","__DEV__","__METRO_GLOBAL_PREFIX__","console","global","createContext","runInContext","doubled","message","res","emitted","syncDep","asyncDep","toBeDefined","index","syncIndex","Array","isArray","tuple","toHaveProperty","consumer","addLineIndex","findIndex","l","includes","mainSource","mainRes","emittedMain","asyncRequirePath","wrappedAsyncRequire","isDev","mainFn","promise","Promise","then","resolved","default","resWrapped","fullMapWrapped","consumerWrapped","linesWrapped","lineIndexWrapped","generatedColWrapped","posWrapped","Number","resUnwrapped","unstable_disableModuleWrapping","fullMapUnwrapped","consumerUnwrapped","linesUnwrapped","lineIndexUnwrapped","generatedColUnwrapped","posUnwrapped","contextParams","calls","ctx","req","push","keys","context","asHermesWouldSeeIt","replace","collect","ONE_SERVER_URL","src","out","DEV","VITE_POSTHOG_API_KEY","TAMAGUI_TARGET","VITE_ENVIRONMENT","SSR","API","dynamic","dirname","customTransformOptions","vite","nativeTransformModules","withPlugins","plugins","babelConfig","toThrow","routerRoot","alias","parsed","lang","errors","program","body","n"],"sources":["metroNativeWorker.test.mjs"],"sourcesContent":["import { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport * as vm from \"node:vm\";\nimport { parseSync } from \"oxc-parser\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { applyEnvironmentGuard, applyInlineEnvVars, assertNoUnportedBabelPlugins, extractDependencies, getCacheKey, getRemoveServerCodeRouterRoot, transform, wrapModule } from \"./metroNativeWorker\";\nimport { buildMetroConfigInputFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\n\nvar __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, { get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b] }) : x)(function(x) {\n\tif (typeof require !== \"undefined\") return require.apply(this, arguments);\n\tthrow Error(\"Calling `require` for \\\"\" + x + \"\\\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.\");\n});\n\nconst babelCalls = {\n\ttransform: 0,\n\ttransformSync: 0,\n\ttransformAsync: 0,\n\ttransformFromAstSync: 0,\n\tparse: 0,\n\tparseSync: 0\n};\nvi.mock(\"@babel/core\", async (importOriginal) => {\n\tconst actual = await importOriginal();\n\treturn {\n\t\t...actual,\n\t\ttransform: vi.fn((...args) => {\n\t\t\tbabelCalls.transform++;\n\t\t\treturn actual.transform(...args);\n\t\t}),\n\t\ttransformSync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformSync++;\n\t\t\treturn actual.transformSync(...args);\n\t\t}),\n\t\ttransformAsync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformAsync++;\n\t\t\treturn actual.transformAsync(...args);\n\t\t}),\n\t\ttransformFromAstSync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformFromAstSync++;\n\t\t\treturn actual.transformFromAstSync(...args);\n\t\t}),\n\t\tparse: vi.fn((...args) => {\n\t\t\tbabelCalls.parse++;\n\t\t\treturn actual.parse(...args);\n\t\t}),\n\t\tparseSync: vi.fn((...args) => {\n\t\t\tbabelCalls.parseSync++;\n\t\t\treturn actual.parseSync(...args);\n\t\t})\n\t};\n});\nbeforeEach(() => {\n\tbabelCalls.transform = 0;\n\tbabelCalls.transformSync = 0;\n\tbabelCalls.transformAsync = 0;\n\tbabelCalls.transformFromAstSync = 0;\n\tbabelCalls.parse = 0;\n\tbabelCalls.parseSync = 0;\n});\nfunction assertZeroBabelCalls() {\n\texpect(babelCalls.transform).toBe(0);\n\texpect(babelCalls.transformSync).toBe(0);\n\texpect(babelCalls.transformAsync).toBe(0);\n\texpect(babelCalls.transformFromAstSync).toBe(0);\n\texpect(babelCalls.parse).toBe(0);\n\texpect(babelCalls.parseSync).toBe(0);\n}\ndescribe(\"metroNativeWorker\", () => {\n\tit.each([\n\t\t[\"data.json\", true],\n\t\t[\"data.json\", false],\n\t\t[\"data.js\", false]\n\t])(\"minifies %s with source maps enabled=%s without stale mappings\", async (filename, sourceMap) => {\n\t\tconst result = await transform({\n\t\t\tminifierPath: createRequire(import.meta.url).resolve(\"metro-minify-terser\"),\n\t\t\tminifierConfig: { sourceMap }\n\t\t}, \"/project\", filename, Buffer.from(filename.endsWith(\".json\") ? \"{\\\"answer\\\":42}\" : \"module.exports = { answer: 42 }\"), {\n\t\t\tdev: false,\n\t\t\tminify: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tconst module = { exports: {} };\n\t\tconst { code, map } = result.output[0].data;\n\t\tvm.runInNewContext(code, { __d(factory) {\n\t\t\tfactory({}, () => {}, () => {}, () => {}, module, module.exports, []);\n\t\t} });\n\t\texpect(module.exports.answer).toBe(42);\n\t\texpect(map.every((entry) => entry.length === 2)).toBe(true);\n\t\tassertZeroBabelCalls();\n\t});\n\tit(\"minifies production modules with executable output and original source locations\", async () => {\n\t\tconst source = \"exports.answer = function answer(value) {\\n return value + 42\\n}\\n\";\n\t\tconst { code, map } = (await transform({\n\t\t\tminifierPath: createRequire(import.meta.url).resolve(\"metro-minify-terser\"),\n\t\t\tminifierConfig: { mangle: true }\n\t\t}, \"/project\", \"answer.js\", Buffer.from(source), {\n\t\t\tdev: false,\n\t\t\tminify: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t})).output[0].data;\n\t\tconst module = { exports: {} };\n\t\tvm.runInNewContext(code, { __d(factory) {\n\t\t\tfactory({}, () => {}, () => {}, () => {}, module, module.exports, []);\n\t\t} });\n\t\texpect(module.exports.answer(8)).toBe(50);\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMap = msm.fromRawMappings([{\n\t\t\tcode,\n\t\t\tpath: \"answer.js\",\n\t\t\tsource,\n\t\t\tmap\n\t\t}]).toMap();\n\t\tconst offset = code.indexOf(\"42\");\n\t\texpect(offset).toBeGreaterThan(-1);\n\t\tconst prefix = code.slice(0, offset).split(\"\\n\");\n\t\tconst position = new msm.Consumer(fullMap).originalPositionFor({\n\t\t\tline: prefix.length,\n\t\t\tcolumn: prefix.at(-1).length\n\t\t});\n\t\texpect(position.source).toBe(\"answer.js\");\n\t\texpect(position.line).toBe(2);\n\t\texpect(position.column).toBe(17);\n\t\tassertZeroBabelCalls();\n\t});\n\tit(\"extracts all dependencies with oxc-parser and zero Babel\", () => {\n\t\tconst deps = extractDependencies(`\n import React, { useState } from 'react'\n import * as RN from 'react-native'\n import './global.css'\n import type { UserType } from './user-types'\n export { Button } from './Button'\n export * from './icons'\n export type { ThemeType } from './theme-types'\n const helper = require('./helper')\n async function loadAsync() {\n const dyn = await import('./dynamic-module')\n }\n `, \"TestComponent.tsx\");\n\t\tassertZeroBabelCalls();\n\t\tconst names = deps.map((d) => d.name);\n\t\texpect(names).toContain(\"react\");\n\t\texpect(names).toContain(\"react-native\");\n\t\texpect(names).toContain(\"./global.css\");\n\t\texpect(names).toContain(\"./Button\");\n\t\texpect(names).toContain(\"./icons\");\n\t\texpect(names).toContain(\"./helper\");\n\t\texpect(names).toContain(\"./dynamic-module\");\n\t\texpect(names).not.toContain(\"./user-types\");\n\t\texpect(names).not.toContain(\"./theme-types\");\n\t\tconst reactDep = deps.find((d) => d.name === \"react\");\n\t\texpect(reactDep.data.isESMImportAtSource).toBe(true);\n\t\texpect(reactDep.data.asyncType).toBeNull();\n\t\texpect(reactDep.data.locs.length).toBeGreaterThan(0);\n\t\tconst loc = reactDep.data.locs[0];\n\t\texpect(loc.start.line).toBeGreaterThan(0);\n\t\texpect(loc.start.column).toBeGreaterThanOrEqual(0);\n\t\texpect(loc.end.line).toBeGreaterThanOrEqual(loc.start.line);\n\t\texpect(loc.end.column).toBeGreaterThanOrEqual(0);\n\t\tconst helperDep = deps.find((d) => d.name === \"./helper\");\n\t\texpect(helperDep.data.isESMImportAtSource).toBe(false);\n\t\texpect(helperDep.data.asyncType).toBeNull();\n\t\texpect(deps.find((d) => d.name === \"./dynamic-module\").data.asyncType).toBe(\"async\");\n\t});\n\tit(\"marks requires inside a try block optional\", () => {\n\t\tconst code = `\n let worklets\n try {\n worklets = require('react-native-worklets-core')\n } catch {}\n const always = require('./always-there')\n `;\n\t\texpect(extractDependencies(code, \"setup.js\").find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBeUndefined();\n\t\tconst on = extractDependencies(code, \"setup.js\", { allowOptionalDependencies: true });\n\t\texpect(on.find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBe(true);\n\t\texpect(on.find((d) => d.name === \"./always-there\").data.isOptional).toBeUndefined();\n\t\texpect(extractDependencies(code, \"setup.js\", { allowOptionalDependencies: { exclude: [\"react-native-worklets-core\"] } }).find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBeUndefined();\n\t});\n\tit(\"wraps modules in Metro CommonJS format with and without moduleId\", () => {\n\t\tconst code = \"exports.val = 123;\";\n\t\tconst wrappedWithoutId = wrapModule(code);\n\t\texpect(wrappedWithoutId).toContain(\"__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {\");\n\t\texpect(wrappedWithoutId).toContain(\"var require = _$$_REQUIRE;\");\n\t\texpect(wrappedWithoutId).toContain(\"exports.val = 123;\");\n\t\texpect(wrappedWithoutId.endsWith(\");\")).toBe(true);\n\t\texpect(wrapModule(code, {\n\t\t\tmoduleId: 99,\n\t\t\tdependencyIds: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t\t3\n\t\t\t]\n\t\t})).toContain(\", 99, [1,2,3]);\");\n\t});\n\tit(\"transforms TSX with React JSX, Hermes lowering, and ZERO Babel\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"Greeter.tsx\", Buffer.from(`\n import React from 'react'\n import { View, Text } from 'react-native'\n const helper = require('./helper')\n\n export class Greeter extends React.Component {\n greeting = 'Hello from Native'\n\n async fetchGreeting() {\n return this.greeting\n }\n\n render() {\n return (\n <View testID=\"greeter\">\n <Text>{this.greeting}</Text>\n </View>\n )\n }\n }\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output).toHaveLength(1);\n\t\tconst output = result.output[0];\n\t\texpect(output.type).toBe(\"js/module\");\n\t\texpect(output.data.lineCount).toBeGreaterThan(0);\n\t\texpect(output.data.map.length).toBeGreaterThan(0);\n\t\tconst code = output.data.code;\n\t\texpect(code).toContain(\"__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {\");\n\t\texpect(code).toContain(\"var require = _$$_REQUIRE;\");\n\t\texpect(code).not.toContain(\"<View\");\n\t\texpect(code).not.toContain(\"<Text\");\n\t\texpect(code).toContain(\"this.greeting = \\\"Hello from Native\\\"\");\n\t\tconst depNames = result.dependencies.map((d) => d.name);\n\t\texpect(depNames).toContain(\"react\");\n\t\texpect(depNames).toContain(\"react-native\");\n\t\texpect(depNames).toContain(\"./helper\");\n\t\texpect(depNames).toContain(\"react/jsx-dev-runtime\");\n\t});\n\tit(\"lowers async generators, including the method shorthand Hermes also rejects\", async () => {\n\t\tfor (const [filename, sourceCode] of Object.entries({\n\t\t\t\"cursor.ts\": `\n export class Cursor {\n async *rows() {\n yield await Promise.resolve(1)\n }\n }\n `,\n\t\t\t\"stream.ts\": `\n export async function* stream() {\n yield 1\n }\n `,\n\t\t\t\"drain.ts\": `\n export async function drain(src) {\n for await (const x of src) {\n console.log(x)\n }\n }\n `\n\t\t})) {\n\t\t\tconst result = await transform({}, \"/project\", filename, Buffer.from(sourceCode, \"utf8\"), {\n\t\t\t\tdev: true,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\ttype: \"module\"\n\t\t\t});\n\t\t\tassertZeroBabelCalls();\n\t\t\tconst code = result.output[0].data.code;\n\t\t\texpect(code, filename).not.toMatch(/\\basync\\s+function\\s*\\*/);\n\t\t\texpect(code, filename).not.toMatch(/\\basync\\s*\\*\\s*[\\w$[]/);\n\t\t\texpect(code, filename).not.toMatch(/\\bfor\\s+await\\s*\\(/);\n\t\t}\n\t});\n\tit(\"handles JSON files without Babel\", async () => {\n\t\tconst jsonSource = JSON.stringify({\n\t\t\tname: \"my-package\",\n\t\t\tversion: \"1.0.0\"\n\t\t});\n\t\tconst result = await transform({}, \"/project\", \"package.json\", Buffer.from(jsonSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.dependencies).toEqual([]);\n\t\texpect(result.output).toHaveLength(1);\n\t\texpect(result.output[0].type).toBe(\"js/module\");\n\t\texpect(result.output[0].data.code).toContain(\"module.exports = {\\\"name\\\":\\\"my-package\\\",\\\"version\\\":\\\"1.0.0\\\"}\");\n\t\texpect(result.output[0].data.code).toContain(\"__d(function (global, require\");\n\t});\n\tit(\"handles Asset files without Babel\", async () => {\n\t\tconst result = await transform({\n\t\t\tassetRegistryPath: \"react-native/Libraries/Image/AssetRegistry\",\n\t\t\tpublicPath: \"/assets\"\n\t\t}, \"/project\", \"logo.png\", Buffer.from(\"fake-png-binary-data\", \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"asset\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].type).toBe(\"js/module/asset\");\n\t\texpect(result.output[0].data.code).toContain(\"registerAsset(\");\n\t\texpect(result.output[0].data.code).toContain(\"__d(function\");\n\t\texpect(result.dependencies.map((d) => d.name)).toContain(\"react-native/Libraries/Image/AssetRegistry\");\n\t});\n\tit(\"handles Flow files by stripping types without Babel\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"math.js\", Buffer.from(`\n // @flow\n function add(a: number, b: number): number {\n return a + b;\n }\n export default add;\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].data.code).not.toContain(\": number\");\n\t\texpect(result.output[0].data.code).toContain(\"function add(a, b)\");\n\t});\n\tit(\"generates a deterministic cache key without Babel\", () => {\n\t\tconst key1 = getCacheKey({\n\t\t\tglobalPrefix: \"__one_\",\n\t\t\tminifierPath: \"terser\"\n\t\t}, { projectRoot: \"/app\" });\n\t\tconst key2 = getCacheKey({\n\t\t\tglobalPrefix: \"__one_\",\n\t\t\tminifierPath: \"terser\"\n\t\t}, { projectRoot: \"/app\" });\n\t\tconst key3 = getCacheKey({ globalPrefix: \"__other_\" }, { projectRoot: \"/app\" });\n\t\tassertZeroBabelCalls();\n\t\texpect(key1).toBe(key2);\n\t\texpect(key1).not.toBe(key3);\n\t\texpect(typeof key1).toBe(\"string\");\n\t\texpect(key1.length).toBe(64);\n\t});\n\tit(\"correctly sets transformerPath in buildMetroConfigInputFromViteConfig when active\", async () => {\n\t\tconst mockViteConfig = { root: process.cwd() };\n\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\tconst configDefault = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});\n\t\texpect(configDefault.defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\texpect(configDefault.defaultConfig.transformer.transformerPath).toBeUndefined();\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: false })).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"0\";\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"1\";\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: false })).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t});\n\tit(\"falls back to default Metro babel transformer when a user babel config exists\", async () => {\n\t\tconst tempDir = path.join(process.cwd(), `.tmp-metro-test-${Date.now()}`);\n\t\tfs.mkdirSync(tempDir, { recursive: true });\n\t\tfs.writeFileSync(path.join(tempDir, \"package.json\"), \"{}\");\n\t\ttry {\n\t\t\tconst mockViteConfig = { root: tempDir };\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tconst babelConfigPath = path.join(tempDir, \"babel.config.js\");\n\t\t\tfs.writeFileSync(babelConfigPath, \"// @one-generated\\nmodule.exports = {}\");\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tfs.writeFileSync(babelConfigPath, \"module.exports = { plugins: [\\\"my-plugin\\\"] }\");\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"1\";\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: true })).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t} finally {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tfs.rmSync(tempDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"transforms and executes a real 2-module Metro bundle through metro-runtime require polyfill\", async () => {\n\t\tconst depSource = \"exports.value = 42;\";\n\t\tconst aSource = \"const dep = require(\\\"./dep\\\"); module.exports = { doubled: dep.value * 2 };\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst aRes = await transform({}, \"/project\", \"a.js\", Buffer.from(aSource, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: [2]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(aRes.dependencies).toHaveLength(1);\n\t\texpect(aRes.dependencies[0].name).toBe(\"./dep\");\n\t\tconst aEmittedCode = aRes.output[0].data.code;\n\t\texpect(aEmittedCode).toContain(\"require(_dependencyMap[0], \\\"./dep\\\")\");\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\tvm.runInContext(aEmittedCode, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toEqual({ doubled: 84 });\n\t});\n\tit(\"transforms and executes a 2-module Metro bundle with ESM imports in dev mode\", async () => {\n\t\tconst depSource = \"export const greeting = \\\"Hello Metro Native\\\";\";\n\t\tconst aSource = \"import { greeting } from \\\"./dep\\\"; export const message = greeting.toUpperCase();\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst aRes = await transform({}, \"/project\", \"a.js\", Buffer.from(aSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: [2]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: true,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\tvm.runInContext(aRes.output[0].data.code, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj).message).toBe(\"HELLO METRO NATIVE\");\n\t});\n\tit(\"respects lexical scope shadowing for require calls (Astra probe)\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"shadowed.js\", Buffer.from(\"function f(require){return require(\\\"./local\\\")}; module.exports=f(x=>x);\", \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies).toHaveLength(0);\n\t\tconst emitted = res.output[0].data.code;\n\t\texpect(emitted).not.toContain(\"_dependencyMap[0]\");\n\t\texpect(emitted).toMatch(/require\\d*\\(\"\\.\\/local\"\\)/);\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(emitted, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toBe(\"./local\");\n\t});\n\tit(\"preserves distinct indexed identity for duplicate and mixed sync/async dependencies\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"index.js\", Buffer.from(`\n const a = require('./dep');\n const b = require('./dep');\n async function load() {\n const c = await import('./dep');\n }\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies.map((d) => d.name)).toContain(\"./dep\");\n\t\tconst syncDep = res.dependencies.find((d) => d.name === \"./dep\" && d.data.asyncType === null);\n\t\tconst asyncDep = res.dependencies.find((d) => d.name === \"./dep\" && d.data.asyncType === \"async\");\n\t\texpect(syncDep).toBeDefined();\n\t\texpect(asyncDep).toBeDefined();\n\t\texpect(syncDep.data.index).not.toEqual(asyncDep.data.index);\n\t\tconst emitted = res.output[0].data.code;\n\t\tconst syncIndex = syncDep.data.index;\n\t\texpect(emitted).toContain(`require(_dependencyMap[${syncIndex}], \"./dep\")`);\n\t});\n\tit(\"conforms to Metro map ABI with raw mapping segment tuples and accurate symbolication\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"math.ts\", Buffer.from(`\n export function add(a: number, b: number): number {\n return a + b;\n }\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst map = res.output[0].data.map;\n\t\texpect(Array.isArray(map)).toBe(true);\n\t\texpect(map.length).toBeGreaterThan(0);\n\t\tfor (const tuple of map) {\n\t\t\texpect(Array.isArray(tuple)).toBe(true);\n\t\t\texpect(typeof tuple[0]).toBe(\"number\");\n\t\t\texpect(typeof tuple[1]).toBe(\"number\");\n\t\t\texpect(tuple).not.toHaveProperty(\"version\");\n\t\t\texpect(tuple).not.toHaveProperty(\"mappings\");\n\t\t}\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMap = msm.fromRawMappings([{\n\t\t\tcode: res.output[0].data.code,\n\t\t\tsource: \"math.ts\",\n\t\t\tmap\n\t\t}]).toMap();\n\t\tconst consumer = new msm.Consumer(fullMap);\n\t\tconst addLineIndex = res.output[0].data.code.split(\"\\n\").findIndex((l) => l.includes(\"function add\"));\n\t\texpect(addLineIndex).toBeGreaterThan(0);\n\t\texpect(consumer.originalPositionFor({\n\t\t\tline: addLineIndex + 1,\n\t\t\tcolumn: 16\n\t\t}).line).toBe(2);\n\t});\n\tit(\"models JS hoisting in ScopeTracker for functions and vars (Astra probe)\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"hoisted.js\", Buffer.from(\"function f(){const x=require(\\\"./local\\\"); function require(x){return x}; return x} module.exports=f();\", \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies).toHaveLength(0);\n\t\tconst emitted = res.output[0].data.code;\n\t\texpect(emitted).not.toContain(\"_dependencyMap[0]\");\n\t\texpect(emitted).toMatch(/require\\d*\\(\"\\.\\/local\"\\)/);\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(emitted, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toBe(\"./local\");\n\t});\n\tit(\"rewrites dynamic import to Metro asyncRequire and executes promise resolution in dev and release\", async () => {\n\t\tconst depSource = \"exports.message = \\\"hello dynamic\\\";\";\n\t\tconst mainSource = \"module.exports = () => import(\\\"./dep\\\");\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst mainRes = await transform({}, \"/project\", \"main.js\", Buffer.from(mainSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 0,\n\t\t\tdependencyIds: [2, 1]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst depNames = mainRes.dependencies.map((d) => d.name);\n\t\texpect(depNames).toContain(\"./dep\");\n\t\texpect(depNames).toContain(\"metro-runtime/src/modules/asyncRequire\");\n\t\texpect(mainRes.dependencies.find((d) => d.name === \"./dep\").data.asyncType).toBe(\"async\");\n\t\tconst emittedMain = mainRes.output[0].data.code;\n\t\texpect(emittedMain).not.toContain(\"import(\\\"./dep\\\")\");\n\t\texpect(emittedMain).toContain(\"require(_dependencyMap[1], \\\"metro-runtime/src/modules/asyncRequire\\\")(_dependencyMap[0], _dependencyMap.paths, \\\"./dep\\\")\");\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst asyncRequirePath = __require.resolve(\"metro-runtime/src/modules/asyncRequire.js\");\n\t\tconst wrappedAsyncRequire = wrapModule(fs.readFileSync(asyncRequirePath, \"utf8\"), {\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tfor (const isDev of [true, false]) {\n\t\t\tconst contextObj = {\n\t\t\t\t__DEV__: isDev,\n\t\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\t\tconsole\n\t\t\t};\n\t\t\tcontextObj.global = contextObj;\n\t\t\tvm.createContext(contextObj);\n\t\t\tvm.runInContext(polyfillCode, contextObj);\n\t\t\tvm.runInContext(wrappedAsyncRequire, contextObj);\n\t\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\t\tvm.runInContext(emittedMain, contextObj);\n\t\t\tconst mainFn = vm.runInContext(\"global.__r(0)\", contextObj);\n\t\t\texpect(typeof mainFn).toBe(\"function\");\n\t\t\tconst promise = mainFn();\n\t\t\texpect(promise instanceof Promise || promise && typeof promise.then === \"function\").toBe(true);\n\t\t\tconst resolved = await promise;\n\t\t\texpect(resolved.message).toBe(\"hello dynamic\");\n\t\t\texpect(resolved.default.message).toBe(\"hello dynamic\");\n\t\t}\n\t});\n\tit(\"preserves accurate sourcemap for tokens after rewritten require calls on the same line\", async () => {\n\t\tconst sourceCode = \"const a = require(\\\"./dep\\\"), b = 42;\";\n\t\tconst resWrapped = await transform({}, \"/project\", \"app.js\", Buffer.from(sourceCode, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMapWrapped = msm.fromRawMappings([{\n\t\t\tcode: resWrapped.output[0].data.code,\n\t\t\tsource: \"app.js\",\n\t\t\tmap: resWrapped.output[0].data.map\n\t\t}]).toMap();\n\t\tconst consumerWrapped = new msm.Consumer(fullMapWrapped);\n\t\tconst linesWrapped = resWrapped.output[0].data.code.split(\"\\n\");\n\t\tconst lineIndexWrapped = linesWrapped.findIndex((l) => l.includes(\"b = 42\"));\n\t\texpect(lineIndexWrapped).toBeGreaterThanOrEqual(0);\n\t\tconst generatedColWrapped = linesWrapped[lineIndexWrapped].indexOf(\"b = 42\");\n\t\texpect(generatedColWrapped).toBeGreaterThan(0);\n\t\tconst posWrapped = consumerWrapped.originalPositionFor({\n\t\t\tline: lineIndexWrapped + 1,\n\t\t\tcolumn: generatedColWrapped\n\t\t});\n\t\texpect(posWrapped.line).toBe(1);\n\t\texpect(posWrapped.column).toBe(28);\n\t\texpect(sourceCode.slice(Number(posWrapped.column))).toContain(\"b = 42;\");\n\t\tconst resUnwrapped = await transform({ unstable_disableModuleWrapping: true }, \"/project\", \"app.js\", Buffer.from(sourceCode, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tconst fullMapUnwrapped = msm.fromRawMappings([{\n\t\t\tcode: resUnwrapped.output[0].data.code,\n\t\t\tsource: \"app.js\",\n\t\t\tmap: resUnwrapped.output[0].data.map\n\t\t}]).toMap();\n\t\tconst consumerUnwrapped = new msm.Consumer(fullMapUnwrapped);\n\t\tconst linesUnwrapped = resUnwrapped.output[0].data.code.split(\"\\n\");\n\t\tconst lineIndexUnwrapped = linesUnwrapped.findIndex((l) => l.includes(\"b = 42\"));\n\t\texpect(lineIndexUnwrapped).toBeGreaterThanOrEqual(0);\n\t\tconst generatedColUnwrapped = linesUnwrapped[lineIndexUnwrapped].indexOf(\"b = 42\");\n\t\tconst posUnwrapped = consumerUnwrapped.originalPositionFor({\n\t\t\tline: lineIndexUnwrapped + 1,\n\t\t\tcolumn: generatedColUnwrapped\n\t\t});\n\t\texpect(posUnwrapped.line).toBe(1);\n\t\texpect(posUnwrapped.column).toBe(28);\n\t});\n\tit(\"routes a require.context whose directory is held in a variable through the dependency map\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"entry.js\", Buffer.from(`\n const routeRoot = './app'\n export const ctx = require.context(routeRoot, true, /\\\\.tsx$/)\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\texpect(result.dependencies.find((d) => d.data.contextParams != null)?.name).toBe(\"./app\");\n\t\tconst calls = [];\n\t\tlet ctx;\n\t\tvm.runInNewContext(result.output[0].data.code, { __d: (factory) => {\n\t\t\tconst module = { exports: {} };\n\t\t\tconst req = (...args) => {\n\t\t\t\tcalls.push(args);\n\t\t\t\treturn { keys: () => [] };\n\t\t\t};\n\t\t\treq.context = () => {\n\t\t\t\tthrow new Error(\"fallbackRequireContext reached\");\n\t\t\t};\n\t\t\tfactory({}, req, () => ({}), () => ({}), module, module.exports, [\"./app\"]);\n\t\t\tctx = module.exports.ctx;\n\t\t} });\n\t\texpect(ctx).toBeDefined();\n\t\texpect(calls[0][1]).toBe(\"./app\");\n\t});\n\tit(\"gives loop bodies per-iteration bindings that survive a runtime without them\", async () => {\n\t\tconst asHermesWouldSeeIt = (await transform({}, \"/project\", \"loops.ts\", Buffer.from(`\n export function collect() {\n const out = []\n for (let i = 0; i < 2; i++) out.push(() => i)\n for (const label of ['a', 'b']) out.push(() => label)\n for (const key in { x: 1, y: 2 }) out.push(() => key)\n return out.map((f) => f())\n }\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t})).output[0].data.code.replace(/\\bfor\\s*\\(\\s*(let|const)\\b/g, \"for (var\");\n\t\tlet collect;\n\t\tvm.runInNewContext(asHermesWouldSeeIt, { __d: (factory) => {\n\t\t\tconst module = { exports: {} };\n\t\t\tfactory({}, () => ({}), () => ({}), () => ({}), module, module.exports, []);\n\t\t\tcollect = module.exports.collect;\n\t\t} });\n\t\texpect(collect()).toEqual([\n\t\t\t0,\n\t\t\t1,\n\t\t\t\"a\",\n\t\t\t\"b\",\n\t\t\t\"x\",\n\t\t\t\"y\"\n\t\t]);\n\t});\n});\ndescribe(\"one native transform ports\", () => {\n\tit(\"inlines process.env.ONE_SERVER_URL so a native bundle can find its loaders\", () => {\n\t\tprocess.env.ONE_SERVER_URL = \"https://example.test\";\n\t\ttry {\n\t\t\texpect(applyInlineEnvVars(\"export const url = process.env.ONE_SERVER_URL;\", \"loader.ts\", false)).toBe(\"export const url = \\\"https://example.test\\\";\");\n\t\t} finally {\n\t\t\tprocess.env.ONE_SERVER_URL = void 0;\n\t\t}\n\t});\n\tit(\"leaves ONE_SERVER_URL alone when it is only a string\", () => {\n\t\tconst src = \"export const key = \\\"process.env.ONE_SERVER_URL\\\";\";\n\t\texpect(applyInlineEnvVars(src, \"a.ts\", false)).toBe(src);\n\t});\n\tit(\"inlines import.meta.env reads, which oxc otherwise lowers to an empty object\", () => {\n\t\tconst out = applyInlineEnvVars(`export const key = import.meta.env.VITE_POSTHOG_API_KEY;\nexport const target = import.meta.env?.TAMAGUI_TARGET;\nexport const missing = import.meta.env.NOT_SET;\nexport const all = { ...import.meta.env };`, \"env.ts\", true, {\n\t\t\tDEV: false,\n\t\t\tVITE_POSTHOG_API_KEY: \"pk_live\",\n\t\t\tTAMAGUI_TARGET: \"native\"\n\t\t});\n\t\texpect(out).toContain(\"export const key = \\\"pk_live\\\";\");\n\t\texpect(out).toContain(\"export const target = \\\"native\\\";\");\n\t\texpect(out).toContain(\"export const missing = undefined;\");\n\t\texpect(out).toContain(\"\\\"VITE_POSTHOG_API_KEY\\\":\\\"pk_live\\\"\");\n\t\texpect(out).not.toContain(\"import.meta\");\n\t});\n\tit(\"inlines process.env keys the vite env map defines\", () => {\n\t\tconst out = applyInlineEnvVars(\"export const t = process.env.TAMAGUI_TARGET; export const u = process.env.UNKNOWN_THING;\", \"env.ts\", true, { TAMAGUI_TARGET: \"native\" });\n\t\texpect(out).toContain(\"export const t = \\\"native\\\";\");\n\t\texpect(out).toContain(\"process.env.UNKNOWN_THING\");\n\t});\n\tit(\"never rewrites an env read in an assignment target\", () => {\n\t\tconst src = \"process.env.VITE_ENVIRONMENT = \\\"ssr\\\";\";\n\t\texpect(applyInlineEnvVars(src, \"a.ts\", true, { VITE_ENVIRONMENT: \"ios\" })).toBe(src);\n\t});\n\tit(\"folds branches the inlining made constant so metro never resolves dead imports\", () => {\n\t\tconst out = applyInlineEnvVars(`if (import.meta.env.SSR) { require('./server-only-thing') } else { load(import.meta.env.API) }`, \"branch.ts\", true, {\n\t\t\tSSR: false,\n\t\t\tAPI: \"https://api.test\"\n\t\t});\n\t\texpect(out).not.toContain(\"server-only-thing\");\n\t\texpect(out).toContain(\"load(\\\"https://api.test\\\")\");\n\t});\n\tit(\"folds a ternary and keeps a branch it cannot resolve\", () => {\n\t\texpect(applyInlineEnvVars(\"const a = import.meta.env.DEV ? x : y;\", \"a.ts\", true, { DEV: false })).toContain(\"const a = y;\");\n\t\tconst dynamic = \"const a = flag ? x : y;\";\n\t\texpect(applyInlineEnvVars(dynamic, \"a.ts\", true, { DEV: false })).toBe(dynamic);\n\t});\n\tit(\"runs the user native transforms that stand in for their babel plugins\", async () => {\n\t\tconst result = await transform({}, import.meta.dirname, \"ota.ts\", Buffer.from(\"export const id = __EXAMPLE_BUILD_ID; export const from = __EXAMPLE_FILENAME;\", \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tcustomTransformOptions: { vite: { nativeTransformModules: [\"./__fixtures__/exampleNativeTransform.cjs\"] } }\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].data.code).toContain(\"\\\"ios-build\\\"\");\n\t\texpect(result.output[0].data.code).not.toContain(\"__EXAMPLE_BUILD_ID\");\n\t\texpect(result.output[0].data.code).toContain(JSON.stringify(path.join(import.meta.dirname, \"ota.ts\")));\n\t});\n\tit(\"refuses to build when a user babel plugin has no native port\", () => {\n\t\tconst withPlugins = (plugins) => ({ customTransformOptions: { vite: { babelConfig: { plugins } } } });\n\t\texpect(() => assertNoUnportedBabelPlugins(withPlugins([\n\t\t\t[\"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\", { env: {} }],\n\t\t\t\"one/babel-plugin-environment-guard\",\n\t\t\t\"hot-updater/babel-plugin\"\n\t\t]))).toThrow(/hot-updater\\/babel-plugin/);\n\t\texpect(() => assertNoUnportedBabelPlugins(withPlugins([\n\t\t\t[\"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\", { env: {} }],\n\t\t\t\"one/babel-plugin-environment-guard\",\n\t\t\t[\"one/babel-plugin-remove-server-code\", { routerRoot: \"app\" }],\n\t\t\t[\"babel-plugin-module-resolver\", { alias: {} }],\n\t\t\t[\"one/babel-plugin-one-router-metro\", {}],\n\t\t\t\"one/babel-plugin-inline-one-server-url\",\n\t\t\t\"babel-plugin-react-compiler\",\n\t\t\t\"react-native-reanimated/plugin\"\n\t\t]))).not.toThrow();\n\t});\n\tit(\"turns a server-only import into a throw and drops native-only\", () => {\n\t\tconst out = applyEnvironmentGuard(`import 'native-only'\n\nexport const a = 1`, \"route.ts\");\n\t\texpect(out).not.toContain(\"native-only\");\n\t\texpect(out).toContain(\"server-only cannot be imported in a native environment\");\n\t\tconst parsed = parseSync(\"route.ts\", out, { lang: \"ts\" });\n\t\texpect(parsed.errors).toEqual([]);\n\t\texpect(parsed.program.body.map((n) => n.type)).toContain(\"ThrowStatement\");\n\t});\n\tit(\"reads the router root off one's remove-server-code plugin entry\", () => {\n\t\texpect(getRemoveServerCodeRouterRoot({ customTransformOptions: { vite: { babelConfig: { plugins: [[\"one/babel-plugin-remove-server-code\", { routerRoot: \"src/app\" }]] } } } })).toBe(\"src/app\");\n\t\texpect(getRemoveServerCodeRouterRoot({ customTransformOptions: {} })).toBe(void 0);\n\t});\n});\n\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["beforeEach","describe","expect","it","vi","vm","parseSync","fs","os","path","createRequire","applyEnvironmentGuard","applyInlineEnvVars","assertNoUnportedBabelPlugins","extractDependencies","getCacheKey","getRemoveServerCodeRouterRoot","transform","wrapModule","buildMetroConfigInputFromViteConfig","getMetroConfigFromViteConfig","__require","x","require","Proxy","get","a","b","apply","arguments","Error","babelCalls","transformSync","transformAsync","transformFromAstSync","parse","mock","importOriginal","actual","fn","args","assertZeroBabelCalls","toBe","each","filename","sourceMap","result","minifierPath","import","meta","url","resolve","minifierConfig","Buffer","from","endsWith","dev","minify","platform","type","module","exports","code","map","output","data","runInNewContext","__d","factory","answer","every","entry","length","source","mangle","msm","fullMap","fromRawMappings","toMap","offset","indexOf","toBeGreaterThan","prefix","slice","split","position","Consumer","originalPositionFor","line","column","at","deps","names","d","name","toContain","not","reactDep","find","isESMImportAtSource","asyncType","toBeNull","locs","loc","start","toBeGreaterThanOrEqual","end","helperDep","isOptional","toBeUndefined","on","allowOptionalDependencies","exclude","wrappedWithoutId","moduleId","dependencyIds","toHaveLength","lineCount","depNames","dependencies","sourceCode","Object","entries","toMatch","jsonSource","JSON","stringify","version","toEqual","assetRegistryPath","publicPath","key1","globalPrefix","projectRoot","key2","key3","mockViteConfig","root","process","cwd","env","ONE_METRO_NATIVE_TRANSFORMS","configDefault","defaultConfig","transformerPath","transformer","nativeTransforms","tempDir","join","Date","now","mkdirSync","recursive","writeFileSync","babelConfigPath","rmSync","force","realpathSync","mkdtempSync","warnsWithConfig","spy","calls","some","includes","optionWarn","spyOn","console","mockImplementation","mockRestore","envWarn","respectedWarn","nativeInput","nativeFull","fallbackInput","fallbackFull","forcedWarn","forcedInput","forcedFull","depSource","aSource","depRes","aRes","aEmittedCode","polyfillPath","polyfillCode","readFileSync","contextObj","__DEV__","__METRO_GLOBAL_PREFIX__","global","createContext","runInContext","doubled","message","res","emitted","syncDep","asyncDep","toBeDefined","index","syncIndex","Array","isArray","tuple","toHaveProperty","consumer","addLineIndex","findIndex","l","mainSource","mainRes","emittedMain","asyncRequirePath","wrappedAsyncRequire","isDev","mainFn","promise","Promise","then","resolved","default","resWrapped","fullMapWrapped","consumerWrapped","linesWrapped","lineIndexWrapped","generatedColWrapped","posWrapped","Number","resUnwrapped","unstable_disableModuleWrapping","fullMapUnwrapped","consumerUnwrapped","linesUnwrapped","lineIndexUnwrapped","generatedColUnwrapped","posUnwrapped","contextParams","ctx","req","push","keys","context","asHermesWouldSeeIt","replace","collect","ONE_SERVER_URL","src","out","DEV","VITE_POSTHOG_API_KEY","TAMAGUI_TARGET","VITE_ENVIRONMENT","SSR","API","dynamic","dirname","customTransformOptions","vite","nativeTransformModules","withPlugins","plugins","babelConfig","toThrow","routerRoot","alias","parsed","lang","errors","program","body","n","resetModules","loadBabelConfig","loadBabelConfig2","tempDir2","tmpdir","extends"],"sources":["metroNativeWorker.test.mjs"],"sourcesContent":["import { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport * as vm from \"node:vm\";\nimport { parseSync } from \"oxc-parser\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { applyEnvironmentGuard, applyInlineEnvVars, assertNoUnportedBabelPlugins, extractDependencies, getCacheKey, getRemoveServerCodeRouterRoot, transform, wrapModule } from \"./metroNativeWorker\";\nimport { buildMetroConfigInputFromViteConfig, getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\n\nvar __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, { get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b] }) : x)(function(x) {\n\tif (typeof require !== \"undefined\") return require.apply(this, arguments);\n\tthrow Error(\"Calling `require` for \\\"\" + x + \"\\\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.\");\n});\n\nconst babelCalls = {\n\ttransform: 0,\n\ttransformSync: 0,\n\ttransformAsync: 0,\n\ttransformFromAstSync: 0,\n\tparse: 0,\n\tparseSync: 0\n};\nvi.mock(\"@babel/core\", async (importOriginal) => {\n\tconst actual = await importOriginal();\n\treturn {\n\t\t...actual,\n\t\ttransform: vi.fn((...args) => {\n\t\t\tbabelCalls.transform++;\n\t\t\treturn actual.transform(...args);\n\t\t}),\n\t\ttransformSync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformSync++;\n\t\t\treturn actual.transformSync(...args);\n\t\t}),\n\t\ttransformAsync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformAsync++;\n\t\t\treturn actual.transformAsync(...args);\n\t\t}),\n\t\ttransformFromAstSync: vi.fn((...args) => {\n\t\t\tbabelCalls.transformFromAstSync++;\n\t\t\treturn actual.transformFromAstSync(...args);\n\t\t}),\n\t\tparse: vi.fn((...args) => {\n\t\t\tbabelCalls.parse++;\n\t\t\treturn actual.parse(...args);\n\t\t}),\n\t\tparseSync: vi.fn((...args) => {\n\t\t\tbabelCalls.parseSync++;\n\t\t\treturn actual.parseSync(...args);\n\t\t})\n\t};\n});\nbeforeEach(() => {\n\tbabelCalls.transform = 0;\n\tbabelCalls.transformSync = 0;\n\tbabelCalls.transformAsync = 0;\n\tbabelCalls.transformFromAstSync = 0;\n\tbabelCalls.parse = 0;\n\tbabelCalls.parseSync = 0;\n});\nfunction assertZeroBabelCalls() {\n\texpect(babelCalls.transform).toBe(0);\n\texpect(babelCalls.transformSync).toBe(0);\n\texpect(babelCalls.transformAsync).toBe(0);\n\texpect(babelCalls.transformFromAstSync).toBe(0);\n\texpect(babelCalls.parse).toBe(0);\n\texpect(babelCalls.parseSync).toBe(0);\n}\ndescribe(\"metroNativeWorker\", () => {\n\tit.each([\n\t\t[\"data.json\", true],\n\t\t[\"data.json\", false],\n\t\t[\"data.js\", false]\n\t])(\"minifies %s with source maps enabled=%s without stale mappings\", async (filename, sourceMap) => {\n\t\tconst result = await transform({\n\t\t\tminifierPath: createRequire(import.meta.url).resolve(\"metro-minify-terser\"),\n\t\t\tminifierConfig: { sourceMap }\n\t\t}, \"/project\", filename, Buffer.from(filename.endsWith(\".json\") ? \"{\\\"answer\\\":42}\" : \"module.exports = { answer: 42 }\"), {\n\t\t\tdev: false,\n\t\t\tminify: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tconst module = { exports: {} };\n\t\tconst { code, map } = result.output[0].data;\n\t\tvm.runInNewContext(code, { __d(factory) {\n\t\t\tfactory({}, () => {}, () => {}, () => {}, module, module.exports, []);\n\t\t} });\n\t\texpect(module.exports.answer).toBe(42);\n\t\texpect(map.every((entry) => entry.length === 2)).toBe(true);\n\t\tassertZeroBabelCalls();\n\t});\n\tit(\"minifies production modules with executable output and original source locations\", async () => {\n\t\tconst source = \"exports.answer = function answer(value) {\\n return value + 42\\n}\\n\";\n\t\tconst { code, map } = (await transform({\n\t\t\tminifierPath: createRequire(import.meta.url).resolve(\"metro-minify-terser\"),\n\t\t\tminifierConfig: { mangle: true }\n\t\t}, \"/project\", \"answer.js\", Buffer.from(source), {\n\t\t\tdev: false,\n\t\t\tminify: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t})).output[0].data;\n\t\tconst module = { exports: {} };\n\t\tvm.runInNewContext(code, { __d(factory) {\n\t\t\tfactory({}, () => {}, () => {}, () => {}, module, module.exports, []);\n\t\t} });\n\t\texpect(module.exports.answer(8)).toBe(50);\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMap = msm.fromRawMappings([{\n\t\t\tcode,\n\t\t\tpath: \"answer.js\",\n\t\t\tsource,\n\t\t\tmap\n\t\t}]).toMap();\n\t\tconst offset = code.indexOf(\"42\");\n\t\texpect(offset).toBeGreaterThan(-1);\n\t\tconst prefix = code.slice(0, offset).split(\"\\n\");\n\t\tconst position = new msm.Consumer(fullMap).originalPositionFor({\n\t\t\tline: prefix.length,\n\t\t\tcolumn: prefix.at(-1).length\n\t\t});\n\t\texpect(position.source).toBe(\"answer.js\");\n\t\texpect(position.line).toBe(2);\n\t\texpect(position.column).toBe(17);\n\t\tassertZeroBabelCalls();\n\t});\n\tit(\"extracts all dependencies with oxc-parser and zero Babel\", () => {\n\t\tconst deps = extractDependencies(`\n import React, { useState } from 'react'\n import * as RN from 'react-native'\n import './global.css'\n import type { UserType } from './user-types'\n export { Button } from './Button'\n export * from './icons'\n export type { ThemeType } from './theme-types'\n const helper = require('./helper')\n async function loadAsync() {\n const dyn = await import('./dynamic-module')\n }\n `, \"TestComponent.tsx\");\n\t\tassertZeroBabelCalls();\n\t\tconst names = deps.map((d) => d.name);\n\t\texpect(names).toContain(\"react\");\n\t\texpect(names).toContain(\"react-native\");\n\t\texpect(names).toContain(\"./global.css\");\n\t\texpect(names).toContain(\"./Button\");\n\t\texpect(names).toContain(\"./icons\");\n\t\texpect(names).toContain(\"./helper\");\n\t\texpect(names).toContain(\"./dynamic-module\");\n\t\texpect(names).not.toContain(\"./user-types\");\n\t\texpect(names).not.toContain(\"./theme-types\");\n\t\tconst reactDep = deps.find((d) => d.name === \"react\");\n\t\texpect(reactDep.data.isESMImportAtSource).toBe(true);\n\t\texpect(reactDep.data.asyncType).toBeNull();\n\t\texpect(reactDep.data.locs.length).toBeGreaterThan(0);\n\t\tconst loc = reactDep.data.locs[0];\n\t\texpect(loc.start.line).toBeGreaterThan(0);\n\t\texpect(loc.start.column).toBeGreaterThanOrEqual(0);\n\t\texpect(loc.end.line).toBeGreaterThanOrEqual(loc.start.line);\n\t\texpect(loc.end.column).toBeGreaterThanOrEqual(0);\n\t\tconst helperDep = deps.find((d) => d.name === \"./helper\");\n\t\texpect(helperDep.data.isESMImportAtSource).toBe(false);\n\t\texpect(helperDep.data.asyncType).toBeNull();\n\t\texpect(deps.find((d) => d.name === \"./dynamic-module\").data.asyncType).toBe(\"async\");\n\t});\n\tit(\"marks requires inside a try block optional\", () => {\n\t\tconst code = `\n let worklets\n try {\n worklets = require('react-native-worklets-core')\n } catch {}\n const always = require('./always-there')\n `;\n\t\texpect(extractDependencies(code, \"setup.js\").find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBeUndefined();\n\t\tconst on = extractDependencies(code, \"setup.js\", { allowOptionalDependencies: true });\n\t\texpect(on.find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBe(true);\n\t\texpect(on.find((d) => d.name === \"./always-there\").data.isOptional).toBeUndefined();\n\t\texpect(extractDependencies(code, \"setup.js\", { allowOptionalDependencies: { exclude: [\"react-native-worklets-core\"] } }).find((d) => d.name === \"react-native-worklets-core\").data.isOptional).toBeUndefined();\n\t});\n\tit(\"wraps modules in Metro CommonJS format with and without moduleId\", () => {\n\t\tconst code = \"exports.val = 123;\";\n\t\tconst wrappedWithoutId = wrapModule(code);\n\t\texpect(wrappedWithoutId).toContain(\"__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {\");\n\t\texpect(wrappedWithoutId).toContain(\"var require = _$$_REQUIRE;\");\n\t\texpect(wrappedWithoutId).toContain(\"exports.val = 123;\");\n\t\texpect(wrappedWithoutId.endsWith(\");\")).toBe(true);\n\t\texpect(wrapModule(code, {\n\t\t\tmoduleId: 99,\n\t\t\tdependencyIds: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t\t3\n\t\t\t]\n\t\t})).toContain(\", 99, [1,2,3]);\");\n\t});\n\tit(\"transforms TSX with React JSX, Hermes lowering, and ZERO Babel\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"Greeter.tsx\", Buffer.from(`\n import React from 'react'\n import { View, Text } from 'react-native'\n const helper = require('./helper')\n\n export class Greeter extends React.Component {\n greeting = 'Hello from Native'\n\n async fetchGreeting() {\n return this.greeting\n }\n\n render() {\n return (\n <View testID=\"greeter\">\n <Text>{this.greeting}</Text>\n </View>\n )\n }\n }\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output).toHaveLength(1);\n\t\tconst output = result.output[0];\n\t\texpect(output.type).toBe(\"js/module\");\n\t\texpect(output.data.lineCount).toBeGreaterThan(0);\n\t\texpect(output.data.map.length).toBeGreaterThan(0);\n\t\tconst code = output.data.code;\n\t\texpect(code).toContain(\"__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {\");\n\t\texpect(code).toContain(\"var require = _$$_REQUIRE;\");\n\t\texpect(code).not.toContain(\"<View\");\n\t\texpect(code).not.toContain(\"<Text\");\n\t\texpect(code).toContain(\"this.greeting = \\\"Hello from Native\\\"\");\n\t\tconst depNames = result.dependencies.map((d) => d.name);\n\t\texpect(depNames).toContain(\"react\");\n\t\texpect(depNames).toContain(\"react-native\");\n\t\texpect(depNames).toContain(\"./helper\");\n\t\texpect(depNames).toContain(\"react/jsx-dev-runtime\");\n\t});\n\tit(\"lowers async generators, including the method shorthand Hermes also rejects\", async () => {\n\t\tfor (const [filename, sourceCode] of Object.entries({\n\t\t\t\"cursor.ts\": `\n export class Cursor {\n async *rows() {\n yield await Promise.resolve(1)\n }\n }\n `,\n\t\t\t\"stream.ts\": `\n export async function* stream() {\n yield 1\n }\n `,\n\t\t\t\"drain.ts\": `\n export async function drain(src) {\n for await (const x of src) {\n console.log(x)\n }\n }\n `\n\t\t})) {\n\t\t\tconst result = await transform({}, \"/project\", filename, Buffer.from(sourceCode, \"utf8\"), {\n\t\t\t\tdev: true,\n\t\t\t\tplatform: \"ios\",\n\t\t\t\ttype: \"module\"\n\t\t\t});\n\t\t\tassertZeroBabelCalls();\n\t\t\tconst code = result.output[0].data.code;\n\t\t\texpect(code, filename).not.toMatch(/\\basync\\s+function\\s*\\*/);\n\t\t\texpect(code, filename).not.toMatch(/\\basync\\s*\\*\\s*[\\w$[]/);\n\t\t\texpect(code, filename).not.toMatch(/\\bfor\\s+await\\s*\\(/);\n\t\t}\n\t});\n\tit(\"handles JSON files without Babel\", async () => {\n\t\tconst jsonSource = JSON.stringify({\n\t\t\tname: \"my-package\",\n\t\t\tversion: \"1.0.0\"\n\t\t});\n\t\tconst result = await transform({}, \"/project\", \"package.json\", Buffer.from(jsonSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.dependencies).toEqual([]);\n\t\texpect(result.output).toHaveLength(1);\n\t\texpect(result.output[0].type).toBe(\"js/module\");\n\t\texpect(result.output[0].data.code).toContain(\"module.exports = {\\\"name\\\":\\\"my-package\\\",\\\"version\\\":\\\"1.0.0\\\"}\");\n\t\texpect(result.output[0].data.code).toContain(\"__d(function (global, require\");\n\t});\n\tit(\"handles Asset files without Babel\", async () => {\n\t\tconst result = await transform({\n\t\t\tassetRegistryPath: \"react-native/Libraries/Image/AssetRegistry\",\n\t\t\tpublicPath: \"/assets\"\n\t\t}, \"/project\", \"logo.png\", Buffer.from(\"fake-png-binary-data\", \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"asset\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].type).toBe(\"js/module/asset\");\n\t\texpect(result.output[0].data.code).toContain(\"registerAsset(\");\n\t\texpect(result.output[0].data.code).toContain(\"__d(function\");\n\t\texpect(result.dependencies.map((d) => d.name)).toContain(\"react-native/Libraries/Image/AssetRegistry\");\n\t});\n\tit(\"handles Flow files by stripping types without Babel\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"math.js\", Buffer.from(`\n // @flow\n function add(a: number, b: number): number {\n return a + b;\n }\n export default add;\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].data.code).not.toContain(\": number\");\n\t\texpect(result.output[0].data.code).toContain(\"function add(a, b)\");\n\t});\n\tit(\"generates a deterministic cache key without Babel\", () => {\n\t\tconst key1 = getCacheKey({\n\t\t\tglobalPrefix: \"__one_\",\n\t\t\tminifierPath: \"terser\"\n\t\t}, { projectRoot: \"/app\" });\n\t\tconst key2 = getCacheKey({\n\t\t\tglobalPrefix: \"__one_\",\n\t\t\tminifierPath: \"terser\"\n\t\t}, { projectRoot: \"/app\" });\n\t\tconst key3 = getCacheKey({ globalPrefix: \"__other_\" }, { projectRoot: \"/app\" });\n\t\tassertZeroBabelCalls();\n\t\texpect(key1).toBe(key2);\n\t\texpect(key1).not.toBe(key3);\n\t\texpect(typeof key1).toBe(\"string\");\n\t\texpect(key1.length).toBe(64);\n\t});\n\tit(\"correctly sets transformerPath in buildMetroConfigInputFromViteConfig when active\", async () => {\n\t\tconst mockViteConfig = { root: process.cwd() };\n\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\tconst configDefault = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});\n\t\texpect(configDefault.defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\texpect(configDefault.defaultConfig.transformer.transformerPath).toBeUndefined();\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: false })).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"0\";\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"1\";\n\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: false })).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t});\n\tit(\"falls back to default Metro babel transformer when a user babel config exists\", async () => {\n\t\tconst tempDir = path.join(process.cwd(), `.tmp-metro-test-${Date.now()}`);\n\t\tfs.mkdirSync(tempDir, { recursive: true });\n\t\tfs.writeFileSync(path.join(tempDir, \"package.json\"), \"{}\");\n\t\ttry {\n\t\t\tconst mockViteConfig = { root: tempDir };\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tconst babelConfigPath = path.join(tempDir, \"babel.config.js\");\n\t\t\tfs.writeFileSync(babelConfigPath, \"// @one-generated\\nmodule.exports = {}\");\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tfs.writeFileSync(babelConfigPath, \"module.exports = { plugins: [\\\"my-plugin\\\"] }\");\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"1\";\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: true })).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t} finally {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tfs.rmSync(tempDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"warns naming the ignored user babel config when native transforms are forced\", async () => {\n\t\tconst tempDir = fs.realpathSync(fs.mkdtempSync(path.join(process.cwd(), \".tmp-metro-test-\")));\n\t\tfs.writeFileSync(path.join(tempDir, \"package.json\"), \"{}\");\n\t\tconst babelConfigPath = path.join(tempDir, \"babel.config.js\");\n\t\tfs.writeFileSync(babelConfigPath, \"module.exports = { plugins: [] }\");\n\t\ttry {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tconst mockViteConfig = { root: tempDir };\n\t\t\tconst warnsWithConfig = (spy) => spy.mock.calls.some((args) => args.join(\" \").includes(babelConfigPath));\n\t\t\tconst optionWarn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\t\t\ttry {\n\t\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: true })).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\t\texpect(warnsWithConfig(optionWarn)).toBe(true);\n\t\t\t} finally {\n\t\t\t\toptionWarn.mockRestore();\n\t\t\t}\n\t\t\tconst envWarn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\t\t\ttry {\n\t\t\t\tprocess.env.ONE_METRO_NATIVE_TRANSFORMS = \"1\";\n\t\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\t\texpect(warnsWithConfig(envWarn)).toBe(true);\n\t\t\t} finally {\n\t\t\t\tenvWarn.mockRestore();\n\t\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\t}\n\t\t\tconst respectedWarn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\t\t\ttry {\n\t\t\t\texpect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\t\t\texpect(warnsWithConfig(respectedWarn)).toBe(false);\n\t\t\t} finally {\n\t\t\t\trespectedWarn.mockRestore();\n\t\t\t}\n\t\t} finally {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tfs.rmSync(tempDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"selects the same transformer in both metro config builders\", async () => {\n\t\tconst tempDir = fs.realpathSync(fs.mkdtempSync(path.join(process.cwd(), \".tmp-metro-test-\")));\n\t\tfs.writeFileSync(path.join(tempDir, \"package.json\"), \"{}\");\n\t\ttry {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tconst mockViteConfig = { root: tempDir };\n\t\t\tconst nativeInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});\n\t\t\tconst nativeFull = await getMetroConfigFromViteConfig(mockViteConfig, {});\n\t\t\texpect(nativeInput.defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\texpect(nativeFull.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\tconst babelConfigPath = path.join(tempDir, \"babel.config.js\");\n\t\t\tfs.writeFileSync(babelConfigPath, \"module.exports = { plugins: [] }\");\n\t\t\tconst fallbackInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});\n\t\t\tconst fallbackFull = await getMetroConfigFromViteConfig(mockViteConfig, {});\n\t\t\texpect(fallbackInput.defaultConfig.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\t\texpect(fallbackFull.transformerPath).not.toContain(\"metroNativeWorker\");\n\t\t\tconst forcedWarn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\t\t\ttry {\n\t\t\t\tconst forcedInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, { nativeTransforms: true });\n\t\t\t\tconst forcedFull = await getMetroConfigFromViteConfig(mockViteConfig, { nativeTransforms: true });\n\t\t\t\texpect(forcedInput.defaultConfig.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\t\texpect(forcedFull.transformerPath).toContain(\"metroNativeWorker\");\n\t\t\t\texpect(forcedWarn.mock.calls.some((args) => args.join(\" \").includes(babelConfigPath))).toBe(true);\n\t\t\t} finally {\n\t\t\t\tforcedWarn.mockRestore();\n\t\t\t}\n\t\t} finally {\n\t\t\tdelete process.env.ONE_METRO_NATIVE_TRANSFORMS;\n\t\t\tfs.rmSync(tempDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true\n\t\t\t});\n\t\t}\n\t});\n\tit(\"transforms and executes a real 2-module Metro bundle through metro-runtime require polyfill\", async () => {\n\t\tconst depSource = \"exports.value = 42;\";\n\t\tconst aSource = \"const dep = require(\\\"./dep\\\"); module.exports = { doubled: dep.value * 2 };\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst aRes = await transform({}, \"/project\", \"a.js\", Buffer.from(aSource, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: [2]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(aRes.dependencies).toHaveLength(1);\n\t\texpect(aRes.dependencies[0].name).toBe(\"./dep\");\n\t\tconst aEmittedCode = aRes.output[0].data.code;\n\t\texpect(aEmittedCode).toContain(\"require(_dependencyMap[0], \\\"./dep\\\")\");\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\tvm.runInContext(aEmittedCode, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toEqual({ doubled: 84 });\n\t});\n\tit(\"transforms and executes a 2-module Metro bundle with ESM imports in dev mode\", async () => {\n\t\tconst depSource = \"export const greeting = \\\"Hello Metro Native\\\";\";\n\t\tconst aSource = \"import { greeting } from \\\"./dep\\\"; export const message = greeting.toUpperCase();\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst aRes = await transform({}, \"/project\", \"a.js\", Buffer.from(aSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: [2]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: true,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\tvm.runInContext(aRes.output[0].data.code, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj).message).toBe(\"HELLO METRO NATIVE\");\n\t});\n\tit(\"respects lexical scope shadowing for require calls (Astra probe)\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"shadowed.js\", Buffer.from(\"function f(require){return require(\\\"./local\\\")}; module.exports=f(x=>x);\", \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies).toHaveLength(0);\n\t\tconst emitted = res.output[0].data.code;\n\t\texpect(emitted).not.toContain(\"_dependencyMap[0]\");\n\t\texpect(emitted).toMatch(/require\\d*\\(\"\\.\\/local\"\\)/);\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(emitted, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toBe(\"./local\");\n\t});\n\tit(\"preserves distinct indexed identity for duplicate and mixed sync/async dependencies\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"index.js\", Buffer.from(`\n const a = require('./dep');\n const b = require('./dep');\n async function load() {\n const c = await import('./dep');\n }\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies.map((d) => d.name)).toContain(\"./dep\");\n\t\tconst syncDep = res.dependencies.find((d) => d.name === \"./dep\" && d.data.asyncType === null);\n\t\tconst asyncDep = res.dependencies.find((d) => d.name === \"./dep\" && d.data.asyncType === \"async\");\n\t\texpect(syncDep).toBeDefined();\n\t\texpect(asyncDep).toBeDefined();\n\t\texpect(syncDep.data.index).not.toEqual(asyncDep.data.index);\n\t\tconst emitted = res.output[0].data.code;\n\t\tconst syncIndex = syncDep.data.index;\n\t\texpect(emitted).toContain(`require(_dependencyMap[${syncIndex}], \"./dep\")`);\n\t});\n\tit(\"conforms to Metro map ABI with raw mapping segment tuples and accurate symbolication\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"math.ts\", Buffer.from(`\n export function add(a: number, b: number): number {\n return a + b;\n }\n `, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst map = res.output[0].data.map;\n\t\texpect(Array.isArray(map)).toBe(true);\n\t\texpect(map.length).toBeGreaterThan(0);\n\t\tfor (const tuple of map) {\n\t\t\texpect(Array.isArray(tuple)).toBe(true);\n\t\t\texpect(typeof tuple[0]).toBe(\"number\");\n\t\t\texpect(typeof tuple[1]).toBe(\"number\");\n\t\t\texpect(tuple).not.toHaveProperty(\"version\");\n\t\t\texpect(tuple).not.toHaveProperty(\"mappings\");\n\t\t}\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMap = msm.fromRawMappings([{\n\t\t\tcode: res.output[0].data.code,\n\t\t\tsource: \"math.ts\",\n\t\t\tmap\n\t\t}]).toMap();\n\t\tconst consumer = new msm.Consumer(fullMap);\n\t\tconst addLineIndex = res.output[0].data.code.split(\"\\n\").findIndex((l) => l.includes(\"function add\"));\n\t\texpect(addLineIndex).toBeGreaterThan(0);\n\t\texpect(consumer.originalPositionFor({\n\t\t\tline: addLineIndex + 1,\n\t\t\tcolumn: 16\n\t\t}).line).toBe(2);\n\t});\n\tit(\"models JS hoisting in ScopeTracker for functions and vars (Astra probe)\", async () => {\n\t\tconst res = await transform({}, \"/project\", \"hoisted.js\", Buffer.from(\"function f(){const x=require(\\\"./local\\\"); function require(x){return x}; return x} module.exports=f();\", \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(res.dependencies).toHaveLength(0);\n\t\tconst emitted = res.output[0].data.code;\n\t\texpect(emitted).not.toContain(\"_dependencyMap[0]\");\n\t\texpect(emitted).toMatch(/require\\d*\\(\"\\.\\/local\"\\)/);\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst contextObj = {\n\t\t\t__DEV__: false,\n\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\tconsole\n\t\t};\n\t\tcontextObj.global = contextObj;\n\t\tvm.createContext(contextObj);\n\t\tvm.runInContext(polyfillCode, contextObj);\n\t\tvm.runInContext(emitted, contextObj);\n\t\texpect(vm.runInContext(\"global.__r(1)\", contextObj)).toBe(\"./local\");\n\t});\n\tit(\"rewrites dynamic import to Metro asyncRequire and executes promise resolution in dev and release\", async () => {\n\t\tconst depSource = \"exports.message = \\\"hello dynamic\\\";\";\n\t\tconst mainSource = \"module.exports = () => import(\\\"./dep\\\");\";\n\t\tconst depRes = await transform({}, \"/project\", \"dep.js\", Buffer.from(depSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 2,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tconst mainRes = await transform({}, \"/project\", \"main.js\", Buffer.from(mainSource, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tmoduleId: 0,\n\t\t\tdependencyIds: [2, 1]\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst depNames = mainRes.dependencies.map((d) => d.name);\n\t\texpect(depNames).toContain(\"./dep\");\n\t\texpect(depNames).toContain(\"metro-runtime/src/modules/asyncRequire\");\n\t\texpect(mainRes.dependencies.find((d) => d.name === \"./dep\").data.asyncType).toBe(\"async\");\n\t\tconst emittedMain = mainRes.output[0].data.code;\n\t\texpect(emittedMain).not.toContain(\"import(\\\"./dep\\\")\");\n\t\texpect(emittedMain).toContain(\"require(_dependencyMap[1], \\\"metro-runtime/src/modules/asyncRequire\\\")(_dependencyMap[0], _dependencyMap.paths, \\\"./dep\\\")\");\n\t\tconst polyfillPath = __require.resolve(\"metro-runtime/src/polyfills/require.js\");\n\t\tconst polyfillCode = fs.readFileSync(polyfillPath, \"utf8\");\n\t\tconst asyncRequirePath = __require.resolve(\"metro-runtime/src/modules/asyncRequire.js\");\n\t\tconst wrappedAsyncRequire = wrapModule(fs.readFileSync(asyncRequirePath, \"utf8\"), {\n\t\t\tmoduleId: 1,\n\t\t\tdependencyIds: []\n\t\t});\n\t\tfor (const isDev of [true, false]) {\n\t\t\tconst contextObj = {\n\t\t\t\t__DEV__: isDev,\n\t\t\t\t__METRO_GLOBAL_PREFIX__: \"\",\n\t\t\t\tconsole\n\t\t\t};\n\t\t\tcontextObj.global = contextObj;\n\t\t\tvm.createContext(contextObj);\n\t\t\tvm.runInContext(polyfillCode, contextObj);\n\t\t\tvm.runInContext(wrappedAsyncRequire, contextObj);\n\t\t\tvm.runInContext(depRes.output[0].data.code, contextObj);\n\t\t\tvm.runInContext(emittedMain, contextObj);\n\t\t\tconst mainFn = vm.runInContext(\"global.__r(0)\", contextObj);\n\t\t\texpect(typeof mainFn).toBe(\"function\");\n\t\t\tconst promise = mainFn();\n\t\t\texpect(promise instanceof Promise || promise && typeof promise.then === \"function\").toBe(true);\n\t\t\tconst resolved = await promise;\n\t\t\texpect(resolved.message).toBe(\"hello dynamic\");\n\t\t\texpect(resolved.default.message).toBe(\"hello dynamic\");\n\t\t}\n\t});\n\tit(\"preserves accurate sourcemap for tokens after rewritten require calls on the same line\", async () => {\n\t\tconst sourceCode = \"const a = require(\\\"./dep\\\"), b = 42;\";\n\t\tconst resWrapped = await transform({}, \"/project\", \"app.js\", Buffer.from(sourceCode, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\tconst msm = await import(\"metro-source-map\");\n\t\tconst fullMapWrapped = msm.fromRawMappings([{\n\t\t\tcode: resWrapped.output[0].data.code,\n\t\t\tsource: \"app.js\",\n\t\t\tmap: resWrapped.output[0].data.map\n\t\t}]).toMap();\n\t\tconst consumerWrapped = new msm.Consumer(fullMapWrapped);\n\t\tconst linesWrapped = resWrapped.output[0].data.code.split(\"\\n\");\n\t\tconst lineIndexWrapped = linesWrapped.findIndex((l) => l.includes(\"b = 42\"));\n\t\texpect(lineIndexWrapped).toBeGreaterThanOrEqual(0);\n\t\tconst generatedColWrapped = linesWrapped[lineIndexWrapped].indexOf(\"b = 42\");\n\t\texpect(generatedColWrapped).toBeGreaterThan(0);\n\t\tconst posWrapped = consumerWrapped.originalPositionFor({\n\t\t\tline: lineIndexWrapped + 1,\n\t\t\tcolumn: generatedColWrapped\n\t\t});\n\t\texpect(posWrapped.line).toBe(1);\n\t\texpect(posWrapped.column).toBe(28);\n\t\texpect(sourceCode.slice(Number(posWrapped.column))).toContain(\"b = 42;\");\n\t\tconst resUnwrapped = await transform({ unstable_disableModuleWrapping: true }, \"/project\", \"app.js\", Buffer.from(sourceCode, \"utf8\"), {\n\t\t\tdev: false,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\tconst fullMapUnwrapped = msm.fromRawMappings([{\n\t\t\tcode: resUnwrapped.output[0].data.code,\n\t\t\tsource: \"app.js\",\n\t\t\tmap: resUnwrapped.output[0].data.map\n\t\t}]).toMap();\n\t\tconst consumerUnwrapped = new msm.Consumer(fullMapUnwrapped);\n\t\tconst linesUnwrapped = resUnwrapped.output[0].data.code.split(\"\\n\");\n\t\tconst lineIndexUnwrapped = linesUnwrapped.findIndex((l) => l.includes(\"b = 42\"));\n\t\texpect(lineIndexUnwrapped).toBeGreaterThanOrEqual(0);\n\t\tconst generatedColUnwrapped = linesUnwrapped[lineIndexUnwrapped].indexOf(\"b = 42\");\n\t\tconst posUnwrapped = consumerUnwrapped.originalPositionFor({\n\t\t\tline: lineIndexUnwrapped + 1,\n\t\t\tcolumn: generatedColUnwrapped\n\t\t});\n\t\texpect(posUnwrapped.line).toBe(1);\n\t\texpect(posUnwrapped.column).toBe(28);\n\t});\n\tit(\"routes a require.context whose directory is held in a variable through the dependency map\", async () => {\n\t\tconst result = await transform({}, \"/project\", \"entry.js\", Buffer.from(`\n const routeRoot = './app'\n export const ctx = require.context(routeRoot, true, /\\\\.tsx$/)\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t});\n\t\texpect(result.dependencies.find((d) => d.data.contextParams != null)?.name).toBe(\"./app\");\n\t\tconst calls = [];\n\t\tlet ctx;\n\t\tvm.runInNewContext(result.output[0].data.code, { __d: (factory) => {\n\t\t\tconst module = { exports: {} };\n\t\t\tconst req = (...args) => {\n\t\t\t\tcalls.push(args);\n\t\t\t\treturn { keys: () => [] };\n\t\t\t};\n\t\t\treq.context = () => {\n\t\t\t\tthrow new Error(\"fallbackRequireContext reached\");\n\t\t\t};\n\t\t\tfactory({}, req, () => ({}), () => ({}), module, module.exports, [\"./app\"]);\n\t\t\tctx = module.exports.ctx;\n\t\t} });\n\t\texpect(ctx).toBeDefined();\n\t\texpect(calls[0][1]).toBe(\"./app\");\n\t});\n\tit(\"gives loop bodies per-iteration bindings that survive a runtime without them\", async () => {\n\t\tconst asHermesWouldSeeIt = (await transform({}, \"/project\", \"loops.ts\", Buffer.from(`\n export function collect() {\n const out = []\n for (let i = 0; i < 2; i++) out.push(() => i)\n for (const label of ['a', 'b']) out.push(() => label)\n for (const key in { x: 1, y: 2 }) out.push(() => key)\n return out.map((f) => f())\n }\n `, \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\"\n\t\t})).output[0].data.code.replace(/\\bfor\\s*\\(\\s*(let|const)\\b/g, \"for (var\");\n\t\tlet collect;\n\t\tvm.runInNewContext(asHermesWouldSeeIt, { __d: (factory) => {\n\t\t\tconst module = { exports: {} };\n\t\t\tfactory({}, () => ({}), () => ({}), () => ({}), module, module.exports, []);\n\t\t\tcollect = module.exports.collect;\n\t\t} });\n\t\texpect(collect()).toEqual([\n\t\t\t0,\n\t\t\t1,\n\t\t\t\"a\",\n\t\t\t\"b\",\n\t\t\t\"x\",\n\t\t\t\"y\"\n\t\t]);\n\t});\n});\ndescribe(\"one native transform ports\", () => {\n\tit(\"inlines process.env.ONE_SERVER_URL so a native bundle can find its loaders\", () => {\n\t\tprocess.env.ONE_SERVER_URL = \"https://example.test\";\n\t\ttry {\n\t\t\texpect(applyInlineEnvVars(\"export const url = process.env.ONE_SERVER_URL;\", \"loader.ts\", false)).toBe(\"export const url = \\\"https://example.test\\\";\");\n\t\t} finally {\n\t\t\tprocess.env.ONE_SERVER_URL = void 0;\n\t\t}\n\t});\n\tit(\"leaves ONE_SERVER_URL alone when it is only a string\", () => {\n\t\tconst src = \"export const key = \\\"process.env.ONE_SERVER_URL\\\";\";\n\t\texpect(applyInlineEnvVars(src, \"a.ts\", false)).toBe(src);\n\t});\n\tit(\"inlines import.meta.env reads, which oxc otherwise lowers to an empty object\", () => {\n\t\tconst out = applyInlineEnvVars(`export const key = import.meta.env.VITE_POSTHOG_API_KEY;\nexport const target = import.meta.env?.TAMAGUI_TARGET;\nexport const missing = import.meta.env.NOT_SET;\nexport const all = { ...import.meta.env };`, \"env.ts\", true, {\n\t\t\tDEV: false,\n\t\t\tVITE_POSTHOG_API_KEY: \"pk_live\",\n\t\t\tTAMAGUI_TARGET: \"native\"\n\t\t});\n\t\texpect(out).toContain(\"export const key = \\\"pk_live\\\";\");\n\t\texpect(out).toContain(\"export const target = \\\"native\\\";\");\n\t\texpect(out).toContain(\"export const missing = undefined;\");\n\t\texpect(out).toContain(\"\\\"VITE_POSTHOG_API_KEY\\\":\\\"pk_live\\\"\");\n\t\texpect(out).not.toContain(\"import.meta\");\n\t});\n\tit(\"inlines process.env keys the vite env map defines\", () => {\n\t\tconst out = applyInlineEnvVars(\"export const t = process.env.TAMAGUI_TARGET; export const u = process.env.UNKNOWN_THING;\", \"env.ts\", true, { TAMAGUI_TARGET: \"native\" });\n\t\texpect(out).toContain(\"export const t = \\\"native\\\";\");\n\t\texpect(out).toContain(\"process.env.UNKNOWN_THING\");\n\t});\n\tit(\"never rewrites an env read in an assignment target\", () => {\n\t\tconst src = \"process.env.VITE_ENVIRONMENT = \\\"ssr\\\";\";\n\t\texpect(applyInlineEnvVars(src, \"a.ts\", true, { VITE_ENVIRONMENT: \"ios\" })).toBe(src);\n\t});\n\tit(\"folds branches the inlining made constant so metro never resolves dead imports\", () => {\n\t\tconst out = applyInlineEnvVars(`if (import.meta.env.SSR) { require('./server-only-thing') } else { load(import.meta.env.API) }`, \"branch.ts\", true, {\n\t\t\tSSR: false,\n\t\t\tAPI: \"https://api.test\"\n\t\t});\n\t\texpect(out).not.toContain(\"server-only-thing\");\n\t\texpect(out).toContain(\"load(\\\"https://api.test\\\")\");\n\t});\n\tit(\"folds a ternary and keeps a branch it cannot resolve\", () => {\n\t\texpect(applyInlineEnvVars(\"const a = import.meta.env.DEV ? x : y;\", \"a.ts\", true, { DEV: false })).toContain(\"const a = y;\");\n\t\tconst dynamic = \"const a = flag ? x : y;\";\n\t\texpect(applyInlineEnvVars(dynamic, \"a.ts\", true, { DEV: false })).toBe(dynamic);\n\t});\n\tit(\"runs the user native transforms that stand in for their babel plugins\", async () => {\n\t\tconst result = await transform({}, import.meta.dirname, \"ota.ts\", Buffer.from(\"export const id = __EXAMPLE_BUILD_ID; export const from = __EXAMPLE_FILENAME;\", \"utf8\"), {\n\t\t\tdev: true,\n\t\t\tplatform: \"ios\",\n\t\t\ttype: \"module\",\n\t\t\tcustomTransformOptions: { vite: { nativeTransformModules: [\"./__fixtures__/exampleNativeTransform.cjs\"] } }\n\t\t});\n\t\tassertZeroBabelCalls();\n\t\texpect(result.output[0].data.code).toContain(\"\\\"ios-build\\\"\");\n\t\texpect(result.output[0].data.code).not.toContain(\"__EXAMPLE_BUILD_ID\");\n\t\texpect(result.output[0].data.code).toContain(JSON.stringify(path.join(import.meta.dirname, \"ota.ts\")));\n\t});\n\tit(\"refuses to build when a user babel plugin has no native port\", () => {\n\t\tconst withPlugins = (plugins) => ({ customTransformOptions: { vite: { babelConfig: { plugins } } } });\n\t\texpect(() => assertNoUnportedBabelPlugins(withPlugins([\n\t\t\t[\"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\", { env: {} }],\n\t\t\t\"one/babel-plugin-environment-guard\",\n\t\t\t\"hot-updater/babel-plugin\"\n\t\t]))).toThrow(/hot-updater\\/babel-plugin/);\n\t\texpect(() => assertNoUnportedBabelPlugins(withPlugins([\n\t\t\t[\"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\", { env: {} }],\n\t\t\t\"one/babel-plugin-environment-guard\",\n\t\t\t[\"one/babel-plugin-remove-server-code\", { routerRoot: \"app\" }],\n\t\t\t[\"babel-plugin-module-resolver\", { alias: {} }],\n\t\t\t[\"one/babel-plugin-one-router-metro\", {}],\n\t\t\t\"one/babel-plugin-inline-one-server-url\",\n\t\t\t\"babel-plugin-react-compiler\",\n\t\t\t\"react-native-reanimated/plugin\"\n\t\t]))).not.toThrow();\n\t});\n\tit(\"turns a server-only import into a throw and drops native-only\", () => {\n\t\tconst out = applyEnvironmentGuard(`import 'native-only'\n\nexport const a = 1`, \"route.ts\");\n\t\texpect(out).not.toContain(\"native-only\");\n\t\texpect(out).toContain(\"server-only cannot be imported in a native environment\");\n\t\tconst parsed = parseSync(\"route.ts\", out, { lang: \"ts\" });\n\t\texpect(parsed.errors).toEqual([]);\n\t\texpect(parsed.program.body.map((n) => n.type)).toContain(\"ThrowStatement\");\n\t});\n\tit(\"reads the router root off one's remove-server-code plugin entry\", () => {\n\t\texpect(getRemoveServerCodeRouterRoot({ customTransformOptions: { vite: { babelConfig: { plugins: [[\"one/babel-plugin-remove-server-code\", { routerRoot: \"src/app\" }]] } } } })).toBe(\"src/app\");\n\t\texpect(getRemoveServerCodeRouterRoot({ customTransformOptions: {} })).toBe(void 0);\n\t});\n});\ndescribe(\"metro babel fallback config names\", () => {\n\tit(\"extends json babel configs just like the compiler detection does\", async () => {\n\t\tfor (const name of [\"babel.config.json\", \".babelrc.json\"]) {\n\t\t\tvi.resetModules();\n\t\t\tconst { loadBabelConfig: loadBabelConfig2 } = await import(\"./loadBabelConfig\");\n\t\t\tconst tempDir2 = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), \"vxrn-babel-json-\")));\n\t\t\ttry {\n\t\t\t\tfs.writeFileSync(path.join(tempDir2, name), JSON.stringify({ plugins: [] }));\n\t\t\t\texpect(loadBabelConfig2({ projectRoot: tempDir2 })).toEqual({ extends: path.join(tempDir2, name) });\n\t\t\t} finally {\n\t\t\t\tfs.rmSync(tempDir2, {\n\t\t\t\t\trecursive: true,\n\t\t\t\t\tforce: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tvi.resetModules();\n\t\tconst { loadBabelConfig } = await import(\"./loadBabelConfig\");\n\t\tconst tempDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), \"vxrn-babel-json-\")));\n\t\ttry {\n\t\t\tfs.writeFileSync(path.join(tempDir, \"babel.config.js\"), \"module.exports = { plugins: [] }\");\n\t\t\texpect(loadBabelConfig({ projectRoot: tempDir })).toEqual({ extends: path.join(tempDir, \"babel.config.js\") });\n\t\t} finally {\n\t\t\tfs.rmSync(tempDir, {\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":[]}
|
|
@@ -2,10 +2,11 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
2
2
|
import * as vm from "vm";
|
|
3
3
|
import { parseSync } from "oxc-parser";
|
|
4
4
|
import * as fs from "fs";
|
|
5
|
+
import * as os from "os";
|
|
5
6
|
import * as path from "path";
|
|
6
7
|
import { createRequire } from "module";
|
|
7
8
|
import { applyEnvironmentGuard, applyInlineEnvVars, assertNoUnportedBabelPlugins, extractDependencies, getCacheKey, getRemoveServerCodeRouterRoot, transform, wrapModule } from "./metroNativeWorker.native.js";
|
|
8
|
-
import { buildMetroConfigInputFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig.native.js";
|
|
9
|
+
import { buildMetroConfigInputFromViteConfig, getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig.native.js";
|
|
9
10
|
var __require = /* @__PURE__ */(x => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
10
11
|
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
11
12
|
}) : x)(function (x) {
|
|
@@ -462,6 +463,96 @@ describe("metroNativeWorker", function () {
|
|
|
462
463
|
});
|
|
463
464
|
}
|
|
464
465
|
});
|
|
466
|
+
it("warns naming the ignored user babel config when native transforms are forced", async function () {
|
|
467
|
+
var tempDir = fs.realpathSync(fs.mkdtempSync(path.join(process.cwd(), ".tmp-metro-test-")));
|
|
468
|
+
fs.writeFileSync(path.join(tempDir, "package.json"), "{}");
|
|
469
|
+
var babelConfigPath = path.join(tempDir, "babel.config.js");
|
|
470
|
+
fs.writeFileSync(babelConfigPath, "module.exports = { plugins: [] }");
|
|
471
|
+
try {
|
|
472
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
|
|
473
|
+
var mockViteConfig = {
|
|
474
|
+
root: tempDir
|
|
475
|
+
};
|
|
476
|
+
var warnsWithConfig = function (spy) {
|
|
477
|
+
return spy.mock.calls.some(function (args) {
|
|
478
|
+
return args.join(" ").includes(babelConfigPath);
|
|
479
|
+
});
|
|
480
|
+
};
|
|
481
|
+
var optionWarn = vi.spyOn(console, "warn").mockImplementation(function () {});
|
|
482
|
+
try {
|
|
483
|
+
expect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
484
|
+
nativeTransforms: true
|
|
485
|
+
})).defaultConfig.transformerPath).toContain("metroNativeWorker");
|
|
486
|
+
expect(warnsWithConfig(optionWarn)).toBe(true);
|
|
487
|
+
} finally {
|
|
488
|
+
optionWarn.mockRestore();
|
|
489
|
+
}
|
|
490
|
+
var envWarn = vi.spyOn(console, "warn").mockImplementation(function () {});
|
|
491
|
+
try {
|
|
492
|
+
process.env.ONE_METRO_NATIVE_TRANSFORMS = "1";
|
|
493
|
+
expect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).toContain("metroNativeWorker");
|
|
494
|
+
expect(warnsWithConfig(envWarn)).toBe(true);
|
|
495
|
+
} finally {
|
|
496
|
+
envWarn.mockRestore();
|
|
497
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
|
|
498
|
+
}
|
|
499
|
+
var respectedWarn = vi.spyOn(console, "warn").mockImplementation(function () {});
|
|
500
|
+
try {
|
|
501
|
+
expect((await buildMetroConfigInputFromViteConfig(mockViteConfig, {})).defaultConfig.transformerPath).not.toContain("metroNativeWorker");
|
|
502
|
+
expect(warnsWithConfig(respectedWarn)).toBe(false);
|
|
503
|
+
} finally {
|
|
504
|
+
respectedWarn.mockRestore();
|
|
505
|
+
}
|
|
506
|
+
} finally {
|
|
507
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
|
|
508
|
+
fs.rmSync(tempDir, {
|
|
509
|
+
recursive: true,
|
|
510
|
+
force: true
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
it("selects the same transformer in both metro config builders", async function () {
|
|
515
|
+
var tempDir = fs.realpathSync(fs.mkdtempSync(path.join(process.cwd(), ".tmp-metro-test-")));
|
|
516
|
+
fs.writeFileSync(path.join(tempDir, "package.json"), "{}");
|
|
517
|
+
try {
|
|
518
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
|
|
519
|
+
var mockViteConfig = {
|
|
520
|
+
root: tempDir
|
|
521
|
+
};
|
|
522
|
+
var nativeInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});
|
|
523
|
+
var nativeFull = await getMetroConfigFromViteConfig(mockViteConfig, {});
|
|
524
|
+
expect(nativeInput.defaultConfig.transformerPath).toContain("metroNativeWorker");
|
|
525
|
+
expect(nativeFull.transformerPath).toContain("metroNativeWorker");
|
|
526
|
+
var babelConfigPath = path.join(tempDir, "babel.config.js");
|
|
527
|
+
fs.writeFileSync(babelConfigPath, "module.exports = { plugins: [] }");
|
|
528
|
+
var fallbackInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {});
|
|
529
|
+
var fallbackFull = await getMetroConfigFromViteConfig(mockViteConfig, {});
|
|
530
|
+
expect(fallbackInput.defaultConfig.transformerPath).not.toContain("metroNativeWorker");
|
|
531
|
+
expect(fallbackFull.transformerPath).not.toContain("metroNativeWorker");
|
|
532
|
+
var forcedWarn = vi.spyOn(console, "warn").mockImplementation(function () {});
|
|
533
|
+
try {
|
|
534
|
+
var forcedInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
535
|
+
nativeTransforms: true
|
|
536
|
+
});
|
|
537
|
+
var forcedFull = await getMetroConfigFromViteConfig(mockViteConfig, {
|
|
538
|
+
nativeTransforms: true
|
|
539
|
+
});
|
|
540
|
+
expect(forcedInput.defaultConfig.transformerPath).toContain("metroNativeWorker");
|
|
541
|
+
expect(forcedFull.transformerPath).toContain("metroNativeWorker");
|
|
542
|
+
expect(forcedWarn.mock.calls.some(function (args) {
|
|
543
|
+
return args.join(" ").includes(babelConfigPath);
|
|
544
|
+
})).toBe(true);
|
|
545
|
+
} finally {
|
|
546
|
+
forcedWarn.mockRestore();
|
|
547
|
+
}
|
|
548
|
+
} finally {
|
|
549
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
|
|
550
|
+
fs.rmSync(tempDir, {
|
|
551
|
+
recursive: true,
|
|
552
|
+
force: true
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
});
|
|
465
556
|
it("transforms and executes a real 2-module Metro bundle through metro-runtime require polyfill", async function () {
|
|
466
557
|
var depSource = "exports.value = 42;";
|
|
467
558
|
var aSource = "const dep = require(\"./dep\"); module.exports = { doubled: dep.value * 2 };";
|
|
@@ -985,4 +1076,49 @@ export const a = 1`, "route.ts");
|
|
|
985
1076
|
})).toBe(void 0);
|
|
986
1077
|
});
|
|
987
1078
|
});
|
|
1079
|
+
describe("metro babel fallback config names", function () {
|
|
1080
|
+
it("extends json babel configs just like the compiler detection does", async function () {
|
|
1081
|
+
for (var _i = 0, _iter = ["babel.config.json", ".babelrc.json"]; _i < _iter.length; _i++) {
|
|
1082
|
+
var name = _iter[_i];
|
|
1083
|
+
vi.resetModules();
|
|
1084
|
+
var {
|
|
1085
|
+
loadBabelConfig
|
|
1086
|
+
} = await import("./loadBabelConfig.native.js");
|
|
1087
|
+
var tempDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), "vxrn-babel-json-")));
|
|
1088
|
+
try {
|
|
1089
|
+
fs.writeFileSync(path.join(tempDir, name), JSON.stringify({
|
|
1090
|
+
plugins: []
|
|
1091
|
+
}));
|
|
1092
|
+
expect(loadBabelConfig({
|
|
1093
|
+
projectRoot: tempDir
|
|
1094
|
+
})).toEqual({
|
|
1095
|
+
extends: path.join(tempDir, name)
|
|
1096
|
+
});
|
|
1097
|
+
} finally {
|
|
1098
|
+
fs.rmSync(tempDir, {
|
|
1099
|
+
recursive: true,
|
|
1100
|
+
force: true
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
vi.resetModules();
|
|
1105
|
+
var {
|
|
1106
|
+
loadBabelConfig: loadBabelConfig1
|
|
1107
|
+
} = await import("./loadBabelConfig.native.js");
|
|
1108
|
+
var tempDir1 = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), "vxrn-babel-json-")));
|
|
1109
|
+
try {
|
|
1110
|
+
fs.writeFileSync(path.join(tempDir1, "babel.config.js"), "module.exports = { plugins: [] }");
|
|
1111
|
+
expect(loadBabelConfig1({
|
|
1112
|
+
projectRoot: tempDir1
|
|
1113
|
+
})).toEqual({
|
|
1114
|
+
extends: path.join(tempDir1, "babel.config.js")
|
|
1115
|
+
});
|
|
1116
|
+
} finally {
|
|
1117
|
+
fs.rmSync(tempDir1, {
|
|
1118
|
+
recursive: true,
|
|
1119
|
+
force: true
|
|
1120
|
+
});
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
});
|
|
988
1124
|
//# sourceMappingURL=metroNativeWorker.test.native.js.map
|