@expo/cli 0.1.5 → 0.2.2

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 (192) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/build/bin/cli +83 -4
  3. package/build/bin/cli.map +1 -1
  4. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  5. package/build/src/api/rest/wrapFetchWithOffline.js +2 -23
  6. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  7. package/build/src/customize/customizeAsync.js +40 -0
  8. package/build/src/customize/customizeAsync.js.map +1 -0
  9. package/build/src/customize/generate.js +77 -0
  10. package/build/src/customize/generate.js.map +1 -0
  11. package/build/src/customize/index.js +41 -0
  12. package/build/src/customize/index.js.map +1 -0
  13. package/build/src/customize/resolveOptions.js +18 -0
  14. package/build/src/customize/resolveOptions.js.map +1 -0
  15. package/build/src/customize/templates.js +118 -0
  16. package/build/src/customize/templates.js.map +1 -0
  17. package/build/src/export/createMetadataJson.js +10 -7
  18. package/build/src/export/createMetadataJson.js.map +1 -1
  19. package/build/src/export/exportApp.js +32 -0
  20. package/build/src/export/exportApp.js.map +1 -1
  21. package/build/src/export/exportAssets.js +2 -3
  22. package/build/src/export/exportAssets.js.map +1 -1
  23. package/build/src/export/fork-bundleAsync.js +52 -35
  24. package/build/src/export/fork-bundleAsync.js.map +1 -1
  25. package/build/src/export/index.js +14 -10
  26. package/build/src/export/index.js.map +1 -1
  27. package/build/src/export/printBundleSizes.js +27 -48
  28. package/build/src/export/printBundleSizes.js.map +1 -1
  29. package/build/src/export/resolveOptions.js +44 -5
  30. package/build/src/export/resolveOptions.js.map +1 -1
  31. package/build/src/export/saveAssets.js +2 -1
  32. package/build/src/export/saveAssets.js.map +1 -1
  33. package/build/src/export/web/exportWebAsync.js +37 -0
  34. package/build/src/export/web/exportWebAsync.js.map +1 -0
  35. package/build/src/export/web/index.js +66 -0
  36. package/build/src/export/web/index.js.map +1 -0
  37. package/build/src/export/web/resolveOptions.js +13 -0
  38. package/build/src/export/web/resolveOptions.js.map +1 -0
  39. package/build/src/export/writeContents.js.map +1 -1
  40. package/build/src/install/checkPackages.js +2 -1
  41. package/build/src/install/checkPackages.js.map +1 -1
  42. package/build/src/install/index.js +1 -0
  43. package/build/src/install/index.js.map +1 -1
  44. package/build/src/install/installAsync.js +13 -5
  45. package/build/src/install/installAsync.js.map +1 -1
  46. package/build/src/install/resolveOptions.js +12 -65
  47. package/build/src/install/resolveOptions.js.map +1 -1
  48. package/build/src/install/utils/autoAddConfigPlugins.js +5 -26
  49. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  50. package/build/src/log.js.map +1 -1
  51. package/build/src/prebuild/copyTemplateFiles.js +5 -23
  52. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  53. package/build/src/prebuild/index.js +18 -12
  54. package/build/src/prebuild/index.js.map +1 -1
  55. package/build/src/prebuild/prebuildAsync.js +11 -12
  56. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  57. package/build/src/prebuild/resolveOptions.js +17 -0
  58. package/build/src/prebuild/resolveOptions.js.map +1 -1
  59. package/build/src/prebuild/resolveTemplate.js +2 -1
  60. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  61. package/build/src/prebuild/updatePackageJson.js +5 -5
  62. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  63. package/build/src/run/android/resolveInstallApkName.js +5 -26
  64. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  65. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +2 -0
  66. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  67. package/build/src/start/doctor/apple/XcodePrerequisite.js +2 -0
  68. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  69. package/build/src/start/doctor/dependencies/bundledNativeModules.js +3 -2
  70. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  71. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +7 -13
  72. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  73. package/build/src/start/doctor/dependencies/getMissingPackages.js +3 -24
  74. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  75. package/build/src/start/doctor/dependencies/getVersionedPackages.js +2 -23
  76. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  77. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +17 -9
  78. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  79. package/build/src/start/doctor/ngrok/ExternalModule.js +2 -1
  80. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  81. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +4 -3
  82. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  83. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +29 -31
  84. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  85. package/build/src/start/interface/KeyPressHandler.js +2 -0
  86. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  87. package/build/src/start/interface/interactiveActions.js +5 -5
  88. package/build/src/start/interface/interactiveActions.js.map +1 -1
  89. package/build/src/start/interface/startInterface.js +3 -2
  90. package/build/src/start/interface/startInterface.js.map +1 -1
  91. package/build/src/start/platforms/ExpoGoInstaller.js +2 -1
  92. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  93. package/build/src/start/platforms/PlatformManager.js +4 -24
  94. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  95. package/build/src/start/platforms/android/ADBServer.js +17 -32
  96. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  97. package/build/src/start/platforms/android/AndroidSdk.js +41 -0
  98. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -0
  99. package/build/src/start/platforms/android/activateWindow.js +4 -4
  100. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  101. package/build/src/start/platforms/android/adb.js +8 -3
  102. package/build/src/start/platforms/android/adb.js.map +1 -1
  103. package/build/src/start/platforms/android/adbReverse.js +3 -2
  104. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  105. package/build/src/start/platforms/android/gradle.js +2 -2
  106. package/build/src/start/platforms/android/gradle.js.map +1 -1
  107. package/build/src/start/platforms/ios/getBestSimulator.js +4 -4
  108. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  109. package/build/src/start/platforms/ios/xcrun.js +2 -23
  110. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  111. package/build/src/start/project/devices.js +2 -0
  112. package/build/src/start/project/devices.js.map +1 -1
  113. package/build/src/start/server/AsyncNgrok.js +6 -5
  114. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  115. package/build/src/start/server/BundlerDevServer.js +15 -8
  116. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  117. package/build/src/start/server/DevServerManager.js +15 -5
  118. package/build/src/start/server/DevServerManager.js.map +1 -1
  119. package/build/src/start/server/DevelopmentSession.js +4 -0
  120. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  121. package/build/src/start/server/UrlCreator.js +10 -3
  122. package/build/src/start/server/UrlCreator.js.map +1 -1
  123. package/build/src/start/server/metro/MetroBundlerDevServer.js +9 -0
  124. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  125. package/build/src/start/server/metro/TerminalReporter.js +5 -0
  126. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  127. package/build/src/start/server/metro/instantiateMetro.js +11 -2
  128. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  129. package/build/src/start/server/metro/resolveFromProject.js +8 -0
  130. package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
  131. package/build/src/start/server/metro/withMetroMultiPlatform.js +115 -0
  132. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -0
  133. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +1 -1
  134. package/build/src/start/server/middleware/ExpoMiddleware.js +9 -4
  135. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  136. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +24 -0
  137. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -0
  138. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +2 -0
  139. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  140. package/build/src/start/server/middleware/ManifestMiddleware.js +57 -6
  141. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  142. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +6 -1
  143. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  144. package/build/src/start/server/middleware/ServeStaticMiddleware.js +62 -0
  145. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -0
  146. package/build/src/start/server/platformBundlers.js +18 -0
  147. package/build/src/start/server/platformBundlers.js.map +1 -0
  148. package/build/src/start/server/webTemplate.js +68 -0
  149. package/build/src/start/server/webTemplate.js.map +1 -0
  150. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +59 -19
  151. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  152. package/build/src/start/server/webpack/compile.js +64 -0
  153. package/build/src/start/server/webpack/compile.js.map +1 -0
  154. package/build/src/start/startAsync.js +21 -17
  155. package/build/src/start/startAsync.js.map +1 -1
  156. package/build/src/utils/FileNotifier.js +5 -2
  157. package/build/src/utils/FileNotifier.js.map +1 -1
  158. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  159. package/build/src/utils/downloadAppAsync.js +3 -2
  160. package/build/src/utils/downloadAppAsync.js.map +1 -1
  161. package/build/src/utils/downloadExpoGoAsync.js +7 -32
  162. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  163. package/build/src/utils/editor.js +3 -2
  164. package/build/src/utils/editor.js.map +1 -1
  165. package/build/src/utils/env.js +3 -0
  166. package/build/src/utils/env.js.map +1 -1
  167. package/build/src/utils/exit.js +4 -25
  168. package/build/src/utils/exit.js.map +1 -1
  169. package/build/src/utils/getRunningProcess.js +6 -2
  170. package/build/src/utils/getRunningProcess.js.map +1 -1
  171. package/build/src/utils/nodeModules.js +13 -102
  172. package/build/src/utils/nodeModules.js.map +1 -1
  173. package/build/src/utils/npm.js +3 -24
  174. package/build/src/utils/npm.js.map +1 -1
  175. package/build/src/utils/ora.js +1 -13
  176. package/build/src/utils/ora.js.map +1 -1
  177. package/build/src/utils/progress.js +46 -0
  178. package/build/src/utils/progress.js.map +1 -1
  179. package/build/src/utils/prompts.js +4 -4
  180. package/build/src/utils/prompts.js.map +1 -1
  181. package/build/src/utils/tar.js +3 -0
  182. package/build/src/utils/tar.js.map +1 -1
  183. package/build/src/utils/validateApplicationId.js +9 -2
  184. package/build/src/utils/validateApplicationId.js.map +1 -1
  185. package/build/src/utils/variadic.js +47 -0
  186. package/build/src/utils/variadic.js.map +1 -0
  187. package/package.json +13 -8
  188. package/static/template/babel.config.js +6 -0
  189. package/static/template/index.html +117 -0
  190. package/static/template/metro.config.js +4 -0
  191. package/static/template/serve.json +13 -0
  192. package/static/template/webpack.config.js +7 -0
