@vxrn/vite-plugin-metro 2.0.0-beta.99.1 → 2.6.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 +40 -27
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +57 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +57 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/plugins/metroPlugin.cjs +1 -0
- package/dist/cjs/plugins/metroPlugin.native.cjs +5 -4
- package/dist/cjs/plugins/metroPlugin.native.js +5 -4
- package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/buildBundle.native.cjs +1 -1
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js +1 -1
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/saveAssets.native.cjs +2 -2
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js +2 -2
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +7 -1
- package/dist/cjs/transformer/babel-transformer.native.cjs +9 -2
- package/dist/cjs/transformer/babel-transformer.native.js +9 -2
- 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 +9 -7
- package/dist/cjs/transformer/metroNativeWorker.native.js +9 -7
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/cjs/utils/exit.native.cjs +2 -2
- package/dist/cjs/utils/exit.native.js +2 -2
- package/dist/cjs/utils/exit.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +40 -27
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +57 -42
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/plugins/metroPlugin.mjs +1 -0
- package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
- package/dist/esm/plugins/metroPlugin.native.js +5 -4
- package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/buildBundle.native.js +1 -1
- package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/saveAssets.native.js +2 -2
- package/dist/esm/rn-commands/bundle/saveAssets.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 +9 -2
- 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 +9 -7
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/utils/exit.native.js +2 -2
- package/dist/esm/utils/exit.native.js.map +1 -1
- package/package.json +6 -5
- package/src/__tests__/getMetroConfigFromViteConfig.test.ts +269 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +55 -18
- package/src/metro-config/glbAssets.test.ts +57 -0
- package/src/plugins/metroPlugin.ts +6 -1
- package/src/transformer/babel-transformer.ts +21 -1
- package/src/transformer/metroNativeWorker.test.ts +4 -18
- package/src/transformer/metroNativeWorker.ts +18 -2
- package/src/transformer/swiftPackageTransform.test.ts +111 -0
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
- package/src/metro-config/getMetroConfigFromViteConfig.test.ts +0 -60
|
@@ -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 /[/\\\\]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":";;;;;;;;;;AAQA,IAAI,4BAA4B;AAChC,IAAI,wBAAwB;CAC1B;CACA;CACA;AACF;AACA,IAAI,6CAA6C,IAAI,IAAI;AACzD,IAAI,+BAA+B;AACnC,IAAI,gCAAgC;AACpC,IAAI,uCAAuC;AAC3C,IAAI,uBAAuB;CACzB;CACA;CACA;CACA;CACA;AACF;AACA,SAAS,2BAA2B,QAAQ,aAAa;CACvD,IAAI,sBAAsB;CAC1B,IAAI;CACJ,IAAI,gBAAgB,uBAAuB,WAAW;CACtD,IAAI,kBAAkB,aAAa,OAAO;CAC1C,OAAO;EACL,GAAG;EACH,cAAc,CACZ,mBAAmB,IAAI,IAAI,CACzB,IAAI,uBAAuB,OAAO,kBAAkB,QAAQ,yBAAyB,KAAK,IAAI,uBAAuB,CAAC,GACtH,aACF,CAAC,CACH;EACA,UAAU;GACR,GAAG,OAAO;GACV,kBAAkB,CAChB,mBAAmB,IAAI,IAAI;IACzB,IAAI,QAAQ,mBAAmB,OAAO,cAAc,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB,sBAAsB,QAAQ,SAAS,KAAK,IAAI,OAAO,CAAC;IAC5K,QAAQ,aAAa,cAAc;IACnC,QAAQ,eAAe,cAAc;GACvC,CAAC,CACH;EACF;CACF;AACF;AACA,SAAS,4BAA4B,aAAa;CAChD,OAAO,2BAA2B,iBAAiB,WAAW,GAAG,WAAW;AAC9E;AACA,SAAS,yBAAyB,KAAK;CACrC,IAAI;CACJ,IAAI,YAAY,aAAa,IAAI,MAAM,mCAAmC,OAAO,QAAQ,eAAe,KAAK,IAAI,KAAK,IAAI,WAAW;CACrI,OAAO,aAAa,YAAY,YAAY;AAC9C;AACA,SAAS,2BAA2B,KAAK,uBAAuB;CAC9D,IAAI,yBAAyB,sBAAsB,EACjD,UAAU,yBAAyB,GAAG,EACxC,CAAC;CACD,IAAI,8BAA8B,KAAK,GAAG,GAAG;EAC3C,OAAO,IAAI,QAAQ,+BAA+B,MAAM,uBAAuB,QAAQ;CACzF;CACA,OAAO,IAAI,QAAQ,sCAAsC,MAAM,uBAAuB,QAAQ;AAChG;AACA,SAAS,0BAA0B,KAAK;CACtC,OAAO,8BAA8B,KAAK,GAAG,KAAK,qCAAqC,KAAK,GAAG;AACjG;AACA,SAAS,gBAAgB,MAAM;CAC7B,OAAO,SAAS,MAAM,CAAC,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,GAAG;AACrE;AACA,SAAS,yBAAyB,YAAY,gBAAgB;CAC5D,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,cAAc,GAAG,OAAO,KAAK;CACrE,IAAI,eAAe,KAAK,kBAAkB,OAAO;CACjD,OAAO,KAAK;AACd;AACA,SAAS,2BAA2B,QAAQ,gBAAgB;CAC1D,IAAI;CACJ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,cAAc,GAAG,OAAO;CAChE,IAAI,sBAAsB,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,KAAK,mBAAmB,OAAO,cAAc,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;CACnL,OAAO;EACL,GAAG;EACH,UAAU;GACR,GAAG,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO;GAC1D,gBAAgB,SAAS,SAAS,YAAY,UAAU;IACtD,IAAI,WAAW,yBAAyB,YAAY,cAAc;IAClE,IAAI,iBAAiB,uBAAuB,QAAQ;IACpD,OAAO,eAAe,SAAS,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,YAAY,QAAQ;GAC3G;EACF;CACF;AACF;AACA,eAAe,qBAAqB,aAAa;CAC/C,IAAI,QAAQ,2BAA2B,IAAI,WAAW;CACtD,IAAI,OAAO;EACT,OAAO;CACT;CACA,QAAQ,IAAI,QAAQ,SAAS,UAAU;EACrC,IAAI,UAAU;EACd,IAAI,SAAS,SAAS,OAAO;GAC3B,IAAI,SAAS;GACb,UAAU;GACV,aAAa,OAAO;GACpB,SAAS,KAAK;EAChB;EACA,IAAI,QAAQ,MAAM,YAAY,CAC5B,iBACA,WACF,GAAG,EACD,OAAO,SACT,CAAC;EACD,IAAI,UAAU,WAAW,WAAW;GAClC,MAAM,KAAK;GACX,OAAO,KAAK;EACd,GAAG,yBAAyB;EAC5B,MAAM,KAAK,SAAS,WAAW;GAC7B,OAAO,KAAK;EACd,CAAC;EACD,MAAM,KAAK,QAAQ,SAAS,MAAM;GAChC,OAAO,SAAS,CAAC;EACnB,CAAC;CACH,CAAC;CACD,2BAA2B,IAAI,aAAa,KAAK;CACjD,OAAO;AACT;AACA,SAAS,wBAAwB,aAAa,oBAAoB;CAChE,IAAI,sBAAsB,cAAc,oBAAoB,WAAW,IAAI;CAC3E,IAAI,qBAAqB,QAAQ,mBAAmB;CACpD,IAAI,qBAAqB,QAAQ,IAAI,gCAAgC,MAAM,QAAQ,QAAQ,IAAI,gCAAgC,MAAM,OAAO,mBAAmB,qBAAqB,QAAQ,QAAQ,mBAAmB,qBAAqB,OAAO,OAAO,qBAAqB,QAAQ;CACvR,IAAI,uBAAuB,oBAAoB;EAC7C,QAAQ,KAAK,8CAA8C,oBAAoB,yPAAyP;CAC1U;CACA,OAAO;EACL;EACA;CACF;AACF;AACA,eAAe,oCAAoC,QAAQ,oBAAoB;CAC7E,IAAI,MAAM;CACV,IAAI,0BAA0B,yBAAyB;CACvD,IAAI,cAAc,CAAC;CACnB,IAAI,cAAc,SAAS,QAAQ,2BAA2B,mBAAmB,UAAU,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,iBAAiB,QAAQ,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI;CACxO,IAAI,EAAE,gBAAgB,wBAAwB,UAAU,mBAAmB;CAC3E,IAAI,cAAc,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,MAAM,qBAAqB,WAAW;CAC9G,IAAI,aAAa,KAAK,KAAK,CAAC,eAAe,CAAC,8BAA8B;EACxE,+BAA+B;EAC/B,QAAQ,KAAK,2FAA2F;CAC1G;CACA,IAAI,iBAAiB,4BAA4B,WAAW;CAC5D,IAAI,gBAAgB;EAClB,IAAI;EACJ,IAAI,yBAAyB,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB;EAC1J,IAAI,wBAAwB,WAAW;GACrC,OAAO;EACT;EACA,YAAY,2BAA2B;EACvC,eAAe,OAAO,oBAAoB,SAAS,KAAK;GACtD,IAAI;GACJ,IAAI,0BAA0B,GAAG,GAAG;IAClC,OAAO,2BAA2B,KAAK,qBAAqB;GAC9D;GACA,QAAQ,QAAQ,0BAA0B,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB,GAAG,OAAO,QAAQ,UAAU,KAAK,IAAI,QAAQ;EACnK;CACF;CACA,IAAI,oBAAoB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,0BAA0B,eAAe,cAAc,QAAQ,4BAA4B,KAAK,IAAI,KAAK,IAAI,wBAAwB;CAC9N,IAAI,YAAY,CACd,GAAG,oBAAoB,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAC5E,iBACF,IAAI,CAAC,GACL,GAAG,oBACL;CACA,IAAI,EAAE,uBAAuB,wBAAwB,aAAa,kBAAkB;CACpF,IAAI;CACJ,IAAI,oBAAoB;EACtB,mBAAmB,eAAe,aAAa,uDAAuD;CACxG;CACA,IAAI,gBAAgB;EAClB,GAAG;EACH,SAAS;GACP,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF,gBAAgB,CACd,mBAAmB,IAAI,IAAI,CACzB,IAAI,QAAQ,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,yBAAyB,eAAe,aAAa,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,oBAAoB,QAAQ,UAAU,KAAK,IAAI,QAAQ,CAAC,GACtQ,GAAG,qBACL,CAAC,CACH;EACF;EACA,UAAU;GACR,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF;GACA;GACA,YAAY;IACV;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,gBAAgB,SAAS,SAAS,YAAY,UAAU;IACtD,IAAI;IACJ,IAAI,wBAAwB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,2BAA2B,eAAe,cAAc,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,mBAAmB,QAAQ;IAChQ,IAAI,kBAAkB,eAAe,SAAS,GAAG;KAC/C,IAAI,WAAW,QAAQ,YAAY,cAAc,GAAG;MAClD,OAAO,qBAAqB,SAAS,iCAAiC,QAAQ;KAChF;IACF;IACA,IAAI,WAAW,WAAW,gBAAgB,GAAG;KAC3C,IAAI,kBAAkB;MACpB,GAAG;MACH,yBAAyB,QAAQ,wBAAwB,OAAO,SAAS,GAAG;OAC1E,OAAO,MAAM;MACf,CAAC;KACH;KACA,OAAO,qBAAqB,iBAAiB,YAAY,QAAQ;IACnE;IACA,OAAO,qBAAqB,SAAS,YAAY,QAAQ;GAC3D;EACF;EACA,aAAa;GACX,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAIlF,8BAA8B;GAC9B,sBAAsB,eAAe,aAAa,2CAA2C;EAC/F;EAGA,GAAG,mBAAmB,EACpB,iBAAiB,iBACnB,IAAI,CAAC;EACL,UAAU,MAAM,oBAAoB,WAAW;CACjD;CACA,IAAI,SAAS;EACX,GAAG;EACH,GAAG,OAAO,2BAA2B,aAAa,uBAAuB,aAAa,IAAI;CAC5F;CACA,OAAO;EACL,eAAe,2BAA2B,2BAA2B,QAAQ,WAAW,GAAG,cAAc;EACzG;EACA;CACF;AACF;AACA,eAAe,6BAA6B,QAAQ,oBAAoB;CACtE,IAAI,MAAM;CACV,IAAI,0BAA0B,yBAAyB;CACvD,IAAI,cAAc,CAAC;CACnB,IAAI,cAAc,SAAS,QAAQ,2BAA2B,mBAAmB,UAAU,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,iBAAiB,QAAQ,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI;CACxO,IAAI,EAAE,gBAAgB,MAAM,wBAAwB,UAAU,mBAAmB;CACjF,IAAI,cAAc,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,MAAM,qBAAqB,WAAW;CAC9G,IAAI,aAAa,KAAK,KAAK,CAAC,eAAe,CAAC,8BAA8B;EACxE,+BAA+B;EAC/B,QAAQ,KAAK,2FAA2F;CAC1G;CACA,IAAI,EAAE,eAAe,MAAM,cAAc,aAAa,OAAO;CAC7D,IAAI,iBAAiB,4BAA4B,WAAW;CAC5D,IAAI,gBAAgB;EAClB,IAAI;EACJ,IAAI,yBAAyB,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB;EAC1J,IAAI,wBAAwB,WAAW;GACrC,OAAO;EACT;EACA,YAAY,2BAA2B;EACvC,eAAe,OAAO,oBAAoB,SAAS,KAAK;GACtD,IAAI;GACJ,IAAI,0BAA0B,GAAG,GAAG;IAClC,OAAO,2BAA2B,KAAK,qBAAqB;GAC9D;GACA,QAAQ,QAAQ,0BAA0B,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB,GAAG,OAAO,QAAQ,UAAU,KAAK,IAAI,QAAQ;EACnK;CACF;CACA,IAAI,oBAAoB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,0BAA0B,eAAe,cAAc,QAAQ,4BAA4B,KAAK,IAAI,KAAK,IAAI,wBAAwB;CAC9N,IAAI,YAAY,CACd,GAAG,oBAAoB,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAC5E,iBACF,IAAI,CAAC,GACL,GAAG,oBACL;CACA,IAAI,EAAE,uBAAuB,wBAAwB,aAAa,kBAAkB;CACpF,IAAI;CACJ,IAAI,oBAAoB;EACtB,mBAAmB,eAAe,aAAa,uDAAuD;CACxG;CACA,IAAI,gBAAgB;EAClB,GAAG;EACH,SAAS;GACP,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF,gBAAgB,CACd,mBAAmB,IAAI,IAAI,CACzB,IAAI,QAAQ,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,yBAAyB,eAAe,aAAa,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,oBAAoB,QAAQ,UAAU,KAAK,IAAI,QAAQ,CAAC,GACtQ,GAAG,qBACL,CAAC,CACH;EACF;EACA,UAAU;GACR,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF;GACA;GACA,YAAY;IACV;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,gBAAgB,SAAS,SAAS,YAAY,UAAU;IACtD,IAAI;IACJ,IAAI,wBAAwB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,2BAA2B,eAAe,cAAc,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,mBAAmB,QAAQ;IAChQ,IAAI,kBAAkB,eAAe,SAAS,GAAG;KAC/C,IAAI,WAAW,QAAQ,YAAY,cAAc,GAAG;MAClD,OAAO,qBAAqB,SAAS,iCAAiC,QAAQ;KAChF;IACF;IACA,IAAI,WAAW,WAAW,gBAAgB,GAAG;KAC3C,IAAI,kBAAkB;MACpB,GAAG;MACH,yBAAyB,QAAQ,wBAAwB,OAAO,SAAS,GAAG;OAC1E,OAAO,MAAM;MACf,CAAC;KACH;KACA,OAAO,qBAAqB,iBAAiB,YAAY,QAAQ;IACnE;IACA,OAAO,qBAAqB,SAAS,YAAY,QAAQ;GAC3D;EACF;EACA,aAAa;GACX,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAIlF,8BAA8B;GAC9B,sBAAsB,eAAe,aAAa,2CAA2C;EAC/F;EAGA,GAAG,mBAAmB,EACpB,iBAAiB,iBACnB,IAAI,CAAC;EACL,UAAU,MAAM,oBAAoB,WAAW;CACjD;CACA,IAAI,cAAc,MAAM,WAAW;EACjC,KAAK;EACL;EACA,eAAe,CAAC,CAAC,QAAQ,IAAI;EAC7B,GAAG;CACL,GAAG;EACD,GAAG;EACH,GAAG,OAAO,2BAA2B,aAAa,uBAAuB,aAAa,IAAI;CAC5F,CAAC;CACD,OAAO;EACL,GAAG,2BAA2B,2BAA2B,aAAa,WAAW,GAAG,cAAc;EAClG,GAAG;CACL;AACF"}
|
|
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 \"kt\"\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 var _ref;\n var _config_resolver;\n var config = enforceWorkspaceVisibility(getDefaultConfig(projectRoot), projectRoot);\n return {\n ...config,\n resolver: {\n ...config.resolver,\n assetExts: [\n .../* @__PURE__ */ new Set([\n ...(_ref = (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.assetExts) !== null && _ref !== void 0 ? _ref : [],\n \"glb\"\n ])\n ]\n }\n };\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 enforcePackageResolution(config, mainModuleName, dedupe, projectRoot) {\n var _config_resolver;\n var dedupedPackages = new Set(dedupe);\n if ((!mainModuleName || !isBareSpecifier(mainModuleName)) && !dedupedPackages.size) {\n return config;\n }\n var rootOrigin = resolve(projectRoot, \"package.json\");\n var innerResolveRequest = (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest: function resolveRequest(context, moduleName, platform) {\n var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n var request = bareMain !== null && bareMain !== void 0 ? bareMain : moduleName;\n var packageEnd = request.indexOf(\"/\", request.startsWith(\"@\") ? request.indexOf(\"/\") + 1 : 0);\n var packageName = packageEnd === -1 ? request : request.slice(0, packageEnd);\n var resolutionContext = isBareSpecifier(request) && dedupedPackages.has(packageName) ? {\n ...context,\n originModulePath: rootOrigin\n } : context;\n var resolveRequest2 = innerResolveRequest || context.resolveRequest;\n return resolveRequest2(resolutionContext, request, 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 finish2(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, _ref2;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher, _config_resolve;\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 resolveMainModuleName2() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref3;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref3 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref3 !== void 0 ? _ref3 : 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 resolveRequest(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: enforcePackageResolution(enforceWorkspaceVisibility(merged, projectRoot), mainModuleName, (_ref2 = (_config_resolve = config.resolve) === null || _config_resolve === void 0 ? void 0 : _config_resolve.dedupe) !== null && _ref2 !== void 0 ? _ref2 : [], projectRoot),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n var _ref, _ref1, _ref2;\n var _metroPluginOptions_argv, _defaultConfig_resolver, _defaultConfig_watcher, _config_resolve;\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 resolveMainModuleName2() {\n return mainModuleName;\n };\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n var _ref3;\n if (isMainModuleBundleRequest(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return (_ref3 = origRewriteRequestUrl === null || origRewriteRequestUrl === void 0 ? void 0 : origRewriteRequestUrl(url)) !== null && _ref3 !== void 0 ? _ref3 : 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 resolveRequest(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 ...enforcePackageResolution(enforceWorkspaceVisibility(metroConfig, projectRoot), mainModuleName, (_ref2 = (_config_resolve = config.resolve) === null || _config_resolve === void 0 ? void 0 : _config_resolve.dedupe) !== null && _ref2 !== void 0 ? _ref2 : [], projectRoot),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
|
|
@@ -150,6 +150,7 @@ function metroPlugin(options = {}) {
|
|
|
150
150
|
}
|
|
151
151
|
if (req.url === "/status" && isNativeRequest) {
|
|
152
152
|
res.statusCode = 200;
|
|
153
|
+
res.setHeader("X-React-Native-Project-Root", new URL(`file:///${projectRoot}`).pathname.slice(1));
|
|
153
154
|
res.end("packager-status:running");
|
|
154
155
|
return;
|
|
155
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metroPlugin.js","names":[],"sources":["esm/plugins/metroPlugin.js"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport launchEditor from \"launch-editor\";\nimport { createDebugger } from \"@vxrn/debug\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { checkAndClearMetroCacheFromVite } from \"../utils/metroCacheManager\";\nimport { projectImport } from \"../utils/projectImport\";\nimport { getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nconst { debug } = createDebugger(\"vite-plugin-metro\");\nfunction metroPlugin(options = {}) {\n globalThis[\"__viteMetroPluginOptions__\"] = options;\n return {\n name: \"metro\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n const projectRoot = resolve(server.config.root);\n const shouldLetViteServe = (url) => {\n if (!url) return false;\n let pathname = \"\";\n try {\n pathname = new URL(url, \"http://localhost\").pathname;\n } catch {\n pathname = url.split(\"?\")[0] ?? \"\";\n }\n if (!pathname.startsWith(\"/assets/\")) return false;\n if (pathname.endsWith(\"_vxrn_loader.js\")) return true;\n let decodedPathname = pathname;\n try {\n decodedPathname = decodeURIComponent(pathname);\n } catch {\n }\n const filePath = resolve(projectRoot, decodedPathname.slice(1));\n const relativePath = relative(projectRoot, filePath);\n const isInsideRoot = relativePath !== \"\" && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath);\n return isInsideRoot && existsSync(filePath);\n };\n let metroReady = false;\n let middleware;\n let metroServer;\n let hmrServer;\n let websocketEndpoints;\n let rnDevtoolsMiddleware;\n let metroPromise;\n let metroPromiseResolvers;\n metroPromise = new Promise((resolve2, reject) => {\n metroPromiseResolvers = { resolve: resolve2, reject };\n });\n const startMetro = async () => {\n const metroStartTime = Date.now();\n try {\n checkAndClearMetroCacheFromVite(server, server.config.logger);\n const { default: Metro } = await projectImport(projectRoot, \"metro\");\n const { default: MetroHmrServer } = await projectImport(projectRoot, \"metro/private/HmrServer\");\n const { default: createWebsocketServer } = await projectImport(projectRoot, \"metro/private/lib/createWebsocketServer\");\n const { createDevMiddleware } = await projectImport(projectRoot, \"@react-native/dev-middleware\");\n const config = await getMetroConfigFromViteConfig(server.config, options);\n const metroResult = await Metro.createConnectMiddleware(config, {\n // Force enable file watching, even on CI.\n // This is needed for HMR tests to work on CI.\n watch: true\n });\n middleware = metroResult.middleware;\n metroServer = metroResult.metroServer;\n patchMetroServerWithViteConfigAndMetroPluginOptions(\n metroServer,\n server.config,\n options\n );\n hmrServer = new MetroHmrServer(\n metroServer.getBundler(),\n metroServer.getCreateModuleId(),\n config\n );\n const reactNativeDevToolsUrl = `http://${typeof server.config.server.host === \"boolean\" ? \"localhost\" : server.config.server.host}:${server.config.server.port}`;\n const devMiddleware = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n // rn 0.86 turns this on by default and prepares the standalone debugger\n // shell eagerly while building the middleware. its tool launcher throws\n // outright under NODE_ENV=test rather than spawn a gui, which would take\n // the whole dev server down on boot for anyone running tests against it.\n enableStandaloneFuseboxShell: process.env.NODE_ENV !== \"test\"\n }\n });\n rnDevtoolsMiddleware = devMiddleware.middleware;\n websocketEndpoints = {\n \"/hot\": createWebsocketServer({\n websocketServer: hmrServer\n }),\n // metro parity: the packager message socket (metro serves /message via\n // @react-native-community/cli-server-api). leaving the upgrade unanswered\n // dangles the socket and chromium queues every later websocket handshake\n // to the same host:port behind it (blocking e.g. zero /sync in sootsim).\n \"/message\": createMessageSocket(),\n ...devMiddleware.websocketEndpoints\n };\n server.httpServer?.on(\"upgrade\", (request, socket, head) => {\n const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;\n const endpoint = websocketEndpoints[pathname];\n if (endpoint) {\n endpoint.handleUpgrade(request, socket, head, (ws) => {\n endpoint.emit(\"connection\", ws, request);\n });\n }\n });\n server.middlewares.use(rnDevtoolsMiddleware);\n metroReady = true;\n const metroElapsed = Date.now() - metroStartTime;\n debug?.(`Metro bundler ready (${metroElapsed}ms)`);\n metroPromiseResolvers.resolve();\n } catch (err) {\n debug?.(`Error during Metro initialization: ${err}`);\n metroPromiseResolvers.reject(err);\n throw err;\n }\n };\n const isLazyStartup = options.startup === \"lazy\";\n let metroStarting = false;\n const ensureMetroStarted = () => {\n if (metroStarting || metroReady) return;\n metroStarting = true;\n debug?.(\"Starting Metro on-demand (lazy startup)\");\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n };\n if (!isLazyStartup) {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n const waitForServer = () => {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n setTimeout(waitForServer, 10);\n }\n };\n waitForServer();\n }\n } else {\n debug?.(\"Metro lazy startup enabled - will start on first native request\");\n }\n server.middlewares.use(async (req, res, next) => {\n const isNativeRequest = req.headers[\"user-agent\"]?.includes(\"CFNetwork/\") || req.headers[\"user-agent\"]?.includes(\"okhttp/\");\n if (isLazyStartup && !metroReady) {\n if (req.url?.includes(\".bundle\") || req.url === \"/status\" && isNativeRequest) {\n ensureMetroStarted();\n }\n }\n if (req.url === \"/status\" && isNativeRequest) {\n res.statusCode = 200;\n res.end(\"packager-status:running\");\n return;\n }\n if (req.url?.includes(\".bundle\") && !metroReady) {\n await metroPromise;\n }\n if (middleware) {\n if (shouldLetViteServe(req.url)) {\n return next();\n }\n try {\n if (req.url?.includes(\".bundle\")) {\n const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;\n if (VITE_METRO_DEBUG_BUNDLE) {\n if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {\n debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);\n const content = await readFile(VITE_METRO_DEBUG_BUNDLE, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n }\n }\n }\n if (req.url === \"/open-stack-frame\" && req.method === \"POST\") {\n let body = \"\";\n req.on(\"data\", (chunk) => {\n body += chunk.toString();\n });\n req.on(\"end\", () => {\n try {\n const frame = JSON.parse(body);\n launchEditor(frame.file);\n res.statusCode = 200;\n res.end(\"Stack frame opened in editor\");\n } catch (e) {\n debug?.(`Failed to parse stack frame: ${e}`);\n res.statusCode = 400;\n return res.end(\"Invalid stack frame JSON\");\n }\n });\n return;\n }\n await middleware(req, res, next);\n } catch (error) {\n debug?.(`Metro middleware error: ${error}`);\n next();\n }\n } else {\n next();\n }\n });\n }\n };\n}\nexport {\n metroPlugin\n};\n//# sourceMappingURL=metroPlugin.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metroPlugin.js","names":[],"sources":["esm/plugins/metroPlugin.js"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport launchEditor from \"launch-editor\";\nimport { createDebugger } from \"@vxrn/debug\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { checkAndClearMetroCacheFromVite } from \"../utils/metroCacheManager\";\nimport { projectImport } from \"../utils/projectImport\";\nimport { getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nconst { debug } = createDebugger(\"vite-plugin-metro\");\nfunction metroPlugin(options = {}) {\n globalThis[\"__viteMetroPluginOptions__\"] = options;\n return {\n name: \"metro\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n const projectRoot = resolve(server.config.root);\n const shouldLetViteServe = (url) => {\n if (!url) return false;\n let pathname = \"\";\n try {\n pathname = new URL(url, \"http://localhost\").pathname;\n } catch {\n pathname = url.split(\"?\")[0] ?? \"\";\n }\n if (!pathname.startsWith(\"/assets/\")) return false;\n if (pathname.endsWith(\"_vxrn_loader.js\")) return true;\n let decodedPathname = pathname;\n try {\n decodedPathname = decodeURIComponent(pathname);\n } catch {\n }\n const filePath = resolve(projectRoot, decodedPathname.slice(1));\n const relativePath = relative(projectRoot, filePath);\n const isInsideRoot = relativePath !== \"\" && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath);\n return isInsideRoot && existsSync(filePath);\n };\n let metroReady = false;\n let middleware;\n let metroServer;\n let hmrServer;\n let websocketEndpoints;\n let rnDevtoolsMiddleware;\n let metroPromise;\n let metroPromiseResolvers;\n metroPromise = new Promise((resolve2, reject) => {\n metroPromiseResolvers = { resolve: resolve2, reject };\n });\n const startMetro = async () => {\n const metroStartTime = Date.now();\n try {\n checkAndClearMetroCacheFromVite(server, server.config.logger);\n const { default: Metro } = await projectImport(projectRoot, \"metro\");\n const { default: MetroHmrServer } = await projectImport(projectRoot, \"metro/private/HmrServer\");\n const { default: createWebsocketServer } = await projectImport(projectRoot, \"metro/private/lib/createWebsocketServer\");\n const { createDevMiddleware } = await projectImport(projectRoot, \"@react-native/dev-middleware\");\n const config = await getMetroConfigFromViteConfig(server.config, options);\n const metroResult = await Metro.createConnectMiddleware(config, {\n // Force enable file watching, even on CI.\n // This is needed for HMR tests to work on CI.\n watch: true\n });\n middleware = metroResult.middleware;\n metroServer = metroResult.metroServer;\n patchMetroServerWithViteConfigAndMetroPluginOptions(\n metroServer,\n server.config,\n options\n );\n hmrServer = new MetroHmrServer(\n metroServer.getBundler(),\n metroServer.getCreateModuleId(),\n config\n );\n const reactNativeDevToolsUrl = `http://${typeof server.config.server.host === \"boolean\" ? \"localhost\" : server.config.server.host}:${server.config.server.port}`;\n const devMiddleware = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n // rn 0.86 turns this on by default and prepares the standalone debugger\n // shell eagerly while building the middleware. its tool launcher throws\n // outright under NODE_ENV=test rather than spawn a gui, which would take\n // the whole dev server down on boot for anyone running tests against it.\n enableStandaloneFuseboxShell: process.env.NODE_ENV !== \"test\"\n }\n });\n rnDevtoolsMiddleware = devMiddleware.middleware;\n websocketEndpoints = {\n \"/hot\": createWebsocketServer({\n websocketServer: hmrServer\n }),\n // metro parity: the packager message socket (metro serves /message via\n // @react-native-community/cli-server-api). leaving the upgrade unanswered\n // dangles the socket and chromium queues every later websocket handshake\n // to the same host:port behind it (blocking e.g. zero /sync in peach).\n \"/message\": createMessageSocket(),\n ...devMiddleware.websocketEndpoints\n };\n server.httpServer?.on(\"upgrade\", (request, socket, head) => {\n const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;\n const endpoint = websocketEndpoints[pathname];\n if (endpoint) {\n endpoint.handleUpgrade(request, socket, head, (ws) => {\n endpoint.emit(\"connection\", ws, request);\n });\n }\n });\n server.middlewares.use(rnDevtoolsMiddleware);\n metroReady = true;\n const metroElapsed = Date.now() - metroStartTime;\n debug?.(`Metro bundler ready (${metroElapsed}ms)`);\n metroPromiseResolvers.resolve();\n } catch (err) {\n debug?.(`Error during Metro initialization: ${err}`);\n metroPromiseResolvers.reject(err);\n throw err;\n }\n };\n const isLazyStartup = options.startup === \"lazy\";\n let metroStarting = false;\n const ensureMetroStarted = () => {\n if (metroStarting || metroReady) return;\n metroStarting = true;\n debug?.(\"Starting Metro on-demand (lazy startup)\");\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n };\n if (!isLazyStartup) {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n const waitForServer = () => {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n setTimeout(waitForServer, 10);\n }\n };\n waitForServer();\n }\n } else {\n debug?.(\"Metro lazy startup enabled - will start on first native request\");\n }\n server.middlewares.use(async (req, res, next) => {\n const isNativeRequest = req.headers[\"user-agent\"]?.includes(\"CFNetwork/\") || req.headers[\"user-agent\"]?.includes(\"okhttp/\");\n if (isLazyStartup && !metroReady) {\n if (req.url?.includes(\".bundle\") || req.url === \"/status\" && isNativeRequest) {\n ensureMetroStarted();\n }\n }\n if (req.url === \"/status\" && isNativeRequest) {\n res.statusCode = 200;\n res.setHeader(\n \"X-React-Native-Project-Root\",\n new URL(`file:///${projectRoot}`).pathname.slice(1)\n );\n res.end(\"packager-status:running\");\n return;\n }\n if (req.url?.includes(\".bundle\") && !metroReady) {\n await metroPromise;\n }\n if (middleware) {\n if (shouldLetViteServe(req.url)) {\n return next();\n }\n try {\n if (req.url?.includes(\".bundle\")) {\n const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;\n if (VITE_METRO_DEBUG_BUNDLE) {\n if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {\n debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);\n const content = await readFile(VITE_METRO_DEBUG_BUNDLE, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n }\n }\n }\n if (req.url === \"/open-stack-frame\" && req.method === \"POST\") {\n let body = \"\";\n req.on(\"data\", (chunk) => {\n body += chunk.toString();\n });\n req.on(\"end\", () => {\n try {\n const frame = JSON.parse(body);\n launchEditor(frame.file);\n res.statusCode = 200;\n res.end(\"Stack frame opened in editor\");\n } catch (e) {\n debug?.(`Failed to parse stack frame: ${e}`);\n res.statusCode = 400;\n return res.end(\"Invalid stack frame JSON\");\n }\n });\n return;\n }\n await middleware(req, res, next);\n } catch (error) {\n debug?.(`Metro middleware error: ${error}`);\n next();\n }\n } else {\n next();\n }\n });\n }\n };\n}\nexport {\n metroPlugin\n};\n//# sourceMappingURL=metroPlugin.js.map\n"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ function metroPlugin() {
|
|
|
17
17
|
name: "metro",
|
|
18
18
|
configureServer(server) {
|
|
19
19
|
var projectRoot = resolve(server.config.root);
|
|
20
|
-
var shouldLetViteServe = function(url) {
|
|
20
|
+
var shouldLetViteServe = function shouldLetViteServe2(url) {
|
|
21
21
|
if (!url) return false;
|
|
22
22
|
var pathname = "";
|
|
23
23
|
try {
|
|
@@ -51,7 +51,7 @@ function metroPlugin() {
|
|
|
51
51
|
reject
|
|
52
52
|
};
|
|
53
53
|
});
|
|
54
|
-
var startMetro = async function() {
|
|
54
|
+
var startMetro = async function startMetro2() {
|
|
55
55
|
var metroStartTime = Date.now();
|
|
56
56
|
try {
|
|
57
57
|
var _server_httpServer;
|
|
@@ -100,7 +100,7 @@ function metroPlugin() {
|
|
|
100
100
|
};
|
|
101
101
|
var isLazyStartup = options.startup === "lazy";
|
|
102
102
|
var metroStarting = false;
|
|
103
|
-
var ensureMetroStarted = function() {
|
|
103
|
+
var ensureMetroStarted = function ensureMetroStarted2() {
|
|
104
104
|
if (metroStarting || metroReady) return;
|
|
105
105
|
metroStarting = true;
|
|
106
106
|
debug === null || debug === void 0 ? void 0 : debug("Starting Metro on-demand (lazy startup)");
|
|
@@ -122,7 +122,7 @@ function metroPlugin() {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
} else {
|
|
125
|
-
var waitForServer = function() {
|
|
125
|
+
var waitForServer = function waitForServer1() {
|
|
126
126
|
if (server.httpServer) {
|
|
127
127
|
if (server.httpServer.listening) {
|
|
128
128
|
startMetro().catch(function(err) {
|
|
@@ -155,6 +155,7 @@ function metroPlugin() {
|
|
|
155
155
|
}
|
|
156
156
|
if (req.url === "/status" && isNativeRequest) {
|
|
157
157
|
res.statusCode = 200;
|
|
158
|
+
res.setHeader("X-React-Native-Project-Root", new URL(`file:///${projectRoot}`).pathname.slice(1));
|
|
158
159
|
res.end("packager-status:running");
|
|
159
160
|
return;
|
|
160
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metroPlugin.native.js","names":[],"sources":["esm/plugins/metroPlugin.native.js"],"sourcesContent":["import { existsSync } from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport { isAbsolute, relative, resolve } from \"path\";\nimport launchEditor from \"launch-editor\";\nimport { createDebugger } from \"@vxrn/debug\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { checkAndClearMetroCacheFromVite } from \"../utils/metroCacheManager\";\nimport { projectImport } from \"../utils/projectImport\";\nimport { getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nvar { debug } = createDebugger(\"vite-plugin-metro\");\nfunction metroPlugin() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n globalThis[\"__viteMetroPluginOptions__\"] = options;\n return {\n name: \"metro\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n var projectRoot = resolve(server.config.root);\n var shouldLetViteServe = function(url) {\n if (!url) return false;\n var pathname = \"\";\n try {\n pathname = new URL(url, \"http://localhost\").pathname;\n } catch (unused) {\n var _url_split_;\n pathname = (_url_split_ = url.split(\"?\")[0]) !== null && _url_split_ !== void 0 ? _url_split_ : \"\";\n }\n if (!pathname.startsWith(\"/assets/\")) return false;\n if (pathname.endsWith(\"_vxrn_loader.js\")) return true;\n var decodedPathname = pathname;\n try {\n decodedPathname = decodeURIComponent(pathname);\n } catch (unused) {\n }\n var filePath = resolve(projectRoot, decodedPathname.slice(1));\n var relativePath = relative(projectRoot, filePath);\n var isInsideRoot = relativePath !== \"\" && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath);\n return isInsideRoot && existsSync(filePath);\n };\n var metroReady = false;\n var middleware;\n var metroServer;\n var hmrServer;\n var websocketEndpoints;\n var rnDevtoolsMiddleware;\n var metroPromise;\n var metroPromiseResolvers;\n metroPromise = new Promise(function(resolve2, reject) {\n metroPromiseResolvers = {\n resolve: resolve2,\n reject\n };\n });\n var startMetro = async function() {\n var metroStartTime = Date.now();\n try {\n var _server_httpServer;\n checkAndClearMetroCacheFromVite(server, server.config.logger);\n var { default: Metro } = await projectImport(projectRoot, \"metro\");\n var { default: MetroHmrServer } = await projectImport(projectRoot, \"metro/private/HmrServer\");\n var { default: createWebsocketServer } = await projectImport(projectRoot, \"metro/private/lib/createWebsocketServer\");\n var { createDevMiddleware } = await projectImport(projectRoot, \"@react-native/dev-middleware\");\n var config = await getMetroConfigFromViteConfig(server.config, options);\n var metroResult = await Metro.createConnectMiddleware(config, {\n // Force enable file watching, even on CI.\n // This is needed for HMR tests to work on CI.\n watch: true\n });\n middleware = metroResult.middleware;\n metroServer = metroResult.metroServer;\n patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options);\n hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);\n var reactNativeDevToolsUrl = `http://${typeof server.config.server.host === \"boolean\" ? \"localhost\" : server.config.server.host}:${server.config.server.port}`;\n var devMiddleware = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n // rn 0.86 turns this on by default and prepares the standalone debugger\n // shell eagerly while building the middleware. its tool launcher throws\n // outright under NODE_ENV=test rather than spawn a gui, which would take\n // the whole dev server down on boot for anyone running tests against it.\n enableStandaloneFuseboxShell: process.env.NODE_ENV !== \"test\"\n }\n });\n rnDevtoolsMiddleware = devMiddleware.middleware;\n websocketEndpoints = {\n \"/hot\": createWebsocketServer({\n websocketServer: hmrServer\n }),\n // metro parity: the packager message socket (metro serves /message via\n // @react-native-community/cli-server-api). leaving the upgrade unanswered\n // dangles the socket and chromium queues every later websocket handshake\n // to the same host:port behind it (blocking e.g. zero /sync in sootsim).\n \"/message\": createMessageSocket(),\n ...devMiddleware.websocketEndpoints\n };\n (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 ? void 0 : _server_httpServer.on(\"upgrade\", function(request, socket, head) {\n var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;\n var endpoint = websocketEndpoints[pathname];\n if (endpoint) {\n endpoint.handleUpgrade(request, socket, head, function(ws) {\n endpoint.emit(\"connection\", ws, request);\n });\n }\n });\n server.middlewares.use(rnDevtoolsMiddleware);\n metroReady = true;\n var metroElapsed = Date.now() - metroStartTime;\n debug === null || debug === void 0 ? void 0 : debug(`Metro bundler ready (${metroElapsed}ms)`);\n metroPromiseResolvers.resolve();\n } catch (err) {\n debug === null || debug === void 0 ? void 0 : debug(`Error during Metro initialization: ${err}`);\n metroPromiseResolvers.reject(err);\n throw err;\n }\n };\n var isLazyStartup = options.startup === \"lazy\";\n var metroStarting = false;\n var ensureMetroStarted = function() {\n if (metroStarting || metroReady) return;\n metroStarting = true;\n debug === null || debug === void 0 ? void 0 : debug(\"Starting Metro on-demand (lazy startup)\");\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n };\n if (!isLazyStartup) {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", function() {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n var waitForServer = function() {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", function() {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n setTimeout(waitForServer, 10);\n }\n };\n waitForServer();\n }\n } else {\n debug === null || debug === void 0 ? void 0 : debug(\"Metro lazy startup enabled - will start on first native request\");\n }\n server.middlewares.use(async function(req, res, next) {\n var _req_headers_useragent, _req_headers_useragent1, _req_url;\n var isNativeRequest = ((_req_headers_useragent = req.headers[\"user-agent\"]) === null || _req_headers_useragent === void 0 ? void 0 : _req_headers_useragent.includes(\"CFNetwork/\")) || ((_req_headers_useragent1 = req.headers[\"user-agent\"]) === null || _req_headers_useragent1 === void 0 ? void 0 : _req_headers_useragent1.includes(\"okhttp/\"));\n if (isLazyStartup && !metroReady) {\n var _req_url1;\n if (((_req_url1 = req.url) === null || _req_url1 === void 0 ? void 0 : _req_url1.includes(\".bundle\")) || req.url === \"/status\" && isNativeRequest) {\n ensureMetroStarted();\n }\n }\n if (req.url === \"/status\" && isNativeRequest) {\n res.statusCode = 200;\n res.end(\"packager-status:running\");\n return;\n }\n if (((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes(\".bundle\")) && !metroReady) {\n await metroPromise;\n }\n if (middleware) {\n if (shouldLetViteServe(req.url)) {\n return next();\n }\n try {\n var _req_url2;\n if ((_req_url2 = req.url) === null || _req_url2 === void 0 ? void 0 : _req_url2.includes(\".bundle\")) {\n var VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;\n if (VITE_METRO_DEBUG_BUNDLE) {\n if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {\n debug === null || debug === void 0 ? void 0 : debug(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);\n var content = await readFile(VITE_METRO_DEBUG_BUNDLE, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n }\n }\n }\n if (req.url === \"/open-stack-frame\" && req.method === \"POST\") {\n var body = \"\";\n req.on(\"data\", function(chunk) {\n body += chunk.toString();\n });\n req.on(\"end\", function() {\n try {\n var frame = JSON.parse(body);\n launchEditor(frame.file);\n res.statusCode = 200;\n res.end(\"Stack frame opened in editor\");\n } catch (e) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to parse stack frame: ${e}`);\n res.statusCode = 400;\n return res.end(\"Invalid stack frame JSON\");\n }\n });\n return;\n }\n await middleware(req, res, next);\n } catch (error) {\n debug === null || debug === void 0 ? void 0 : debug(`Metro middleware error: ${error}`);\n next();\n }\n } else {\n next();\n }\n });\n }\n };\n}\nexport {\n metroPlugin\n};\n//# sourceMappingURL=metroPlugin.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metroPlugin.native.js","names":[],"sources":["esm/plugins/metroPlugin.native.js"],"sourcesContent":["import { existsSync } from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport { isAbsolute, relative, resolve } from \"path\";\nimport launchEditor from \"launch-editor\";\nimport { createDebugger } from \"@vxrn/debug\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { checkAndClearMetroCacheFromVite } from \"../utils/metroCacheManager\";\nimport { projectImport } from \"../utils/projectImport\";\nimport { getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nvar { debug } = createDebugger(\"vite-plugin-metro\");\nfunction metroPlugin() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n globalThis[\"__viteMetroPluginOptions__\"] = options;\n return {\n name: \"metro\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n var projectRoot = resolve(server.config.root);\n var shouldLetViteServe = function shouldLetViteServe2(url) {\n if (!url) return false;\n var pathname = \"\";\n try {\n pathname = new URL(url, \"http://localhost\").pathname;\n } catch (unused) {\n var _url_split_;\n pathname = (_url_split_ = url.split(\"?\")[0]) !== null && _url_split_ !== void 0 ? _url_split_ : \"\";\n }\n if (!pathname.startsWith(\"/assets/\")) return false;\n if (pathname.endsWith(\"_vxrn_loader.js\")) return true;\n var decodedPathname = pathname;\n try {\n decodedPathname = decodeURIComponent(pathname);\n } catch (unused) {\n }\n var filePath = resolve(projectRoot, decodedPathname.slice(1));\n var relativePath = relative(projectRoot, filePath);\n var isInsideRoot = relativePath !== \"\" && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath);\n return isInsideRoot && existsSync(filePath);\n };\n var metroReady = false;\n var middleware;\n var metroServer;\n var hmrServer;\n var websocketEndpoints;\n var rnDevtoolsMiddleware;\n var metroPromise;\n var metroPromiseResolvers;\n metroPromise = new Promise(function(resolve2, reject) {\n metroPromiseResolvers = {\n resolve: resolve2,\n reject\n };\n });\n var startMetro = async function startMetro2() {\n var metroStartTime = Date.now();\n try {\n var _server_httpServer;\n checkAndClearMetroCacheFromVite(server, server.config.logger);\n var { default: Metro } = await projectImport(projectRoot, \"metro\");\n var { default: MetroHmrServer } = await projectImport(projectRoot, \"metro/private/HmrServer\");\n var { default: createWebsocketServer } = await projectImport(projectRoot, \"metro/private/lib/createWebsocketServer\");\n var { createDevMiddleware } = await projectImport(projectRoot, \"@react-native/dev-middleware\");\n var config = await getMetroConfigFromViteConfig(server.config, options);\n var metroResult = await Metro.createConnectMiddleware(config, {\n // Force enable file watching, even on CI.\n // This is needed for HMR tests to work on CI.\n watch: true\n });\n middleware = metroResult.middleware;\n metroServer = metroResult.metroServer;\n patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options);\n hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);\n var reactNativeDevToolsUrl = `http://${typeof server.config.server.host === \"boolean\" ? \"localhost\" : server.config.server.host}:${server.config.server.port}`;\n var devMiddleware = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n // rn 0.86 turns this on by default and prepares the standalone debugger\n // shell eagerly while building the middleware. its tool launcher throws\n // outright under NODE_ENV=test rather than spawn a gui, which would take\n // the whole dev server down on boot for anyone running tests against it.\n enableStandaloneFuseboxShell: process.env.NODE_ENV !== \"test\"\n }\n });\n rnDevtoolsMiddleware = devMiddleware.middleware;\n websocketEndpoints = {\n \"/hot\": createWebsocketServer({\n websocketServer: hmrServer\n }),\n // metro parity: the packager message socket (metro serves /message via\n // @react-native-community/cli-server-api). leaving the upgrade unanswered\n // dangles the socket and chromium queues every later websocket handshake\n // to the same host:port behind it (blocking e.g. zero /sync in peach).\n \"/message\": createMessageSocket(),\n ...devMiddleware.websocketEndpoints\n };\n (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 ? void 0 : _server_httpServer.on(\"upgrade\", function(request, socket, head) {\n var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;\n var endpoint = websocketEndpoints[pathname];\n if (endpoint) {\n endpoint.handleUpgrade(request, socket, head, function(ws) {\n endpoint.emit(\"connection\", ws, request);\n });\n }\n });\n server.middlewares.use(rnDevtoolsMiddleware);\n metroReady = true;\n var metroElapsed = Date.now() - metroStartTime;\n debug === null || debug === void 0 ? void 0 : debug(`Metro bundler ready (${metroElapsed}ms)`);\n metroPromiseResolvers.resolve();\n } catch (err) {\n debug === null || debug === void 0 ? void 0 : debug(`Error during Metro initialization: ${err}`);\n metroPromiseResolvers.reject(err);\n throw err;\n }\n };\n var isLazyStartup = options.startup === \"lazy\";\n var metroStarting = false;\n var ensureMetroStarted = function ensureMetroStarted2() {\n if (metroStarting || metroReady) return;\n metroStarting = true;\n debug === null || debug === void 0 ? void 0 : debug(\"Starting Metro on-demand (lazy startup)\");\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n };\n if (!isLazyStartup) {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", function() {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n var waitForServer = function waitForServer1() {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", function() {\n startMetro().catch(function(err) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n setTimeout(waitForServer, 10);\n }\n };\n waitForServer();\n }\n } else {\n debug === null || debug === void 0 ? void 0 : debug(\"Metro lazy startup enabled - will start on first native request\");\n }\n server.middlewares.use(async function(req, res, next) {\n var _req_headers_useragent, _req_headers_useragent1, _req_url;\n var isNativeRequest = ((_req_headers_useragent = req.headers[\"user-agent\"]) === null || _req_headers_useragent === void 0 ? void 0 : _req_headers_useragent.includes(\"CFNetwork/\")) || ((_req_headers_useragent1 = req.headers[\"user-agent\"]) === null || _req_headers_useragent1 === void 0 ? void 0 : _req_headers_useragent1.includes(\"okhttp/\"));\n if (isLazyStartup && !metroReady) {\n var _req_url1;\n if (((_req_url1 = req.url) === null || _req_url1 === void 0 ? void 0 : _req_url1.includes(\".bundle\")) || req.url === \"/status\" && isNativeRequest) {\n ensureMetroStarted();\n }\n }\n if (req.url === \"/status\" && isNativeRequest) {\n res.statusCode = 200;\n res.setHeader(\"X-React-Native-Project-Root\", new URL(`file:///${projectRoot}`).pathname.slice(1));\n res.end(\"packager-status:running\");\n return;\n }\n if (((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes(\".bundle\")) && !metroReady) {\n await metroPromise;\n }\n if (middleware) {\n if (shouldLetViteServe(req.url)) {\n return next();\n }\n try {\n var _req_url2;\n if ((_req_url2 = req.url) === null || _req_url2 === void 0 ? void 0 : _req_url2.includes(\".bundle\")) {\n var VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;\n if (VITE_METRO_DEBUG_BUNDLE) {\n if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {\n debug === null || debug === void 0 ? void 0 : debug(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);\n var content = await readFile(VITE_METRO_DEBUG_BUNDLE, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n }\n }\n }\n if (req.url === \"/open-stack-frame\" && req.method === \"POST\") {\n var body = \"\";\n req.on(\"data\", function(chunk) {\n body += chunk.toString();\n });\n req.on(\"end\", function() {\n try {\n var frame = JSON.parse(body);\n launchEditor(frame.file);\n res.statusCode = 200;\n res.end(\"Stack frame opened in editor\");\n } catch (e) {\n debug === null || debug === void 0 ? void 0 : debug(`Failed to parse stack frame: ${e}`);\n res.statusCode = 400;\n return res.end(\"Invalid stack frame JSON\");\n }\n });\n return;\n }\n await middleware(req, res, next);\n } catch (error) {\n debug === null || debug === void 0 ? void 0 : debug(`Metro middleware error: ${error}`);\n next();\n }\n } else {\n next();\n }\n });\n }\n };\n}\nexport {\n metroPlugin\n};\n//# sourceMappingURL=metroPlugin.js.map\n"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ async function buildBundle(_argv, ctx, argsIn) {
|
|
|
25
25
|
...argsIn,
|
|
26
26
|
entryFile: metroPluginOptions.mainModuleName ? projectResolve(viteConfig.root, metroPluginOptions.mainModuleName) : argsIn.entryFile
|
|
27
27
|
};
|
|
28
|
-
await buildBundleWithConfig(args, metroConfig, void 0, { patchServer: function(server) {
|
|
28
|
+
await buildBundleWithConfig(args, metroConfig, void 0, { patchServer: function patchServer(server) {
|
|
29
29
|
patchMetroServerWithViteConfigAndMetroPluginOptions(server, viteConfig, metroPluginOptions);
|
|
30
30
|
} });
|
|
31
31
|
console.info("Done.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildBundle.native.js","names":[],"sources":["esm/rn-commands/bundle/buildBundle.native.js"],"sourcesContent":["import { getMetroConfigFromViteConfig } from \"../../metro-config/getMetroConfigFromViteConfig\";\nimport { buildBundleWithConfig } from \"./buildBundleWithConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nimport { projectResolve } from \"../../utils/projectImport\";\nimport { ensureProcessExitsAfterDelay } from \"../../utils/exit\";\nasync function buildBundle(_argv, ctx, argsIn) {\n var bundleImpl = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n var _metroPluginOptions_watchman;\n var { viteConfig, metroPluginOptions } = this || {};\n if (!viteConfig) {\n throw new Error(\"[vxrn/buildBundle.metro] Expect the buildBundle function to be bind with an object that has viteConfig property.\");\n }\n if (!metroPluginOptions) {\n throw new Error(\"[vxrn/buildBundle.metro] Expect the buildBundle function to be bind with an object that has metroPluginOptions property.\");\n }\n if (process.env.IS_VXRN_CLI) {\n throw new Error(\"IS_VXRN_CLI should not be set while using @vxrn/vite-plugin-metro buildBundle, it is not supported\");\n }\n var metroConfig = await getMetroConfigFromViteConfig(viteConfig, {\n ...metroPluginOptions,\n watchman: (_metroPluginOptions_watchman = metroPluginOptions.watchman) !== null && _metroPluginOptions_watchman !== void 0 ? _metroPluginOptions_watchman : false\n });\n var args = {\n ...argsIn,\n entryFile: metroPluginOptions.mainModuleName ? projectResolve(viteConfig.root, metroPluginOptions.mainModuleName) : argsIn.entryFile\n };\n await buildBundleWithConfig(args, metroConfig, void 0, {\n patchServer: function(server) {\n patchMetroServerWithViteConfigAndMetroPluginOptions(server, viteConfig, metroPluginOptions);\n }\n });\n console.info(\"Done.\");\n ensureProcessExitsAfterDelay();\n}\nexport {\n buildBundle\n};\n//# sourceMappingURL=buildBundle.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,YAAY,OAAO,KAAK,QAAQ;CAC7C,IAAI,aAAa,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAClF,IAAI;CACJ,IAAI,EAAE,YAAY,uBAAuB,QAAQ,CAAC;CAClD,IAAI,CAAC,YAAY;EACf,MAAM,IAAI,MAAM,kHAAkH;CACpI;CACA,IAAI,CAAC,oBAAoB;EACvB,MAAM,IAAI,MAAM,0HAA0H;CAC5I;CACA,IAAI,QAAQ,IAAI,aAAa;EAC3B,MAAM,IAAI,MAAM,oGAAoG;CACtH;CACA,IAAI,cAAc,MAAM,6BAA6B,YAAY;EAC/D,GAAG;EACH,WAAW,+BAA+B,mBAAmB,cAAc,QAAQ,iCAAiC,KAAK,IAAI,+BAA+B;CAC9J,CAAC;CACD,IAAI,OAAO;EACT,GAAG;EACH,WAAW,mBAAmB,iBAAiB,eAAe,WAAW,MAAM,mBAAmB,cAAc,IAAI,OAAO;CAC7H;CACA,MAAM,sBAAsB,MAAM,aAAa,KAAK,GAAG,EACrD,aAAa,SAAS,QAAQ;
|
|
1
|
+
{"version":3,"file":"buildBundle.native.js","names":[],"sources":["esm/rn-commands/bundle/buildBundle.native.js"],"sourcesContent":["import { getMetroConfigFromViteConfig } from \"../../metro-config/getMetroConfigFromViteConfig\";\nimport { buildBundleWithConfig } from \"./buildBundleWithConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nimport { projectResolve } from \"../../utils/projectImport\";\nimport { ensureProcessExitsAfterDelay } from \"../../utils/exit\";\nasync function buildBundle(_argv, ctx, argsIn) {\n var bundleImpl = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n var _metroPluginOptions_watchman;\n var { viteConfig, metroPluginOptions } = this || {};\n if (!viteConfig) {\n throw new Error(\"[vxrn/buildBundle.metro] Expect the buildBundle function to be bind with an object that has viteConfig property.\");\n }\n if (!metroPluginOptions) {\n throw new Error(\"[vxrn/buildBundle.metro] Expect the buildBundle function to be bind with an object that has metroPluginOptions property.\");\n }\n if (process.env.IS_VXRN_CLI) {\n throw new Error(\"IS_VXRN_CLI should not be set while using @vxrn/vite-plugin-metro buildBundle, it is not supported\");\n }\n var metroConfig = await getMetroConfigFromViteConfig(viteConfig, {\n ...metroPluginOptions,\n watchman: (_metroPluginOptions_watchman = metroPluginOptions.watchman) !== null && _metroPluginOptions_watchman !== void 0 ? _metroPluginOptions_watchman : false\n });\n var args = {\n ...argsIn,\n entryFile: metroPluginOptions.mainModuleName ? projectResolve(viteConfig.root, metroPluginOptions.mainModuleName) : argsIn.entryFile\n };\n await buildBundleWithConfig(args, metroConfig, void 0, {\n patchServer: function patchServer(server) {\n patchMetroServerWithViteConfigAndMetroPluginOptions(server, viteConfig, metroPluginOptions);\n }\n });\n console.info(\"Done.\");\n ensureProcessExitsAfterDelay();\n}\nexport {\n buildBundle\n};\n//# sourceMappingURL=buildBundle.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,YAAY,OAAO,KAAK,QAAQ;CAC7C,IAAI,aAAa,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAClF,IAAI;CACJ,IAAI,EAAE,YAAY,uBAAuB,QAAQ,CAAC;CAClD,IAAI,CAAC,YAAY;EACf,MAAM,IAAI,MAAM,kHAAkH;CACpI;CACA,IAAI,CAAC,oBAAoB;EACvB,MAAM,IAAI,MAAM,0HAA0H;CAC5I;CACA,IAAI,QAAQ,IAAI,aAAa;EAC3B,MAAM,IAAI,MAAM,oGAAoG;CACtH;CACA,IAAI,cAAc,MAAM,6BAA6B,YAAY;EAC/D,GAAG;EACH,WAAW,+BAA+B,mBAAmB,cAAc,QAAQ,iCAAiC,KAAK,IAAI,+BAA+B;CAC9J,CAAC;CACD,IAAI,OAAO;EACT,GAAG;EACH,WAAW,mBAAmB,iBAAiB,eAAe,WAAW,MAAM,mBAAmB,cAAc,IAAI,OAAO;CAC7H;CACA,MAAM,sBAAsB,MAAM,aAAa,KAAK,GAAG,EACrD,aAAa,SAAS,YAAY,QAAQ;EACxC,oDAAoD,QAAQ,YAAY,kBAAkB;CAC5F,EACF,CAAC;CACD,QAAQ,KAAK,OAAO;CACpB,6BAA6B;AAC/B"}
|
|
@@ -12,7 +12,7 @@ async function saveAssets(assets, platform, assetsDest, assetCatalogDest) {
|
|
|
12
12
|
}
|
|
13
13
|
var filesToCopy = {};
|
|
14
14
|
var getAssetDestPath = platform === "android" ? getAssetDestPathAndroid : getAssetDestPathIOS;
|
|
15
|
-
var addAssetToCopy = function(asset2) {
|
|
15
|
+
var addAssetToCopy = function addAssetToCopy2(asset2) {
|
|
16
16
|
var validScales = new Set(filterPlatformAssetScales(platform, asset2.scales));
|
|
17
17
|
asset2.scales.forEach(function(scale, idx) {
|
|
18
18
|
if (!validScales.has(scale)) {
|
|
@@ -69,7 +69,7 @@ function copyAll(filesToCopy) {
|
|
|
69
69
|
}
|
|
70
70
|
console.info(`Copying ${queue.length} asset files`);
|
|
71
71
|
return new Promise(function(resolve, reject) {
|
|
72
|
-
var copyNext = function(error) {
|
|
72
|
+
var copyNext = function copyNext1(error) {
|
|
73
73
|
if (error) {
|
|
74
74
|
reject(error);
|
|
75
75
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveAssets.native.js","names":[],"sources":["esm/rn-commands/bundle/saveAssets.native.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { cleanAssetCatalog, getImageSet, isCatalogAsset, writeImageSet } from \"./assetCatalogIOS\";\nimport filterPlatformAssetScales from \"./filterPlatformAssetScales\";\nimport getAssetDestPathAndroid from \"./getAssetDestPathAndroid\";\nimport getAssetDestPathIOS from \"./getAssetDestPathIOS\";\nasync function saveAssets(assets, platform, assetsDest, assetCatalogDest) {\n if (assetsDest == null) {\n console.warn(\"Assets destination folder is not set, skipping...\");\n return;\n }\n var filesToCopy = {};\n var getAssetDestPath = platform === \"android\" ? getAssetDestPathAndroid : getAssetDestPathIOS;\n var addAssetToCopy = function(asset2) {\n var validScales = new Set(filterPlatformAssetScales(platform, asset2.scales));\n asset2.scales.forEach(function(scale, idx) {\n if (!validScales.has(scale)) {\n return;\n }\n var src = asset2.files[idx];\n var dest = path.join(assetsDest, getAssetDestPath(asset2, scale));\n filesToCopy[src] = dest;\n });\n };\n if (platform === \"ios\" && assetCatalogDest != null) {\n var catalogDir = path.join(assetCatalogDest, \"RNAssets.xcassets\");\n if (!fs.existsSync(catalogDir)) {\n console.error(`Could not find asset catalog 'RNAssets.xcassets' in ${assetCatalogDest}. Make sure to create it if it does not exist.`);\n return;\n }\n console.info(\"Adding images to asset catalog\", catalogDir);\n cleanAssetCatalog(catalogDir);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = assets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var asset = _step.value;\n if (isCatalogAsset(asset)) {\n var imageSet = getImageSet(catalogDir, asset, filterPlatformAssetScales(platform, asset.scales));\n writeImageSet(imageSet);\n } else {\n addAssetToCopy(asset);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n console.info(\"Done adding images to asset catalog\");\n } else {\n assets.forEach(addAssetToCopy);\n }\n return copyAll(filesToCopy);\n}\nfunction copyAll(filesToCopy) {\n var queue = Object.keys(filesToCopy);\n if (queue.length === 0) {\n return Promise.resolve();\n }\n console.info(`Copying ${queue.length} asset files`);\n return new Promise(function(resolve, reject) {\n var copyNext = function(error) {\n if (error) {\n reject(error);\n return;\n }\n if (queue.length === 0) {\n console.info(\"Done copying assets\");\n resolve();\n } else {\n var src = queue.shift();\n var dest = filesToCopy[src];\n copy(src, dest, copyNext);\n }\n };\n copyNext();\n });\n}\nfunction copy(src, dest, callback) {\n var destDir = path.dirname(dest);\n fs.mkdir(destDir, {\n recursive: true\n }, function(err) {\n if (err) {\n callback(err);\n return;\n }\n fs.createReadStream(src).pipe(fs.createWriteStream(dest)).on(\"finish\", callback);\n });\n}\nvar saveAssets_default = saveAssets;\nexport {\n saveAssets_default as default\n};\n//# sourceMappingURL=saveAssets.js.map\n"],"mappings":";;;;;;;;AAMA,eAAe,WAAW,QAAQ,UAAU,YAAY,kBAAkB;CACxE,IAAI,cAAc,MAAM;EACtB,QAAQ,KAAK,mDAAmD;EAChE;CACF;CACA,IAAI,cAAc,CAAC;CACnB,IAAI,mBAAmB,aAAa,YAAY,0BAA0B;CAC1E,IAAI,iBAAiB,SAAS,QAAQ;
|
|
1
|
+
{"version":3,"file":"saveAssets.native.js","names":[],"sources":["esm/rn-commands/bundle/saveAssets.native.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { cleanAssetCatalog, getImageSet, isCatalogAsset, writeImageSet } from \"./assetCatalogIOS\";\nimport filterPlatformAssetScales from \"./filterPlatformAssetScales\";\nimport getAssetDestPathAndroid from \"./getAssetDestPathAndroid\";\nimport getAssetDestPathIOS from \"./getAssetDestPathIOS\";\nasync function saveAssets(assets, platform, assetsDest, assetCatalogDest) {\n if (assetsDest == null) {\n console.warn(\"Assets destination folder is not set, skipping...\");\n return;\n }\n var filesToCopy = {};\n var getAssetDestPath = platform === \"android\" ? getAssetDestPathAndroid : getAssetDestPathIOS;\n var addAssetToCopy = function addAssetToCopy2(asset2) {\n var validScales = new Set(filterPlatformAssetScales(platform, asset2.scales));\n asset2.scales.forEach(function(scale, idx) {\n if (!validScales.has(scale)) {\n return;\n }\n var src = asset2.files[idx];\n var dest = path.join(assetsDest, getAssetDestPath(asset2, scale));\n filesToCopy[src] = dest;\n });\n };\n if (platform === \"ios\" && assetCatalogDest != null) {\n var catalogDir = path.join(assetCatalogDest, \"RNAssets.xcassets\");\n if (!fs.existsSync(catalogDir)) {\n console.error(`Could not find asset catalog 'RNAssets.xcassets' in ${assetCatalogDest}. Make sure to create it if it does not exist.`);\n return;\n }\n console.info(\"Adding images to asset catalog\", catalogDir);\n cleanAssetCatalog(catalogDir);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = assets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var asset = _step.value;\n if (isCatalogAsset(asset)) {\n var imageSet = getImageSet(catalogDir, asset, filterPlatformAssetScales(platform, asset.scales));\n writeImageSet(imageSet);\n } else {\n addAssetToCopy(asset);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n console.info(\"Done adding images to asset catalog\");\n } else {\n assets.forEach(addAssetToCopy);\n }\n return copyAll(filesToCopy);\n}\nfunction copyAll(filesToCopy) {\n var queue = Object.keys(filesToCopy);\n if (queue.length === 0) {\n return Promise.resolve();\n }\n console.info(`Copying ${queue.length} asset files`);\n return new Promise(function(resolve, reject) {\n var copyNext = function copyNext1(error) {\n if (error) {\n reject(error);\n return;\n }\n if (queue.length === 0) {\n console.info(\"Done copying assets\");\n resolve();\n } else {\n var src = queue.shift();\n var dest = filesToCopy[src];\n copy(src, dest, copyNext);\n }\n };\n copyNext();\n });\n}\nfunction copy(src, dest, callback) {\n var destDir = path.dirname(dest);\n fs.mkdir(destDir, {\n recursive: true\n }, function(err) {\n if (err) {\n callback(err);\n return;\n }\n fs.createReadStream(src).pipe(fs.createWriteStream(dest)).on(\"finish\", callback);\n });\n}\nvar saveAssets_default = saveAssets;\nexport {\n saveAssets_default as default\n};\n//# sourceMappingURL=saveAssets.js.map\n"],"mappings":";;;;;;;;AAMA,eAAe,WAAW,QAAQ,UAAU,YAAY,kBAAkB;CACxE,IAAI,cAAc,MAAM;EACtB,QAAQ,KAAK,mDAAmD;EAChE;CACF;CACA,IAAI,cAAc,CAAC;CACnB,IAAI,mBAAmB,aAAa,YAAY,0BAA0B;CAC1E,IAAI,iBAAiB,SAAS,gBAAgB,QAAQ;EACpD,IAAI,cAAc,IAAI,IAAI,0BAA0B,UAAU,OAAO,MAAM,CAAC;EAC5E,OAAO,OAAO,QAAQ,SAAS,OAAO,KAAK;GACzC,IAAI,CAAC,YAAY,IAAI,KAAK,GAAG;IAC3B;GACF;GACA,IAAI,MAAM,OAAO,MAAM;GACvB,IAAI,OAAO,KAAK,KAAK,YAAY,iBAAiB,QAAQ,KAAK,CAAC;GAChE,YAAY,OAAO;EACrB,CAAC;CACH;CACA,IAAI,aAAa,SAAS,oBAAoB,MAAM;EAClD,IAAI,aAAa,KAAK,KAAK,kBAAkB,mBAAmB;EAChE,IAAI,CAAC,GAAG,WAAW,UAAU,GAAG;GAC9B,QAAQ,MAAM,uDAAuD,iBAAiB,+CAA+C;GACrI;EACF;EACA,QAAQ,KAAK,kCAAkC,UAAU;EACzD,kBAAkB,UAAU;EAC5B,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,OAAO,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IACvJ,IAAI,QAAQ,MAAM;IAClB,IAAI,eAAe,KAAK,GAAG;KACzB,IAAI,WAAW,YAAY,YAAY,OAAO,0BAA0B,UAAU,MAAM,MAAM,CAAC;KAC/F,cAAc,QAAQ;IACxB,OAAO;KACL,eAAe,KAAK;IACtB;GACF;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,QAAQ,KAAK,qCAAqC;CACpD,OAAO;EACL,OAAO,QAAQ,cAAc;CAC/B;CACA,OAAO,QAAQ,WAAW;AAC5B;AACA,SAAS,QAAQ,aAAa;CAC5B,IAAI,QAAQ,OAAO,KAAK,WAAW;CACnC,IAAI,MAAM,WAAW,GAAG;EACtB,OAAO,QAAQ,QAAQ;CACzB;CACA,QAAQ,KAAK,WAAW,MAAM,OAAO,aAAa;CAClD,OAAO,IAAI,QAAQ,SAAS,SAAS,QAAQ;EAC3C,IAAI,WAAW,SAAS,UAAU,OAAO;GACvC,IAAI,OAAO;IACT,OAAO,KAAK;IACZ;GACF;GACA,IAAI,MAAM,WAAW,GAAG;IACtB,QAAQ,KAAK,qBAAqB;IAClC,QAAQ;GACV,OAAO;IACL,IAAI,MAAM,MAAM,MAAM;IACtB,IAAI,OAAO,YAAY;IACvB,KAAK,KAAK,MAAM,QAAQ;GAC1B;EACF;EACA,SAAS;CACX,CAAC;AACH;AACA,SAAS,KAAK,KAAK,MAAM,UAAU;CACjC,IAAI,UAAU,KAAK,QAAQ,IAAI;CAC/B,GAAG,MAAM,SAAS,EAChB,WAAW,KACb,GAAG,SAAS,KAAK;EACf,IAAI,KAAK;GACP,SAAS,GAAG;GACZ;EACF;EACA,GAAG,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,kBAAkB,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,QAAQ;CACjF,CAAC;AACH;AACA,IAAI,qBAAqB"}
|
|
@@ -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 (/\.(swift|kt)$/.test(filename)) {
|
|
63
|
+
const requireFromProject = createRequire(path.resolve(options.projectRoot, "package.json"));
|
|
64
|
+
const oneTransforms = requireFromProject("one/native-transforms");
|
|
65
|
+
originalSrc = oneTransforms.renderNativeSourceModule(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 (/\\.(swift|kt)$/.test(filename)) {\n const requireFromProject = createRequire(\n path.resolve(options.projectRoot, \"package.json\")\n );\n const oneTransforms = requireFromProject(\n \"one/native-transforms\"\n );\n originalSrc = oneTransforms.renderNativeSourceModule(\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";
|
|
@@ -62,9 +63,15 @@ function getBabelCaller(param) {
|
|
|
62
63
|
function stringOrUndefined(value) {
|
|
63
64
|
return typeof value === "string" ? value : void 0;
|
|
64
65
|
}
|
|
65
|
-
var transform = function(param) {
|
|
66
|
+
var transform = function transform2(param) {
|
|
66
67
|
var { filename, src: originalSrc, options, plugins } = param;
|
|
67
68
|
var _options_customTransformOptions, _options_customTransformOptions1;
|
|
69
|
+
if (/\.(swift|kt)$/.test(filename)) {
|
|
70
|
+
var _options_platform;
|
|
71
|
+
var requireFromProject = createRequire(path.resolve(options.projectRoot, "package.json"));
|
|
72
|
+
var oneTransforms = requireFromProject("one/native-transforms");
|
|
73
|
+
originalSrc = oneTransforms.renderNativeSourceModule(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");
|