@expo/cli 0.14.0 → 0.16.0

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.
Files changed (225) hide show
  1. package/build/bin/cli +13 -5
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/getVersions.js.map +1 -1
  4. package/build/src/api/rest/cache/response.js.map +1 -1
  5. package/build/src/api/rest/client.js +2 -2
  6. package/build/src/api/rest/client.js.map +1 -1
  7. package/build/src/api/user/actions.js +1 -1
  8. package/build/src/api/user/actions.js.map +1 -1
  9. package/build/src/customize/typescript.js +3 -1
  10. package/build/src/customize/typescript.js.map +1 -1
  11. package/build/src/export/createMetadataJson.js +5 -3
  12. package/build/src/export/createMetadataJson.js.map +1 -1
  13. package/build/src/export/embed/exportEmbedAsync.js +92 -18
  14. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  15. package/build/src/export/embed/resolveOptions.js +3 -3
  16. package/build/src/export/embed/resolveOptions.js.map +1 -1
  17. package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
  18. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
  19. package/build/src/export/exportApp.js +106 -130
  20. package/build/src/export/exportApp.js.map +1 -1
  21. package/build/src/export/exportAssets.js +93 -38
  22. package/build/src/export/exportAssets.js.map +1 -1
  23. package/build/src/export/exportAsync.js +1 -1
  24. package/build/src/export/exportAsync.js.map +1 -1
  25. package/build/src/export/exportHermes.js +0 -90
  26. package/build/src/export/exportHermes.js.map +1 -1
  27. package/build/src/export/exportStaticAsync.js +165 -101
  28. package/build/src/export/exportStaticAsync.js.map +1 -1
  29. package/build/src/export/favicon.js +13 -5
  30. package/build/src/export/favicon.js.map +1 -1
  31. package/build/src/export/fork-bundleAsync.js +84 -57
  32. package/build/src/export/fork-bundleAsync.js.map +1 -1
  33. package/build/src/export/index.js +9 -7
  34. package/build/src/export/index.js.map +1 -1
  35. package/build/src/export/metroAssetLocalPath.js +101 -0
  36. package/build/src/export/metroAssetLocalPath.js.map +1 -0
  37. package/build/src/export/persistMetroAssets.js +115 -31
  38. package/build/src/export/persistMetroAssets.js.map +1 -1
  39. package/build/src/export/publicFolder.js +7 -0
  40. package/build/src/export/publicFolder.js.map +1 -1
  41. package/build/src/export/resolveOptions.js +1 -1
  42. package/build/src/export/resolveOptions.js.map +1 -1
  43. package/build/src/export/saveAssets.js +168 -43
  44. package/build/src/export/saveAssets.js.map +1 -1
  45. package/build/src/export/web/exportWebAsync.js +1 -1
  46. package/build/src/export/web/exportWebAsync.js.map +1 -1
  47. package/build/src/export/writeContents.js +8 -106
  48. package/build/src/export/writeContents.js.map +1 -1
  49. package/build/src/install/applyPlugins.js +52 -0
  50. package/build/src/install/applyPlugins.js.map +1 -0
  51. package/build/src/install/checkPackages.js +2 -2
  52. package/build/src/install/checkPackages.js.map +1 -1
  53. package/build/src/install/fixPackages.js +84 -0
  54. package/build/src/install/fixPackages.js.map +1 -0
  55. package/build/src/install/installAsync.js +50 -60
  56. package/build/src/install/installAsync.js.map +1 -1
  57. package/build/src/install/installExpoPackage.js +79 -0
  58. package/build/src/install/installExpoPackage.js.map +1 -0
  59. package/build/src/prebuild/clearNativeFolder.js +1 -1
  60. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  61. package/build/src/prebuild/configureProjectAsync.js +3 -3
  62. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  63. package/build/src/prebuild/copyTemplateFiles.js +21 -30
  64. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  65. package/build/src/prebuild/prebuildAsync.js +45 -16
  66. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  67. package/build/src/prebuild/resolveOptions.js +2 -2
  68. package/build/src/prebuild/resolveOptions.js.map +1 -1
  69. package/build/src/prebuild/updateFromTemplate.js +6 -6
  70. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  71. package/build/src/prebuild/updatePackageJson.js +49 -36
  72. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  73. package/build/src/prebuild/validateTemplatePlatforms.js +2 -2
  74. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  75. package/build/src/run/hints.js +4 -0
  76. package/build/src/run/hints.js.map +1 -1
  77. package/build/src/run/index.js +101 -0
  78. package/build/src/run/index.js.map +1 -0
  79. package/build/src/start/doctor/dependencies/bundledNativeModules.js +2 -2
  80. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  81. package/build/src/start/doctor/dependencies/getVersionedPackages.js +22 -7
  82. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  83. package/build/src/start/doctor/dependencies/resolvePackages.js +66 -0
  84. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -0
  85. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +22 -33
  86. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  87. package/build/src/start/interface/interactiveActions.js +54 -19
  88. package/build/src/start/interface/interactiveActions.js.map +1 -1
  89. package/build/src/start/server/BundlerDevServer.js +14 -10
  90. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  91. package/build/src/start/server/DevServerManager.js +6 -1
  92. package/build/src/start/server/DevServerManager.js.map +1 -1
  93. package/build/src/start/server/DevToolsPluginManager.js +63 -0
  94. package/build/src/start/server/DevToolsPluginManager.js.map +1 -0
  95. package/build/src/start/server/getStaticRenderFunctions.js +25 -23
  96. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  97. package/build/src/start/server/metro/MetroBundlerDevServer.js +76 -69
  98. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  99. package/build/src/start/server/metro/MetroTerminalReporter.js +6 -2
  100. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  101. package/build/src/start/server/metro/TerminalReporter.js +18 -1
  102. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  103. package/build/src/start/server/metro/bundleApiRoutes.js +5 -3
  104. package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
  105. package/build/src/start/server/metro/createExpoMetroResolver.js +80 -46
  106. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  107. package/build/src/start/server/metro/createJResolver.js +152 -0
  108. package/build/src/start/server/metro/createJResolver.js.map +1 -0
  109. package/build/src/start/server/metro/createServerRouteMiddleware.js +15 -2
  110. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  111. package/build/src/start/server/metro/{inspector-proxy/device.js → debugging/InspectorDevice.js} +10 -38
  112. package/build/src/start/server/metro/debugging/InspectorDevice.js.map +1 -0
  113. package/build/src/start/server/metro/debugging/InspectorProxy.js +116 -0
  114. package/build/src/start/server/metro/debugging/InspectorProxy.js.map +1 -0
  115. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +45 -0
  116. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -0
  117. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/NetworkResponse.js +3 -4
  118. package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +1 -0
  119. package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +1 -0
  120. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerGetPossibleBreakpoints.js +5 -6
  121. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
  122. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerScriptParsed.js +3 -2
  123. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +1 -0
  124. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerSetBreakpointByUrl.js +3 -2
  125. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
  126. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +24 -0
  127. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
  128. package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeRuntimeGetProperties.js +5 -4
  129. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +1 -0
  130. package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +1 -0
  131. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js +20 -0
  132. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +1 -0
  133. package/build/src/start/server/metro/externals.js +25 -3
  134. package/build/src/start/server/metro/externals.js.map +1 -1
  135. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  136. package/build/src/start/server/metro/instantiateMetro.js +40 -15
  137. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  138. package/build/src/start/server/metro/metroErrorInterface.js +3 -2
  139. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  140. package/build/src/start/server/metro/router.js +5 -6
  141. package/build/src/start/server/metro/router.js.map +1 -1
  142. package/build/src/start/server/metro/runServer-fork.js +17 -27
  143. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  144. package/build/src/start/server/metro/serializeHtml.js +59 -0
  145. package/build/src/start/server/metro/serializeHtml.js.map +1 -0
  146. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +1 -2
  147. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  148. package/build/src/start/server/metro/withMetroMultiPlatform.js +237 -214
  149. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  150. package/build/src/start/server/metro/withMetroResolvers.js +114 -40
  151. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  152. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +61 -0
  153. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -0
  154. package/build/src/start/server/middleware/ExpoMiddleware.js +2 -2
  155. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  156. package/build/src/start/server/middleware/ManifestMiddleware.js +22 -66
  157. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  158. package/build/src/start/server/middleware/inspector/JsInspector.js +23 -2
  159. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  160. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +30 -26
  161. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
  162. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +7 -7
  163. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
  164. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +5 -2
  165. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
  166. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +3 -2
  167. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
  168. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +8 -7
  169. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
  170. package/build/src/start/server/middleware/metroOptions.js +176 -0
  171. package/build/src/start/server/middleware/metroOptions.js.map +1 -0
  172. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
  173. package/build/src/start/server/type-generation/__typetests__/route.test.js +11 -3
  174. package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -1
  175. package/build/src/start/server/type-generation/routes.js +6 -4
  176. package/build/src/start/server/type-generation/routes.js.map +1 -1
  177. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +1 -1
  178. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  179. package/build/src/utils/analytics/getMetroDebugProperties.js +1 -2
  180. package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
  181. package/build/src/utils/analytics/getMetroProperties.js +1 -2
  182. package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
  183. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  184. package/build/src/utils/args.js +4 -2
  185. package/build/src/utils/args.js.map +1 -1
  186. package/build/src/utils/cocoapods.js +1 -1
  187. package/build/src/utils/cocoapods.js.map +1 -1
  188. package/build/src/utils/codesigning.js +11 -1
  189. package/build/src/utils/codesigning.js.map +1 -1
  190. package/build/src/utils/dir.js +18 -8
  191. package/build/src/utils/dir.js.map +1 -1
  192. package/build/src/utils/env.js +10 -1
  193. package/build/src/utils/env.js.map +1 -1
  194. package/build/src/utils/getOrPromptApplicationId.js +2 -4
  195. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  196. package/build/src/utils/prompts.js +1 -28
  197. package/build/src/utils/prompts.js.map +1 -1
  198. package/build/src/utils/tsconfig/loadTsConfigPaths.js +3 -11
  199. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  200. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +22 -12
  201. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  202. package/package.json +19 -18
  203. package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
  204. package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
  205. package/static/template/index.html +14 -95
  206. package/build/src/export/printBundleSizes.js +0 -101
  207. package/build/src/export/printBundleSizes.js.map +0 -1
  208. package/build/src/start/server/metro/inspector-proxy/device.js.map +0 -1
  209. package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +0 -1
  210. package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +0 -1
  211. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
  212. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +0 -1
  213. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
  214. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +0 -1
  215. package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +0 -1
  216. package/build/src/start/server/metro/inspector-proxy/index.js +0 -27
  217. package/build/src/start/server/metro/inspector-proxy/index.js.map +0 -1
  218. package/build/src/start/server/metro/inspector-proxy/proxy.js +0 -169
  219. package/build/src/start/server/metro/inspector-proxy/proxy.js.map +0 -1
  220. package/build/src/start/server/metro/resolveFromProject.js +0 -90
  221. package/build/src/start/server/metro/resolveFromProject.js.map +0 -1
  222. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +0 -64
  223. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +0 -1
  224. /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/PageReload.js +0 -0
  225. /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/types.js +0 -0