@@ -44,6 +44,10 @@ const expoExport = async (argv)=>{
44
44
  "--max-workers": Number,
45
45
  "--output-dir": String,
46
46
  "--platform": String,
47
+ // Hack: This is added because EAS CLI always includes the flag.
48
+ // If supplied, we'll do nothing with the value, but at least the process won't crash.
49
+ // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.
50
+ "--experimental-bundle": Boolean,
47
51
  // Aliases
48
52
  "-h": "--help",
49
53
  // '-s': '--dump-sourcemap',
@@ -52,22 +56,22 @@ const expoExport = async (argv)=>{
52
56
  }, argv);
53
57
  if (args["--help"]) {
54
58
  (0, _args).printHelp(`Export the static files of the app for hosting it on a web server`, _chalk.default`npx expo export {dim <dir>}`, [
55
- _chalk.default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
56
- _chalk.default`--platform <all|android|ios> Platforms: android, ios, all. {dim Default: all}`,
57
- `--dev Configure static files for developing locally using a non-https server`,
58
- _chalk.default`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,
59
- `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,
60
- `--dump-assetmap Dump the asset map for further processing`,
61
- `--dump-sourcemap Dump the source map for debugging the JS bundle`,
62
- `-c, --clear Clear the bundler cache`,
63
- `-h, --help Usage info`,
59
+ _chalk.default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
60
+ _chalk.default`--platform <platform> Options: android, ios, web, all. {dim Default: all}`,
61
+ `--dev Configure static files for developing locally using a non-https server`,
62
+ _chalk.default`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,
63
+ `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,
64
+ `--dump-assetmap Dump the asset map for further processing`,
65
+ `--dump-sourcemap Dump the source map for debugging the JS bundle`,
66
+ `-c, --clear Clear the bundler cache`,
67
+ `-h, --help Usage info`,
64
68
  ].join("\n"));
65
69
  }
66
70
  const projectRoot = (0, _args).getProjectRoot(args);
67
71
  const { resolveOptionsAsync } = await Promise.resolve().then(function() {
68
72
  return _interopRequireWildcard(require("./resolveOptions"));
69
73
  });
70
- const options = await resolveOptionsAsync(args).catch(_errors.logCmdError);
74
+ const options = await resolveOptionsAsync(projectRoot, args).catch(_errors.logCmdError);
71
75
  const { exportAsync } = await Promise.resolve().then(function() {
72
76
  return _interopRequireWildcard(require("./exportAsync"));
73
77
  });
@@ -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 // Aliases\n '-h': '--help',\n // '-s': '--dump-sourcemap',\n // '-d': '--dump-assetmap',\n '-c': '--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 chalk`--platform <all|android|ios> Platforms: android, ios, all. {dim Default: all}`,\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 `-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');\n const options = await resolveOptionsAsync(args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync');\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,AAkBtB,CAAA,WAlBsB,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,EAAEA,MAAM;QACpB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,4BAA4B;QAC5B,2BAA2B;QAC3B,IAAI,EAAE,SAAS;KAChB,EACDL,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAcR,CAAA,UAdQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,qGAAqG,CAAC;YAC5GA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,oGAAoG,CAAC;YACtGA,MAAK,QAAA,CAAC,8FAA8F,CAAC;YACrG,CAAC,mFAAmF,CAAC;YACrF,CAAC,uEAAuE,CAAC;YACzE,CAAC,6EAA6E,CAAC;YAC/E,CAAC,qDAAqD,CAAC;YACvD,CAAC,wCAAwC,CAAC;SAC3C,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,kBAAkB;MAAC,AAAC;IACjE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACV,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEnE,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,eAAe;MAAC,AAAC;IACtD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QA7CWf,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 '--dump-sourcemap': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': String,\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 },\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`--platform <platform> Options: android, ios, web, all. {dim Default: all}`,\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 `-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');\n const options = await resolveOptionsAsync(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync');\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,AAwBtB,CAAA,WAxBsB,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,EAAEA,MAAM;QAEpB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEF,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,4BAA4B;QAC5B,2BAA2B;QAC3B,IAAI,EAAE,SAAS;KAChB,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAcR,CAAA,UAdQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,+FAA+F,CAAC;YACtGA,MAAK,QAAA,CAAC,2EAA2E,CAAC;YAClF,CAAC,8FAA8F,CAAC;YAChGA,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/F,CAAC,6EAA6E,CAAC;YAC/E,CAAC,iEAAiE,CAAC;YACnE,CAAC,uEAAuE,CAAC;YACzE,CAAC,+CAA+C,CAAC;YACjD,CAAC,kCAAkC,CAAC;SACrC,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,kBAAkB;MAAC,AAAC;IACjE,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,eAAe;MAAC,AAAC;IACtD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QAnDWf,UAAU,GAAVA,UAAU"}
@@ -37,55 +37,34 @@ function _interopRequireWildcard(obj) {
37
37
  }
38
38
  }
