@vxrn/vite-plugin-metro 2.0.0-beta.137.1 → 2.0.0-beta.139.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 +12 -18
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +12 -18
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +12 -18
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +7 -1
- package/dist/cjs/transformer/babel-transformer.native.cjs +8 -1
- package/dist/cjs/transformer/babel-transformer.native.js +8 -1
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.cjs +6 -1
- package/dist/cjs/transformer/metroNativeWorker.native.cjs +7 -1
- package/dist/cjs/transformer/metroNativeWorker.native.js +7 -1
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +12 -18
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +12 -18
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/transformer/babel-transformer.mjs +7 -1
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +8 -1
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.mjs +6 -1
- package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.native.js +7 -1
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/package.json +4 -4
- package/src/metro-config/getMetroConfigFromViteConfig.ts +4 -2
- package/src/transformer/babel-transformer.ts +21 -1
- package/src/transformer/metroNativeWorker.ts +18 -2
- package/src/transformer/swiftPackageTransform.test.ts +48 -0
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
|
@@ -13,6 +13,16 @@ const expoEnvAdditionalExts = [
|
|
|
13
13
|
"local",
|
|
14
14
|
"development"
|
|
15
15
|
];
|
|
16
|
+
const metroSourceExts = [
|
|
17
|
+
"js",
|
|
18
|
+
"jsx",
|
|
19
|
+
"json",
|
|
20
|
+
"ts",
|
|
21
|
+
"tsx",
|
|
22
|
+
"mjs",
|
|
23
|
+
"cjs",
|
|
24
|
+
"swift"
|
|
25
|
+
];
|
|
16
26
|
const watchmanResponsivePromises = /* @__PURE__ */ new Map();
|
|
17
27
|
let didWarnAboutWatchmanFallback = false;
|
|
18
28
|
const rootIndexBundleRequestPattern = /^(https?:\/\/[^/]+)?\/index\.bundle(?=$|[?#])/;
|
|
@@ -158,15 +168,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
158
168
|
..._defaultConfig?.resolver,
|
|
159
169
|
useWatchman,
|
|
160
170
|
blockList,
|
|
161
|
-
sourceExts:
|
|
162
|
-
"js",
|
|
163
|
-
"jsx",
|
|
164
|
-
"json",
|
|
165
|
-
"ts",
|
|
166
|
-
"tsx",
|
|
167
|
-
"mjs",
|
|
168
|
-
"cjs"
|
|
169
|
-
],
|
|
171
|
+
sourceExts: metroSourceExts,
|
|
170
172
|
resolveRequest: (context, moduleName, platform) => {
|
|
171
173
|
const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
|
|
172
174
|
if (excludeModules && excludeModules.length > 0) {
|
|
@@ -241,15 +243,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
241
243
|
..._defaultConfig?.resolver,
|
|
242
244
|
useWatchman,
|
|
243
245
|
blockList,
|
|
244
|
-
sourceExts:
|
|
245
|
-
"js",
|
|
246
|
-
"jsx",
|
|
247
|
-
"json",
|
|
248
|
-
"ts",
|
|
249
|
-
"tsx",
|
|
250
|
-
"mjs",
|
|
251
|
-
"cjs"
|
|
252
|
-
],
|
|
246
|
+
sourceExts: metroSourceExts,
|
|
253
247
|
resolveRequest: (context, moduleName, platform) => {
|
|
254
248
|
const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;
|
|
255
249
|
if (excludeModules && excludeModules.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMetroConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.js"],"sourcesContent":["import { searchForWorkspaceRoot } from \"vite\";\nimport { spawn } from \"node:child_process\";\nimport { resolve } from \"node:path\";\nimport micromatch from \"micromatch\";\nimport { getDefaultConfig } from \"@react-native/metro-config\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nconst WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nconst expoEnvAdditionalExts = [\"env\", \"local\", \"development\"];\nconst watchmanResponsivePromises = /* @__PURE__ */ new Map();\nlet didWarnAboutWatchmanFallback = false;\nconst rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nconst expoVirtualEntryBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/\\.expo\\/\\.virtual-metro-entry\\.bundle(?=$|[?#])/;\nconst metroWatchExclusions = [\n /^(?!.*[/\\\\]node_modules[/\\\\]).*[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction enforceWorkspaceVisibility(config, projectRoot) {\n const workspaceRoot = searchForWorkspaceRoot(projectRoot);\n if (workspaceRoot === projectRoot) return config;\n return {\n ...config,\n watchFolders: [.../* @__PURE__ */ new Set([...config.watchFolders ?? [], workspaceRoot])],\n resolver: {\n ...config.resolver,\n nodeModulesPaths: [\n .../* @__PURE__ */ new Set([\n ...config.resolver?.nodeModulesPaths ?? [],\n resolve(projectRoot, \"node_modules\"),\n resolve(workspaceRoot, \"node_modules\")\n ])\n ]\n }\n };\n}\nfunction getReactNativeDefaultConfig(projectRoot) {\n return enforceWorkspaceVisibility(\n getDefaultConfig(projectRoot),\n projectRoot\n );\n}\nfunction getPlatformFromBundleUrl(url) {\n const platform = url.match(/[?&]platform=(ios|android)(?:&|$)/)?.[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n const resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (rootIndexBundleRequestPattern.test(url)) {\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n }\n return url.replace(\n expoVirtualEntryBundleRequestPattern,\n `$1/${resolvedMainModulePath}.bundle`\n );\n}\nfunction isMainModuleBundleRequest(url) {\n return rootIndexBundleRequestPattern.test(url) || expoVirtualEntryBundleRequestPattern.test(url);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n const innerResolveRequest = config?.resolver?.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config?.resolver,\n resolveRequest: (context, moduleName, platform) => {\n const bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n const resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain ?? moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n let probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise((resolve2) => {\n let settled = false;\n const finish = (value) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n const child = spawn(\"watchman\", [\"watch-project\", projectRoot], {\n stdio: \"ignore\"\n });\n const timeout = setTimeout(() => {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", () => {\n finish(false);\n });\n child.once(\"exit\", (code) => {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n const userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n const hasUserBabelConfig = Boolean(userBabelConfigPath);\n const isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(\n `[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`\n );\n }\n return { isNativeTransforms, userBabelConfigPath };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;\n const resolveMainModuleName = () => mainModuleName;\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl?.(url) ?? url;\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig?.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ..._defaultConfig?.watcher?.additionalExts ?? [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(\n enforceWorkspaceVisibility(merged, projectRoot),\n mainModuleName\n ),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { loadConfig } = await projectImport(projectRoot, \"metro\");\n const _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;\n const resolveMainModuleName = () => mainModuleName;\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl?.(url) ?? url;\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig?.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ..._defaultConfig?.watcher?.additionalExts ?? [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const metroConfig = await loadConfig(\n {\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n },\n {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n }\n );\n return {\n ...enforceBareMainModuleEntry(\n enforceWorkspaceVisibility(metroConfig, projectRoot),\n mainModuleName\n ),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getMetroConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.js"],"sourcesContent":["import { searchForWorkspaceRoot } from \"vite\";\nimport { spawn } from \"node:child_process\";\nimport { resolve } from \"node:path\";\nimport micromatch from \"micromatch\";\nimport { getDefaultConfig } from \"@react-native/metro-config\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nconst WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nconst expoEnvAdditionalExts = [\"env\", \"local\", \"development\"];\nconst metroSourceExts = [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\", \"swift\"];\nconst watchmanResponsivePromises = /* @__PURE__ */ new Map();\nlet didWarnAboutWatchmanFallback = false;\nconst rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nconst expoVirtualEntryBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/\\.expo\\/\\.virtual-metro-entry\\.bundle(?=$|[?#])/;\nconst metroWatchExclusions = [\n /^(?!.*[/\\\\]node_modules[/\\\\]).*[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction enforceWorkspaceVisibility(config, projectRoot) {\n const workspaceRoot = searchForWorkspaceRoot(projectRoot);\n if (workspaceRoot === projectRoot) return config;\n return {\n ...config,\n watchFolders: [.../* @__PURE__ */ new Set([...config.watchFolders ?? [], workspaceRoot])],\n resolver: {\n ...config.resolver,\n nodeModulesPaths: [\n .../* @__PURE__ */ new Set([\n ...config.resolver?.nodeModulesPaths ?? [],\n resolve(projectRoot, \"node_modules\"),\n resolve(workspaceRoot, \"node_modules\")\n ])\n ]\n }\n };\n}\nfunction getReactNativeDefaultConfig(projectRoot) {\n return enforceWorkspaceVisibility(\n getDefaultConfig(projectRoot),\n projectRoot\n );\n}\nfunction getPlatformFromBundleUrl(url) {\n const platform = url.match(/[?&]platform=(ios|android)(?:&|$)/)?.[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n const resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (rootIndexBundleRequestPattern.test(url)) {\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n }\n return url.replace(\n expoVirtualEntryBundleRequestPattern,\n `$1/${resolvedMainModulePath}.bundle`\n );\n}\nfunction isMainModuleBundleRequest(url) {\n return rootIndexBundleRequestPattern.test(url) || expoVirtualEntryBundleRequestPattern.test(url);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n const innerResolveRequest = config?.resolver?.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config?.resolver,\n resolveRequest: (context, moduleName, platform) => {\n const bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n const resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain ?? moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n let probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise((resolve2) => {\n let settled = false;\n const finish = (value) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n const child = spawn(\"watchman\", [\"watch-project\", projectRoot], {\n stdio: \"ignore\"\n });\n const timeout = setTimeout(() => {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", () => {\n finish(false);\n });\n child.once(\"exit\", (code) => {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n const userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n const hasUserBabelConfig = Boolean(userBabelConfigPath);\n const isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(\n `[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`\n );\n }\n return { isNativeTransforms, userBabelConfigPath };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;\n const resolveMainModuleName = () => mainModuleName;\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl?.(url) ?? url;\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig?.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ..._defaultConfig?.watcher?.additionalExts ?? [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: metroSourceExts,\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(\n enforceWorkspaceVisibility(merged, projectRoot),\n mainModuleName\n ),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { loadConfig } = await projectImport(projectRoot, \"metro\");\n const _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server?.rewriteRequestUrl;\n const resolveMainModuleName = () => mainModuleName;\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl?.(url) ?? url;\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig?.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ..._defaultConfig?.watcher?.additionalExts ?? [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: metroSourceExts,\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const metroConfig = await loadConfig(\n {\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n },\n {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n }\n );\n return {\n ...enforceBareMainModuleEntry(\n enforceWorkspaceVisibility(metroConfig, projectRoot),\n mainModuleName\n ),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
|
|
@@ -13,6 +13,16 @@ var expoEnvAdditionalExts = [
|
|
|
13
13
|
"local",
|
|
14
14
|
"development"
|
|
15
15
|
];
|
|
16
|
+
var metroSourceExts = [
|
|
17
|
+
"js",
|
|
18
|
+
"jsx",
|
|
19
|
+
"json",
|
|
20
|
+
"ts",
|
|
21
|
+
"tsx",
|
|
22
|
+
"mjs",
|
|
23
|
+
"cjs",
|
|
24
|
+
"swift"
|
|
25
|
+
];
|
|
16
26
|
var watchmanResponsivePromises = /* @__PURE__ */ new Map();
|
|
17
27
|
var didWarnAboutWatchmanFallback = false;
|
|
18
28
|
var rootIndexBundleRequestPattern = /^(https?:\/\/[^/]+)?\/index\.bundle(?=$|[?#])/;
|
|
@@ -168,15 +178,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
|
|
|
168
178
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,
|
|
169
179
|
useWatchman,
|
|
170
180
|
blockList,
|
|
171
|
-
sourceExts:
|
|
172
|
-
"js",
|
|
173
|
-
"jsx",
|
|
174
|
-
"json",
|
|
175
|
-
"ts",
|
|
176
|
-
"tsx",
|
|
177
|
-
"mjs",
|
|
178
|
-
"cjs"
|
|
179
|
-
],
|
|
181
|
+
sourceExts: metroSourceExts,
|
|
180
182
|
resolveRequest: function(context, moduleName, platform) {
|
|
181
183
|
var _defaultConfig_resolver2;
|
|
182
184
|
var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;
|
|
@@ -260,15 +262,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
|
|
|
260
262
|
..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,
|
|
261
263
|
useWatchman,
|
|
262
264
|
blockList,
|
|
263
|
-
sourceExts:
|
|
264
|
-
"js",
|
|
265
|
-
"jsx",
|
|
266
|
-
"json",
|
|
267
|
-
"ts",
|
|
268
|
-
"tsx",
|
|
269
|
-
"mjs",
|
|
270
|
-
"cjs"
|
|
271
|
-
],
|
|
265
|
+
sourceExts: metroSourceExts,
|
|
272
266
|
resolveRequest: function(context, moduleName, platform) {
|
|
273
267
|
var _defaultConfig_resolver2;
|
|
274
268
|
var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMetroConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.native.js"],"sourcesContent":["import { searchForWorkspaceRoot } from \"vite\";\nimport { spawn } from \"child_process\";\nimport { resolve } from \"path\";\nimport micromatch from \"micromatch\";\nimport { getDefaultConfig } from \"@react-native/metro-config\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nvar WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nvar expoEnvAdditionalExts = [\n \"env\",\n \"local\",\n \"development\"\n];\nvar watchmanResponsivePromises = /* @__PURE__ */ new Map();\nvar didWarnAboutWatchmanFallback = false;\nvar rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nvar expoVirtualEntryBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/\\.expo\\/\\.virtual-metro-entry\\.bundle(?=$|[?#])/;\nvar metroWatchExclusions = [\n /^(?!.*[/\\\\]node_modules[/\\\\]).*[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction enforceWorkspaceVisibility(config, projectRoot) {\n var _config_watchFolders, _ref;\n var _config_resolver;\n var workspaceRoot = searchForWorkspaceRoot(projectRoot);\n if (workspaceRoot === projectRoot) return config;\n return {\n ...config,\n watchFolders: [\n .../* @__PURE__ */ new Set([\n ...(_config_watchFolders = config.watchFolders) !== null && _config_watchFolders !== void 0 ? _config_watchFolders : [],\n workspaceRoot\n ])\n ],\n resolver: {\n ...config.resolver,\n nodeModulesPaths: [\n .../* @__PURE__ */ new Set([\n ...(_ref = (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.nodeModulesPaths) !== null && _ref !== void 0 ? _ref : [],\n resolve(projectRoot, \"node_modules\"),\n resolve(workspaceRoot, \"node_modules\")\n ])\n ]\n }\n };\n}\nfunction getReactNativeDefaultConfig(projectRoot) {\n return enforceWorkspaceVisibility(getDefaultConfig(projectRoot), projectRoot);\n}\nfunction getPlatformFromBundleUrl(url) {\n var _url_match;\n var platform = (_url_match = url.match(/[?&]platform=(ios|android)(?:&|$)/)) === null || _url_match === void 0 ? void 0 : _url_match[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n var resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (rootIndexBundleRequestPattern.test(url)) {\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n }\n return url.replace(expoVirtualEntryBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nfunction isMainModuleBundleRequest(url) {\n return rootIndexBundleRequestPattern.test(url) || expoVirtualEntryBundleRequestPattern.test(url);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n var _config_resolver;\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n var innerResolveRequest = config === null || config === void 0 ? void 0 : (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config === null || config === void 0 ? void 0 : config.resolver,\n resolveRequest: function(context, moduleName, platform) {\n var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n var resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain !== null && bareMain !== void 0 ? bareMain : moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n var probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise(function(resolve2) {\n var settled = false;\n var finish = function(value) {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n var child = spawn(\"watchman\", [\n \"watch-project\",\n projectRoot\n ], {\n stdio: \"ignore\"\n });\n var timeout = setTimeout(function() {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", function() {\n finish(false);\n });\n child.once(\"exit\", function(code) {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n var userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n var hasUserBabelConfig = Boolean(userBabelConfigPath);\n var isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(`[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`);\n }\n return {\n isNativeTransforms,\n userBabelConfigPath\n };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n var _ref, _ref1;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n var _defaultConfig_server;\n var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;\n var resolveMainModuleName = function() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref2;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(enforceWorkspaceVisibility(merged, projectRoot), mainModuleName),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n var _ref, _ref1;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { loadConfig } = await projectImport(projectRoot, \"metro\");\n var _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n var _defaultConfig_server;\n var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;\n var resolveMainModuleName = function() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref2;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var metroConfig = await loadConfig({\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n }, {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n });\n return {\n ...enforceBareMainModuleEntry(enforceWorkspaceVisibility(metroConfig, projectRoot), mainModuleName),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getMetroConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.native.js"],"sourcesContent":["import { searchForWorkspaceRoot } from \"vite\";\nimport { spawn } from \"child_process\";\nimport { resolve } from \"path\";\nimport micromatch from \"micromatch\";\nimport { getDefaultConfig } from \"@react-native/metro-config\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nvar WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nvar expoEnvAdditionalExts = [\n \"env\",\n \"local\",\n \"development\"\n];\nvar metroSourceExts = [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\",\n \"swift\"\n];\nvar watchmanResponsivePromises = /* @__PURE__ */ new Map();\nvar didWarnAboutWatchmanFallback = false;\nvar rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nvar expoVirtualEntryBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/\\.expo\\/\\.virtual-metro-entry\\.bundle(?=$|[?#])/;\nvar metroWatchExclusions = [\n /^(?!.*[/\\\\]node_modules[/\\\\]).*[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction enforceWorkspaceVisibility(config, projectRoot) {\n var _config_watchFolders, _ref;\n var _config_resolver;\n var workspaceRoot = searchForWorkspaceRoot(projectRoot);\n if (workspaceRoot === projectRoot) return config;\n return {\n ...config,\n watchFolders: [\n .../* @__PURE__ */ new Set([\n ...(_config_watchFolders = config.watchFolders) !== null && _config_watchFolders !== void 0 ? _config_watchFolders : [],\n workspaceRoot\n ])\n ],\n resolver: {\n ...config.resolver,\n nodeModulesPaths: [\n .../* @__PURE__ */ new Set([\n ...(_ref = (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.nodeModulesPaths) !== null && _ref !== void 0 ? _ref : [],\n resolve(projectRoot, \"node_modules\"),\n resolve(workspaceRoot, \"node_modules\")\n ])\n ]\n }\n };\n}\nfunction getReactNativeDefaultConfig(projectRoot) {\n return enforceWorkspaceVisibility(getDefaultConfig(projectRoot), projectRoot);\n}\nfunction getPlatformFromBundleUrl(url) {\n var _url_match;\n var platform = (_url_match = url.match(/[?&]platform=(ios|android)(?:&|$)/)) === null || _url_match === void 0 ? void 0 : _url_match[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n var resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (rootIndexBundleRequestPattern.test(url)) {\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n }\n return url.replace(expoVirtualEntryBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nfunction isMainModuleBundleRequest(url) {\n return rootIndexBundleRequestPattern.test(url) || expoVirtualEntryBundleRequestPattern.test(url);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n var _config_resolver;\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n var innerResolveRequest = config === null || config === void 0 ? void 0 : (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config === null || config === void 0 ? void 0 : config.resolver,\n resolveRequest: function(context, moduleName, platform) {\n var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n var resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain !== null && bareMain !== void 0 ? bareMain : moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n var probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise(function(resolve2) {\n var settled = false;\n var finish = function(value) {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n var child = spawn(\"watchman\", [\n \"watch-project\",\n projectRoot\n ], {\n stdio: \"ignore\"\n });\n var timeout = setTimeout(function() {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", function() {\n finish(false);\n });\n child.once(\"exit\", function(code) {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n var userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n var hasUserBabelConfig = Boolean(userBabelConfigPath);\n var isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(`[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`);\n }\n return {\n isNativeTransforms,\n userBabelConfigPath\n };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n var _ref, _ref1;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n var _defaultConfig_server;\n var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;\n var resolveMainModuleName = function() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref2;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: metroSourceExts,\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(enforceWorkspaceVisibility(merged, projectRoot), mainModuleName),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n var _ref, _ref1;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { loadConfig } = await projectImport(projectRoot, \"metro\");\n var _defaultConfig = getReactNativeDefaultConfig(projectRoot);\n if (mainModuleName) {\n var _defaultConfig_server;\n var origRewriteRequestUrl = (_defaultConfig_server = _defaultConfig.server) === null || _defaultConfig_server === void 0 ? void 0 : _defaultConfig_server.rewriteRequestUrl;\n var resolveMainModuleName = function() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref2;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref2 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref2 !== void 0 ? _ref2 : url;\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n watcher: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.watcher,\n additionalExts: [\n .../* @__PURE__ */ new Set([\n ...(_ref1 = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_watcher = _defaultConfig.watcher) === null || _defaultConfig_watcher === void 0 ? void 0 : _defaultConfig_watcher.additionalExts) !== null && _ref1 !== void 0 ? _ref1 : [],\n ...expoEnvAdditionalExts\n ])\n ]\n },\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: metroSourceExts,\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n // one's router and Expo's optional development env module both use\n // require.context. Metro installs a throwing runtime stub unless this\n // graph feature is enabled.\n unstable_allowRequireContext: true,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var metroConfig = await loadConfig({\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n }, {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n });\n return {\n ...enforceBareMainModuleEntry(enforceWorkspaceVisibility(metroConfig, projectRoot), mainModuleName),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import assert from "node:assert";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import { substituteExpoVirtualEnvSource } from "./expoVirtualEnv.mjs";
|
|
6
7
|
import { loadBabelConfig } from "./loadBabelConfig.mjs";
|
|
@@ -58,6 +59,11 @@ function stringOrUndefined(value) {
|
|
|
58
59
|
return typeof value === "string" ? value : void 0;
|
|
59
60
|
}
|
|
60
61
|
const transform = ({ filename, src: originalSrc, options, plugins }) => {
|
|
62
|
+
if (filename.endsWith(".swift")) {
|
|
63
|
+
const requireFromProject = createRequire(path.resolve(options.projectRoot, "package.json"));
|
|
64
|
+
const oneTransforms = requireFromProject("one/native-transforms");
|
|
65
|
+
originalSrc = oneTransforms.renderSwiftPackageModule(path.isAbsolute(filename) ? filename : path.resolve(options.projectRoot, filename), options.platform ?? "", options.projectRoot).code;
|
|
66
|
+
}
|
|
61
67
|
const src = substituteExpoVirtualEnvSource({
|
|
62
68
|
filename,
|
|
63
69
|
src: originalSrc,
|
|
@@ -113,7 +119,7 @@ const transform = ({ filename, src: originalSrc, options, plugins }) => {
|
|
|
113
119
|
};
|
|
114
120
|
function getCacheKey(options) {
|
|
115
121
|
const hash = createHash("sha256");
|
|
116
|
-
hash.update("vxrn-metro-babel-transformer-
|
|
122
|
+
hash.update("vxrn-metro-babel-transformer-v2");
|
|
117
123
|
const projectRoot = options?.projectRoot;
|
|
118
124
|
if (!projectRoot) {
|
|
119
125
|
return hash.digest("hex");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-transformer.js","names":[],"sources":["esm/transformer/babel-transformer.js"],"sourcesContent":["import assert from \"node:assert\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { substituteExpoVirtualEnvSource } from \"./expoVirtualEnv\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nconst debug = require(\"debug\")(\n \"vxrn:metro-config:babel-transformer\"\n);\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n const cache = /* @__PURE__ */ new Map();\n return ((...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n });\n}\nconst memoizeWarning = memoize((message) => {\n debug(message);\n});\nfunction getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig\n}) {\n const isNodeModule = filename.includes(\"node_modules\");\n const isReactServer = options.customTransformOptions?.environment === \"react-server\";\n const isGenericServer = options.customTransformOptions?.environment === \"node\";\n const isServer = isReactServer || isGenericServer;\n const routerRoot = typeof options.customTransformOptions?.routerRoot === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\n \"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.\"\n );\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof options.customTransformOptions?.baseUrl === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot ?? \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy(options.customTransformOptions?.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy(options.customTransformOptions?.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined(options.customTransformOptions?.engine),\n // provide the project root for reading the app babel config\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy(options.customTransformOptions?.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy(options.customTransformOptions?.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nconst transform = ({\n filename,\n src: originalSrc,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.\n plugins\n}) => {\n const src = substituteExpoVirtualEnvSource({\n filename,\n src: originalSrc,\n projectRoot: options.projectRoot,\n dev: options.dev,\n environment: options.customTransformOptions?.environment\n });\n const viteCustomTransformOptions = options.customTransformOptions?.vite;\n const customOptionsFromVite = (() => {\n const c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return { babelConfig: {} };\n }\n return c;\n })();\n const hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n const babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n const OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n const babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [...babelConfigFromVitePlugin.plugins || [], ...plugins],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // moving everything babel-related to the preset also keeps the transform\n // requirements explicit for users who opt into babel.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n const result = transformSync(src, babelConfig, options);\n if (!result) {\n return { ast: null };\n }\n assert(result.ast);\n return { ast: result.ast, metadata: result.metadata };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nfunction getCacheKey(options) {\n const hash = createHash(\"sha256\");\n hash.update(\"vxrn-metro-babel-transformer-v1\");\n const projectRoot = options?.projectRoot;\n if (!projectRoot) {\n return hash.digest(\"hex\");\n }\n hash.update(projectRoot);\n for (const file of [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n ]) {\n const filename = path.join(projectRoot, file);\n hash.update(filename);\n try {\n hash.update(readFileSync(filename));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n hash.update(\n JSON.stringify(\n Object.entries(process.env).filter(\n ([key]) => key.startsWith(\"ONE_PUBLIC_\") || key.startsWith(\"EXPO_PUBLIC_\")\n ).sort(([left], [right]) => left.localeCompare(right))\n )\n );\n return hash.digest(\"hex\");\n}\nconst babelTransformer = {\n transform,\n getCacheKey\n};\nmodule.exports = babelTransformer;\nexport {\n getCacheKey\n};\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"babel-transformer.js","names":[],"sources":["esm/transformer/babel-transformer.js"],"sourcesContent":["import assert from \"node:assert\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { substituteExpoVirtualEnvSource } from \"./expoVirtualEnv\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nconst debug = require(\"debug\")(\n \"vxrn:metro-config:babel-transformer\"\n);\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n const cache = /* @__PURE__ */ new Map();\n return ((...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n });\n}\nconst memoizeWarning = memoize((message) => {\n debug(message);\n});\nfunction getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig\n}) {\n const isNodeModule = filename.includes(\"node_modules\");\n const isReactServer = options.customTransformOptions?.environment === \"react-server\";\n const isGenericServer = options.customTransformOptions?.environment === \"node\";\n const isServer = isReactServer || isGenericServer;\n const routerRoot = typeof options.customTransformOptions?.routerRoot === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\n \"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.\"\n );\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof options.customTransformOptions?.baseUrl === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot ?? \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy(options.customTransformOptions?.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy(options.customTransformOptions?.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined(options.customTransformOptions?.engine),\n // provide the project root for reading the app babel config\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy(options.customTransformOptions?.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy(options.customTransformOptions?.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nconst transform = ({\n filename,\n src: originalSrc,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.\n plugins\n}) => {\n if (filename.endsWith(\".swift\")) {\n const requireFromProject = createRequire(\n path.resolve(options.projectRoot, \"package.json\")\n );\n const oneTransforms = requireFromProject(\n \"one/native-transforms\"\n );\n originalSrc = oneTransforms.renderSwiftPackageModule(\n path.isAbsolute(filename) ? filename : path.resolve(options.projectRoot, filename),\n options.platform ?? \"\",\n options.projectRoot\n ).code;\n }\n const src = substituteExpoVirtualEnvSource({\n filename,\n src: originalSrc,\n projectRoot: options.projectRoot,\n dev: options.dev,\n environment: options.customTransformOptions?.environment\n });\n const viteCustomTransformOptions = options.customTransformOptions?.vite;\n const customOptionsFromVite = (() => {\n const c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return { babelConfig: {} };\n }\n return c;\n })();\n const hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n const babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n const OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n const babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [...babelConfigFromVitePlugin.plugins || [], ...plugins],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // moving everything babel-related to the preset also keeps the transform\n // requirements explicit for users who opt into babel.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n const result = transformSync(src, babelConfig, options);\n if (!result) {\n return { ast: null };\n }\n assert(result.ast);\n return { ast: result.ast, metadata: result.metadata };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nfunction getCacheKey(options) {\n const hash = createHash(\"sha256\");\n hash.update(\"vxrn-metro-babel-transformer-v2\");\n const projectRoot = options?.projectRoot;\n if (!projectRoot) {\n return hash.digest(\"hex\");\n }\n hash.update(projectRoot);\n for (const file of [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n ]) {\n const filename = path.join(projectRoot, file);\n hash.update(filename);\n try {\n hash.update(readFileSync(filename));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n hash.update(\n JSON.stringify(\n Object.entries(process.env).filter(\n ([key]) => key.startsWith(\"ONE_PUBLIC_\") || key.startsWith(\"EXPO_PUBLIC_\")\n ).sort(([left], [right]) => left.localeCompare(right))\n )\n );\n return hash.digest(\"hex\");\n}\nconst babelTransformer = {\n transform,\n getCacheKey\n};\nmodule.exports = babelTransformer;\nexport {\n getCacheKey\n};\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import { createHash } from "crypto";
|
|
3
3
|
import { readFileSync } from "fs";
|
|
4
|
+
import { createRequire } from "module";
|
|
4
5
|
import path from "path";
|
|
5
6
|
import { substituteExpoVirtualEnvSource } from "./expoVirtualEnv.native.js";
|
|
6
7
|
import { loadBabelConfig } from "./loadBabelConfig.native.js";
|
|
@@ -65,6 +66,12 @@ function stringOrUndefined(value) {
|
|
|
65
66
|
var transform = function(param) {
|
|
66
67
|
var { filename, src: originalSrc, options, plugins } = param;
|
|
67
68
|
var _options_customTransformOptions, _options_customTransformOptions1;
|
|
69
|
+
if (filename.endsWith(".swift")) {
|
|
70
|
+
var _options_platform;
|
|
71
|
+
var requireFromProject = createRequire(path.resolve(options.projectRoot, "package.json"));
|
|
72
|
+
var oneTransforms = requireFromProject("one/native-transforms");
|
|
73
|
+
originalSrc = oneTransforms.renderSwiftPackageModule(path.isAbsolute(filename) ? filename : path.resolve(options.projectRoot, filename), (_options_platform = options.platform) !== null && _options_platform !== void 0 ? _options_platform : "", options.projectRoot).code;
|
|
74
|
+
}
|
|
68
75
|
var src = substituteExpoVirtualEnvSource({
|
|
69
76
|
filename,
|
|
70
77
|
src: originalSrc,
|
|
@@ -120,7 +127,7 @@ var transform = function(param) {
|
|
|
120
127
|
};
|
|
121
128
|
function getCacheKey(options) {
|
|
122
129
|
var hash = createHash("sha256");
|
|
123
|
-
hash.update("vxrn-metro-babel-transformer-
|
|
130
|
+
hash.update("vxrn-metro-babel-transformer-v2");
|
|
124
131
|
var projectRoot = options === null || options === void 0 ? void 0 : options.projectRoot;
|
|
125
132
|
if (!projectRoot) {
|
|
126
133
|
return hash.digest("hex");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-transformer.native.js","names":[],"sources":["esm/transformer/babel-transformer.native.js"],"sourcesContent":["import assert from \"assert\";\nimport { createHash } from \"crypto\";\nimport { readFileSync } from \"fs\";\nimport path from \"path\";\nimport { substituteExpoVirtualEnvSource } from \"./expoVirtualEnv\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nvar debug = require(\"debug\")(\"vxrn:metro-config:babel-transformer\");\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n var cache = /* @__PURE__ */ new Map();\n return function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nvar memoizeWarning = memoize(function(message) {\n debug(message);\n});\nfunction getBabelCaller(param) {\n var { filename, options, oneViteMetroBabelConfig } = param;\n var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;\n var isNodeModule = filename.includes(\"node_modules\");\n var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === \"react-server\";\n var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === \"node\";\n var isServer = isReactServer || isGenericServer;\n var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.\");\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),\n // provide the project root for reading the app babel config\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nvar transform = function(param) {\n var {\n filename,\n src: originalSrc,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.\n plugins\n } = param;\n var _options_customTransformOptions, _options_customTransformOptions1;\n var src = substituteExpoVirtualEnvSource({\n filename,\n src: originalSrc,\n projectRoot: options.projectRoot,\n dev: options.dev,\n environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment\n });\n var viteCustomTransformOptions = (_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.vite;\n var customOptionsFromVite = (function() {\n var c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return {\n babelConfig: {}\n };\n }\n return c;\n })();\n var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n var OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n var babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [\n ...babelConfigFromVitePlugin.plugins || [],\n ...plugins\n ],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // moving everything babel-related to the preset also keeps the transform\n // requirements explicit for users who opt into babel.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n var result = transformSync(src, babelConfig, options);\n if (!result) {\n return {\n ast: null\n };\n }\n assert(result.ast);\n return {\n ast: result.ast,\n metadata: result.metadata\n };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nfunction getCacheKey(options) {\n var hash = createHash(\"sha256\");\n hash.update(\"vxrn-metro-babel-transformer-v1\");\n var projectRoot = options === null || options === void 0 ? void 0 : options.projectRoot;\n if (!projectRoot) {\n return hash.digest(\"hex\");\n }\n hash.update(projectRoot);\n for (var _i = 0, _iter = [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n ]; _i < _iter.length; _i++) {\n var file = _iter[_i];\n var filename = path.join(projectRoot, file);\n hash.update(filename);\n try {\n hash.update(readFileSync(filename));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n hash.update(JSON.stringify(Object.entries(process.env).filter(function(param) {\n var [key] = param;\n return key.startsWith(\"ONE_PUBLIC_\") || key.startsWith(\"EXPO_PUBLIC_\");\n }).sort(function(param, param1) {\n var [left] = param, [right] = param1;\n return left.localeCompare(right);\n })));\n return hash.digest(\"hex\");\n}\nvar babelTransformer = {\n transform,\n getCacheKey\n};\nmodule.exports = babelTransformer;\nexport {\n getCacheKey\n};\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"babel-transformer.native.js","names":[],"sources":["esm/transformer/babel-transformer.native.js"],"sourcesContent":["import assert from \"assert\";\nimport { createHash } from \"crypto\";\nimport { readFileSync } from \"fs\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport { substituteExpoVirtualEnvSource } from \"./expoVirtualEnv\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nvar debug = require(\"debug\")(\"vxrn:metro-config:babel-transformer\");\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n var cache = /* @__PURE__ */ new Map();\n return function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nvar memoizeWarning = memoize(function(message) {\n debug(message);\n});\nfunction getBabelCaller(param) {\n var { filename, options, oneViteMetroBabelConfig } = param;\n var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;\n var isNodeModule = filename.includes(\"node_modules\");\n var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === \"react-server\";\n var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === \"node\";\n var isServer = isReactServer || isGenericServer;\n var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.\");\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),\n // provide the project root for reading the app babel config\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nvar transform = function(param) {\n var {\n filename,\n src: originalSrc,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.\n plugins\n } = param;\n var _options_customTransformOptions, _options_customTransformOptions1;\n if (filename.endsWith(\".swift\")) {\n var _options_platform;\n var requireFromProject = createRequire(path.resolve(options.projectRoot, \"package.json\"));\n var oneTransforms = requireFromProject(\"one/native-transforms\");\n originalSrc = oneTransforms.renderSwiftPackageModule(path.isAbsolute(filename) ? filename : path.resolve(options.projectRoot, filename), (_options_platform = options.platform) !== null && _options_platform !== void 0 ? _options_platform : \"\", options.projectRoot).code;\n }\n var src = substituteExpoVirtualEnvSource({\n filename,\n src: originalSrc,\n projectRoot: options.projectRoot,\n dev: options.dev,\n environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment\n });\n var viteCustomTransformOptions = (_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.vite;\n var customOptionsFromVite = (function() {\n var c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return {\n babelConfig: {}\n };\n }\n return c;\n })();\n var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n var OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n var babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [\n ...babelConfigFromVitePlugin.plugins || [],\n ...plugins\n ],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // moving everything babel-related to the preset also keeps the transform\n // requirements explicit for users who opt into babel.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n var result = transformSync(src, babelConfig, options);\n if (!result) {\n return {\n ast: null\n };\n }\n assert(result.ast);\n return {\n ast: result.ast,\n metadata: result.metadata\n };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nfunction getCacheKey(options) {\n var hash = createHash(\"sha256\");\n hash.update(\"vxrn-metro-babel-transformer-v2\");\n var projectRoot = options === null || options === void 0 ? void 0 : options.projectRoot;\n if (!projectRoot) {\n return hash.digest(\"hex\");\n }\n hash.update(projectRoot);\n for (var _i = 0, _iter = [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n ]; _i < _iter.length; _i++) {\n var file = _iter[_i];\n var filename = path.join(projectRoot, file);\n hash.update(filename);\n try {\n hash.update(readFileSync(filename));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n hash.update(JSON.stringify(Object.entries(process.env).filter(function(param) {\n var [key] = param;\n return key.startsWith(\"ONE_PUBLIC_\") || key.startsWith(\"EXPO_PUBLIC_\");\n }).sort(function(param, param1) {\n var [left] = param, [right] = param1;\n return left.localeCompare(right);\n })));\n return hash.digest(\"hex\");\n}\nvar babelTransformer = {\n transform,\n getCacheKey\n};\nmodule.exports = babelTransformer;\nexport {\n getCacheKey\n};\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ function collectModuleLiteralBindings(program) {
|
|
|
49
49
|
}
|
|
50
50
|
return bindings;
|
|
51
51
|
}
|
|
52
|
-
const WORKER_CACHE_KEY_VERSION = "
|
|
52
|
+
const WORKER_CACHE_KEY_VERSION = "6";
|
|
53
53
|
function langForFilename(filename) {
|
|
54
54
|
if (filename.endsWith(".tsx")) return "tsx";
|
|
55
55
|
if (filename.endsWith(".ts")) return "ts";
|
|
@@ -1082,6 +1082,11 @@ async function configureWorkletsForWorker(projectRoot) {
|
|
|
1082
1082
|
async function transform(config, projectRoot, filename, data, options) {
|
|
1083
1083
|
assertNoUnportedBabelPlugins(options);
|
|
1084
1084
|
let sourceCode = typeof data === "string" ? data : data.toString("utf8");
|
|
1085
|
+
if (filename.endsWith(".swift")) {
|
|
1086
|
+
const oneTransforms = loadOneNativeTransforms(projectRoot);
|
|
1087
|
+
if (!oneTransforms) throw new Error(`[vxrn/metro] ${filename} requires One native transforms`);
|
|
1088
|
+
sourceCode = oneTransforms.renderSwiftPackageModule(path.isAbsolute(filename) ? filename : path.resolve(projectRoot, filename), options.platform ?? "", projectRoot).code;
|
|
1089
|
+
}
|
|
1085
1090
|
sourceCode = substituteExpoVirtualEnvSource({
|
|
1086
1091
|
filename,
|
|
1087
1092
|
src: sourceCode,
|