@@ -5,14 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.createBundlesAsync = createBundlesAsync;
6
6
  exports.getAssets = getAssets;
7
7
  var _config = require("@expo/config");
8
- var _chalk = _interopRequireDefault(require("chalk"));
9
- var _getAssets = _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/getAssets"));
8
+ var _getAssets = _interopRequireDefault(require("@expo/metro-config/build/transform-worker/getAssets"));
9
+ var _assert = _interopRequireDefault(require("assert"));
10
+ var _metro = _interopRequireDefault(require("metro"));
11
+ var _server = _interopRequireDefault(require("metro/src/Server"));
10
12
  var _splitBundleOptions = _interopRequireDefault(require("metro/src/lib/splitBundleOptions"));
13
+ var _path = _interopRequireDefault(require("path"));
11
14
  var _exportHermes = require("./exportHermes");
12
- var _getCssModulesFromBundler = require("../start/server/metro/getCssModulesFromBundler");
13
15
  var _instantiateMetro = require("../start/server/metro/instantiateMetro");
14
- var _resolveFromProject = require("../start/server/metro/resolveFromProject");
15
16
  var _manifestMiddleware = require("../start/server/middleware/ManifestMiddleware");
17
+ var _metroOptions = require("../start/server/middleware/metroOptions");
16
18
  function _interopRequireDefault(obj) {
17
19
  return obj && obj.__esModule ? obj : {
18
20
  default: obj
@@ -31,13 +33,14 @@ async function createBundlesAsync(projectRoot, projectConfig, bundleOptions) {
31
33
  return {};
32
34
  }
33
35
  const { exp , pkg } = projectConfig;
36
+ var _entryPoint;
34
37
  const bundles = await bundleProductionMetroClientAsync(projectRoot, exp, {
35
38
  // If not legacy, ignore the target option to prevent warnings from being thrown.
36
39
  resetCache: bundleOptions.clear,
37
40
  maxWorkers: bundleOptions.maxWorkers
38
41
  }, bundleOptions.platforms.map((platform)=>({
39
42
  platform,
40
- entryPoint: (0, _manifestMiddleware).getEntryWithServerRoot(projectRoot, {
43
+ entryPoint: (_entryPoint = bundleOptions.entryPoint) != null ? _entryPoint : (0, _manifestMiddleware).getEntryWithServerRoot(projectRoot, {
41
44
  platform,
42
45
  pkg
43
46
  }),
@@ -58,28 +61,36 @@ async function bundleProductionMetroClientAsync(projectRoot, expoConfig, metroOp
58
61
  // Hermes won't be available.
59
62
  await Promise.all(bundles.map(({ platform })=>assertEngineMismatchAsync(projectRoot, expoConfig, platform)
60
63
  ));
61
- const metro = (0, _resolveFromProject).importMetroFromProject(projectRoot);
62
- const Server = (0, _resolveFromProject).importMetroServerFromProject(projectRoot);
63
64
  const { config , reporter } = await (0, _instantiateMetro).loadMetroConfigAsync(projectRoot, metroOptions, {
64
65
  exp: expoConfig,
65
66
  isExporting: true
66
67
  });
67
- const metroServer = await metro.runMetro(config, {
68
+ const metroServer = await _metro.default.runMetro(config, {
68
69
  watch: false
69
70
  });
70
71
  const buildAsync = async (bundle)=>{
71
72
  const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;
72
73
  const isHermes = (0, _exportHermes).isEnableHermesManaged(expoConfig, bundle.platform);
73
- var _dev, _minify;
74
+ if (isHermes) {
75
+ await assertEngineMismatchAsync(projectRoot, expoConfig, bundle.platform);
76
+ }
74
77
  const bundleOptions = {
75
- ...Server.DEFAULT_BUNDLE_OPTIONS,
78
+ ..._server.default.DEFAULT_BUNDLE_OPTIONS,
79
+ sourceMapUrl: bundle.sourceMapUrl,
80
+ ...(0, _metroOptions).getMetroDirectBundleOptionsForExpoConfig(projectRoot, expoConfig, {
81
+ mainModuleName: bundle.entryPoint,
82
+ platform: bundle.platform,
83
+ mode: bundle.dev ? "development" : "production",
84
+ engine: isHermes ? "hermes" : undefined,
85
+ serializerIncludeMaps: bundle.sourcemaps,
86
+ // Bundle splitting on web-only for now.
87
+ // serializerOutput: bundle.platform === 'web' ? 'static' : undefined,
88
+ serializerOutput: "static",
89
+ serializerIncludeBytecode: isHermes,
90
+ isExporting: true
91
+ }),
76
92
  bundleType: "bundle",
77
- platform: bundle.platform,
78
- entryFile: bundle.entryPoint,
79
- dev: (_dev = bundle.dev) != null ? _dev : false,
80
- minify: !isHermes && ((_minify = bundle.minify) != null ? _minify : !bundle.dev),
81
93
  inlineSourceMap: false,
82
- sourceMapUrl: bundle.sourceMapUrl,
83
94
  createModuleIdFactory: config.serializer.createModuleIdFactory,
84
95
  onProgress: (transformedFileCount, totalFileCount)=>{
85
96
  reporter.update({
@@ -100,21 +111,12 @@ async function bundleProductionMetroClientAsync(projectRoot, expoConfig, metroOp
100
111
  bundleDetails
101
112
  });
102
113
  try {
103
- const { code , map } = await metroServer.build(bundleOptions);
104
- const [assets, css] = await Promise.all([
105
- getAssets(metroServer, bundleOptions),
106
- (0, _getCssModulesFromBundler).getCssModulesFromBundler(config, metroServer.getBundler(), bundleOptions),
107
- ]);
114
+ const artifacts = await forkMetroBuildAsync(metroServer, bundleOptions);
108
115
  reporter.update({
109
116
  buildID,
110
117
  type: "bundle_build_done"
111
118
  });
112
- return {
113
- code,
114
- map,
115
- assets: assets,
116
- css
117
- };
119
+ return artifacts;
118
120
  } catch (error) {
119
121
  reporter.update({
120
122
  buildID,
@@ -123,38 +125,9 @@ async function bundleProductionMetroClientAsync(projectRoot, expoConfig, metroOp
123
125
  throw error;
124
126
  }
125
127
  };
126
- const maybeAddHermesBundleAsync = async (bundle, bundleOutput)=>{
127
- const { platform } = bundle;
128
- const isHermesManaged = (0, _exportHermes).isEnableHermesManaged(expoConfig, platform);
129
- if (isHermesManaged) {
130
- const platformTag = _chalk.default.bold({
131
- ios: "iOS",
132
- android: "Android",
133
- web: "Web"
134
- }[platform] || platform);
135
- reporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);
136
- var _minify;
137
- const hermesBundleOutput = await (0, _exportHermes).buildHermesBundleAsync(projectRoot, {
138
- code: bundleOutput.code,
139
- map: bundle.sourcemaps ? bundleOutput.map : null,
140
- minify: (_minify = bundle.minify) != null ? _minify : !bundle.dev
141
- });
142
- bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;
143
- var _sourcemap;
144
- bundleOutput.hermesSourcemap = (_sourcemap = hermesBundleOutput.sourcemap) != null ? _sourcemap : undefined;
145
- }
146
- return bundleOutput;
147
- };
148
128
  try {
149
- const intermediateOutputs = await Promise.all(bundles.map((bundle)=>buildAsync(bundle)
129
+ return await Promise.all(bundles.map((bundle)=>buildAsync(bundle)
150
130
  ));
151
- const bundleOutputs = [];
152
- for(let i = 0; i < bundles.length; ++i){
153
- // hermesc does not support parallel building even we spawn processes.
154
- // we should build them sequentially.
155
- bundleOutputs.push(await maybeAddHermesBundleAsync(bundles[i], intermediateOutputs[i]));
156
- }
157
- return bundleOutputs;
158
131
  } catch (error) {
159
132
  // New line so errors don't show up inline with the progress bar
160
133
  console.log("");
@@ -175,7 +148,7 @@ async function getAssets(metro, options) {
175
148
  });
176
149
  // @ts-expect-error
177
150
  const _config1 = metro._config;
178
- return await (0, _getAssets).default(dependencies, {
151
+ return (0, _getAssets).default(dependencies, {
179
152
  processModuleFilter: _config1.serializer.processModuleFilter,
180
153
  assetPlugins: _config1.transformer.assetPlugins,
181
154
  platform: transformOptions.platform,
@@ -183,5 +156,59 @@ async function getAssets(metro, options) {
183
156
  publicPath: _config1.transformer.publicPath
184
157
  });
185
158
  }
159
+ function isMetroServerInstance(metro) {
160
+ return "_shouldAddModuleToIgnoreList" in metro;
161
+ }
162
+ async function forkMetroBuildAsync(metro, options) {
163
+ var ref;
164
+ if (!isMetroServerInstance(metro)) {
165
+ throw new Error("Expected Metro server instance to have private functions exposed.");
166
+ }
167
+ if (((ref = options.serializerOptions) == null ? void 0 : ref.output) !== "static") {
168
+ throw new Error("Only multi-serializer output is supported.");
169
+ }
170
+ const { entryFile , graphOptions , onProgress , resolverOptions , serializerOptions , transformOptions , } = (0, _splitBundleOptions).default(options);
171
+ const { prepend , graph } = await metro._bundler.buildGraph(entryFile, transformOptions, resolverOptions, {
172
+ onProgress,
173
+ shallow: graphOptions.shallow,
174
+ // @ts-expect-error
175
+ lazy: graphOptions.lazy
176
+ });
177
+ const entryPoint = metro._getEntryPointAbsolutePath(entryFile);
178
+ var _unstable_serverRoot;
179
+ const bundleOptions = {
180
+ asyncRequireModulePath: await metro._resolveRelativePath(metro._config.transformer.asyncRequireModulePath, {
181
+ relativeTo: "project",
182
+ resolverOptions,
183
+ transformOptions
184
+ }),
185
+ processModuleFilter: metro._config.serializer.processModuleFilter,
186
+ createModuleId: metro._createModuleId,
187
+ getRunModuleStatement: metro._config.serializer.getRunModuleStatement,
188
+ dev: transformOptions.dev,
189
+ includeAsyncPaths: graphOptions.lazy,
190
+ projectRoot: metro._config.projectRoot,
191
+ modulesOnly: serializerOptions.modulesOnly,
192
+ runBeforeMainModule: metro._config.serializer.getModulesRunBeforeMainModule(_path.default.relative(metro._config.projectRoot, entryPoint)),
193
+ runModule: serializerOptions.runModule,
194
+ sourceMapUrl: serializerOptions.sourceMapUrl,
195
+ sourceUrl: serializerOptions.sourceUrl,
196
+ inlineSourceMap: serializerOptions.inlineSourceMap,
197
+ serverRoot: (_unstable_serverRoot = metro._config.server.unstable_serverRoot) != null ? _unstable_serverRoot : metro._config.projectRoot,
198
+ shouldAddToIgnoreList: (module)=>metro._shouldAddModuleToIgnoreList(module)
199
+ ,
200
+ // Custom options we pass to the serializer to emulate the URL query parameters.
201
+ serializerOptions: options.serializerOptions
202
+ };
203
+ const bundle = await metro._config.serializer.customSerializer(entryPoint, // @ts-expect-error: Metro is typed incorrectly
204
+ prepend, graph, bundleOptions);
205
+ try {
206
+ const parsed = typeof bundle === "string" ? JSON.parse(bundle) : bundle;
207
+ (0, _assert).default("artifacts" in parsed && Array.isArray(parsed.artifacts), "Expected serializer to return an object with key artifacts to contain an array of serial assets.");
208
+ return parsed;
209
+ } catch (error) {
210
+ throw new Error("Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: " + error.message);
211
+ }
212
+ }
186
213
 
187
214
  //# sourceMappingURL=fork-bundleAsync.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfigFilePaths, Platform, ProjectConfig } from '@expo/config';\nimport type { LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport Metro, { AssetData } from 'metro';\nimport getMetroAssets from 'metro/src/DeltaBundler/Serializers/getAssets';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport type { BundleOptions as MetroBundleOptions } from 'metro/src/shared/types';\nimport { ConfigT } from 'metro-config';\n\nimport {\n buildHermesBundleAsync,\n isEnableHermesManaged,\n maybeThrowFromInconsistentEngineAsync,\n} from './exportHermes';\nimport { CSSAsset, getCssModulesFromBundler } from '../start/server/metro/getCssModulesFromBundler';\nimport { loadMetroConfigAsync } from '../start/server/metro/instantiateMetro';\nimport {\n importMetroFromProject,\n importMetroServerFromProject,\n} from '../start/server/metro/resolveFromProject';\nimport { getEntryWithServerRoot } from '../start/server/middleware/ManifestMiddleware';\n\nexport type MetroDevServerOptions = LoadOptions;\n\nexport type BundleOptions = {\n entryPoint: string;\n platform: 'android' | 'ios' | 'web';\n dev?: boolean;\n minify?: boolean;\n sourceMapUrl?: string;\n sourcemaps?: boolean;\n};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n code: string;\n map: string;\n hermesBytecodeBundle?: Uint8Array;\n hermesSourcemap?: string;\n css: CSSAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nlet nextBuildID = 0;\n\nasync function assertEngineMismatchAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>,\n platform: Platform\n) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function createBundlesAsync(\n projectRoot: string,\n projectConfig: ProjectConfig,\n bundleOptions: {\n clear?: boolean;\n maxWorkers?: number;\n platforms: Platform[];\n dev?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n }\n): Promise<Partial<Record<Platform, BundleOutput>>> {\n if (!bundleOptions.platforms.length) {\n return {};\n }\n const { exp, pkg } = projectConfig;\n\n const bundles = await bundleProductionMetroClientAsync(\n projectRoot,\n exp,\n {\n // If not legacy, ignore the target option to prevent warnings from being thrown.\n resetCache: bundleOptions.clear,\n maxWorkers: bundleOptions.maxWorkers,\n },\n bundleOptions.platforms.map((platform: Platform) => ({\n platform,\n entryPoint: getEntryWithServerRoot(projectRoot, { platform, pkg }),\n sourcemaps: bundleOptions.sourcemaps,\n minify: bundleOptions.minify,\n dev: bundleOptions.dev,\n }))\n );\n\n // { ios: bundle, android: bundle }\n return bundleOptions.platforms.reduce<Partial<Record<Platform, BundleOutput>>>(\n (prev, platform, index) => ({\n ...prev,\n [platform]: bundles[index],\n }),\n {}\n );\n}\n\nasync function bundleProductionMetroClientAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n metroOptions: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const metro = importMetroFromProject(projectRoot);\n const Server = importMetroServerFromProject(projectRoot);\n\n const { config, reporter } = await loadMetroConfigAsync(projectRoot, metroOptions, {\n exp: expoConfig,\n isExporting: true,\n });\n\n const metroServer = await metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n const bundleOptions: MetroBundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n bundleType: 'bundle',\n platform: bundle.platform,\n entryFile: bundle.entryPoint,\n dev: bundle.dev ?? false,\n minify: !isHermes && (bundle.minify ?? !bundle.dev),\n inlineSourceMap: false,\n sourceMapUrl: bundle.sourceMapUrl,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n reporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n },\n };\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n reporter.update({\n buildID,\n type: 'bundle_build_started',\n bundleDetails,\n });\n try {\n const { code, map } = await metroServer.build(bundleOptions);\n const [assets, css] = await Promise.all([\n getAssets(metroServer, bundleOptions),\n getCssModulesFromBundler(config, metroServer.getBundler(), bundleOptions),\n ]);\n\n reporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return { code, map, assets: assets as readonly BundleAssetWithFileHashes[], css };\n } catch (error) {\n reporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n const maybeAddHermesBundleAsync = async (\n bundle: BundleOptions,\n bundleOutput: BundleOutput\n ): Promise<BundleOutput> => {\n const { platform } = bundle;\n const isHermesManaged = isEnableHermesManaged(expoConfig, platform);\n if (isHermesManaged) {\n const platformTag = chalk.bold(\n { ios: 'iOS', android: 'Android', web: 'Web' }[platform] || platform\n );\n\n reporter.terminal.log(`${platformTag} Building Hermes bytecode for the bundle`);\n\n const hermesBundleOutput = await buildHermesBundleAsync(projectRoot, {\n code: bundleOutput.code,\n map: bundle.sourcemaps ? bundleOutput.map : null,\n minify: bundle.minify ?? !bundle.dev,\n });\n bundleOutput.hermesBytecodeBundle = hermesBundleOutput.hbc;\n bundleOutput.hermesSourcemap = hermesBundleOutput.sourcemap ?? undefined;\n }\n return bundleOutput;\n };\n\n try {\n const intermediateOutputs = await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n const bundleOutputs: BundleOutput[] = [];\n for (let i = 0; i < bundles.length; ++i) {\n // hermesc does not support parallel building even we spawn processes.\n // we should build them sequentially.\n bundleOutputs.push(await maybeAddHermesBundleAsync(bundles[i], intermediateOutputs[i]));\n }\n return bundleOutputs;\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n\n// Forked out of Metro because the `this._getServerRootDir()` doesn't match the development\n// behavior.\nexport async function getAssets(\n metro: Metro.Server,\n options: MetroBundleOptions\n): Promise<readonly AssetData[]> {\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n // @ts-expect-error: _bundler isn't exposed on the type.\n const dependencies = await metro._bundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n // @ts-expect-error\n const _config = metro._config as ConfigT;\n\n return await getMetroAssets(dependencies, {\n processModuleFilter: _config.serializer.processModuleFilter,\n assetPlugins: _config.transformer.assetPlugins,\n platform: transformOptions.platform!,\n projectRoot: _config.projectRoot, // this._getServerRootDir(),\n publicPath: _config.transformer.publicPath,\n });\n}\n"],"names":["createBundlesAsync","getAssets","nextBuildID","assertEngineMismatchAsync","projectRoot","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","projectConfig","bundleOptions","platforms","length","pkg","bundles","bundleProductionMetroClientAsync","resetCache","clear","maxWorkers","map","entryPoint","getEntryWithServerRoot","sourcemaps","minify","dev","reduce","prev","index","expoConfig","metroOptions","Promise","all","metro","importMetroFromProject","Server","importMetroServerFromProject","config","reporter","loadMetroConfigAsync","isExporting","metroServer","runMetro","watch","buildAsync","bundle","buildID","isHermes","DEFAULT_BUNDLE_OPTIONS","bundleType","entryFile","inlineSourceMap","sourceMapUrl","createModuleIdFactory","serializer","onProgress","transformedFileCount","totalFileCount","update","type","bundleDetails","code","build","assets","css","getCssModulesFromBundler","getBundler","error","maybeAddHermesBundleAsync","bundleOutput","platformTag","chalk","bold","ios","android","web","terminal","log","hermesBundleOutput","buildHermesBundleAsync","hermesBytecodeBundle","hbc","hermesSourcemap","sourcemap","undefined","intermediateOutputs","bundleOutputs","i","push","console","end","options","resolverOptions","transformOptions","splitBundleOptions","dependencies","_bundler","getDependencies","shallow","lazy","_config","getMetroAssets","processModuleFilter","assetPlugins","transformer","publicPath"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfigFilePaths, Platform, ProjectConfig } from '@expo/config';\nimport { LoadOptions } from '@expo/metro-config';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport getMetroAssets from '@expo/metro-config/build/transform-worker/getAssets';\nimport assert from 'assert';\nimport Metro, { MixedOutput, Module, ReadOnlyGraph } from 'metro';\nimport type { TransformInputOptions } from 'metro/src/DeltaBundler/types';\nimport IncrementalBundler from 'metro/src/IncrementalBundler';\nimport Server from 'metro/src/Server';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport type {\n ResolverInputOptions,\n BundleOptions as MetroBundleOptions,\n} from 'metro/src/shared/types';\nimport { ConfigT } from 'metro-config';\nimport path from 'path';\n\nimport { isEnableHermesManaged, maybeThrowFromInconsistentEngineAsync } from './exportHermes';\nimport { loadMetroConfigAsync } from '../start/server/metro/instantiateMetro';\nimport { getEntryWithServerRoot } from '../start/server/middleware/ManifestMiddleware';\nimport {\n ExpoMetroBundleOptions,\n getMetroDirectBundleOptionsForExpoConfig,\n} from '../start/server/middleware/metroOptions';\n\nexport type MetroDevServerOptions = LoadOptions;\n\nexport type BundleOptions = {\n entryPoint: string;\n platform: 'android' | 'ios' | 'web';\n dev?: boolean;\n minify?: boolean;\n sourceMapUrl?: string;\n sourcemaps?: boolean;\n};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n artifacts: SerialAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nlet nextBuildID = 0;\n\nasync function assertEngineMismatchAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>,\n platform: Platform\n) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function createBundlesAsync(\n projectRoot: string,\n projectConfig: ProjectConfig,\n bundleOptions: {\n clear?: boolean;\n maxWorkers?: number;\n platforms: Platform[];\n dev?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n entryPoint?: string;\n }\n): Promise<Partial<Record<Platform, BundleOutput>>> {\n if (!bundleOptions.platforms.length) {\n return {};\n }\n const { exp, pkg } = projectConfig;\n\n const bundles = await bundleProductionMetroClientAsync(\n projectRoot,\n exp,\n {\n // If not legacy, ignore the target option to prevent warnings from being thrown.\n resetCache: bundleOptions.clear,\n maxWorkers: bundleOptions.maxWorkers,\n },\n bundleOptions.platforms.map((platform: Platform) => ({\n platform,\n entryPoint:\n bundleOptions.entryPoint ?? getEntryWithServerRoot(projectRoot, { platform, pkg }),\n sourcemaps: bundleOptions.sourcemaps,\n minify: bundleOptions.minify,\n dev: bundleOptions.dev,\n }))\n );\n\n // { ios: bundle, android: bundle }\n return bundleOptions.platforms.reduce<Partial<Record<Platform, BundleOutput>>>(\n (prev, platform, index) => ({\n ...prev,\n [platform]: bundles[index],\n }),\n {}\n );\n}\n\nasync function bundleProductionMetroClientAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n metroOptions: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const { config, reporter } = await loadMetroConfigAsync(projectRoot, metroOptions, {\n exp: expoConfig,\n isExporting: true,\n });\n\n const metroServer = await Metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n if (isHermes) {\n await assertEngineMismatchAsync(projectRoot, expoConfig, bundle.platform);\n }\n const bundleOptions: MetroBundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n sourceMapUrl: bundle.sourceMapUrl,\n ...getMetroDirectBundleOptionsForExpoConfig(projectRoot, expoConfig, {\n mainModuleName: bundle.entryPoint,\n platform: bundle.platform,\n mode: bundle.dev ? 'development' : 'production',\n engine: isHermes ? 'hermes' : undefined,\n serializerIncludeMaps: bundle.sourcemaps,\n // Bundle splitting on web-only for now.\n // serializerOutput: bundle.platform === 'web' ? 'static' : undefined,\n serializerOutput: 'static',\n serializerIncludeBytecode: isHermes,\n isExporting: true,\n }),\n bundleType: 'bundle',\n inlineSourceMap: false,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n reporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n },\n };\n\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n reporter.update({\n buildID,\n type: 'bundle_build_started',\n bundleDetails,\n });\n try {\n const artifacts = await forkMetroBuildAsync(metroServer, bundleOptions);\n reporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return artifacts;\n } catch (error) {\n reporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n try {\n return await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n\n// Forked out of Metro because the `this._getServerRootDir()` doesn't match the development\n// behavior.\nexport async function getAssets(metro: Metro.Server, options: MetroBundleOptions) {\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n // @ts-expect-error: _bundler isn't exposed on the type.\n const dependencies = await metro._bundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n // @ts-expect-error\n const _config = metro._config as ConfigT;\n\n return getMetroAssets(dependencies, {\n processModuleFilter: _config.serializer.processModuleFilter,\n assetPlugins: _config.transformer.assetPlugins,\n platform: transformOptions.platform!,\n projectRoot: _config.projectRoot, // this._getServerRootDir(),\n publicPath: _config.transformer.publicPath,\n });\n}\n\nfunction isMetroServerInstance(metro: Metro.Server): metro is Metro.Server & {\n _shouldAddModuleToIgnoreList: (module: Module<MixedOutput>) => boolean;\n _bundler: IncrementalBundler;\n _config: ConfigT;\n _createModuleId: (path: string) => number;\n _resolveRelativePath(\n filePath: string,\n {\n relativeTo,\n resolverOptions,\n transformOptions,\n }: {\n relativeTo: 'project' | 'server';\n resolverOptions: ResolverInputOptions;\n transformOptions: TransformInputOptions;\n }\n ): Promise<string>;\n _getEntryPointAbsolutePath(entryFile: string): string;\n _getSortedModules(graph: ReadOnlyGraph): Module<MixedOutput>[];\n} {\n return '_shouldAddModuleToIgnoreList' in metro;\n}\n\nasync function forkMetroBuildAsync(\n metro: Metro.Server,\n options: ExpoMetroBundleOptions\n): Promise<{ artifacts: SerialAsset[]; assets: readonly BundleAssetWithFileHashes[] }> {\n if (!isMetroServerInstance(metro)) {\n throw new Error('Expected Metro server instance to have private functions exposed.');\n }\n\n if (options.serializerOptions?.output !== 'static') {\n throw new Error('Only multi-serializer output is supported.');\n }\n\n const {\n entryFile,\n graphOptions,\n onProgress,\n resolverOptions,\n serializerOptions,\n transformOptions,\n } = splitBundleOptions(options);\n\n const { prepend, graph } = await metro._bundler.buildGraph(\n entryFile,\n transformOptions,\n resolverOptions,\n {\n onProgress,\n shallow: graphOptions.shallow,\n // @ts-expect-error\n lazy: graphOptions.lazy,\n }\n );\n\n const entryPoint = metro._getEntryPointAbsolutePath(entryFile);\n\n const bundleOptions = {\n asyncRequireModulePath: await metro._resolveRelativePath(\n metro._config.transformer.asyncRequireModulePath,\n {\n relativeTo: 'project',\n resolverOptions,\n transformOptions,\n }\n ),\n processModuleFilter: metro._config.serializer.processModuleFilter,\n createModuleId: metro._createModuleId,\n getRunModuleStatement: metro._config.serializer.getRunModuleStatement,\n dev: transformOptions.dev,\n includeAsyncPaths: graphOptions.lazy,\n projectRoot: metro._config.projectRoot,\n modulesOnly: serializerOptions.modulesOnly,\n runBeforeMainModule: metro._config.serializer.getModulesRunBeforeMainModule(\n path.relative(metro._config.projectRoot, entryPoint)\n ),\n runModule: serializerOptions.runModule,\n sourceMapUrl: serializerOptions.sourceMapUrl,\n sourceUrl: serializerOptions.sourceUrl,\n inlineSourceMap: serializerOptions.inlineSourceMap,\n serverRoot: metro._config.server.unstable_serverRoot ?? metro._config.projectRoot,\n shouldAddToIgnoreList: (module: Module<MixedOutput>) =>\n metro._shouldAddModuleToIgnoreList(module),\n // Custom options we pass to the serializer to emulate the URL query parameters.\n serializerOptions: options.serializerOptions,\n };\n\n const bundle = await metro._config.serializer.customSerializer!(\n entryPoint,\n // @ts-expect-error: Metro is typed incorrectly\n prepend,\n graph,\n bundleOptions\n );\n\n try {\n const parsed = typeof bundle === 'string' ? JSON.parse(bundle) : bundle;\n\n assert(\n 'artifacts' in parsed && Array.isArray(parsed.artifacts),\n 'Expected serializer to return an object with key artifacts to contain an array of serial assets.'\n );\n return parsed;\n } catch (error: any) {\n throw new Error(\n 'Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: ' +\n error.message\n );\n }\n}\n"],"names":["createBundlesAsync","getAssets","nextBuildID","assertEngineMismatchAsync","projectRoot","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","projectConfig","bundleOptions","platforms","length","pkg","bundles","bundleProductionMetroClientAsync","resetCache","clear","maxWorkers","map","entryPoint","getEntryWithServerRoot","sourcemaps","minify","dev","reduce","prev","index","expoConfig","metroOptions","Promise","all","config","reporter","loadMetroConfigAsync","isExporting","metroServer","Metro","runMetro","watch","buildAsync","bundle","buildID","isHermes","Server","DEFAULT_BUNDLE_OPTIONS","sourceMapUrl","getMetroDirectBundleOptionsForExpoConfig","mainModuleName","mode","engine","undefined","serializerIncludeMaps","serializerOutput","serializerIncludeBytecode","bundleType","inlineSourceMap","createModuleIdFactory","serializer","onProgress","transformedFileCount","totalFileCount","update","type","bundleDetails","artifacts","forkMetroBuildAsync","error","console","log","end","metro","options","entryFile","resolverOptions","transformOptions","splitBundleOptions","dependencies","_bundler","getDependencies","shallow","lazy","_config","getMetroAssets","processModuleFilter","assetPlugins","transformer","publicPath","isMetroServerInstance","Error","serializerOptions","output","graphOptions","prepend","graph","buildGraph","_getEntryPointAbsolutePath","asyncRequireModulePath","_resolveRelativePath","relativeTo","createModuleId","_createModuleId","getRunModuleStatement","includeAsyncPaths","modulesOnly","runBeforeMainModule","getModulesRunBeforeMainModule","path","relative","runModule","sourceUrl","serverRoot","server","unstable_serverRoot","shouldAddToIgnoreList","module","_shouldAddModuleToIgnoreList","customSerializer","parsed","JSON","parse","assert","Array","isArray","message"],"mappings":"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"}
@@ -40,7 +40,7 @@ const expoExport = async (argv)=>{
40
40
  "--clear": Boolean,
41
41
  "--dump-assetmap": Boolean,
42
42
  "--dev": Boolean,
43
- "--dump-sourcemap": Boolean,
43
+ "--source-maps": Boolean,
44
44
  "--max-workers": Number,
45
45
  "--output-dir": String,
46
46
  "--platform": [
@@ -53,23 +53,25 @@ const expoExport = async (argv)=>{
53
53
  "--experimental-bundle": Boolean,
54
54
  // Aliases
55
55
  "-h": "--help",
56
- // '-s': '--dump-sourcemap',
56
+ "-s": "--source-maps",
57
57
  // '-d': '--dump-assetmap',
58
58
  "-c": "--clear",
59
59
  "-p": "--platform",
60
60
  // Interop with Metro docs and RedBox errors.
61
- "--reset-cache": "--clear"
61
+ "--reset-cache": "--clear",
62
+ // Deprecated
63
+ "--dump-sourcemap": "--source-maps"
62
64
  }, argv);
63
65
  if (args["--help"]) {
64
66
  (0, _args).printHelp(`Export the static files of the app for hosting it on a web server`, _chalk.default`npx expo export {dim <dir>}`, [
65
67
  _chalk.default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
66
- `--dev Configure static files for developing locally using a non-https server`,
67
68
  _chalk.default`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,
69
+ `--dev Configure static files for developing locally using a non-https server`,
70
+ `--no-minify Prevent minifying source`,
68
71
  `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,
69
- `--dump-assetmap Dump the asset map for further processing`,
70
- `--dump-sourcemap Dump the source map for debugging the JS bundle`,
72
+ `--dump-assetmap Emit an asset map for further processing`,
71
73
  _chalk.default`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,
72
- `--no-minify Prevent minifying source`,
74
+ `-s, --source-maps Emit JavaScript source maps`,
73
75
  `-c, --clear Clear the bundler cache`,
74
76
  `-h, --help Usage info`,
75
77
  ].join("\n"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--dump-sourcemap': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': [String],\n '--no-minify': Boolean,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n // '-s': '--dump-sourcemap',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n // Interop with Metro docs and RedBox errors.\n '--reset-cache': '--clear',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Configure static files for developing locally using a non-https server`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Dump the asset map for further processing`,\n `--dump-sourcemap Dump the source map for debugging the JS bundle`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `--no-minify Prevent minifying source`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions.js');\n const options = await resolveOptionsAsync(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync.js');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AA4BtB,CAAA,WA5BsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,kBAAkB,EAAEA,OAAO;QAC3B,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAE;YAACA,MAAM;SAAC;QACtB,aAAa,EAAEF,OAAO;QAEtB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEA,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,4BAA4B;QAC5B,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,6CAA6C;QAC7C,eAAe,EAAE,SAAS;KAC3B,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAeR,CAAA,UAfQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,kGAAkG,CAAC;YACzG,CAAC,iGAAiG,CAAC;YACnGA,MAAK,QAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,gFAAgF,CAAC;YAClF,CAAC,oEAAoE,CAAC;YACtE,CAAC,0EAA0E,CAAC;YAC5EA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,mDAAmD,CAAC;YACrD,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,qBAAqB;MAAC,AAAC;IACpE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACzD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QAxDWf,UAAU,GAAVA,UAAU"}
1
+ {"version":3,"sources":["../../../src/export/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--source-maps': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': [String],\n '--no-minify': Boolean,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n '-s': '--source-maps',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n // Interop with Metro docs and RedBox errors.\n '--reset-cache': '--clear',\n\n // Deprecated\n '--dump-sourcemap': '--source-maps',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--dev Configure static files for developing locally using a non-https server`,\n `--no-minify Prevent minifying source`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Emit an asset map for further processing`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `-s, --source-maps Emit JavaScript source maps`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions.js');\n const options = await resolveOptionsAsync(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync.js');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AA+BtB,CAAA,WA/BsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,eAAe,EAAEA,OAAO;QACxB,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAE;YAACA,MAAM;SAAC;QACtB,aAAa,EAAEF,OAAO;QAEtB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEA,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,6CAA6C;QAC7C,eAAe,EAAE,SAAS;QAE1B,aAAa;QACb,kBAAkB,EAAE,eAAe;KACpC,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAeR,CAAA,UAfQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,kGAAkG,CAAC;YACzGA,MAAK,QAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,iGAAiG,CAAC;YACnG,CAAC,mDAAmD,CAAC;YACrD,CAAC,gFAAgF,CAAC;YAClF,CAAC,mEAAmE,CAAC;YACrEA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,sDAAsD,CAAC;YACxD,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,qBAAqB;MAAC,AAAC;IACpE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACzD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QA3DWf,UAAU,GAAVA,UAAU"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getAssetLocalPath = getAssetLocalPath;
6
+ exports.stripAssetPrefix = stripAssetPrefix;
7
+ var _path = _interopRequireDefault(require("path"));
8
+ function _interopRequireDefault(obj) {
9
+ return obj && obj.__esModule ? obj : {
10
+ default: obj
11
+ };
12
+ }
13
+ function getAssetLocalPath(asset, { baseUrl , scale , platform }) {
14
+ if (platform === "android") {
15
+ return getAssetLocalPathAndroid(asset, {
16
+ baseUrl,
17
+ scale
18
+ });
19
+ }
20
+ return getAssetLocalPathDefault(asset, {
21
+ baseUrl,
22
+ scale
23
+ });
24
+ }
25
+ function getAssetLocalPathAndroid(asset, { baseUrl , scale }) {
26
+ const androidFolder = getAndroidResourceFolderName(asset, scale);
27
+ const fileName = getResourceIdentifier(asset);
28
+ return _path.default.join(androidFolder, `${fileName}.${asset.type}`);
29
+ }
30
+ function getAssetLocalPathDefault(asset, { baseUrl , scale }) {
31
+ const suffix = scale === 1 ? "" : `@${scale}x`;
32
+ const fileName = `${asset.name}${suffix}.${asset.type}`;
33
+ const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, baseUrl);
34
+ return _path.default.join(// Assets can have relative paths outside of the project root.
35
+ // Replace `../` with `_` to make sure they don't end up outside of
36
+ // the expected assets directory.
37
+ adjustedHttpServerLocation.replace(/^\/+/g, "").replace(/\.\.\//g, "_"), fileName);
38
+ }
39
+ function stripAssetPrefix(path, baseUrl) {
40
+ path = path.replace(/\/assets\?export_path=(.*)/, "$1");
41
+ // TODO: Windows?
42
+ if (baseUrl) {
43
+ return path.replace(/^\/+/g, "").replace(new RegExp(`^${baseUrl.replace(/^\/+/g, "").replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d")}`, "g"), "");
44
+ }
45
+ return path;
46
+ }
47
+ /**
48
+ * FIXME: using number to represent discrete scale numbers is fragile in essence because of
49
+ * floating point numbers imprecision.
50
+ */ function getAndroidAssetSuffix(scale) {
51
+ switch(scale){
52
+ case 0.75:
53
+ return "ldpi";
54
+ case 1:
55
+ return "mdpi";
56
+ case 1.5:
57
+ return "hdpi";
58
+ case 2:
59
+ return "xhdpi";
60
+ case 3:
61
+ return "xxhdpi";
62
+ case 4:
63
+ return "xxxhdpi";
64
+ default:
65
+ return null;
66
+ }
67
+ }
68
+ // See https://developer.android.com/guide/topics/resources/drawable-resource.html
69
+ const drawableFileTypes = new Set([
70
+ "gif",
71
+ "jpeg",
72
+ "jpg",
73
+ "png",
74
+ "webp",
75
+ "xml"
76
+ ]);
77
+ function getAndroidResourceFolderName(asset, scale) {
78
+ if (!drawableFileTypes.has(asset.type)) {
79
+ return "raw";
80
+ }
81
+ const suffix = getAndroidAssetSuffix(scale);
82
+ if (!suffix) {
83
+ throw new Error(`Asset "${JSON.stringify(asset)}" does not use a supported Android resolution suffix`);
84
+ }
85
+ return `drawable-${suffix}`;
86
+ }
87
+ function getResourceIdentifier(asset) {
88
+ const folderPath = getBaseUrl(asset);
89
+ return `${folderPath}/${asset.name}`.toLowerCase().replace(/\//g, "_") // Encode folder structure in file name
90
+ .replace(/([^a-z0-9_])/g, "") // Remove illegal chars
91
+ .replace(/^assets_/, ""); // Remove "assets_" prefix
92
+ }
93
+ function getBaseUrl(asset) {
94
+ let baseUrl = asset.httpServerLocation;
95
+ if (baseUrl[0] === "/") {
96
+ baseUrl = baseUrl.substring(1);
97
+ }
98
+ return baseUrl;
99
+ }
100
+
101
+ //# sourceMappingURL=metroAssetLocalPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/export/metroAssetLocalPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Based on the community asset persisting for Metro but with base path and web support:\n * https://github.com/facebook/react-native/blob/d6e0bc714ad4d215ede4949d3c4f44af6dea5dd3/packages/community-cli-plugin/src/commands/bundle/saveAssets.js#L1\n */\nimport type { AssetData } from 'metro';\nimport path from 'path';\n\nexport function getAssetLocalPath(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale, platform }: { baseUrl?: string; scale: number; platform: string }\n): string {\n if (platform === 'android') {\n return getAssetLocalPathAndroid(asset, { baseUrl, scale });\n }\n return getAssetLocalPathDefault(asset, { baseUrl, scale });\n}\n\nfunction getAssetLocalPathAndroid(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n {\n baseUrl,\n scale,\n }: {\n // TODO: baseUrl support\n baseUrl?: string;\n scale: number;\n }\n): string {\n const androidFolder = getAndroidResourceFolderName(asset, scale);\n const fileName = getResourceIdentifier(asset);\n return path.join(androidFolder, `${fileName}.${asset.type}`);\n}\n\nfunction getAssetLocalPathDefault(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale }: { baseUrl?: string; scale: number }\n): string {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n const fileName = `${asset.name}${suffix}.${asset.type}`;\n\n const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, baseUrl);\n\n return path.join(\n // Assets can have relative paths outside of the project root.\n // Replace `../` with `_` to make sure they don't end up outside of\n // the expected assets directory.\n adjustedHttpServerLocation.replace(/^\\/+/g, '').replace(/\\.\\.\\//g, '_'),\n fileName\n );\n}\n\nexport function stripAssetPrefix(path: string, baseUrl?: string) {\n path = path.replace(/\\/assets\\?export_path=(.*)/, '$1');\n\n // TODO: Windows?\n if (baseUrl) {\n return path.replace(/^\\/+/g, '').replace(\n new RegExp(\n `^${baseUrl\n .replace(/^\\/+/g, '')\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n .replace(/-/g, '\\\\x2d')}`,\n 'g'\n ),\n ''\n );\n }\n return path;\n}\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale: number): string | null {\n switch (scale) {\n case 0.75:\n return 'ldpi';\n case 1:\n return 'mdpi';\n case 1.5:\n return 'hdpi';\n case 2:\n return 'xhdpi';\n case 3:\n return 'xxhdpi';\n case 4:\n return 'xxxhdpi';\n default:\n return null;\n }\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nconst drawableFileTypes = new Set<string>(['gif', 'jpeg', 'jpg', 'png', 'webp', 'xml']);\n\nfunction getAndroidResourceFolderName(asset: Pick<AssetData, 'type'>, scale: number): string {\n if (!drawableFileTypes.has(asset.type)) {\n return 'raw';\n }\n const suffix = getAndroidAssetSuffix(scale);\n if (!suffix) {\n throw new Error(\n `Asset \"${JSON.stringify(asset)}\" does not use a supported Android resolution suffix`\n );\n }\n return `drawable-${suffix}`;\n}\n\nfunction getResourceIdentifier(asset: Pick<AssetData, 'httpServerLocation' | 'name'>): string {\n const folderPath = getBaseUrl(asset);\n return `${folderPath}/${asset.name}`\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBaseUrl(asset: Pick<AssetData, 'httpServerLocation'>): string {\n let baseUrl = asset.httpServerLocation;\n if (baseUrl[0] === '/') {\n baseUrl = baseUrl.substring(1);\n }\n return baseUrl;\n}\n"],"names":["getAssetLocalPath","stripAssetPrefix","asset","baseUrl","scale","platform","getAssetLocalPathAndroid","getAssetLocalPathDefault","androidFolder","getAndroidResourceFolderName","fileName","getResourceIdentifier","path","join","type","suffix","name","adjustedHttpServerLocation","httpServerLocation","replace","RegExp","getAndroidAssetSuffix","drawableFileTypes","Set","has","Error","JSON","stringify","folderPath","getBaseUrl","toLowerCase","substring"],"mappings":"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"}