39
39
  function printBundleSizes(bundles) {
40
- var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7;
41
40
  const files = [];
42
- if ((ref = bundles.ios) == null ? void 0 : ref.hermesBytecodeBundle) {
43
- files.push([
44
- "index.ios.js (Hermes)",
45
- bundles.ios.hermesBytecodeBundle
46
- ]);
47
- } else if ((ref1 = bundles.ios) == null ? void 0 : ref1.code) {
48
- files.push([
49
- "index.ios.js",
50
- bundles.ios.code
51
- ]);
52
- }
53
- if ((ref2 = bundles.android) == null ? void 0 : ref2.hermesBytecodeBundle) {
54
- files.push([
55
- "index.android.js (Hermes)",
56
- bundles.android.hermesBytecodeBundle
57
- ]);
58
- } else if ((ref3 = bundles.android) == null ? void 0 : ref3.code) {
59
- files.push([
60
- "index.android.js",
61
- bundles.android.code
62
- ]);
63
- }
64
- // Account for inline source maps
65
- if ((ref4 = bundles.ios) == null ? void 0 : ref4.hermesSourcemap) {
66
- files.push([
67
- _chalk.default.dim("index.ios.js.map (Hermes)"),
68
- bundles.ios.hermesSourcemap
69
- ]);
70
- } else if ((ref5 = bundles.ios) == null ? void 0 : ref5.map) {
71
- files.push([
72
- _chalk.default.dim("index.ios.js.map"),
73
- bundles.ios.map
74
- ]);
75
- }
76
- if ((ref6 = bundles.android) == null ? void 0 : ref6.hermesSourcemap) {
77
- files.push([
78
- _chalk.default.dim("index.android.js.map (Hermes)"),
79
- bundles.android.hermesSourcemap
80
- ]);
81
- } else if ((ref7 = bundles.android) == null ? void 0 : ref7.map) {
82
- files.push([
83
- _chalk.default.dim("index.android.js.map"),
84
- bundles.android.map
85
- ]);
41
+ for (const [platform, bundleOutput] of Object.entries(bundles)){
42
+ if (bundleOutput.hermesBytecodeBundle) {
43
+ files.push([
44
+ _chalk.default.bold(`index.${platform}.js (Hermes)`),
45
+ bundleOutput.hermesBytecodeBundle
46
+ ]);
47
+ } else if (bundleOutput.code) {
48
+ files.push([
49
+ _chalk.default.bold(`index.${platform}.js`),
50
+ bundleOutput.code
51
+ ]);
52
+ }
53
+ if (bundleOutput.hermesSourcemap) {
54
+ files.push([
55
+ _chalk.default.dim(`index.${platform}.js.map (Hermes)`),
56
+ bundleOutput.hermesSourcemap
57
+ ]);
58
+ } else if (bundleOutput.map) {
59
+ files.push([
60
+ _chalk.default.dim(`index.${platform}.js.map`),
61
+ bundleOutput.map
62
+ ]);
63
+ }
86
64
  }
87
65
  Log.log();
88
- Log.log(createFilesTable(files));
66
+ Log.log(createFilesTable(files.sort((a, b)=>a[1].length - b[1].length
67
+ )));
89
68
  Log.log();
90
69
  Log.log(_chalk.default`💡 JavaScript bundle sizes affect startup time. {dim ${(0, _link).learnMore(`https://expo.fyi/javascript-bundle-sizes`)}}`);
91
70
  Log.log();
@@ -113,8 +92,8 @@ function createFilesTable(files) {
113
92
  "r"
114
93
  ],
115
94
  stringLength: (str)=>{
116
- var ref8;
117
- return (ref = (ref8 = (0, _ansi).stripAnsi(str)) == null ? void 0 : ref8.length) != null ? ref : 0;
95
+ var ref1;
96
+ return (ref = (ref1 = (0, _ansi).stripAnsi(str)) == null ? void 0 : ref1.length) != null ? ref : 0;
118
97
  }
119
98
  });
120
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport { BundleOutput } from '@expo/dev-server';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n if (bundles.ios?.hermesBytecodeBundle) {\n files.push(['index.ios.js (Hermes)', bundles.ios.hermesBytecodeBundle]);\n } else if (bundles.ios?.code) {\n files.push(['index.ios.js', bundles.ios.code]);\n }\n if (bundles.android?.hermesBytecodeBundle) {\n files.push(['index.android.js (Hermes)', bundles.android.hermesBytecodeBundle]);\n } else if (bundles.android?.code) {\n files.push(['index.android.js', bundles.android.code]);\n }\n\n // Account for inline source maps\n if (bundles.ios?.hermesSourcemap) {\n files.push([chalk.dim('index.ios.js.map (Hermes)'), bundles.ios.hermesSourcemap]);\n } else if (bundles.ios?.map) {\n files.push([chalk.dim('index.ios.js.map'), bundles.ios.map]);\n }\n if (bundles.android?.hermesSourcemap) {\n files.push([chalk.dim('index.android.js.map (Hermes)'), bundles.android.hermesSourcemap]);\n } else if (bundles.android?.map) {\n files.push([chalk.dim('index.android.js.map'), bundles.android.map]);\n }\n\n Log.log();\n Log.log(createFilesTable(files));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch = index === 0 ? '┌' : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","ios","hermesBytecodeBundle","push","code","android","hermesSourcemap","chalk","dim","map","log","learnMore","tableData","item","index","fileBranch","length","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport { BundleOutput } from '@expo/dev-server';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code' | 'hermesSourcemap' | 'map'>\n ][]) {\n if (bundleOutput.hermesBytecodeBundle) {\n files.push([chalk.bold(`index.${platform}.js (Hermes)`), bundleOutput.hermesBytecodeBundle]);\n } else if (bundleOutput.code) {\n files.push([chalk.bold(`index.${platform}.js`), bundleOutput.code]);\n }\n if (bundleOutput.hermesSourcemap) {\n files.push([chalk.dim(`index.${platform}.js.map (Hermes)`), bundleOutput.hermesSourcemap]);\n } else if (bundleOutput.map) {\n files.push([chalk.dim(`index.${platform}.js.map`), bundleOutput.map]);\n }\n }\n\n Log.log();\n Log.log(createFilesTable(files.sort((a, b) => a[1].length - b[1].length)));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch = index === 0 ? '┌' : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","platform","bundleOutput","Object","entries","hermesBytecodeBundle","push","chalk","bold","code","hermesSourcemap","dim","map","log","sort","a","b","length","learnMore","tableData","item","index","fileBranch","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
@@ -2,13 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
+ exports.resolvePlatformOption = resolvePlatformOption;
5
6
  exports.resolveOptionsAsync = resolveOptionsAsync;
6
- var _resolveOptions = require("../prebuild/resolveOptions");
7
- async function resolveOptionsAsync(args) {
8
- var ref;
9
- const platforms = (0, _resolveOptions).resolvePlatformOption((ref = args["--platform"]) != null ? ref : "all", {
10
- loose: true
7
+ var _config = require("@expo/config");
8
+ var _platformBundlers = require("../start/server/platformBundlers");
9
+ var _errors = require("../utils/errors");
10
+ function resolvePlatformOption(platformBundlers, platform1 = "all") {
11
+ const platforms = Object.fromEntries(Object.entries(platformBundlers).filter(([, bundler])=>bundler === "metro"
12
+ ));
13
+ if (!Object.keys(platforms).length) {
14
+ throw new _errors.CommandError(`No platforms are configured to use the Metro bundler in the project Expo config.`);
15
+ }
16
+ const assertPlatformBundler = (platform)=>{
17
+ if (!platforms[platform]) {
18
+ throw new _errors.CommandError("BAD_ARGS", `Platform "${platform}" is not configured to use the Metro bundler in the project Expo config.`);
19
+ }
20
+ };
21
+ switch(platform1){
22
+ case "ios":
23
+ assertPlatformBundler("ios");
24
+ return [
25
+ "ios"
26
+ ];
27
+ case "web":
28
+ assertPlatformBundler("web");
29
+ return [
30
+ "web"
31
+ ];
32
+ case "android":
33
+ assertPlatformBundler("android");
34
+ return [
35
+ "android"
36
+ ];
37
+ case "all":
38
+ return Object.keys(platforms);
39
+ default:
40
+ throw new _errors.CommandError(`Unsupported platform "${platform1}". Options are: ${Object.keys(platforms).join(",")}, all`);
41
+ }
42
+ }
43
+ async function resolveOptionsAsync(projectRoot, args) {
44
+ const { exp } = (0, _config).getConfig(projectRoot, {
45
+ skipPlugins: true,
46
+ skipSDKVersionRequirement: true
11
47
  });
48
+ const platformBundlers = (0, _platformBundlers).getPlatformBundlers(exp);
49
+ var ref;
50
+ const platforms = resolvePlatformOption(platformBundlers, (ref = args["--platform"]) != null ? ref : "all");
12
51
  var ref1;
13
52
  return {
14
53
  outputDir: (ref1 = args["--output-dir"]) != null ? ref1 : "dist",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/resolveOptions.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\n\nimport { resolvePlatformOption } from '../prebuild/resolveOptions';\n\nexport type Options = {\n outputDir: string;\n platforms: ModPlatform[];\n maxWorkers?: number;\n dev: boolean;\n clear: boolean;\n dumpAssetmap: boolean;\n dumpSourcemap: boolean;\n};\n\nexport async function resolveOptionsAsync(args: any): Promise<Options> {\n const platforms = resolvePlatformOption(args['--platform'] ?? 'all', { loose: true });\n\n return {\n outputDir: args['--output-dir'] ?? 'dist',\n platforms,\n clear: !!args['--clear'],\n dev: !!args['--dev'],\n maxWorkers: args['--max-workers'],\n dumpAssetmap: !!args['--dump-assetmap'],\n dumpSourcemap: !!args['--dump-sourcemap'],\n };\n}\n"],"names":["resolveOptionsAsync","args","platforms","resolvePlatformOption","loose","outputDir","clear","dev","maxWorkers","dumpAssetmap","dumpSourcemap"],"mappings":"AAAA;;;;QAcsBA,mBAAmB,GAAnBA,mBAAmB;AAZH,IAAA,eAA4B,WAA5B,4BAA4B,CAAA;AAY3D,eAAeA,mBAAmB,CAACC,IAAS,EAAoB;QAC7BA,GAAkB;IAA1D,MAAMC,SAAS,GAAGC,CAAAA,GAAAA,eAAqB,AAA8C,CAAA,sBAA9C,CAACF,CAAAA,GAAkB,GAAlBA,IAAI,CAAC,YAAY,CAAC,YAAlBA,GAAkB,GAAI,KAAK,EAAE;QAAEG,KAAK,EAAE,IAAI;KAAE,CAAC,AAAC;QAGzEH,IAAoB;IADjC,OAAO;QACLI,SAAS,EAAEJ,CAAAA,IAAoB,GAApBA,IAAI,CAAC,cAAc,CAAC,YAApBA,IAAoB,GAAI,MAAM;QACzCC,SAAS;QACTI,KAAK,EAAE,CAAC,CAACL,IAAI,CAAC,SAAS,CAAC;QACxBM,GAAG,EAAE,CAAC,CAACN,IAAI,CAAC,OAAO,CAAC;QACpBO,UAAU,EAAEP,IAAI,CAAC,eAAe,CAAC;QACjCQ,YAAY,EAAE,CAAC,CAACR,IAAI,CAAC,iBAAiB,CAAC;QACvCS,aAAa,EAAE,CAAC,CAACT,IAAI,CAAC,kBAAkB,CAAC;KAC1C,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../src/export/resolveOptions.ts"],"sourcesContent":["import { getConfig, Platform } from '@expo/config';\n\nimport { getPlatformBundlers, PlatformBundlers } from '../start/server/platformBundlers';\nimport { CommandError } from '../utils/errors';\n\nexport type Options = {\n outputDir: string;\n platforms: Platform[];\n maxWorkers?: number;\n dev: boolean;\n clear: boolean;\n dumpAssetmap: boolean;\n dumpSourcemap: boolean;\n};\n\n/** Returns an array of platforms based on the input platform identifier and runtime constraints. */\nexport function resolvePlatformOption(\n platformBundlers: PlatformBundlers,\n platform: string = 'all'\n): Platform[] {\n const platforms: Partial<PlatformBundlers> = Object.fromEntries(\n Object.entries(platformBundlers).filter(([, bundler]) => bundler === 'metro')\n );\n\n if (!Object.keys(platforms).length) {\n throw new CommandError(\n `No platforms are configured to use the Metro bundler in the project Expo config.`\n );\n }\n\n const assertPlatformBundler = (platform: Platform) => {\n if (!platforms[platform]) {\n throw new CommandError(\n 'BAD_ARGS',\n `Platform \"${platform}\" is not configured to use the Metro bundler in the project Expo config.`\n );\n }\n };\n\n switch (platform) {\n case 'ios':\n assertPlatformBundler('ios');\n return ['ios'];\n case 'web':\n assertPlatformBundler('web');\n return ['web'];\n case 'android':\n assertPlatformBundler('android');\n return ['android'];\n case 'all':\n return Object.keys(platforms) as Platform[];\n default:\n throw new CommandError(\n `Unsupported platform \"${platform}\". Options are: ${Object.keys(platforms).join(',')}, all`\n );\n }\n}\n\nexport async function resolveOptionsAsync(projectRoot: string, args: any): Promise<Options> {\n const { exp } = getConfig(projectRoot, { skipPlugins: true, skipSDKVersionRequirement: true });\n const platformBundlers = getPlatformBundlers(exp);\n const platforms: Platform[] = resolvePlatformOption(\n platformBundlers,\n args['--platform'] ?? 'all'\n );\n\n return {\n outputDir: args['--output-dir'] ?? 'dist',\n platforms,\n clear: !!args['--clear'],\n dev: !!args['--dev'],\n maxWorkers: args['--max-workers'],\n dumpAssetmap: !!args['--dump-assetmap'],\n dumpSourcemap: !!args['--dump-sourcemap'],\n };\n}\n"],"names":["resolvePlatformOption","resolveOptionsAsync","platformBundlers","platform","platforms","Object","fromEntries","entries","filter","bundler","keys","length","CommandError","assertPlatformBundler","join","projectRoot","args","exp","getConfig","skipPlugins","skipSDKVersionRequirement","getPlatformBundlers","outputDir","clear","dev","maxWorkers","dumpAssetmap","dumpSourcemap"],"mappings":"AAAA;;;;QAgBgBA,qBAAqB,GAArBA,qBAAqB;QA0CfC,mBAAmB,GAAnBA,mBAAmB;AA1DL,IAAA,OAAc,WAAd,cAAc,CAAA;AAEI,IAAA,iBAAkC,WAAlC,kCAAkC,CAAA;AAC3D,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAavC,SAASD,qBAAqB,CACnCE,gBAAkC,EAClCC,SAAgB,GAAG,KAAK,EACZ;IACZ,MAAMC,SAAS,GAA8BC,MAAM,CAACC,WAAW,CAC7DD,MAAM,CAACE,OAAO,CAACL,gBAAgB,CAAC,CAACM,MAAM,CAAC,CAAC,GAAGC,OAAO,CAAC,GAAKA,OAAO,KAAK,OAAO;IAAA,CAAC,CAC9E,AAAC;IAEF,IAAI,CAACJ,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAACO,MAAM,EAAE;QAClC,MAAM,IAAIC,OAAY,aAAA,CACpB,CAAC,gFAAgF,CAAC,CACnF,CAAC;KACH;IAED,MAAMC,qBAAqB,GAAG,CAACV,QAAkB,GAAK;QACpD,IAAI,CAACC,SAAS,CAACD,QAAQ,CAAC,EAAE;YACxB,MAAM,IAAIS,OAAY,aAAA,CACpB,UAAU,EACV,CAAC,UAAU,EAAET,QAAQ,CAAC,wEAAwE,CAAC,CAChG,CAAC;SACH;KACF,AAAC;IAEF,OAAQA,SAAQ;QACd,KAAK,KAAK;YACRU,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;gBAAC,KAAK;aAAC,CAAC;QACjB,KAAK,KAAK;YACRA,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;gBAAC,KAAK;aAAC,CAAC;QACjB,KAAK,SAAS;YACZA,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO;gBAAC,SAAS;aAAC,CAAC;QACrB,KAAK,KAAK;YACR,OAAOR,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAAe;QAC9C;YACE,MAAM,IAAIQ,OAAY,aAAA,CACpB,CAAC,sBAAsB,EAAET,SAAQ,CAAC,gBAAgB,EAAEE,MAAM,CAACK,IAAI,CAACN,SAAS,CAAC,CAACU,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAC5F,CAAC;KACL;CACF;AAEM,eAAeb,mBAAmB,CAACc,WAAmB,EAAEC,IAAS,EAAoB;IAC1F,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAqE,CAAA,UAArE,CAACH,WAAW,EAAE;QAAEI,WAAW,EAAE,IAAI;QAAEC,yBAAyB,EAAE,IAAI;KAAE,CAAC,AAAC;IAC/F,MAAMlB,gBAAgB,GAAGmB,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACJ,GAAG,CAAC,AAAC;QAGhDD,GAAkB;IAFpB,MAAMZ,SAAS,GAAeJ,qBAAqB,CACjDE,gBAAgB,EAChBc,CAAAA,GAAkB,GAAlBA,IAAI,CAAC,YAAY,CAAC,YAAlBA,GAAkB,GAAI,KAAK,CAC5B,AAAC;QAGWA,IAAoB;IADjC,OAAO;QACLM,SAAS,EAAEN,CAAAA,IAAoB,GAApBA,IAAI,CAAC,cAAc,CAAC,YAApBA,IAAoB,GAAI,MAAM;QACzCZ,SAAS;QACTmB,KAAK,EAAE,CAAC,CAACP,IAAI,CAAC,SAAS,CAAC;QACxBQ,GAAG,EAAE,CAAC,CAACR,IAAI,CAAC,OAAO,CAAC;QACpBS,UAAU,EAAET,IAAI,CAAC,eAAe,CAAC;QACjCU,YAAY,EAAE,CAAC,CAACV,IAAI,CAAC,iBAAiB,CAAC;QACvCW,aAAa,EAAE,CAAC,CAACX,IAAI,CAAC,kBAAkB,CAAC;KAC1C,CAAC;CACH"}
@@ -33,8 +33,9 @@ function _interopRequireWildcard(obj) {
33
33
  return newObj;
34
34
  }
35
35
  }
36
+ const debug = require("debug")("expo:export:saveAssets");
36
37
  function logAssetTask(projectRoot, action, pathName) {
37
- Log.debug(`${action} ${pathName}`);
38
+ debug(`${action} ${pathName}`);
38
39
  const relativePath = pathName.replace(projectRoot, "");
39
40
  Log.log(`${action} ${relativePath}`);
40
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["import { BundleAssetWithFileHashes } from '@expo/dev-server';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { chunk } from '../utils/array';\nimport { copyAsync } from '../utils/dir';\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nfunction logAssetTask(projectRoot: string, action: 'uploading' | 'saving', pathName: string) {\n Log.debug(`${action} ${pathName}`);\n\n const relativePath = pathName.replace(projectRoot, '');\n Log.log(`${action} ${relativePath}`);\n}\n\nfunction collectAssetPaths(assets: Asset[]): Record<string, string> {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths: { [fileHash: string]: string } = {};\n assets.forEach((asset) => {\n asset.files.forEach((path: string, index: number) => {\n paths[asset.fileHashes[index]] = path;\n });\n });\n return paths;\n}\n\nexport async function saveAssetsAsync(\n projectRoot: string,\n { assets, outputDir }: { assets: Asset[]; outputDir: string }\n) {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths = collectAssetPaths(assets);\n\n // save files one chunk at a time\n for (const keys of chunk(Object.entries(paths), 5)) {\n await Promise.all(\n keys.map(([key, pathName]) => {\n logAssetTask(projectRoot, 'saving', pathName);\n // copy file over to assetPath\n return copyAsync(pathName, path.join(outputDir, 'assets', key));\n })\n );\n }\n Log.log('Files successfully saved.');\n}\n"],"names":["saveAssetsAsync","Log","logAssetTask","projectRoot","action","pathName","debug","relativePath","replace","log","collectAssetPaths","assets","paths","forEach","asset","files","path","index","fileHashes","outputDir","keys","chunk","Object","entries","Promise","all","map","key","copyAsync","join"],"mappings":"AAAA;;;;QA6BsBA,eAAe,GAAfA,eAAe;AA5BpB,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACO,IAAA,MAAgB,WAAhB,gBAAgB,CAAA;AACZ,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMxC,SAASC,YAAY,CAACC,WAAmB,EAAEC,MAA8B,EAAEC,QAAgB,EAAE;IAC3FJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAEF,MAAM,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAME,YAAY,GAAGF,QAAQ,CAACG,OAAO,CAACL,WAAW,EAAE,EAAE,CAAC,AAAC;IACvDF,GAAG,CAACQ,GAAG,CAAC,CAAC,EAAEL,MAAM,CAAC,CAAC,EAAEG,YAAY,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,SAASG,iBAAiB,CAACC,MAAe,EAA0B;IAClE,yEAAyE;IACzE,MAAMC,KAAK,GAAmC,EAAE,AAAC;IACjDD,MAAM,CAACE,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBA,KAAK,CAACC,KAAK,CAACF,OAAO,CAAC,CAACG,IAAY,EAAEC,KAAa,GAAK;YACnDL,KAAK,CAACE,KAAK,CAACI,UAAU,CAACD,KAAK,CAAC,CAAC,GAAGD,IAAI,CAAC;SACvC,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAOJ,KAAK,CAAC;CACd;AAEM,eAAeZ,eAAe,CACnCG,WAAmB,EACnB,EAAEQ,MAAM,CAAA,EAAEQ,SAAS,CAAA,EAA0C,EAC7D;IACA,yEAAyE;IACzE,MAAMP,KAAK,GAAGF,iBAAiB,CAACC,MAAM,CAAC,AAAC;IAExC,iCAAiC;IACjC,KAAK,MAAMS,IAAI,IAAIC,CAAAA,GAAAA,MAAK,AAA0B,CAAA,MAA1B,CAACC,MAAM,CAACC,OAAO,CAACX,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE;QAClD,MAAMY,OAAO,CAACC,GAAG,CACfL,IAAI,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEtB,QAAQ,CAAC,GAAK;YAC5BH,YAAY,CAACC,WAAW,EAAE,QAAQ,EAAEE,QAAQ,CAAC,CAAC;YAC9C,8BAA8B;YAC9B,OAAOuB,CAAAA,GAAAA,IAAS,AAA+C,CAAA,UAA/C,CAACvB,QAAQ,EAAEW,KAAI,QAAA,CAACa,IAAI,CAACV,SAAS,EAAE,QAAQ,EAAEQ,GAAG,CAAC,CAAC,CAAC;SACjE,CAAC,CACH,CAAC;KACH;IACD1B,GAAG,CAACQ,GAAG,CAAC,2BAA2B,CAAC,CAAC;CACtC"}
1
+ {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["import { BundleAssetWithFileHashes } from '@expo/dev-server';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { chunk } from '../utils/array';\nimport { copyAsync } from '../utils/dir';\n\nconst debug = require('debug')('expo:export:saveAssets') as typeof console.log;\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nfunction logAssetTask(projectRoot: string, action: 'uploading' | 'saving', pathName: string) {\n debug(`${action} ${pathName}`);\n\n const relativePath = pathName.replace(projectRoot, '');\n Log.log(`${action} ${relativePath}`);\n}\n\nfunction collectAssetPaths(assets: Asset[]): Record<string, string> {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths: { [fileHash: string]: string } = {};\n assets.forEach((asset) => {\n asset.files.forEach((path: string, index: number) => {\n paths[asset.fileHashes[index]] = path;\n });\n });\n return paths;\n}\n\nexport async function saveAssetsAsync(\n projectRoot: string,\n { assets, outputDir }: { assets: Asset[]; outputDir: string }\n) {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths = collectAssetPaths(assets);\n\n // save files one chunk at a time\n for (const keys of chunk(Object.entries(paths), 5)) {\n await Promise.all(\n keys.map(([key, pathName]) => {\n logAssetTask(projectRoot, 'saving', pathName);\n // copy file over to assetPath\n return copyAsync(pathName, path.join(outputDir, 'assets', key));\n })\n );\n }\n Log.log('Files successfully saved.');\n}\n"],"names":["saveAssetsAsync","Log","debug","require","logAssetTask","projectRoot","action","pathName","relativePath","replace","log","collectAssetPaths","assets","paths","forEach","asset","files","path","index","fileHashes","outputDir","keys","chunk","Object","entries","Promise","all","map","key","copyAsync","join"],"mappings":"AAAA;;;;QA+BsBA,eAAe,GAAfA,eAAe;AA9BpB,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACO,IAAA,MAAgB,WAAhB,gBAAgB,CAAA;AACZ,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,AAAsB,AAAC;AAM/E,SAASC,YAAY,CAACC,WAAmB,EAAEC,MAA8B,EAAEC,QAAgB,EAAE;IAC3FL,KAAK,CAAC,CAAC,EAAEI,MAAM,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAMC,YAAY,GAAGD,QAAQ,CAACE,OAAO,CAACJ,WAAW,EAAE,EAAE,CAAC,AAAC;IACvDJ,GAAG,CAACS,GAAG,CAAC,CAAC,EAAEJ,MAAM,CAAC,CAAC,EAAEE,YAAY,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,SAASG,iBAAiB,CAACC,MAAe,EAA0B;IAClE,yEAAyE;IACzE,MAAMC,KAAK,GAAmC,EAAE,AAAC;IACjDD,MAAM,CAACE,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBA,KAAK,CAACC,KAAK,CAACF,OAAO,CAAC,CAACG,IAAY,EAAEC,KAAa,GAAK;YACnDL,KAAK,CAACE,KAAK,CAACI,UAAU,CAACD,KAAK,CAAC,CAAC,GAAGD,IAAI,CAAC;SACvC,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAOJ,KAAK,CAAC;CACd;AAEM,eAAeb,eAAe,CACnCK,WAAmB,EACnB,EAAEO,MAAM,CAAA,EAAEQ,SAAS,CAAA,EAA0C,EAC7D;IACA,yEAAyE;IACzE,MAAMP,KAAK,GAAGF,iBAAiB,CAACC,MAAM,CAAC,AAAC;IAExC,iCAAiC;IACjC,KAAK,MAAMS,IAAI,IAAIC,CAAAA,GAAAA,MAAK,AAA0B,CAAA,MAA1B,CAACC,MAAM,CAACC,OAAO,CAACX,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE;QAClD,MAAMY,OAAO,CAACC,GAAG,CACfL,IAAI,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,EAAErB,QAAQ,CAAC,GAAK;YAC5BH,YAAY,CAACC,WAAW,EAAE,QAAQ,EAAEE,QAAQ,CAAC,CAAC;YAC9C,8BAA8B;YAC9B,OAAOsB,CAAAA,GAAAA,IAAS,AAA+C,CAAA,UAA/C,CAACtB,QAAQ,EAAEU,KAAI,QAAA,CAACa,IAAI,CAACV,SAAS,EAAE,QAAQ,EAAEQ,GAAG,CAAC,CAAC,CAAC;SACjE,CAAC,CACH,CAAC;KACH;IACD3B,GAAG,CAACS,GAAG,CAAC,2BAA2B,CAAC,CAAC;CACtC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.exportWebAsync = exportWebAsync;
6
+ var _config = require("@expo/config");
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _log = require("../../log");
9
+ var _webSupportProjectPrerequisite = require("../../start/doctor/web/WebSupportProjectPrerequisite");
10
+ var _platformBundlers = require("../../start/server/platformBundlers");
11
+ var _webpackBundlerDevServer = require("../../start/server/webpack/WebpackBundlerDevServer");
12
+ var _errors = require("../../utils/errors");
13
+ function _interopRequireDefault(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ async function exportWebAsync(projectRoot, options) {
19
+ // Ensure webpack is available
20
+ await new _webSupportProjectPrerequisite.WebSupportProjectPrerequisite(projectRoot).assertAsync();
21
+ const { exp } = (0, _config).getConfig(projectRoot);
22
+ const platformBundlers = (0, _platformBundlers).getPlatformBundlers(exp);
23
+ // Create a bundler interface
24
+ const bundler = new _webpackBundlerDevServer.WebpackBundlerDevServer(projectRoot, platformBundlers, false);
25
+ // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.
26
+ if (!bundler.isTargetingWeb()) {
27
+ throw new _errors.CommandError(_chalk.default`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`);
28
+ }
29
+ _log.Log.log(`Exporting with Webpack...`);
30
+ // Bundle the app
31
+ await bundler.bundleAsync({
32
+ mode: options.dev ? "development" : "production",
33
+ clear: options.clear
34
+ });
35
+ }
36
+
37
+ //# sourceMappingURL=exportWebAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport { Log } from '../../log';\nimport { WebSupportProjectPrerequisite } from '../../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getPlatformBundlers } from '../../start/server/platformBundlers';\nimport { WebpackBundlerDevServer } from '../../start/server/webpack/WebpackBundlerDevServer';\nimport { CommandError } from '../../utils/errors';\nimport { Options } from './resolveOptions';\n\nexport async function exportWebAsync(projectRoot: string, options: Options) {\n // Ensure webpack is available\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers, false);\n\n // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.\n if (!bundler.isTargetingWeb()) {\n throw new CommandError(\n chalk`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`\n );\n }\n\n Log.log(`Exporting with Webpack...`);\n\n // Bundle the app\n await bundler.bundleAsync({\n mode: options.dev ? 'development' : 'production',\n clear: options.clear,\n });\n}\n"],"names":["exportWebAsync","projectRoot","options","WebSupportProjectPrerequisite","assertAsync","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","dev","clear"],"mappings":"AAAA;;;;QAUsBA,cAAc,GAAdA,cAAc;AAVV,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAW,WAAX,WAAW,CAAA;AACe,IAAA,8BAAsD,WAAtD,sDAAsD,CAAA;AAChE,IAAA,iBAAqC,WAArC,qCAAqC,CAAA;AACjC,IAAA,wBAAoD,WAApD,oDAAoD,CAAA;AAC/D,IAAA,OAAoB,WAApB,oBAAoB,CAAA;;;;;;AAG1C,eAAeA,cAAc,CAACC,WAAmB,EAAEC,OAAgB,EAAE;IAC1E,8BAA8B;IAC9B,MAAM,IAAIC,8BAA6B,8BAAA,CAACF,WAAW,CAAC,CAACG,WAAW,EAAE,CAAC;IAEnE,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACL,WAAW,CAAC,AAAC;IACvC,MAAMM,gBAAgB,GAAGC,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACH,GAAG,CAAC,AAAC;IAClD,6BAA6B;IAC7B,MAAMI,OAAO,GAAG,IAAIC,wBAAuB,wBAAA,CAACT,WAAW,EAAEM,gBAAgB,EAAE,KAAK,CAAC,AAAC;IAElF,qFAAqF;IACrF,IAAI,CAACE,OAAO,CAACE,cAAc,EAAE,EAAE;QAC7B,MAAM,IAAIC,OAAY,aAAA,CACpBC,MAAK,QAAA,CAAC,gGAAgG,CAAC,CACxG,CAAC;KACH;IAEDC,IAAG,IAAA,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAErC,iBAAiB;IACjB,MAAMN,OAAO,CAACO,WAAW,CAAC;QACxBC,IAAI,EAAEf,OAAO,CAACgB,GAAG,GAAG,aAAa,GAAG,YAAY;QAChDC,KAAK,EAAEjB,OAAO,CAACiB,KAAK;KACrB,CAAC,CAAC;CACJ"}
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.expoExportWeb = void 0;
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _args = require("../../utils/args");
9
+ var _errors = require("../../utils/errors");
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function _interopRequireWildcard(obj) {
16
+ if (obj && obj.__esModule) {
17
+ return obj;
18
+ } else {
19
+ var newObj = {};
20
+ if (obj != null) {
21
+ for(var key in obj){
22
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
23
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
24
+ if (desc.get || desc.set) {
25
+ Object.defineProperty(newObj, key, desc);
26
+ } else {
27
+ newObj[key] = obj[key];
28
+ }
29
+ }
30
+ }
31
+ }
32
+ newObj.default = obj;
33
+ return newObj;
34
+ }
35
+ }
36
+ const expoExportWeb = async (argv)=>{
37
+ const args = (0, _args).assertArgs({
38
+ // Types
39
+ "--help": Boolean,
40
+ "--clear": Boolean,
41
+ "--dev": Boolean,
42
+ // Aliases
43
+ "-h": "--help",
44
+ "-c": "--clear"
45
+ }, argv);
46
+ if (args["--help"]) {
47
+ (0, _args).printHelp(`Export the static files of the web app for hosting on a web server`, _chalk.default`npx expo export:web {dim <dir>}`, [
48
+ _chalk.default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
49
+ `--dev Bundle in development mode`,
50
+ `-c, --clear Clear the bundler cache`,
51
+ `-h, --help Usage info`,
52
+ ].join("\n"));
53
+ }
54
+ const projectRoot = (0, _args).getProjectRoot(args);
55
+ const { resolveOptionsAsync } = await Promise.resolve().then(function() {
56
+ return _interopRequireWildcard(require("./resolveOptions"));
57
+ });
58
+ const options = await resolveOptionsAsync(args).catch(_errors.logCmdError);
59
+ const { exportWebAsync } = await Promise.resolve().then(function() {
60
+ return _interopRequireWildcard(require("./exportWebAsync"));
61
+ });
62
+ return exportWebAsync(projectRoot, options).catch(_errors.logCmdError);
63
+ };
64
+ exports.expoExportWeb = expoExportWeb;
65
+
66
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/export/web/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 expoExportWeb: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dev': Boolean,\n // Aliases\n '-h': '--help',\n '-c': '--clear',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the web app for hosting on a web server`,\n chalk`npx expo export:web {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Bundle in development mode`,\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');\n const options = await resolveOptionsAsync(args).catch(logCmdError);\n\n const { exportWebAsync } = await import('./exportWebAsync');\n return exportWebAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExportWeb","argv","args","assertArgs","Boolean","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportWebAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAkB,WAAlB,kBAAkB,CAAA;AAC5C,IAAA,OAAoB,WAApB,oBAAoB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzC,MAAMA,aAAa,GAAY,OAAOC,IAAI,GAAK;IACpD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAWtB,CAAA,WAXsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,OAAO,EAAEA,OAAO;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;KAChB,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBG,CAAAA,GAAAA,KAAS,AASR,CAAA,UATQ,CACP,CAAC,kEAAkE,CAAC,EACpEC,MAAK,QAAA,CAAC,+BAA+B,CAAC,EACtC;YACEA,MAAK,QAAA,CAAC,qGAAqG,CAAC;YAC5G,CAAC,wDAAwD,CAAC;YAC1D,CAAC,qDAAqD,CAAC;YACvD,CAAC,wCAAwC,CAAC;SAC3C,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACP,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEQ,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACjE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACR,IAAI,CAAC,CAACU,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEnE,MAAM,EAAEC,cAAc,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IAC5D,OAAOA,cAAc,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAChE,AAAC;QAjCWb,aAAa,GAAbA,aAAa"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.resolveOptionsAsync = resolveOptionsAsync;
6
+ async function resolveOptionsAsync(args) {
7
+ return {
8
+ clear: !!args["--clear"],
9
+ dev: !!args["--dev"]
10
+ };
11
+ }
12
+
13
+ //# sourceMappingURL=resolveOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/export/web/resolveOptions.ts"],"sourcesContent":["export type Options = {\n dev: boolean;\n clear: boolean;\n};\n\nexport async function resolveOptionsAsync(args: any): Promise<Options> {\n return {\n clear: !!args['--clear'],\n dev: !!args['--dev'],\n };\n}\n"],"names":["resolveOptionsAsync","args","clear","dev"],"mappings":"AAAA;;;;QAKsBA,mBAAmB,GAAnBA,mBAAmB;AAAlC,eAAeA,mBAAmB,CAACC,IAAS,EAAoB;IACrE,OAAO;QACLC,KAAK,EAAE,CAAC,CAACD,IAAI,CAAC,SAAS,CAAC;QACxBE,GAAG,EAAE,CAAC,CAACF,IAAI,CAAC,OAAO,CAAC;KACrB,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import { BundleOutput } from '@expo/dev-server';\nimport crypto from 'crypto';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { Asset } from './saveAssets';\n\n/**\n * @param props.platform native platform for the bundle\n * @param props.hash crypto hash for the bundle contents\n * @returns filename for the JS bundle.\n */\nfunction createBundleFileName({ platform, hash }: { platform: string; hash: string }): string {\n return `${platform}-${hash}.js`;\n}\n\n/**\n * @param bundle JS bundle as a string\n * @returns crypto hash for the provided bundle\n */\nfunction createBundleHash(bundle: string | Uint8Array): string {\n return crypto.createHash('md5').update(bundle).digest('hex');\n}\n\nexport async function writeBundlesAsync({\n bundles,\n outputDir,\n}: {\n bundles: Record<string, Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>>;\n outputDir: string;\n}) {\n const hashes: Record<string, string> = {};\n const fileNames: Record<string, string> = {};\n\n for (const [platform, bundleOutput] of Object.entries(bundles)) {\n const bundle = bundleOutput.hermesBytecodeBundle ?? bundleOutput.code;\n const hash = createBundleHash(bundle);\n const fileName = createBundleFileName({ platform, hash });\n\n hashes[platform] = hash;\n fileNames[platform] = fileName;\n await fs.writeFile(path.join(outputDir, fileName), bundle);\n }\n\n return { hashes, fileNames };\n}\n\nexport async function writeSourceMapsAsync({\n bundles,\n hashes,\n fileNames,\n outputDir,\n}: {\n bundles: Record<\n string,\n Pick<BundleOutput, 'hermesSourcemap' | 'map' | 'hermesBytecodeBundle' | 'code'>\n >;\n hashes?: Record<string, string>;\n fileNames?: Record<string, string>;\n outputDir: string;\n}) {\n return Promise.all(\n Object.entries(bundles).map(async ([platform, bundle]) => {\n const sourceMap = bundle.hermesSourcemap ?? bundle.map;\n const hash =\n hashes?.[platform] ?? createBundleHash(bundle.hermesBytecodeBundle ?? bundle.code);\n const mapName = `${platform}-${hash}.map`;\n await fs.writeFile(path.join(outputDir, mapName), sourceMap);\n\n const jsBundleFileName = fileNames?.[platform] ?? createBundleFileName({ platform, hash });\n const jsPath = path.join(outputDir, jsBundleFileName);\n\n // Add correct mapping to sourcemap paths\n const mappingComment = `\\n//# sourceMappingURL=${mapName}`;\n await fs.appendFile(jsPath, mappingComment);\n return {\n platform,\n fileName: mapName,\n hash,\n map: sourceMap,\n comment: mappingComment,\n };\n })\n );\n}\n\nexport async function writeMetadataJsonAsync({\n outputDir,\n bundles,\n fileNames,\n}: {\n outputDir: string;\n bundles: Record<string, Pick<BundleOutput, 'assets'>>;\n fileNames: Record<string, string>;\n}) {\n const contents = createMetadataJson({\n bundles,\n fileNames,\n });\n await fs.writeFile(path.join(outputDir, 'metadata.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeAssetMapAsync({\n outputDir,\n assets,\n}: {\n outputDir: string;\n assets: Asset[];\n}) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n const contents = Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n await fs.writeFile(path.join(outputDir, 'assetmap.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeDebugHtmlAsync({\n outputDir,\n fileNames,\n}: {\n outputDir: string;\n fileNames: Record<string, string>;\n}) {\n // Make a debug html so user can debug their bundles\n const contents = `\n ${Object.values(fileNames)\n .map((fileName) => `<script src=\"${path.join('bundles', fileName)}\"></script>`)\n .join('\\n ')}\n Open up this file in Chrome. In the JavaScript developer console, navigate to the Source tab.\n You can see a red colored folder containing the original source code from your bundle.\n `;\n\n await fs.writeFile(path.join(outputDir, 'debug.html'), contents);\n return contents;\n}\n"],"names":["writeBundlesAsync","writeSourceMapsAsync","writeMetadataJsonAsync","writeAssetMapAsync","writeDebugHtmlAsync","createBundleFileName","platform","hash","createBundleHash","bundle","crypto","createHash","update","digest","bundles","outputDir","hashes","fileNames","bundleOutput","Object","entries","hermesBytecodeBundle","code","fileName","fs","writeFile","path","join","Promise","all","map","sourceMap","hermesSourcemap","mapName","jsBundleFileName","jsPath","mappingComment","appendFile","comment","contents","createMetadataJson","JSON","stringify","assets","fromEntries","asset","values"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport { BundleOutput } from '@expo/dev-server';\nimport crypto from 'crypto';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { Asset } from './saveAssets';\n\n/**\n * @param props.platform native platform for the bundle\n * @param props.hash crypto hash for the bundle contents\n * @returns filename for the JS bundle.\n */\nfunction createBundleFileName({ platform, hash }: { platform: string; hash: string }): string {\n return `${platform}-${hash}.js`;\n}\n\n/**\n * @param bundle JS bundle as a string\n * @returns crypto hash for the provided bundle\n */\nfunction createBundleHash(bundle: string | Uint8Array): string {\n return crypto.createHash('md5').update(bundle).digest('hex');\n}\n\nexport async function writeBundlesAsync({\n bundles,\n outputDir,\n}: {\n bundles: Partial<Record<Platform, Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>>>;\n outputDir: string;\n}) {\n const hashes: Partial<Record<Platform, string>> = {};\n const fileNames: Partial<Record<Platform, string>> = {};\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>\n ][]) {\n const bundle = bundleOutput.hermesBytecodeBundle ?? bundleOutput.code;\n const hash = createBundleHash(bundle);\n const fileName = createBundleFileName({ platform, hash });\n\n hashes[platform] = hash;\n fileNames[platform] = fileName;\n await fs.writeFile(path.join(outputDir, fileName), bundle);\n }\n\n return { hashes, fileNames };\n}\n\nexport async function writeSourceMapsAsync({\n bundles,\n hashes,\n fileNames,\n outputDir,\n}: {\n bundles: Record<\n string,\n Pick<BundleOutput, 'hermesSourcemap' | 'map' | 'hermesBytecodeBundle' | 'code'>\n >;\n hashes?: Record<string, string>;\n fileNames?: Record<string, string>;\n outputDir: string;\n}) {\n return Promise.all(\n Object.entries(bundles).map(async ([platform, bundle]) => {\n const sourceMap = bundle.hermesSourcemap ?? bundle.map;\n const hash =\n hashes?.[platform] ?? createBundleHash(bundle.hermesBytecodeBundle ?? bundle.code);\n const mapName = `${platform}-${hash}.map`;\n await fs.writeFile(path.join(outputDir, mapName), sourceMap);\n\n const jsBundleFileName = fileNames?.[platform] ?? createBundleFileName({ platform, hash });\n const jsPath = path.join(outputDir, jsBundleFileName);\n\n // Add correct mapping to sourcemap paths\n const mappingComment = `\\n//# sourceMappingURL=${mapName}`;\n await fs.appendFile(jsPath, mappingComment);\n return {\n platform,\n fileName: mapName,\n hash,\n map: sourceMap,\n comment: mappingComment,\n };\n })\n );\n}\n\nexport async function writeMetadataJsonAsync({\n outputDir,\n bundles,\n fileNames,\n}: {\n outputDir: string;\n bundles: Record<string, Pick<BundleOutput, 'assets'>>;\n fileNames: Record<string, string>;\n}) {\n const contents = createMetadataJson({\n bundles,\n fileNames,\n });\n await fs.writeFile(path.join(outputDir, 'metadata.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeAssetMapAsync({\n outputDir,\n assets,\n}: {\n outputDir: string;\n assets: Asset[];\n}) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n const contents = Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n await fs.writeFile(path.join(outputDir, 'assetmap.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeDebugHtmlAsync({\n outputDir,\n fileNames,\n}: {\n outputDir: string;\n fileNames: Record<string, string>;\n}) {\n // Make a debug html so user can debug their bundles\n const contents = `\n ${Object.values(fileNames)\n .map((fileName) => `<script src=\"${path.join('bundles', fileName)}\"></script>`)\n .join('\\n ')}\n Open up this file in Chrome. In the JavaScript developer console, navigate to the Source tab.\n You can see a red colored folder containing the original source code from your bundle.\n `;\n\n await fs.writeFile(path.join(outputDir, 'debug.html'), contents);\n return contents;\n}\n"],"names":["writeBundlesAsync","writeSourceMapsAsync","writeMetadataJsonAsync","writeAssetMapAsync","writeDebugHtmlAsync","createBundleFileName","platform","hash","createBundleHash","bundle","crypto","createHash","update","digest","bundles","outputDir","hashes","fileNames","bundleOutput","Object","entries","hermesBytecodeBundle","code","fileName","fs","writeFile","path","join","Promise","all","map","sourceMap","hermesSourcemap","mapName","jsBundleFileName","jsPath","mappingComment","appendFile","comment","contents","createMetadataJson","JSON","stringify","assets","fromEntries","asset","values"],"mappings":"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"}
@@ -36,6 +36,7 @@ function _interopRequireWildcard(obj) {
36
36
  return newObj;
37
37
  }
38
38
  }
39
+ const debug = require("debug")("expo:install:check");
39
40
  async function checkPackagesAsync(projectRoot, { packages , packageManager , options: { fix } , packageManagerArguments }) {
40
41
  // Read the project Expo config without plugins.
41
42
  const { exp , pkg } = (0, _config).getConfig(projectRoot, {
@@ -58,7 +59,7 @@ async function checkPackagesAsync(projectRoot, { packages , packageManager , opt
58
59
  // Just pass in the names, the install function will resolve the versions again.
59
60
  const fixedDependencies = dependencies.map((dependency)=>dependency.packageName
60
61
  );
61
- Log.debug("Installing fixed dependencies:", fixedDependencies);
62
+ debug("Installing fixed dependencies:", fixedDependencies);
62
63
  // Install the corrected dependencies.
63
64
  return (0, _installAsync).installPackagesAsync(projectRoot, {
64
65
  packageManager,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { env } from '../utils/env';\nimport { confirmAsync } from '../utils/prompts';\nimport { installPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NpmPackageManager | PackageManager.YarnPackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (!env.CI && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n // Just pass in the names, the install function will resolve the versions again.\n const fixedDependencies = dependencies.map((dependency) => dependency.packageName);\n Log.debug('Installing fixed dependencies:', fixedDependencies);\n // Install the corrected dependencies.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages: fixedDependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","projectRoot","packages","packageManager","options","fix","packageManagerArguments","exp","pkg","getConfig","skipPlugins","dependencies","getVersionedDependenciesAsync","length","exit","chalk","greenBright","logIncorrectDependencies","value","env","CI","confirmAsync","message","catch","fixedDependencies","map","dependency","packageName","debug","installPackagesAsync","sdkVersion","red"],"mappings":"AAAA;;;;QAesBA,kBAAkB,GAAlBA,kBAAkB;AAfd,IAAA,OAAc,WAAd,cAAc,CAAA;AAEtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,6BAA2D,WAA3D,2DAA2D,CAAA;AAC9C,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACV,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI9C,eAAeD,kBAAkB,CACtCE,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,cAAc,CAAA,EACdC,OAAO,EAAE,EAAEC,GAAG,CAAA,EAAE,CAAA,EAChBC,uBAAuB,CAAA,EAiBxB,EACD;IACA,gDAAgD;IAChD,MAAM,EAAEC,GAAG,CAAA,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAI5B,CAAA,UAJ4B,CAACR,WAAW,EAAE;QAC1C,iFAAiF;QACjF,yEAAyE;QACzES,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,MAAMC,YAAY,GAAG,MAAMC,CAAAA,GAAAA,6BAA6B,AAAiC,CAAA,8BAAjC,CAACX,WAAW,EAAEM,GAAG,EAAEC,GAAG,EAAEN,QAAQ,CAAC,AAAC;IAE1F,IAAI,CAACS,YAAY,CAACE,MAAM,EAAE;QACxBb,GAAG,CAACc,IAAI,CAACC,MAAK,QAAA,CAACC,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D;IAEDC,CAAAA,GAAAA,6BAAwB,AAAc,CAAA,yBAAd,CAACN,YAAY,CAAC,CAAC;IAEvC,MAAMO,KAAK,GACT,8BAA8B;IAC9Bb,GAAG,IACH,kDAAkD;IAClD,CAAC,CAACc,IAAG,IAAA,CAACC,EAAE,IAAK,MAAMC,CAAAA,GAAAA,QAAY,AAAkC,CAAA,aAAlC,CAAC;QAAEC,OAAO,EAAE,mBAAmB;KAAE,CAAC,CAACC,KAAK,CAAC,IAAM,KAAK;IAAA,CAAC,AAAC,CAAC,AAAC;IAEzF,IAAIL,KAAK,EAAE;QACT,gFAAgF;QAChF,MAAMM,iBAAiB,GAAGb,YAAY,CAACc,GAAG,CAAC,CAACC,UAAU,GAAKA,UAAU,CAACC,WAAW;QAAA,CAAC,AAAC;QACnF3B,GAAG,CAAC4B,KAAK,CAAC,gCAAgC,EAAEJ,iBAAiB,CAAC,CAAC;QAC/D,sCAAsC;QACtC,OAAOK,CAAAA,GAAAA,aAAoB,AAKzB,CAAA,qBALyB,CAAC5B,WAAW,EAAE;YACvCE,cAAc;YACdD,QAAQ,EAAEsB,iBAAiB;YAC3BlB,uBAAuB;YACvBwB,UAAU,EAAEvB,GAAG,CAACuB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3E9B,GAAG,CAACc,IAAI,CAACC,MAAK,QAAA,CAACgB,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}
1
+ {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { env } from '../utils/env';\nimport { confirmAsync } from '../utils/prompts';\nimport { installPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\nconst debug = require('debug')('expo:install:check') as typeof console.log;\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager:\n | PackageManager.NpmPackageManager\n | PackageManager.YarnPackageManager\n | PackageManager.PnpmPackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (!env.CI && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n // Just pass in the names, the install function will resolve the versions again.\n const fixedDependencies = dependencies.map((dependency) => dependency.packageName);\n debug('Installing fixed dependencies:', fixedDependencies);\n // Install the corrected dependencies.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages: fixedDependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","debug","require","projectRoot","packages","packageManager","options","fix","packageManagerArguments","exp","pkg","getConfig","skipPlugins","dependencies","getVersionedDependenciesAsync","length","exit","chalk","greenBright","logIncorrectDependencies","value","env","CI","confirmAsync","message","catch","fixedDependencies","map","dependency","packageName","installPackagesAsync","sdkVersion","red"],"mappings":"AAAA;;;;QAiBsBA,kBAAkB,GAAlBA,kBAAkB;AAjBd,IAAA,OAAc,WAAd,cAAc,CAAA;AAEtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,6BAA2D,WAA3D,2DAA2D,CAAA;AAC9C,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACV,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGrD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,AAAsB,AAAC;AAGpE,eAAeH,kBAAkB,CACtCI,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,cAAc,CAAA,EACdC,OAAO,EAAE,EAAEC,GAAG,CAAA,EAAE,CAAA,EAChBC,uBAAuB,CAAA,EAoBxB,EACD;IACA,gDAAgD;IAChD,MAAM,EAAEC,GAAG,CAAA,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAI5B,CAAA,UAJ4B,CAACR,WAAW,EAAE;QAC1C,iFAAiF;QACjF,yEAAyE;QACzES,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,MAAMC,YAAY,GAAG,MAAMC,CAAAA,GAAAA,6BAA6B,AAAiC,CAAA,8BAAjC,CAACX,WAAW,EAAEM,GAAG,EAAEC,GAAG,EAAEN,QAAQ,CAAC,AAAC;IAE1F,IAAI,CAACS,YAAY,CAACE,MAAM,EAAE;QACxBf,GAAG,CAACgB,IAAI,CAACC,MAAK,QAAA,CAACC,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D;IAEDC,CAAAA,GAAAA,6BAAwB,AAAc,CAAA,yBAAd,CAACN,YAAY,CAAC,CAAC;IAEvC,MAAMO,KAAK,GACT,8BAA8B;IAC9Bb,GAAG,IACH,kDAAkD;IAClD,CAAC,CAACc,IAAG,IAAA,CAACC,EAAE,IAAK,MAAMC,CAAAA,GAAAA,QAAY,AAAkC,CAAA,aAAlC,CAAC;QAAEC,OAAO,EAAE,mBAAmB;KAAE,CAAC,CAACC,KAAK,CAAC,IAAM,KAAK;IAAA,CAAC,AAAC,CAAC,AAAC;IAEzF,IAAIL,KAAK,EAAE;QACT,gFAAgF;QAChF,MAAMM,iBAAiB,GAAGb,YAAY,CAACc,GAAG,CAAC,CAACC,UAAU,GAAKA,UAAU,CAACC,WAAW;QAAA,CAAC,AAAC;QACnF5B,KAAK,CAAC,gCAAgC,EAAEyB,iBAAiB,CAAC,CAAC;QAC3D,sCAAsC;QACtC,OAAOI,CAAAA,GAAAA,aAAoB,AAKzB,CAAA,qBALyB,CAAC3B,WAAW,EAAE;YACvCE,cAAc;YACdD,QAAQ,EAAEsB,iBAAiB;YAC3BlB,uBAAuB;YACvBuB,UAAU,EAAEtB,GAAG,CAACsB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3E/B,GAAG,CAACgB,IAAI,CAACC,MAAK,QAAA,CAACe,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}
@@ -28,6 +28,7 @@ const expoInstall = async (argv)=>{
28
28
  `--fix Automatically update any invalid package versions`,
29
29
  _chalk.default`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,
30
30
  _chalk.default`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,
31
+ _chalk.default`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,
31
32
  `-h, --help Usage info`,
32
33
  ].join("\n"), [
33
34
  "",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\n\nexport const expoInstall: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Other options are parsed manually.\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow other options, we'll throw an error if unexpected values are passed.\n permissive: true,\n }\n );\n\n if (args['--help']) {\n printHelp(\n `Install a module or other package to a project`,\n `npx expo install`,\n [\n `--check Check which installed packages need to be updated`,\n `--fix Automatically update any invalid package versions`,\n chalk`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,\n chalk`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,\n `-h, --help Usage info`,\n ].join('\\n'),\n [\n '',\n chalk` Additional options can be passed to the underlying install command by using {bold --}`,\n chalk` {dim $} npx expo install react -- --verbose`,\n chalk` {dim >} yarn add react --verbose`,\n '',\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo install -h` shows as fast as possible.\n const { installAsync } = require('./installAsync') as typeof import('./installAsync');\n const { logCmdError } = require('../utils/errors') as typeof import('../utils/errors');\n const { resolveArgsAsync } = require('./resolveOptions') as typeof import('./resolveOptions');\n\n const { variadic, options, extras } = await resolveArgsAsync(process.argv.slice(3)).catch(\n logCmdError\n );\n return installAsync(variadic, options, extras).catch(logCmdError);\n};\n"],"names":["expoInstall","argv","args","assertWithOptionsArgs","Boolean","permissive","printHelp","chalk","join","installAsync","require","logCmdError","resolveArgsAsync","variadic","options","extras","process","slice","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGwB,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzD,MAAMA,WAAW,GAAY,OAAOC,IAAI,GAAK;IAClD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,qCAAqC;QACrC,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,6EAA6E;QAC7EI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAIH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAiBR,CAAA,UAjBQ,CACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D,CAAC,6DAA6D,CAAC;YAC/DC,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/FA,MAAK,QAAA,CAAC,iFAAiF,CAAC;YACxF,CAAC,sBAAsB,CAAC;SACzB,CAACC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,EAAE;YACFD,MAAK,QAAA,CAAC,uFAAuF,CAAC;YAC9FA,MAAK,QAAA,CAAC,+CAA+C,CAAC;YACtDA,MAAK,QAAA,CAAC,oCAAoC,CAAC;YAC3C,EAAE;SACH,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,yFAAyF;IACzF,MAAM,EAAEC,YAAY,CAAA,EAAE,GAAGC,OAAO,CAAC,gBAAgB,CAAC,AAAmC,AAAC;IACtF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAGD,OAAO,CAAC,iBAAiB,CAAC,AAAoC,AAAC;IACvF,MAAM,EAAEE,gBAAgB,CAAA,EAAE,GAAGF,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAE9F,MAAM,EAAEG,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMH,gBAAgB,CAACI,OAAO,CAACf,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CACvFP,WAAW,CACZ,AAAC;IACF,OAAOF,YAAY,CAACI,QAAQ,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAACG,KAAK,CAACP,WAAW,CAAC,CAAC;CACnE,AAAC;QA7CWX,WAAW,GAAXA,WAAW"}
1
+ {"version":3,"sources":["../../../src/install/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\n\nexport const expoInstall: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Other options are parsed manually.\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow other options, we'll throw an error if unexpected values are passed.\n permissive: true,\n }\n );\n\n if (args['--help']) {\n printHelp(\n `Install a module or other package to a project`,\n `npx expo install`,\n [\n `--check Check which installed packages need to be updated`,\n `--fix Automatically update any invalid package versions`,\n chalk`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,\n chalk`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,\n chalk`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,\n `-h, --help Usage info`,\n ].join('\\n'),\n [\n '',\n chalk` Additional options can be passed to the underlying install command by using {bold --}`,\n chalk` {dim $} npx expo install react -- --verbose`,\n chalk` {dim >} yarn add react --verbose`,\n '',\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo install -h` shows as fast as possible.\n const { installAsync } = require('./installAsync') as typeof import('./installAsync');\n const { logCmdError } = require('../utils/errors') as typeof import('../utils/errors');\n const { resolveArgsAsync } = require('./resolveOptions') as typeof import('./resolveOptions');\n\n const { variadic, options, extras } = await resolveArgsAsync(process.argv.slice(3)).catch(\n logCmdError\n );\n return installAsync(variadic, options, extras).catch(logCmdError);\n};\n"],"names":["expoInstall","argv","args","assertWithOptionsArgs","Boolean","permissive","printHelp","chalk","join","installAsync","require","logCmdError","resolveArgsAsync","variadic","options","extras","process","slice","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGwB,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzD,MAAMA,WAAW,GAAY,OAAOC,IAAI,GAAK;IAClD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,qCAAqC;QACrC,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,6EAA6E;QAC7EI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAIH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAkBR,CAAA,UAlBQ,CACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D,CAAC,6DAA6D,CAAC;YAC/DC,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/FA,MAAK,QAAA,CAAC,iFAAiF,CAAC;YACxFA,MAAK,QAAA,CAAC,sFAAsF,CAAC;YAC7F,CAAC,sBAAsB,CAAC;SACzB,CAACC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,EAAE;YACFD,MAAK,QAAA,CAAC,uFAAuF,CAAC;YAC9FA,MAAK,QAAA,CAAC,+CAA+C,CAAC;YACtDA,MAAK,QAAA,CAAC,oCAAoC,CAAC;YAC3C,EAAE;SACH,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,yFAAyF;IACzF,MAAM,EAAEC,YAAY,CAAA,EAAE,GAAGC,OAAO,CAAC,gBAAgB,CAAC,AAAmC,AAAC;IACtF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAGD,OAAO,CAAC,iBAAiB,CAAC,AAAoC,AAAC;IACvF,MAAM,EAAEE,gBAAgB,CAAA,EAAE,GAAGF,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAE9F,MAAM,EAAEG,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMH,gBAAgB,CAACI,OAAO,CAACf,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CACvFP,WAAW,CACZ,AAAC;IACF,OAAOF,YAAY,CAACI,QAAQ,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAACG,KAAK,CAACP,WAAW,CAAC,CAAC;CACnE,AAAC;QA9CWX,WAAW,GAAXA,WAAW"}