@expo/cli 0.13.1 → 0.14.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 (89) hide show
  1. package/build/bin/cli +27 -25
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/config/configAsync.js +1 -1
  4. package/build/src/config/configAsync.js.map +1 -1
  5. package/build/src/config/index.js +2 -2
  6. package/build/src/config/index.js.map +1 -1
  7. package/build/src/customize/generate.js +1 -1
  8. package/build/src/customize/generate.js.map +1 -1
  9. package/build/src/customize/typescript.js +3 -3
  10. package/build/src/customize/typescript.js.map +1 -1
  11. package/build/src/export/createMetadataJson.js.map +1 -1
  12. package/build/src/export/embed/index.js +4 -4
  13. package/build/src/export/embed/index.js.map +1 -1
  14. package/build/src/export/exportApp.js +10 -5
  15. package/build/src/export/exportApp.js.map +1 -1
  16. package/build/src/export/exportHermes.js +20 -10
  17. package/build/src/export/exportHermes.js.map +1 -1
  18. package/build/src/export/exportStaticAsync.js +55 -39
  19. package/build/src/export/exportStaticAsync.js.map +1 -1
  20. package/build/src/export/fork-bundleAsync.js +44 -13
  21. package/build/src/export/fork-bundleAsync.js.map +1 -1
  22. package/build/src/export/getPublicExpoManifest.js +2 -2
  23. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  24. package/build/src/export/index.js +2 -2
  25. package/build/src/export/index.js.map +1 -1
  26. package/build/src/export/web/index.js +2 -2
  27. package/build/src/export/web/index.js.map +1 -1
  28. package/build/src/export/writeContents.js +3 -1
  29. package/build/src/export/writeContents.js.map +1 -1
  30. package/build/src/install/installAsync.js +1 -1
  31. package/build/src/install/installAsync.js.map +1 -1
  32. package/build/src/login/index.js +1 -1
  33. package/build/src/login/index.js.map +1 -1
  34. package/build/src/logout/index.js +1 -1
  35. package/build/src/logout/index.js.map +1 -1
  36. package/build/src/prebuild/index.js +3 -3
  37. package/build/src/prebuild/index.js.map +1 -1
  38. package/build/src/prebuild/prebuildAsync.js +2 -2
  39. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  40. package/build/src/register/index.js +1 -1
  41. package/build/src/register/index.js.map +1 -1
  42. package/build/src/run/android/index.js +2 -2
  43. package/build/src/run/android/index.js.map +1 -1
  44. package/build/src/run/ios/appleDevice/AppleDevice.js +35 -2
  45. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  46. package/build/src/run/ios/index.js +2 -2
  47. package/build/src/run/ios/index.js.map +1 -1
  48. package/build/src/start/index.js +3 -3
  49. package/build/src/start/index.js.map +1 -1
  50. package/build/src/start/server/getStaticRenderFunctions.js +4 -1
  51. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  52. package/build/src/start/server/metro/MetroBundlerDevServer.js +70 -49
  53. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  54. package/build/src/start/server/metro/bundleApiRoutes.js +0 -16
  55. package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
  56. package/build/src/start/server/metro/createExpoMetroResolver.js +170 -0
  57. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -0
  58. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  59. package/build/src/start/server/metro/formatFileCandidates.js +72 -0
  60. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -0
  61. package/build/src/start/server/metro/instantiateMetro.js +6 -7
  62. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  63. package/build/src/start/server/metro/metroErrorInterface.js +2 -1
  64. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  65. package/build/src/start/server/metro/router.js +2 -2
  66. package/build/src/start/server/metro/router.js.map +1 -1
  67. package/build/src/start/server/metro/withMetroMultiPlatform.js +31 -14
  68. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  69. package/build/src/start/server/middleware/ManifestMiddleware.js +43 -15
  70. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  71. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  72. package/build/src/start/server/type-generation/expo-env.js +1 -1
  73. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  74. package/build/src/start/server/type-generation/routes.js +1 -0
  75. package/build/src/start/server/type-generation/routes.js.map +1 -1
  76. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  77. package/build/src/utils/cocoapods.js +1 -0
  78. package/build/src/utils/cocoapods.js.map +1 -1
  79. package/build/src/utils/env.js +3 -0
  80. package/build/src/utils/env.js.map +1 -1
  81. package/build/src/whoami/index.js +1 -1
  82. package/build/src/whoami/index.js.map +1 -1
  83. package/package.json +7 -8
  84. package/static/shims/react-native-web/dist/cjs/exports/BackHandler/index.js +10 -0
  85. package/static/shims/react-native-web/dist/exports/BackHandler/index.js +7 -0
  86. package/build/src/export/createBundles.js +0 -37
  87. package/build/src/export/createBundles.js.map +0 -1
  88. package/build/src/start/server/middleware/resolveEntryPoint.js +0 -42
  89. package/build/src/start/server/middleware/resolveEntryPoint.js.map +0 -1
package/build/bin/cli CHANGED
@@ -41,79 +41,79 @@ const commands = {
41
41
  // Add a new command here
42
42
  // NOTE(EvanBacon): Ensure every bundler-related command sets `NODE_ENV` as expected for the command.
43
43
  "run:ios": ()=>Promise.resolve().then(function() {
44
- return _interopRequireWildcard(require("../src/run/ios"));
44
+ return _interopRequireWildcard(require("../src/run/ios/index.js"));
45
45
  }).then((i)=>i.expoRunIos
46
46
  )
47
47
  ,
48
48
  "run:android": ()=>Promise.resolve().then(function() {
49
- return _interopRequireWildcard(require("../src/run/android"));
49
+ return _interopRequireWildcard(require("../src/run/android/index.js"));
50
50
  }).then((i)=>i.expoRunAndroid
51
51
  )
52
52
  ,
53
53
  start: ()=>Promise.resolve().then(function() {
54
- return _interopRequireWildcard(require("../src/start"));
54
+ return _interopRequireWildcard(require("../src/start/index.js"));
55
55
  }).then((i)=>i.expoStart
56
56
  )
57
57
  ,
58
58
  prebuild: ()=>Promise.resolve().then(function() {
59
- return _interopRequireWildcard(require("../src/prebuild"));
59
+ return _interopRequireWildcard(require("../src/prebuild/index.js"));
60
60
  }).then((i)=>i.expoPrebuild
61
61
  )
62
62
  ,
63
63
  config: ()=>Promise.resolve().then(function() {
64
- return _interopRequireWildcard(require("../src/config"));
64
+ return _interopRequireWildcard(require("../src/config/index.js"));
65
65
  }).then((i)=>i.expoConfig
66
66
  )
67
67
  ,
68
68
  export: ()=>Promise.resolve().then(function() {
69
- return _interopRequireWildcard(require("../src/export"));
69
+ return _interopRequireWildcard(require("../src/export/index.js"));
70
70
  }).then((i)=>i.expoExport
71
71
  )
72
72
  ,
73
73
  "export:web": ()=>Promise.resolve().then(function() {
74
- return _interopRequireWildcard(require("../src/export/web"));
74
+ return _interopRequireWildcard(require("../src/export/web/index.js"));
75
75
  }).then((i)=>i.expoExportWeb
76
76
  )
77
77
  ,
78
78
  "export:embed": ()=>Promise.resolve().then(function() {
79
- return _interopRequireWildcard(require("../src/export/embed"));
79
+ return _interopRequireWildcard(require("../src/export/embed/index.js"));
80
80
  }).then((i)=>i.expoExportEmbed
81
81
  )
82
82
  ,
83
83
  // Auxiliary commands
84
84
  install: ()=>Promise.resolve().then(function() {
85
- return _interopRequireWildcard(require("../src/install"));
85
+ return _interopRequireWildcard(require("../src/install/index.js"));
86
86
  }).then((i)=>i.expoInstall
87
87
  )
88
88
  ,
89
89
  add: ()=>Promise.resolve().then(function() {
90
- return _interopRequireWildcard(require("../src/install"));
90
+ return _interopRequireWildcard(require("../src/install/index.js"));
91
91
  }).then((i)=>i.expoInstall
92
92
  )
93
93
  ,
94
94
  customize: ()=>Promise.resolve().then(function() {
95
- return _interopRequireWildcard(require("../src/customize"));
95
+ return _interopRequireWildcard(require("../src/customize/index.js"));
96
96
  }).then((i)=>i.expoCustomize
97
97
  )
98
98
  ,
99
99
  // Auth
100
100
  login: ()=>Promise.resolve().then(function() {
101
- return _interopRequireWildcard(require("../src/login"));
101
+ return _interopRequireWildcard(require("../src/login/index.js"));
102
102
  }).then((i)=>i.expoLogin
103
103
  )
104
104
  ,
105
105
  logout: ()=>Promise.resolve().then(function() {
106
- return _interopRequireWildcard(require("../src/logout"));
106
+ return _interopRequireWildcard(require("../src/logout/index.js"));
107
107
  }).then((i)=>i.expoLogout
108
108
  )
109
109
  ,
110
110
  register: ()=>Promise.resolve().then(function() {
111
- return _interopRequireWildcard(require("../src/register"));
111
+ return _interopRequireWildcard(require("../src/register/index.js"));
112
112
  }).then((i)=>i.expoRegister
113
113
  )
114
114
  ,
115
115
  whoami: ()=>Promise.resolve().then(function() {
116
- return _interopRequireWildcard(require("../src/whoami"));
116
+ return _interopRequireWildcard(require("../src/whoami/index.js"));
117
117
  }).then((i)=>i.expoWhoami
118
118
  )
119
119
  };
@@ -132,7 +132,7 @@ const args = (0, _arg).default({
132
132
  });
133
133
  if (args["--version"]) {
134
134
  // Version is added in the build script.
135
- console.log("0.13.1");
135
+ console.log("0.14.0");
136
136
  process.exit(0);
137
137
  }
138
138
  if (args["--non-interactive"]) {
@@ -255,15 +255,17 @@ process.on("SIGTERM", ()=>process.exit(0)
255
255
  );
256
256
  commands[command]().then((exec)=>{
257
257
  exec(commandArgs);
258
- // NOTE(EvanBacon): Track some basic telemetry events indicating the command
259
- // that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.
260
- // We do this to determine how well deprecations are going before removing a command.
261
- const { logEventAsync } = require("../src/utils/analytics/rudderstackClient");
262
- logEventAsync("action", {
263
- action: `expo ${command}`,
264
- source: "expo/cli",
265
- source_version: "0.13.1"
266
- });
258
+ if (!(0, _getenv).boolish("EXPO_NO_TELEMETRY", false)) {
259
+ // NOTE(EvanBacon): Track some basic telemetry events indicating the command
260
+ // that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.
261
+ // We do this to determine how well deprecations are going before removing a command.
262
+ const { logEventAsync } = require("../src/utils/analytics/rudderstackClient");
263
+ logEventAsync("action", {
264
+ action: `expo ${command}`,
265
+ source: "expo/cli",
266
+ source_version: "0.14.0"
267
+ });
268
+ }
267
269
  });
268
270
 
269
271
  //# sourceMappingURL=cli.map
package/build/bin/cli.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport Debug from 'debug';\nimport { boolish } from 'getenv';\n\n// Setup before requiring `debug`.\nif (boolish('EXPO_DEBUG', false)) {\n Debug.enable('expo:*');\n} else if (Debug.enabled('expo:')) {\n process.env.EXPO_DEBUG = '1';\n}\n\nconst defaultCmd = 'start';\n\nexport type Command = (argv?: string[]) => void;\n\nconst commands: { [command: string]: () => Promise<Command> } = {\n // Add a new command here\n // NOTE(EvanBacon): Ensure every bundler-related command sets `NODE_ENV` as expected for the command.\n 'run:ios': () => import('../src/run/ios').then((i) => i.expoRunIos),\n 'run:android': () => import('../src/run/android').then((i) => i.expoRunAndroid),\n start: () => import('../src/start').then((i) => i.expoStart),\n prebuild: () => import('../src/prebuild').then((i) => i.expoPrebuild),\n config: () => import('../src/config').then((i) => i.expoConfig),\n export: () => import('../src/export').then((i) => i.expoExport),\n 'export:web': () => import('../src/export/web').then((i) => i.expoExportWeb),\n 'export:embed': () => import('../src/export/embed').then((i) => i.expoExportEmbed),\n\n // Auxiliary commands\n install: () => import('../src/install').then((i) => i.expoInstall),\n add: () => import('../src/install').then((i) => i.expoInstall),\n customize: () => import('../src/customize').then((i) => i.expoCustomize),\n\n // Auth\n login: () => import('../src/login').then((i) => i.expoLogin),\n logout: () => import('../src/logout').then((i) => i.expoLogout),\n register: () => import('../src/register').then((i) => i.expoRegister),\n whoami: () => import('../src/whoami').then((i) => i.expoWhoami),\n};\n\nconst args = arg(\n {\n // Types\n '--version': Boolean,\n '--help': Boolean,\n // NOTE(EvanBacon): This is here to silence warnings from processes that\n // expect the global expo-cli.\n '--non-interactive': Boolean,\n\n // Aliases\n '-v': '--version',\n '-h': '--help',\n },\n {\n permissive: true,\n }\n);\n\nif (args['--version']) {\n // Version is added in the build script.\n console.log(process.env.__EXPO_VERSION);\n process.exit(0);\n}\n\nif (args['--non-interactive']) {\n console.warn(chalk.yellow` {bold --non-interactive} is not supported, use {bold $CI=1} instead`);\n}\n\n// Check if we are running `npx expo <subcommand>` or `npx expo`\nconst isSubcommand = Boolean(commands[args._[0]]);\n\n// Handle `--help` flag\nif (!isSubcommand && args['--help']) {\n const {\n login,\n logout,\n whoami,\n register,\n start,\n install,\n add,\n export: _export,\n config,\n customize,\n prebuild,\n 'run:ios': runIos,\n 'run:android': runAndroid,\n // NOTE(EvanBacon): Don't document this command as it's a temporary\n // workaround until we can use `expo export` for all production bundling.\n // https://github.com/expo/expo/pull/21396/files#r1121025873\n 'export:embed': exportEmbed_unused,\n ...others\n } = commands;\n\n console.log(chalk`\n {bold Usage}\n {dim $} npx expo <command>\n\n {bold Commands}\n ${Object.keys({ start, export: _export, ...others }).join(', ')}\n ${Object.keys({ 'run:ios': runIos, 'run:android': runAndroid, prebuild }).join(', ')}\n ${Object.keys({ install, customize, config }).join(', ')}\n {dim ${Object.keys({ login, logout, whoami, register }).join(', ')}}\n\n {bold Options}\n --version, -v Version number\n --help, -h Usage info\n\n For more info run a command with the {bold --help} flag\n {dim $} npx expo start --help\n`);\n\n process.exit(0);\n}\n\n// NOTE(EvanBacon): Squat some directory names to help with migration,\n// users can still use folders named \"send\" or \"eject\" by using the fully qualified `npx expo start ./send`.\nif (!isSubcommand) {\n const migrationMap: Record<string, string> = {\n init: 'npx create-expo-app',\n eject: 'npx expo prebuild',\n web: 'npx expo start --web',\n 'start:web': 'npx expo start --web',\n 'build:ios': 'eas build -p ios',\n 'build:android': 'eas build -p android',\n 'client:install:ios': 'npx expo start --ios',\n 'client:install:android': 'npx expo start --android',\n doctor: 'npx expo-doctor',\n upgrade: 'expo-cli upgrade',\n 'customize:web': 'npx expo customize',\n\n publish: 'eas update',\n 'publish:set': 'eas update',\n 'publish:rollback': 'eas update',\n 'publish:history': 'eas update',\n 'publish:details': 'eas update',\n\n 'build:web': 'npx expo export:web',\n\n 'credentials:manager': `eas credentials`,\n 'fetch:ios:certs': `eas credentials`,\n 'fetch:android:keystore': `eas credentials`,\n 'fetch:android:hashes': `eas credentials`,\n 'fetch:android:upload-cert': `eas credentials`,\n 'push:android:upload': `eas credentials`,\n 'push:android:show': `eas credentials`,\n 'push:android:clear': `eas credentials`,\n url: `eas build:list`,\n 'url:ipa': `eas build:list`,\n 'url:apk': `eas build:list`,\n webhooks: `eas webhook`,\n 'webhooks:add': `eas webhook:create`,\n 'webhooks:remove': `eas webhook:delete`,\n 'webhooks:update': `eas webhook:update`,\n\n 'build:status': `eas build:list`,\n 'upload:android': `eas submit -p android`,\n 'upload:ios': `eas submit -p ios`,\n };\n\n // TODO: Log telemetry about invalid command used.\n const subcommand = args._[0];\n if (subcommand in migrationMap) {\n const replacement = migrationMap[subcommand];\n console.log();\n console.log(\n chalk.yellow` {gray $} {bold expo ${subcommand}} is not supported in the local CLI, please use {bold ${replacement}} instead`\n );\n console.log();\n process.exit(1);\n }\n const deprecated = ['send', 'client:ios'];\n if (deprecated.includes(subcommand)) {\n console.log();\n console.log(chalk.yellow` {gray $} {bold expo ${subcommand}} is deprecated`);\n console.log();\n process.exit(1);\n }\n}\n\nconst command = isSubcommand ? args._[0] : defaultCmd;\nconst commandArgs = isSubcommand ? args._.slice(1) : args._;\n\n// Push the help flag to the subcommand args.\nif (args['--help']) {\n commandArgs.push('--help');\n}\n\n// Install exit hooks\nprocess.on('SIGINT', () => process.exit(0));\nprocess.on('SIGTERM', () => process.exit(0));\n\ncommands[command]().then((exec) => {\n exec(commandArgs);\n\n // NOTE(EvanBacon): Track some basic telemetry events indicating the command\n // that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.\n // We do this to determine how well deprecations are going before removing a command.\n const { logEventAsync } =\n require('../src/utils/analytics/rudderstackClient') as typeof import('../src/utils/analytics/rudderstackClient');\n logEventAsync('action', {\n action: `expo ${command}`,\n source: 'expo/cli',\n source_version: process.env.__EXPO_VERSION,\n });\n});\n"],"names":["boolish","Debug","enable","enabled","process","env","EXPO_DEBUG","defaultCmd","commands","then","i","expoRunIos","expoRunAndroid","start","expoStart","prebuild","expoPrebuild","config","expoConfig","export","expoExport","expoExportWeb","expoExportEmbed","install","expoInstall","add","customize","expoCustomize","login","expoLogin","logout","expoLogout","register","expoRegister","whoami","expoWhoami","args","arg","Boolean","permissive","console","log","__EXPO_VERSION","exit","warn","chalk","yellow","isSubcommand","_","_export","runIos","runAndroid","exportEmbed_unused","others","Object","keys","join","migrationMap","init","eject","web","doctor","upgrade","publish","url","webhooks","subcommand","replacement","deprecated","includes","command","commandArgs","slice","push","on","exec","logEventAsync","require","action","source","source_version"],"mappings":"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"}
1
+ {"version":3,"sources":["../../bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport Debug from 'debug';\nimport { boolish } from 'getenv';\n\n// Setup before requiring `debug`.\nif (boolish('EXPO_DEBUG', false)) {\n Debug.enable('expo:*');\n} else if (Debug.enabled('expo:')) {\n process.env.EXPO_DEBUG = '1';\n}\n\nconst defaultCmd = 'start';\n\nexport type Command = (argv?: string[]) => void;\n\nconst commands: { [command: string]: () => Promise<Command> } = {\n // Add a new command here\n // NOTE(EvanBacon): Ensure every bundler-related command sets `NODE_ENV` as expected for the command.\n 'run:ios': () => import('../src/run/ios/index.js').then((i) => i.expoRunIos),\n 'run:android': () => import('../src/run/android/index.js').then((i) => i.expoRunAndroid),\n start: () => import('../src/start/index.js').then((i) => i.expoStart),\n prebuild: () => import('../src/prebuild/index.js').then((i) => i.expoPrebuild),\n config: () => import('../src/config/index.js').then((i) => i.expoConfig),\n export: () => import('../src/export/index.js').then((i) => i.expoExport),\n 'export:web': () => import('../src/export/web/index.js').then((i) => i.expoExportWeb),\n 'export:embed': () => import('../src/export/embed/index.js').then((i) => i.expoExportEmbed),\n\n // Auxiliary commands\n install: () => import('../src/install/index.js').then((i) => i.expoInstall),\n add: () => import('../src/install/index.js').then((i) => i.expoInstall),\n customize: () => import('../src/customize/index.js').then((i) => i.expoCustomize),\n\n // Auth\n login: () => import('../src/login/index.js').then((i) => i.expoLogin),\n logout: () => import('../src/logout/index.js').then((i) => i.expoLogout),\n register: () => import('../src/register/index.js').then((i) => i.expoRegister),\n whoami: () => import('../src/whoami/index.js').then((i) => i.expoWhoami),\n};\n\nconst args = arg(\n {\n // Types\n '--version': Boolean,\n '--help': Boolean,\n // NOTE(EvanBacon): This is here to silence warnings from processes that\n // expect the global expo-cli.\n '--non-interactive': Boolean,\n\n // Aliases\n '-v': '--version',\n '-h': '--help',\n },\n {\n permissive: true,\n }\n);\n\nif (args['--version']) {\n // Version is added in the build script.\n console.log(process.env.__EXPO_VERSION);\n process.exit(0);\n}\n\nif (args['--non-interactive']) {\n console.warn(chalk.yellow` {bold --non-interactive} is not supported, use {bold $CI=1} instead`);\n}\n\n// Check if we are running `npx expo <subcommand>` or `npx expo`\nconst isSubcommand = Boolean(commands[args._[0]]);\n\n// Handle `--help` flag\nif (!isSubcommand && args['--help']) {\n const {\n login,\n logout,\n whoami,\n register,\n start,\n install,\n add,\n export: _export,\n config,\n customize,\n prebuild,\n 'run:ios': runIos,\n 'run:android': runAndroid,\n // NOTE(EvanBacon): Don't document this command as it's a temporary\n // workaround until we can use `expo export` for all production bundling.\n // https://github.com/expo/expo/pull/21396/files#r1121025873\n 'export:embed': exportEmbed_unused,\n ...others\n } = commands;\n\n console.log(chalk`\n {bold Usage}\n {dim $} npx expo <command>\n\n {bold Commands}\n ${Object.keys({ start, export: _export, ...others }).join(', ')}\n ${Object.keys({ 'run:ios': runIos, 'run:android': runAndroid, prebuild }).join(', ')}\n ${Object.keys({ install, customize, config }).join(', ')}\n {dim ${Object.keys({ login, logout, whoami, register }).join(', ')}}\n\n {bold Options}\n --version, -v Version number\n --help, -h Usage info\n\n For more info run a command with the {bold --help} flag\n {dim $} npx expo start --help\n`);\n\n process.exit(0);\n}\n\n// NOTE(EvanBacon): Squat some directory names to help with migration,\n// users can still use folders named \"send\" or \"eject\" by using the fully qualified `npx expo start ./send`.\nif (!isSubcommand) {\n const migrationMap: Record<string, string> = {\n init: 'npx create-expo-app',\n eject: 'npx expo prebuild',\n web: 'npx expo start --web',\n 'start:web': 'npx expo start --web',\n 'build:ios': 'eas build -p ios',\n 'build:android': 'eas build -p android',\n 'client:install:ios': 'npx expo start --ios',\n 'client:install:android': 'npx expo start --android',\n doctor: 'npx expo-doctor',\n upgrade: 'expo-cli upgrade',\n 'customize:web': 'npx expo customize',\n\n publish: 'eas update',\n 'publish:set': 'eas update',\n 'publish:rollback': 'eas update',\n 'publish:history': 'eas update',\n 'publish:details': 'eas update',\n\n 'build:web': 'npx expo export:web',\n\n 'credentials:manager': `eas credentials`,\n 'fetch:ios:certs': `eas credentials`,\n 'fetch:android:keystore': `eas credentials`,\n 'fetch:android:hashes': `eas credentials`,\n 'fetch:android:upload-cert': `eas credentials`,\n 'push:android:upload': `eas credentials`,\n 'push:android:show': `eas credentials`,\n 'push:android:clear': `eas credentials`,\n url: `eas build:list`,\n 'url:ipa': `eas build:list`,\n 'url:apk': `eas build:list`,\n webhooks: `eas webhook`,\n 'webhooks:add': `eas webhook:create`,\n 'webhooks:remove': `eas webhook:delete`,\n 'webhooks:update': `eas webhook:update`,\n\n 'build:status': `eas build:list`,\n 'upload:android': `eas submit -p android`,\n 'upload:ios': `eas submit -p ios`,\n };\n\n // TODO: Log telemetry about invalid command used.\n const subcommand = args._[0];\n if (subcommand in migrationMap) {\n const replacement = migrationMap[subcommand];\n console.log();\n console.log(\n chalk.yellow` {gray $} {bold expo ${subcommand}} is not supported in the local CLI, please use {bold ${replacement}} instead`\n );\n console.log();\n process.exit(1);\n }\n const deprecated = ['send', 'client:ios'];\n if (deprecated.includes(subcommand)) {\n console.log();\n console.log(chalk.yellow` {gray $} {bold expo ${subcommand}} is deprecated`);\n console.log();\n process.exit(1);\n }\n}\n\nconst command = isSubcommand ? args._[0] : defaultCmd;\nconst commandArgs = isSubcommand ? args._.slice(1) : args._;\n\n// Push the help flag to the subcommand args.\nif (args['--help']) {\n commandArgs.push('--help');\n}\n\n// Install exit hooks\nprocess.on('SIGINT', () => process.exit(0));\nprocess.on('SIGTERM', () => process.exit(0));\n\ncommands[command]().then((exec) => {\n exec(commandArgs);\n\n if (!boolish('EXPO_NO_TELEMETRY', false)) {\n // NOTE(EvanBacon): Track some basic telemetry events indicating the command\n // that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.\n // We do this to determine how well deprecations are going before removing a command.\n const { logEventAsync } =\n require('../src/utils/analytics/rudderstackClient') as typeof import('../src/utils/analytics/rudderstackClient');\n logEventAsync('action', {\n action: `expo ${command}`,\n source: 'expo/cli',\n source_version: process.env.__EXPO_VERSION,\n });\n }\n});\n"],"names":["boolish","Debug","enable","enabled","process","env","EXPO_DEBUG","defaultCmd","commands","then","i","expoRunIos","expoRunAndroid","start","expoStart","prebuild","expoPrebuild","config","expoConfig","export","expoExport","expoExportWeb","expoExportEmbed","install","expoInstall","add","customize","expoCustomize","login","expoLogin","logout","expoLogout","register","expoRegister","whoami","expoWhoami","args","arg","Boolean","permissive","console","log","__EXPO_VERSION","exit","warn","chalk","yellow","isSubcommand","_","_export","runIos","runAndroid","exportEmbed_unused","others","Object","keys","join","migrationMap","init","eject","web","doctor","upgrade","publish","url","webhooks","subcommand","replacement","deprecated","includes","command","commandArgs","slice","push","on","exec","logEventAsync","require","action","source","source_version"],"mappings":"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"}
@@ -87,7 +87,7 @@ async function configAsync(projectRoot, options) {
87
87
  return _interopRequireWildcard(require("@expo/prebuild-config"));
88
88
  });
89
89
  const { compileModsAsync } = await Promise.resolve().then(function() {
90
- return _interopRequireWildcard(require("@expo/config-plugins/build/plugins/mod-compiler"));
90
+ return _interopRequireWildcard(require("@expo/config-plugins/build/plugins/mod-compiler.js"));
91
91
  });
92
92
  config = await (0, _profile).profile(getPrebuildConfigAsync)(projectRoot, {
93
93
  platforms: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/config/configAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, ProjectConfig } from '@expo/config';\nimport assert from 'assert';\nimport util from 'util';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { profile } from '../utils/profile';\n\ntype Options = {\n type?: string;\n full?: boolean;\n json?: boolean;\n};\n\nexport function logConfig(config: ExpoConfig | ProjectConfig) {\n const isObjStr = (str: string): boolean => /^\\w+: {/g.test(str);\n Log.log(\n util.inspect(config, {\n colors: true,\n compact: false,\n // Sort objects to the end so that smaller values aren't hidden between large objects.\n sorted(a: string, b: string) {\n if (isObjStr(a)) return 1;\n if (isObjStr(b)) return -1;\n return 0;\n },\n showHidden: false,\n depth: null,\n })\n );\n}\n\nexport async function configAsync(projectRoot: string, options: Options) {\n const loggingFunctions = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n };\n // Disable logging for this command if the user wants to get JSON output.\n // This will ensure that only the JSON is printed to stdout.\n if (options.json) {\n console.log = function () {};\n console.warn = function () {};\n console.error = function () {};\n }\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.type) {\n assert.match(options.type, /^(public|prebuild|introspect)$/);\n }\n\n let config: ProjectConfig;\n\n if (options.type === 'prebuild') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n } else if (options.type === 'introspect') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n const { compileModsAsync } = await import('@expo/config-plugins/build/plugins/mod-compiler');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n\n await compileModsAsync(config.exp, {\n projectRoot,\n introspect: true,\n platforms: ['ios', 'android'],\n assertMissingModProviders: false,\n });\n // @ts-ignore\n delete config.modRequest;\n // @ts-ignore\n delete config.modResults;\n } else if (options.type === 'public') {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } else if (options.type) {\n throw new CommandError(\n `Invalid option: --type ${options.type}. Valid options are: public, prebuild`\n );\n } else {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n }\n\n const configOutput = options.full ? config : config.exp;\n\n if (!options.json) {\n Log.log();\n logConfig(configOutput);\n Log.log();\n } else {\n process.stdout.write(JSON.stringify(configOutput));\n\n // Re-enable logging functions for testing.\n console.log = loggingFunctions.log;\n console.warn = loggingFunctions.warn;\n console.error = loggingFunctions.error;\n }\n}\n"],"names":["logConfig","configAsync","Log","config","isObjStr","str","test","log","util","inspect","colors","compact","sorted","a","b","showHidden","depth","projectRoot","options","loggingFunctions","console","warn","error","json","setNodeEnv","require","load","type","assert","match","getPrebuildConfigAsync","profile","platforms","compileModsAsync","exp","introspect","assertMissingModProviders","modRequest","modResults","getConfig","skipSDKVersionRequirement","isPublicConfig","CommandError","configOutput","full","process","stdout","write","JSON","stringify"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/config/configAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, ProjectConfig } from '@expo/config';\nimport assert from 'assert';\nimport util from 'util';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { profile } from '../utils/profile';\n\ntype Options = {\n type?: string;\n full?: boolean;\n json?: boolean;\n};\n\nexport function logConfig(config: ExpoConfig | ProjectConfig) {\n const isObjStr = (str: string): boolean => /^\\w+: {/g.test(str);\n Log.log(\n util.inspect(config, {\n colors: true,\n compact: false,\n // Sort objects to the end so that smaller values aren't hidden between large objects.\n sorted(a: string, b: string) {\n if (isObjStr(a)) return 1;\n if (isObjStr(b)) return -1;\n return 0;\n },\n showHidden: false,\n depth: null,\n })\n );\n}\n\nexport async function configAsync(projectRoot: string, options: Options) {\n const loggingFunctions = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n };\n // Disable logging for this command if the user wants to get JSON output.\n // This will ensure that only the JSON is printed to stdout.\n if (options.json) {\n console.log = function () {};\n console.warn = function () {};\n console.error = function () {};\n }\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.type) {\n assert.match(options.type, /^(public|prebuild|introspect)$/);\n }\n\n let config: ProjectConfig;\n\n if (options.type === 'prebuild') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n } else if (options.type === 'introspect') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n const { compileModsAsync } = await import('@expo/config-plugins/build/plugins/mod-compiler.js');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n\n await compileModsAsync(config.exp, {\n projectRoot,\n introspect: true,\n platforms: ['ios', 'android'],\n assertMissingModProviders: false,\n });\n // @ts-ignore\n delete config.modRequest;\n // @ts-ignore\n delete config.modResults;\n } else if (options.type === 'public') {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } else if (options.type) {\n throw new CommandError(\n `Invalid option: --type ${options.type}. Valid options are: public, prebuild`\n );\n } else {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n }\n\n const configOutput = options.full ? config : config.exp;\n\n if (!options.json) {\n Log.log();\n logConfig(configOutput);\n Log.log();\n } else {\n process.stdout.write(JSON.stringify(configOutput));\n\n // Re-enable logging functions for testing.\n console.log = loggingFunctions.log;\n console.warn = loggingFunctions.warn;\n console.error = loggingFunctions.error;\n }\n}\n"],"names":["logConfig","configAsync","Log","config","isObjStr","str","test","log","util","inspect","colors","compact","sorted","a","b","showHidden","depth","projectRoot","options","loggingFunctions","console","warn","error","json","setNodeEnv","require","load","type","assert","match","getPrebuildConfigAsync","profile","platforms","compileModsAsync","exp","introspect","assertMissingModProviders","modRequest","modResults","getConfig","skipSDKVersionRequirement","isPublicConfig","CommandError","configOutput","full","process","stdout","write","JSON","stringify"],"mappings":"AAAA;;;;QAegBA,SAAS,GAATA,SAAS;QAkBHC,WAAW,GAAXA,WAAW;AAjCoB,IAAA,OAAc,WAAd,cAAc,CAAA;AAChD,IAAA,OAAQ,kCAAR,QAAQ,EAAA;AACV,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACc,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACnB,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACrB,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQnC,SAASF,SAAS,CAACG,MAAkC,EAAE;IAC5D,MAAMC,QAAQ,GAAG,CAACC,GAAW,GAAc,WAAWC,IAAI,CAACD,GAAG,CAAC;IAAC;IAChEH,GAAG,CAACK,GAAG,CACLC,KAAI,QAAA,CAACC,OAAO,CAACN,MAAM,EAAE;QACnBO,MAAM,EAAE,IAAI;QACZC,OAAO,EAAE,KAAK;QACd,sFAAsF;QACtFC,MAAM,EAACC,CAAS,EAAEC,CAAS,EAAE;YAC3B,IAAIV,QAAQ,CAACS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1B,IAAIT,QAAQ,CAACU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC;SACV;QACDC,UAAU,EAAE,KAAK;QACjBC,KAAK,EAAE,IAAI;KACZ,CAAC,CACH,CAAC;CACH;AAEM,eAAef,WAAW,CAACgB,WAAmB,EAAEC,OAAgB,EAAE;IACvE,MAAMC,gBAAgB,GAAG;QACvBZ,GAAG,EAAEa,OAAO,CAACb,GAAG;QAChBc,IAAI,EAAED,OAAO,CAACC,IAAI;QAClBC,KAAK,EAAEF,OAAO,CAACE,KAAK;KACrB,AAAC;IACF,yEAAyE;IACzE,4DAA4D;IAC5D,IAAIJ,OAAO,CAACK,IAAI,EAAE;QAChBH,OAAO,CAACb,GAAG,GAAG,WAAY,EAAE,CAAC;QAC7Ba,OAAO,CAACC,IAAI,GAAG,WAAY,EAAE,CAAC;QAC9BD,OAAO,CAACE,KAAK,GAAG,WAAY,EAAE,CAAC;KAChC;IACDE,CAAAA,GAAAA,QAAU,AAAe,CAAA,WAAf,CAAC,aAAa,CAAC,CAAC;IAC1BC,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACT,WAAW,CAAC,CAAC;IAEvC,IAAIC,OAAO,CAACS,IAAI,EAAE;QAChBC,OAAM,QAAA,CAACC,KAAK,CAACX,OAAO,CAACS,IAAI,mCAAmC,CAAC;KAC9D;IAED,IAAIxB,MAAM,AAAe,AAAC;IAE1B,IAAIe,OAAO,CAACS,IAAI,KAAK,UAAU,EAAE;QAC/B,MAAM,EAAEG,sBAAsB,CAAA,EAAE,GAAG,MAAM;mDAAO,uBAAuB;UAAC,AAAC;QAEzE3B,MAAM,GAAG,MAAM4B,CAAAA,GAAAA,QAAO,AAAwB,CAAA,QAAxB,CAACD,sBAAsB,CAAC,CAACb,WAAW,EAAE;YAC1De,SAAS,EAAE;gBAAC,KAAK;gBAAE,SAAS;aAAC;SAC9B,CAAC,CAAC;KACJ,MAAM,IAAId,OAAO,CAACS,IAAI,KAAK,YAAY,EAAE;QACxC,MAAM,EAAEG,sBAAsB,CAAA,EAAE,GAAG,MAAM;mDAAO,uBAAuB;UAAC,AAAC;QACzE,MAAM,EAAEG,gBAAgB,CAAA,EAAE,GAAG,MAAM;mDAAO,oDAAoD;UAAC,AAAC;QAEhG9B,MAAM,GAAG,MAAM4B,CAAAA,GAAAA,QAAO,AAAwB,CAAA,QAAxB,CAACD,sBAAsB,CAAC,CAACb,WAAW,EAAE;YAC1De,SAAS,EAAE;gBAAC,KAAK;gBAAE,SAAS;aAAC;SAC9B,CAAC,CAAC;QAEH,MAAMC,gBAAgB,CAAC9B,MAAM,CAAC+B,GAAG,EAAE;YACjCjB,WAAW;YACXkB,UAAU,EAAE,IAAI;YAChBH,SAAS,EAAE;gBAAC,KAAK;gBAAE,SAAS;aAAC;YAC7BI,yBAAyB,EAAE,KAAK;SACjC,CAAC,CAAC;QACH,aAAa;QACb,OAAOjC,MAAM,CAACkC,UAAU,CAAC;QACzB,aAAa;QACb,OAAOlC,MAAM,CAACmC,UAAU,CAAC;KAC1B,MAAM,IAAIpB,OAAO,CAACS,IAAI,KAAK,QAAQ,EAAE;QACpCxB,MAAM,GAAG4B,CAAAA,GAAAA,QAAO,AAAW,CAAA,QAAX,CAACQ,OAAS,UAAA,CAAC,CAACtB,WAAW,EAAE;YACvCuB,yBAAyB,EAAE,IAAI;YAC/BC,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;KACJ,MAAM,IAAIvB,OAAO,CAACS,IAAI,EAAE;QACvB,MAAM,IAAIe,OAAY,aAAA,CACpB,CAAC,uBAAuB,EAAExB,OAAO,CAACS,IAAI,CAAC,qCAAqC,CAAC,CAC9E,CAAC;KACH,MAAM;QACLxB,MAAM,GAAG4B,CAAAA,GAAAA,QAAO,AAAW,CAAA,QAAX,CAACQ,OAAS,UAAA,CAAC,CAACtB,WAAW,EAAE;YACvCuB,yBAAyB,EAAE,IAAI;SAChC,CAAC,CAAC;KACJ;IAED,MAAMG,YAAY,GAAGzB,OAAO,CAAC0B,IAAI,GAAGzC,MAAM,GAAGA,MAAM,CAAC+B,GAAG,AAAC;IAExD,IAAI,CAAChB,OAAO,CAACK,IAAI,EAAE;QACjBrB,GAAG,CAACK,GAAG,EAAE,CAAC;QACVP,SAAS,CAAC2C,YAAY,CAAC,CAAC;QACxBzC,GAAG,CAACK,GAAG,EAAE,CAAC;KACX,MAAM;QACLsC,OAAO,CAACC,MAAM,CAACC,KAAK,CAACC,IAAI,CAACC,SAAS,CAACN,YAAY,CAAC,CAAC,CAAC;QAEnD,2CAA2C;QAC3CvB,OAAO,CAACb,GAAG,GAAGY,gBAAgB,CAACZ,GAAG,CAAC;QACnCa,OAAO,CAACC,IAAI,GAAGF,gBAAgB,CAACE,IAAI,CAAC;QACrCD,OAAO,CAACE,KAAK,GAAGH,gBAAgB,CAACG,KAAK,CAAC;KACxC;CACF"}
@@ -57,10 +57,10 @@ const expoConfig = async (argv)=>{
57
57
  { configAsync }, // ../utils/errors
58
58
  { logCmdError }, ] = await Promise.all([
59
59
  Promise.resolve().then(function() {
60
- return _interopRequireWildcard(require("./configAsync"));
60
+ return _interopRequireWildcard(require("./configAsync.js"));
61
61
  }),
62
62
  Promise.resolve().then(function() {
63
- return _interopRequireWildcard(require("../utils/errors"));
63
+ return _interopRequireWildcard(require("../utils/errors.js"));
64
64
  })
65
65
  ]);
66
66
  return configAsync((0, _args).getProjectRoot(args), {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/config/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\n\nexport const expoConfig: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--full': Boolean,\n '--json': Boolean,\n '--type': String,\n // Aliases\n '-h': '--help',\n '-t': '--type',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Show the project config`,\n chalk`npx expo config {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--full Include all project config data`,\n `--json Output in JSON format`,\n `-t, --type <public|prebuild|introspect> Type of config to show`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo config -h` shows as fast as possible.\n const [\n // ./configAsync\n { configAsync },\n // ../utils/errors\n { logCmdError },\n ] = await Promise.all([import('./configAsync'), import('../utils/errors')]);\n\n return configAsync(getProjectRoot(args), {\n // Parsed options\n full: args['--full'],\n json: args['--json'],\n type: args['--type'],\n }).catch(logCmdError);\n};\n"],"names":["expoConfig","argv","args","assertArgs","Boolean","String","printHelp","chalk","join","configAsync","logCmdError","Promise","all","getProjectRoot","full","json","type","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9D,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAYtB,CAAA,WAZsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEC,MAAM;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;KACf,EACDJ,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAUR,CAAA,UAVQ,CACP,CAAC,uBAAuB,CAAC,EACzBC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,gHAAgH,CAAC;YACvH,CAAC,wEAAwE,CAAC;YAC1E,CAAC,8DAA8D,CAAC;YAChE,CAAC,+DAA+D,CAAC;YACjE,CAAC,mDAAmD,CAAC;SACtD,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,wFAAwF;IACxF,MAAM,CACJ,gBAAgB;IAChB,EAAEC,WAAW,CAAA,EAAE,EACf,kBAAkB;IAClB,EAAEC,WAAW,CAAA,EAAE,GAChB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;QAAC;mDAAO,eAAe;UAAC;QAAE;mDAAO,iBAAiB;UAAC;KAAC,CAAC,AAAC;IAE5E,OAAOH,WAAW,CAACI,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACX,IAAI,CAAC,EAAE;QACvC,iBAAiB;QACjBY,IAAI,EAAEZ,IAAI,CAAC,QAAQ,CAAC;QACpBa,IAAI,EAAEb,IAAI,CAAC,QAAQ,CAAC;QACpBc,IAAI,EAAEd,IAAI,CAAC,QAAQ,CAAC;KACrB,CAAC,CAACe,KAAK,CAACP,WAAW,CAAC,CAAC;CACvB,AAAC;QA3CWV,UAAU,GAAVA,UAAU"}
1
+ {"version":3,"sources":["../../../src/config/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\n\nexport const expoConfig: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--full': Boolean,\n '--json': Boolean,\n '--type': String,\n // Aliases\n '-h': '--help',\n '-t': '--type',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Show the project config`,\n chalk`npx expo config {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--full Include all project config data`,\n `--json Output in JSON format`,\n `-t, --type <public|prebuild|introspect> Type of config to show`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo config -h` shows as fast as possible.\n const [\n // ./configAsync\n { configAsync },\n // ../utils/errors\n { logCmdError },\n ] = await Promise.all([import('./configAsync.js'), import('../utils/errors.js')]);\n\n return configAsync(getProjectRoot(args), {\n // Parsed options\n full: args['--full'],\n json: args['--json'],\n type: args['--type'],\n }).catch(logCmdError);\n};\n"],"names":["expoConfig","argv","args","assertArgs","Boolean","String","printHelp","chalk","join","configAsync","logCmdError","Promise","all","getProjectRoot","full","json","type","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9D,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAYtB,CAAA,WAZsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEC,MAAM;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;KACf,EACDJ,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAUR,CAAA,UAVQ,CACP,CAAC,uBAAuB,CAAC,EACzBC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,gHAAgH,CAAC;YACvH,CAAC,wEAAwE,CAAC;YAC1E,CAAC,8DAA8D,CAAC;YAChE,CAAC,+DAA+D,CAAC;YACjE,CAAC,mDAAmD,CAAC;SACtD,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,wFAAwF;IACxF,MAAM,CACJ,gBAAgB;IAChB,EAAEC,WAAW,CAAA,EAAE,EACf,kBAAkB;IAClB,EAAEC,WAAW,CAAA,EAAE,GAChB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;QAAC;mDAAO,kBAAkB;UAAC;QAAE;mDAAO,oBAAoB;UAAC;KAAC,CAAC,AAAC;IAElF,OAAOH,WAAW,CAACI,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACX,IAAI,CAAC,EAAE;QACvC,iBAAiB;QACjBY,IAAI,EAAEZ,IAAI,CAAC,QAAQ,CAAC;QACpBa,IAAI,EAAEb,IAAI,CAAC,QAAQ,CAAC;QACpBc,IAAI,EAAEd,IAAI,CAAC,QAAQ,CAAC;KACrB,CAAC,CAACe,KAAK,CAACP,WAAW,CAAC,CAAC;CACvB,AAAC;QA3CWV,UAAU,GAAVA,UAAU"}
@@ -77,7 +77,7 @@ async function generateAsync(projectRoot, { answer , props , extras }) {
77
77
  const template = _templates.TEMPLATES[file];
78
78
  if (template.id === "tsconfig.json") {
79
79
  const { typescript } = await Promise.resolve().then(function() {
80
- return _interopRequireWildcard(require("./typescript"));
80
+ return _interopRequireWildcard(require("./typescript.js"));
81
81
  });
82
82
  return typescript(projectRoot);
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/customize/generate.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { DestinationResolutionProps, selectTemplatesAsync, TEMPLATES } from './templates';\nimport { installAsync } from '../install/installAsync';\nimport { Log } from '../log';\nimport { copyAsync } from '../utils/dir';\nimport { CommandError } from '../utils/errors';\n\nexport async function queryAndGenerateAsync(\n projectRoot: string,\n {\n files,\n props,\n extras,\n }: {\n files: string[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const valid = files.filter(\n (file) => !!TEMPLATES.find((template) => template.destination(props) === file)\n );\n\n if (valid.length !== files.length) {\n const diff = files.filter(\n (file) => !TEMPLATES.find((template) => template.destination(props) === file)\n );\n throw new CommandError(\n `Invalid files: ${diff.join(', ')}. Allowed: ${TEMPLATES.map((template) =>\n template.destination(props)\n ).join(', ')}`\n );\n }\n\n if (!valid.length) {\n return;\n }\n Log.log(`Generating: ${valid.join(', ')}`);\n return generateAsync(projectRoot, {\n answer: files.map((file) =>\n TEMPLATES.findIndex((template) => template.destination(props) === file)\n ),\n props,\n extras,\n });\n}\n\n/** Select templates to generate then generate and install. */\nexport async function selectAndGenerateAsync(\n projectRoot: string,\n {\n props,\n extras,\n }: {\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const answer = await selectTemplatesAsync(projectRoot, props);\n\n if (!answer?.length) {\n Log.exit('\\n\\u203A Exiting with no change...', 0);\n }\n\n await generateAsync(projectRoot, {\n answer,\n props,\n extras,\n });\n}\n\nasync function generateAsync(\n projectRoot: string,\n {\n answer,\n props,\n extras,\n }: {\n answer: number[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n // Copy files\n await Promise.all(\n answer.map(async (file) => {\n const template = TEMPLATES[file];\n\n if (template.id === 'tsconfig.json') {\n const { typescript } = await import('./typescript');\n return typescript(projectRoot);\n }\n\n const projectFilePath = path.resolve(projectRoot, template.destination(props));\n // copy the file from template\n return copyAsync(template.file(projectRoot), projectFilePath, {\n overwrite: true,\n recursive: true,\n });\n })\n );\n\n // Install dependencies\n const packages = answer\n .map((file) => TEMPLATES[file].dependencies)\n .flat()\n .filter((pkg) => !resolveFrom.silent(projectRoot, pkg));\n if (packages.length) {\n Log.debug('Installing ' + packages.join(', '));\n await installAsync(packages, {}, ['--dev', ...extras]);\n }\n}\n"],"names":["queryAndGenerateAsync","selectAndGenerateAsync","projectRoot","files","props","extras","valid","filter","file","TEMPLATES","find","template","destination","length","diff","CommandError","join","map","Log","log","generateAsync","answer","findIndex","selectTemplatesAsync","exit","Promise","all","id","typescript","projectFilePath","path","resolve","copyAsync","overwrite","recursive","packages","dependencies","flat","pkg","resolveFrom","silent","debug","installAsync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/customize/generate.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { DestinationResolutionProps, selectTemplatesAsync, TEMPLATES } from './templates';\nimport { installAsync } from '../install/installAsync';\nimport { Log } from '../log';\nimport { copyAsync } from '../utils/dir';\nimport { CommandError } from '../utils/errors';\n\nexport async function queryAndGenerateAsync(\n projectRoot: string,\n {\n files,\n props,\n extras,\n }: {\n files: string[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const valid = files.filter(\n (file) => !!TEMPLATES.find((template) => template.destination(props) === file)\n );\n\n if (valid.length !== files.length) {\n const diff = files.filter(\n (file) => !TEMPLATES.find((template) => template.destination(props) === file)\n );\n throw new CommandError(\n `Invalid files: ${diff.join(', ')}. Allowed: ${TEMPLATES.map((template) =>\n template.destination(props)\n ).join(', ')}`\n );\n }\n\n if (!valid.length) {\n return;\n }\n Log.log(`Generating: ${valid.join(', ')}`);\n return generateAsync(projectRoot, {\n answer: files.map((file) =>\n TEMPLATES.findIndex((template) => template.destination(props) === file)\n ),\n props,\n extras,\n });\n}\n\n/** Select templates to generate then generate and install. */\nexport async function selectAndGenerateAsync(\n projectRoot: string,\n {\n props,\n extras,\n }: {\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n const answer = await selectTemplatesAsync(projectRoot, props);\n\n if (!answer?.length) {\n Log.exit('\\n\\u203A Exiting with no change...', 0);\n }\n\n await generateAsync(projectRoot, {\n answer,\n props,\n extras,\n });\n}\n\nasync function generateAsync(\n projectRoot: string,\n {\n answer,\n props,\n extras,\n }: {\n answer: number[];\n props: DestinationResolutionProps;\n /** Any extra props to pass to the install command. */\n extras: any[];\n }\n) {\n // Copy files\n await Promise.all(\n answer.map(async (file) => {\n const template = TEMPLATES[file];\n\n if (template.id === 'tsconfig.json') {\n const { typescript } = await import('./typescript.js');\n return typescript(projectRoot);\n }\n\n const projectFilePath = path.resolve(projectRoot, template.destination(props));\n // copy the file from template\n return copyAsync(template.file(projectRoot), projectFilePath, {\n overwrite: true,\n recursive: true,\n });\n })\n );\n\n // Install dependencies\n const packages = answer\n .map((file) => TEMPLATES[file].dependencies)\n .flat()\n .filter((pkg) => !resolveFrom.silent(projectRoot, pkg));\n if (packages.length) {\n Log.debug('Installing ' + packages.join(', '));\n await installAsync(packages, {}, ['--dev', ...extras]);\n }\n}\n"],"names":["queryAndGenerateAsync","selectAndGenerateAsync","projectRoot","files","props","extras","valid","filter","file","TEMPLATES","find","template","destination","length","diff","CommandError","join","map","Log","log","generateAsync","answer","findIndex","selectTemplatesAsync","exit","Promise","all","id","typescript","projectFilePath","path","resolve","copyAsync","overwrite","recursive","packages","dependencies","flat","pkg","resolveFrom","silent","debug","installAsync"],"mappings":"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"}
@@ -28,13 +28,13 @@ function _interopRequireWildcard(obj) {
28
28
  }
29
29
  async function typescript(projectRoot) {
30
30
  const { TypeScriptProjectPrerequisite } = await Promise.resolve().then(function() {
31
- return _interopRequireWildcard(require("../start/doctor/typescript/TypeScriptProjectPrerequisite"));
31
+ return _interopRequireWildcard(require("../start/doctor/typescript/TypeScriptProjectPrerequisite.js"));
32
32
  });
33
33
  const { MetroBundlerDevServer } = await Promise.resolve().then(function() {
34
- return _interopRequireWildcard(require("../start/server/metro/MetroBundlerDevServer"));
34
+ return _interopRequireWildcard(require("../start/server/metro/MetroBundlerDevServer.js"));
35
35
  });
36
36
  const { getPlatformBundlers } = await Promise.resolve().then(function() {
37
- return _interopRequireWildcard(require("../start/server/platformBundlers"));
37
+ return _interopRequireWildcard(require("../start/server/platformBundlers.js"));
38
38
  });
39
39
  try {
40
40
  await new TypeScriptProjectPrerequisite(projectRoot).bootstrapAsync();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/customize/typescript.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\n\nimport { Log } from '../log';\n\nexport async function typescript(projectRoot: string) {\n const { TypeScriptProjectPrerequisite } = await import(\n '../start/doctor/typescript/TypeScriptProjectPrerequisite'\n );\n const { MetroBundlerDevServer } = await import('../start/server/metro/MetroBundlerDevServer');\n const { getPlatformBundlers } = await import('../start/server/platformBundlers');\n\n try {\n await new TypeScriptProjectPrerequisite(projectRoot).bootstrapAsync();\n } catch (error: any) {\n // Ensure the process doesn't fail if the TypeScript check fails.\n // This could happen during the install.\n Log.log();\n Log.exception(error);\n return;\n }\n\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n await new MetroBundlerDevServer(\n projectRoot,\n getPlatformBundlers(exp),\n true\n ).startTypeScriptServices();\n}\n"],"names":["typescript","projectRoot","TypeScriptProjectPrerequisite","MetroBundlerDevServer","getPlatformBundlers","bootstrapAsync","error","Log","log","exception","exp","getConfig","skipSDKVersionRequirement","startTypeScriptServices"],"mappings":"AAAA;;;;QAIsBA,UAAU,GAAVA,UAAU;AAJN,IAAA,OAAc,WAAd,cAAc,CAAA;AAEpB,IAAA,IAAQ,WAAR,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;AAErB,eAAeA,UAAU,CAACC,WAAmB,EAAE;IACpD,MAAM,EAAEC,6BAA6B,CAAA,EAAE,GAAG,MAAM;+CAC9C,0DAA0D;MAC3D,AAAC;IACF,MAAM,EAAEC,qBAAqB,CAAA,EAAE,GAAG,MAAM;+CAAO,6CAA6C;MAAC,AAAC;IAC9F,MAAM,EAAEC,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,kCAAkC;MAAC,AAAC;IAEjF,IAAI;QACF,MAAM,IAAIF,6BAA6B,CAACD,WAAW,CAAC,CAACI,cAAc,EAAE,CAAC;KACvE,CAAC,OAAOC,KAAK,EAAO;QACnB,iEAAiE;QACjE,wCAAwC;QACxCC,IAAG,IAAA,CAACC,GAAG,EAAE,CAAC;QACVD,IAAG,IAAA,CAACE,SAAS,CAACH,KAAK,CAAC,CAAC;QACrB,OAAO;KACR;IAED,MAAM,EAAEI,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAkD,CAAA,UAAlD,CAACV,WAAW,EAAE;QAAEW,yBAAyB,EAAE,IAAI;KAAE,CAAC,AAAC;IAC5E,MAAM,IAAIT,qBAAqB,CAC7BF,WAAW,EACXG,mBAAmB,CAACM,GAAG,CAAC,EACxB,IAAI,CACL,CAACG,uBAAuB,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"sources":["../../../src/customize/typescript.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\n\nimport { Log } from '../log';\n\nexport async function typescript(projectRoot: string) {\n const { TypeScriptProjectPrerequisite } = await import(\n '../start/doctor/typescript/TypeScriptProjectPrerequisite.js'\n );\n const { MetroBundlerDevServer } = await import('../start/server/metro/MetroBundlerDevServer.js');\n const { getPlatformBundlers } = await import('../start/server/platformBundlers.js');\n\n try {\n await new TypeScriptProjectPrerequisite(projectRoot).bootstrapAsync();\n } catch (error: any) {\n // Ensure the process doesn't fail if the TypeScript check fails.\n // This could happen during the install.\n Log.log();\n Log.exception(error);\n return;\n }\n\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n await new MetroBundlerDevServer(\n projectRoot,\n getPlatformBundlers(exp),\n true\n ).startTypeScriptServices();\n}\n"],"names":["typescript","projectRoot","TypeScriptProjectPrerequisite","MetroBundlerDevServer","getPlatformBundlers","bootstrapAsync","error","Log","log","exception","exp","getConfig","skipSDKVersionRequirement","startTypeScriptServices"],"mappings":"AAAA;;;;QAIsBA,UAAU,GAAVA,UAAU;AAJN,IAAA,OAAc,WAAd,cAAc,CAAA;AAEpB,IAAA,IAAQ,WAAR,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;AAErB,eAAeA,UAAU,CAACC,WAAmB,EAAE;IACpD,MAAM,EAAEC,6BAA6B,CAAA,EAAE,GAAG,MAAM;+CAC9C,6DAA6D;MAC9D,AAAC;IACF,MAAM,EAAEC,qBAAqB,CAAA,EAAE,GAAG,MAAM;+CAAO,gDAAgD;MAAC,AAAC;IACjG,MAAM,EAAEC,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,qCAAqC;MAAC,AAAC;IAEpF,IAAI;QACF,MAAM,IAAIF,6BAA6B,CAACD,WAAW,CAAC,CAACI,cAAc,EAAE,CAAC;KACvE,CAAC,OAAOC,KAAK,EAAO;QACnB,iEAAiE;QACjE,wCAAwC;QACxCC,IAAG,IAAA,CAACC,GAAG,EAAE,CAAC;QACVD,IAAG,IAAA,CAACE,SAAS,CAACH,KAAK,CAAC,CAAC;QACrB,OAAO;KACR;IAED,MAAM,EAAEI,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAkD,CAAA,UAAlD,CAACV,WAAW,EAAE;QAAEW,yBAAyB,EAAE,IAAI;KAAE,CAAC,AAAC;IAC5E,MAAM,IAAIT,qBAAqB,CAC7BF,WAAW,EACXG,mBAAmB,CAACM,GAAG,CAAC,EACxB,IAAI,CACL,CAACG,uBAAuB,EAAE,CAAC;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/createMetadataJson.ts"],"sourcesContent":["import path from 'path';\n\nimport { BundleOutput } from './fork-bundleAsync';\n\nexport type BundlePlatform = 'android' | 'ios';\n\ntype PlatformMetadataAsset = { path: string; ext: string };\n\ntype PlatformMetadata = { bundle: string; assets: PlatformMetadataAsset[] };\n\ntype FileMetadata = {\n [key in BundlePlatform]: PlatformMetadata;\n};\n\nexport function createMetadataJson({\n bundles,\n fileNames,\n}: {\n bundles: Partial<Record<BundlePlatform, Pick<BundleOutput, 'assets'>>>;\n fileNames: Record<string, string>;\n}): {\n version: 0;\n bundler: 'metro';\n fileMetadata: FileMetadata;\n} {\n // Build metadata.json\n return {\n version: 0,\n bundler: 'metro',\n fileMetadata: Object.entries(bundles).reduce<Record<string, Partial<PlatformMetadata>>>(\n (metadata, [platform, bundle]) => {\n if (platform === 'web') return metadata;\n\n return {\n ...metadata,\n [platform]: {\n // Get the filename for each platform's bundle.\n bundle: path.join('bundles', fileNames[platform]!),\n // Collect all of the assets and convert them to the serial format.\n assets: bundle.assets\n .map(\n (asset) =>\n // Each asset has multiple hashes which we convert and then flatten.\n asset.fileHashes?.map((hash) => ({\n path: path.join('assets', hash),\n ext: asset.type,\n }))\n )\n .filter(Boolean)\n .flat(),\n },\n };\n },\n {}\n ) as FileMetadata,\n };\n}\n"],"names":["createMetadataJson","bundles","fileNames","version","bundler","fileMetadata","Object","entries","reduce","metadata","platform","bundle","path","join","assets","map","asset","fileHashes","hash","ext","type","filter","Boolean","flat"],"mappings":"AAAA;;;;QAcgBA,kBAAkB,GAAlBA,kBAAkB;AAdjB,IAAA,KAAM,kCAAN,MAAM,EAAA;;;;;;AAchB,SAASA,kBAAkB,CAAC,EACjCC,OAAO,CAAA,EACPC,SAAS,CAAA,EAIV,EAIC;IACA,sBAAsB;IACtB,OAAO;QACLC,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE,OAAO;QAChBC,YAAY,EAAEC,MAAM,CAACC,OAAO,CAACN,OAAO,CAAC,CAACO,MAAM,CAC1C,CAACC,QAAQ,EAAE,CAACC,QAAQ,EAAEC,MAAM,CAAC,GAAK;YAChC,IAAID,QAAQ,KAAK,KAAK,EAAE,OAAOD,QAAQ,CAAC;YAExC,OAAO;gBACL,GAAGA,QAAQ;gBACX,CAACC,QAAQ,CAAC,EAAE;oBACV,+CAA+C;oBAC/CC,MAAM,EAAEC,KAAI,QAAA,CAACC,IAAI,CAAC,SAAS,EAAEX,SAAS,CAACQ,QAAQ,CAAC,CAAE;oBAClD,mEAAmE;oBACnEI,MAAM,EAAEH,MAAM,CAACG,MAAM,CAClBC,GAAG,CACF,CAACC,KAAK;4BACJ,oEAAoE;wBACpEA,GAAgB;wBAAhBA,OAAAA,CAAAA,GAAgB,GAAhBA,KAAK,CAACC,UAAU,SAAK,GAArBD,KAAAA,CAAqB,GAArBA,GAAgB,CAAED,GAAG,CAAC,CAACG,IAAI,GAAK,CAAC;gCAC/BN,IAAI,EAAEA,KAAI,QAAA,CAACC,IAAI,CAAC,QAAQ,EAAEK,IAAI,CAAC;gCAC/BC,GAAG,EAAEH,KAAK,CAACI,IAAI;6BAChB,CAAC;wBAAA,CAAC,CAAA;qBAAA,CACN,CACAC,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,EAAE;iBACV;aACF,CAAC;SACH,EACD,EAAE,CACH;KACF,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../src/export/createMetadataJson.ts"],"sourcesContent":["import path from 'path';\n\nimport { BundleOutput } from './fork-bundleAsync';\n\nexport type BundlePlatform = 'android' | 'ios';\n\ntype PlatformMetadataAsset = { path: string; ext: string };\n\ntype PlatformMetadata = { bundle: string; assets: PlatformMetadataAsset[] };\n\ntype FileMetadata = {\n [key in BundlePlatform]: PlatformMetadata;\n};\n\nexport function createMetadataJson({\n bundles,\n fileNames,\n}: {\n bundles: Partial<Record<BundlePlatform, Pick<BundleOutput, 'assets'>>>;\n fileNames: Record<string, string | undefined>;\n}): {\n version: 0;\n bundler: 'metro';\n fileMetadata: FileMetadata;\n} {\n // Build metadata.json\n return {\n version: 0,\n bundler: 'metro',\n fileMetadata: Object.entries(bundles).reduce<Record<string, Partial<PlatformMetadata>>>(\n (metadata, [platform, bundle]) => {\n if (platform === 'web') return metadata;\n\n return {\n ...metadata,\n [platform]: {\n // Get the filename for each platform's bundle.\n bundle: path.join('bundles', fileNames[platform]!),\n // Collect all of the assets and convert them to the serial format.\n assets: bundle.assets\n .map(\n (asset) =>\n // Each asset has multiple hashes which we convert and then flatten.\n asset.fileHashes?.map((hash) => ({\n path: path.join('assets', hash),\n ext: asset.type,\n }))\n )\n .filter(Boolean)\n .flat(),\n },\n };\n },\n {}\n ) as FileMetadata,\n };\n}\n"],"names":["createMetadataJson","bundles","fileNames","version","bundler","fileMetadata","Object","entries","reduce","metadata","platform","bundle","path","join","assets","map","asset","fileHashes","hash","ext","type","filter","Boolean","flat"],"mappings":"AAAA;;;;QAcgBA,kBAAkB,GAAlBA,kBAAkB;AAdjB,IAAA,KAAM,kCAAN,MAAM,EAAA;;;;;;AAchB,SAASA,kBAAkB,CAAC,EACjCC,OAAO,CAAA,EACPC,SAAS,CAAA,EAIV,EAIC;IACA,sBAAsB;IACtB,OAAO;QACLC,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE,OAAO;QAChBC,YAAY,EAAEC,MAAM,CAACC,OAAO,CAACN,OAAO,CAAC,CAACO,MAAM,CAC1C,CAACC,QAAQ,EAAE,CAACC,QAAQ,EAAEC,MAAM,CAAC,GAAK;YAChC,IAAID,QAAQ,KAAK,KAAK,EAAE,OAAOD,QAAQ,CAAC;YAExC,OAAO;gBACL,GAAGA,QAAQ;gBACX,CAACC,QAAQ,CAAC,EAAE;oBACV,+CAA+C;oBAC/CC,MAAM,EAAEC,KAAI,QAAA,CAACC,IAAI,CAAC,SAAS,EAAEX,SAAS,CAACQ,QAAQ,CAAC,CAAE;oBAClD,mEAAmE;oBACnEI,MAAM,EAAEH,MAAM,CAACG,MAAM,CAClBC,GAAG,CACF,CAACC,KAAK;4BACJ,oEAAoE;wBACpEA,GAAgB;wBAAhBA,OAAAA,CAAAA,GAAgB,GAAhBA,KAAK,CAACC,UAAU,SAAK,GAArBD,KAAAA,CAAqB,GAArBA,GAAgB,CAAED,GAAG,CAAC,CAACG,IAAI,GAAK,CAAC;gCAC/BN,IAAI,EAAEA,KAAI,QAAA,CAACC,IAAI,CAAC,QAAQ,EAAEK,IAAI,CAAC;gCAC/BC,GAAG,EAAEH,KAAK,CAACI,IAAI;6BAChB,CAAC;wBAAA,CAAC,CAAA;qBAAA,CACN,CACAC,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,EAAE;iBACV;aACF,CAAC;SACH,EACD,EAAE,CACH;KACF,CAAC;CACH"}
@@ -87,16 +87,16 @@ const expoExportEmbed = async (argv)=>{
87
87
  }
88
88
  const [{ exportEmbedAsync }, { resolveOptions }, { logCmdError }, { resolveCustomBooleanArgsAsync }, ] = await Promise.all([
89
89
  Promise.resolve().then(function() {
90
- return _interopRequireWildcard(require("./exportEmbedAsync"));
90
+ return _interopRequireWildcard(require("./exportEmbedAsync.js"));
91
91
  }),
92
92
  Promise.resolve().then(function() {
93
- return _interopRequireWildcard(require("./resolveOptions"));
93
+ return _interopRequireWildcard(require("./resolveOptions.js"));
94
94
  }),
95
95
  Promise.resolve().then(function() {
96
- return _interopRequireWildcard(require("../../utils/errors"));
96
+ return _interopRequireWildcard(require("../../utils/errors.js"));
97
97
  }),
98
98
  Promise.resolve().then(function() {
99
- return _interopRequireWildcard(require("../../utils/resolveArgs"));
99
+ return _interopRequireWildcard(require("../../utils/resolveArgs.js"));
100
100
  }),
101
101
  ]);
102
102
  return (async ()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/export/embed/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { Command } from '../../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../../utils/args';\n\nexport const expoExportEmbed: Command = async (argv) => {\n const rawArgsMap: arg.Spec = {\n // Types\n '--entry-file': String,\n '--platform': String,\n '--transformer': String,\n '--bundle-output': String,\n '--bundle-encoding': String,\n '--max-workers': Number,\n '--sourcemap-output': String,\n '--sourcemap-sources-root': String,\n '--assets-dest': String,\n '--asset-catalog-dest': String,\n '--unstable-transform-profile': String,\n '--config': String,\n\n // This is here for compatibility with the `npx react-native bundle` command.\n // devs should use `DEBUG=expo:*` instead.\n '--verbose': Boolean,\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n '-v': '--verbose',\n };\n const args = assertWithOptionsArgs(rawArgsMap, {\n argv,\n permissive: true,\n });\n\n if (args['--help']) {\n printHelp(\n `(Internal) Export the JavaScript bundle during a native build script for embedding in a native binary`,\n chalk`npx expo export:embed {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--entry-file <path> Path to the root JS file, either absolute or relative to JS root`,\n `--platform <string> Either \"ios\" or \"android\" (default: \"ios\")`,\n `--transformer <string> Specify a custom transformer to be used`,\n `--dev [boolean] If false, warnings are disabled and the bundle is minified (default: true)`,\n `--minify [boolean] Allows overriding whether bundle is minified. This defaults to false if dev is true, and true if dev is false. Disabling minification can be useful for speeding up production builds for testing purposes.`,\n `--bundle-output <string> File name where to store the resulting bundle, ex. /tmp/groups.bundle`,\n `--bundle-encoding <string> Encoding the bundle should be written in (https://nodejs.org/api/buffer.html#buffer_buffer). (default: \"utf8\")`,\n `--max-workers <number> Specifies the maximum number of workers the worker-pool will spawn for transforming files. This defaults to the number of the cores available on your machine.`,\n `--sourcemap-output <string> File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map`,\n `--sourcemap-sources-root <string> Path to make sourcemap's sources entries relative to, ex. /root/dir`,\n `--sourcemap-use-absolute-path Report SourceMapURL using its full path`,\n `--assets-dest <string> Directory name where to store assets referenced in the bundle`,\n `--asset-catalog-dest <string> Directory to create an iOS Asset Catalog for images`,\n `--unstable-transform-profile <string> Experimental, transform JS for a specific JS engine. Currently supported: hermes, hermes-canary, default`,\n `--reset-cache Removes cached files`,\n `-v, --verbose Enables debug logging`,\n\n `--config <string> Path to the CLI configuration file`,\n // This is seemingly unused.\n `--read-global-cache Try to fetch transformed JS code from the global cache, if configured.`,\n\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const [\n { exportEmbedAsync },\n { resolveOptions },\n { logCmdError },\n { resolveCustomBooleanArgsAsync },\n ] = await Promise.all([\n import('./exportEmbedAsync'),\n import('./resolveOptions'),\n import('../../utils/errors'),\n import('../../utils/resolveArgs'),\n ]);\n\n return (async () => {\n const parsed = await resolveCustomBooleanArgsAsync(argv ?? [], rawArgsMap, {\n '--dev': Boolean,\n '--minify': Boolean,\n '--sourcemap-use-absolute-path': Boolean,\n '--reset-cache': Boolean,\n '--read-global-cache': Boolean,\n });\n return exportEmbedAsync(path.resolve(parsed.projectRoot), resolveOptions(args, parsed));\n })().catch(logCmdError);\n};\n"],"names":["expoExportEmbed","argv","rawArgsMap","String","Number","Boolean","args","assertWithOptionsArgs","permissive","printHelp","chalk","join","exportEmbedAsync","resolveOptions","logCmdError","resolveCustomBooleanArgsAsync","Promise","all","parsed","path","resolve","projectRoot","catch"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/export/embed/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport arg from 'arg';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport { Command } from '../../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../../utils/args';\n\nexport const expoExportEmbed: Command = async (argv) => {\n const rawArgsMap: arg.Spec = {\n // Types\n '--entry-file': String,\n '--platform': String,\n '--transformer': String,\n '--bundle-output': String,\n '--bundle-encoding': String,\n '--max-workers': Number,\n '--sourcemap-output': String,\n '--sourcemap-sources-root': String,\n '--assets-dest': String,\n '--asset-catalog-dest': String,\n '--unstable-transform-profile': String,\n '--config': String,\n\n // This is here for compatibility with the `npx react-native bundle` command.\n // devs should use `DEBUG=expo:*` instead.\n '--verbose': Boolean,\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n '-v': '--verbose',\n };\n const args = assertWithOptionsArgs(rawArgsMap, {\n argv,\n permissive: true,\n });\n\n if (args['--help']) {\n printHelp(\n `(Internal) Export the JavaScript bundle during a native build script for embedding in a native binary`,\n chalk`npx expo export:embed {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--entry-file <path> Path to the root JS file, either absolute or relative to JS root`,\n `--platform <string> Either \"ios\" or \"android\" (default: \"ios\")`,\n `--transformer <string> Specify a custom transformer to be used`,\n `--dev [boolean] If false, warnings are disabled and the bundle is minified (default: true)`,\n `--minify [boolean] Allows overriding whether bundle is minified. This defaults to false if dev is true, and true if dev is false. Disabling minification can be useful for speeding up production builds for testing purposes.`,\n `--bundle-output <string> File name where to store the resulting bundle, ex. /tmp/groups.bundle`,\n `--bundle-encoding <string> Encoding the bundle should be written in (https://nodejs.org/api/buffer.html#buffer_buffer). (default: \"utf8\")`,\n `--max-workers <number> Specifies the maximum number of workers the worker-pool will spawn for transforming files. This defaults to the number of the cores available on your machine.`,\n `--sourcemap-output <string> File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map`,\n `--sourcemap-sources-root <string> Path to make sourcemap's sources entries relative to, ex. /root/dir`,\n `--sourcemap-use-absolute-path Report SourceMapURL using its full path`,\n `--assets-dest <string> Directory name where to store assets referenced in the bundle`,\n `--asset-catalog-dest <string> Directory to create an iOS Asset Catalog for images`,\n `--unstable-transform-profile <string> Experimental, transform JS for a specific JS engine. Currently supported: hermes, hermes-canary, default`,\n `--reset-cache Removes cached files`,\n `-v, --verbose Enables debug logging`,\n\n `--config <string> Path to the CLI configuration file`,\n // This is seemingly unused.\n `--read-global-cache Try to fetch transformed JS code from the global cache, if configured.`,\n\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const [\n { exportEmbedAsync },\n { resolveOptions },\n { logCmdError },\n { resolveCustomBooleanArgsAsync },\n ] = await Promise.all([\n import('./exportEmbedAsync.js'),\n import('./resolveOptions.js'),\n import('../../utils/errors.js'),\n import('../../utils/resolveArgs.js'),\n ]);\n\n return (async () => {\n const parsed = await resolveCustomBooleanArgsAsync(argv ?? [], rawArgsMap, {\n '--dev': Boolean,\n '--minify': Boolean,\n '--sourcemap-use-absolute-path': Boolean,\n '--reset-cache': Boolean,\n '--read-global-cache': Boolean,\n });\n return exportEmbedAsync(path.resolve(parsed.projectRoot), resolveOptions(args, parsed));\n })().catch(logCmdError);\n};\n"],"names":["expoExportEmbed","argv","rawArgsMap","String","Number","Boolean","args","assertWithOptionsArgs","permissive","printHelp","chalk","join","exportEmbedAsync","resolveOptions","logCmdError","resolveCustomBooleanArgsAsync","Promise","all","parsed","path","resolve","projectRoot","catch"],"mappings":"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"}
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.exportAppAsync = exportAppAsync;
6
+ var _config = require("@expo/config");
6
7
  var _chalk = _interopRequireDefault(require("chalk"));
7
8
  var _fs = _interopRequireDefault(require("fs"));
8
9
  var _path = _interopRequireDefault(require("path"));
9
- var _createBundles = require("./createBundles");
10
10
  var _exportAssets = require("./exportAssets");
11
11
  var _exportStaticAsync = require("./exportStaticAsync");
12
12
  var _favicon = require("./favicon");
13
+ var _forkBundleAsync = require("./fork-bundleAsync");
13
14
  var _getPublicExpoManifest = require("./getPublicExpoManifest");
14
15
  var _persistMetroAssets = require("./persistMetroAssets");
15
16
  var _printBundleSizes = require("./printBundleSizes");
@@ -49,7 +50,11 @@ async function exportAppAsync(projectRoot, { platforms , outputDir , clear , dev
49
50
  var ref, ref1, ref2;
50
51
  (0, _nodeEnv).setNodeEnv(dev ? "development" : "production");
51
52
  require("@expo/env").load(projectRoot);
52
- const exp = await (0, _getPublicExpoManifest).getPublicExpoManifestAsync(projectRoot);
53
+ const projectConfig = (0, _config).getConfig(projectRoot);
54
+ const exp = await (0, _getPublicExpoManifest).getPublicExpoManifestAsync(projectRoot, {
55
+ // Web doesn't require validation.
56
+ skipValidation: platforms.length === 1 && platforms[0] === "web"
57
+ });
53
58
  var ref3;
54
59
  const useServerRendering = [
55
60
  "static",
@@ -77,11 +82,11 @@ async function exportAppAsync(projectRoot, { platforms , outputDir , clear , dev
77
82
  ].map(_dir.ensureDirectoryAsync));
78
83
  await copyPublicFolderAsync(publicPath, staticFolder);
79
84
  // Run metro bundler and create the JS bundles/source maps.
80
- const bundles = await (0, _createBundles).createBundlesAsync(projectRoot, {
81
- resetCache: !!clear
82
- }, {
85
+ const bundles = await (0, _forkBundleAsync).createBundlesAsync(projectRoot, projectConfig, {
86
+ clear: !!clear,
83
87
  platforms,
84
88
  minify,
89
+ sourcemaps: dumpSourcemap,
85
90
  // TODO: Breaks asset exports
86
91
  // platforms: useServerRendering
87
92
  // ? platforms.filter((platform) => platform !== 'web')
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/exportApp.ts"],"sourcesContent":["import chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { createBundlesAsync } from './createBundles';\nimport { exportAssetsAsync, exportCssAssetsAsync } from './exportAssets';\nimport { unstable_exportStaticAsync } from './exportStaticAsync';\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { getPublicExpoManifestAsync } from './getPublicExpoManifest';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { printBundleSizes } from './printBundleSizes';\nimport { Options } from './resolveOptions';\nimport {\n writeAssetMapAsync,\n writeBundlesAsync,\n writeDebugHtmlAsync,\n writeMetadataJsonAsync,\n writeSourceMapsAsync,\n} from './writeContents';\nimport * as Log from '../log';\nimport { createTemplateHtmlFromExpoConfigAsync } from '../start/server/webTemplate';\nimport { copyAsync, ensureDirectoryAsync } from '../utils/dir';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\n\n/**\n * The structure of the outputDir will be:\n *\n * ```\n * ├── assets\n * │ └── *\n * ├── bundles\n * │ ├── android-01ee6e3ab3e8c16a4d926c91808d5320.js\n * │ └── ios-ee8206cc754d3f7aa9123b7f909d94ea.js\n * └── metadata.json\n * ```\n */\nexport async function exportAppAsync(\n projectRoot: string,\n {\n platforms,\n outputDir,\n clear,\n dev,\n dumpAssetmap,\n dumpSourcemap,\n minify,\n }: Pick<\n Options,\n 'dumpAssetmap' | 'dumpSourcemap' | 'dev' | 'clear' | 'outputDir' | 'platforms' | 'minify'\n >\n): Promise<void> {\n setNodeEnv(dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const exp = await getPublicExpoManifestAsync(projectRoot);\n\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const basePath = (exp.experiments?.basePath?.replace(/\\/+$/, '') ?? '').trim();\n\n // Print out logs\n if (basePath) {\n Log.log();\n Log.log(chalk.gray`Using (experimental) base path: ${basePath}`);\n // Warn if not using an absolute path.\n if (!basePath.startsWith('/')) {\n Log.log(\n chalk.yellow` Base path does not start with a slash. Requests will not be absolute.`\n );\n }\n }\n\n const publicPath = path.resolve(projectRoot, env.EXPO_PUBLIC_FOLDER);\n\n const outputPath = path.resolve(projectRoot, outputDir);\n const staticFolder = outputPath;\n const assetsPath = path.join(staticFolder, 'assets');\n const bundlesPath = path.join(staticFolder, 'bundles');\n\n await Promise.all([assetsPath, bundlesPath].map(ensureDirectoryAsync));\n\n await copyPublicFolderAsync(publicPath, staticFolder);\n\n // Run metro bundler and create the JS bundles/source maps.\n const bundles = await createBundlesAsync(\n projectRoot,\n { resetCache: !!clear },\n {\n platforms,\n minify,\n // TODO: Breaks asset exports\n // platforms: useServerRendering\n // ? platforms.filter((platform) => platform !== 'web')\n // : platforms,\n dev,\n // TODO: Disable source map generation if we aren't outputting them.\n }\n );\n\n const bundleEntries = Object.entries(bundles);\n if (bundleEntries.length) {\n // Log bundle size info to the user\n printBundleSizes(\n Object.fromEntries(\n bundleEntries.map(([key, value]) => {\n if (!dumpSourcemap) {\n return [\n key,\n {\n ...value,\n // Remove source maps from the bundles if they aren't going to be written.\n map: undefined,\n },\n ];\n }\n\n return [key, value];\n })\n )\n );\n }\n\n // Write the JS bundles to disk, and get the bundle file names (this could change with async chunk loading support).\n const { hashes, fileNames } = await writeBundlesAsync({\n bundles,\n useServerRendering,\n outputDir: bundlesPath,\n });\n\n Log.log('Finished saving JS Bundles');\n\n if (platforms.includes('web')) {\n if (useServerRendering) {\n await unstable_exportStaticAsync(projectRoot, {\n outputDir: outputPath,\n minify,\n basePath,\n includeMaps: dumpSourcemap,\n // @ts-expect-error: server not on type yet\n exportServer: exp.web?.output === 'server',\n });\n Log.log('Finished saving static files');\n } else {\n const cssLinks = await exportCssAssetsAsync({\n outputDir,\n bundles,\n basePath,\n });\n let html = await createTemplateHtmlFromExpoConfigAsync(projectRoot, {\n scripts: [`${basePath}/bundles/${fileNames.web}`],\n cssLinks,\n });\n // Add the favicon assets to the HTML.\n const modifyHtml = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n basePath,\n });\n if (modifyHtml) {\n html = modifyHtml(html);\n }\n // Generate SPA-styled HTML file.\n // If web exists, then write the template HTML file.\n await fs.promises.writeFile(path.join(staticFolder, 'index.html'), html);\n }\n\n // TODO: Use a different mechanism for static web.\n if (bundles.web) {\n // Save assets like a typical bundler, preserving the file paths on web.\n // TODO: Update React Native Web to support loading files from asset hashes.\n await persistMetroAssetsAsync(bundles.web.assets, {\n platform: 'web',\n outputDirectory: staticFolder,\n basePath,\n });\n }\n }\n\n // Can be empty during web-only SSG.\n // TODO: Use same asset system across platforms again.\n if (Object.keys(fileNames).length) {\n const { assets } = await exportAssetsAsync(projectRoot, {\n exp,\n outputDir: staticFolder,\n bundles,\n });\n\n if (dumpAssetmap) {\n Log.log('Dumping asset map');\n await writeAssetMapAsync({ outputDir: staticFolder, assets });\n }\n // build source maps\n if (dumpSourcemap) {\n Log.log('Dumping source maps');\n await writeSourceMapsAsync({\n bundles,\n hashes,\n outputDir: bundlesPath,\n fileNames,\n });\n\n Log.log('Preparing additional debugging files');\n // If we output source maps, then add a debug HTML file which the user can open in\n // the web browser to inspect the output like web.\n await writeDebugHtmlAsync({\n outputDir: staticFolder,\n fileNames,\n });\n }\n\n // Generate a `metadata.json` and the export is complete.\n await writeMetadataJsonAsync({ outputDir: staticFolder, bundles, fileNames });\n }\n}\n\n/**\n * Copy the contents of the public folder into the output folder.\n * This enables users to add static files like `favicon.ico` or `serve.json`.\n *\n * The contents of this folder are completely universal since they refer to\n * static network requests which fall outside the scope of React Native's magic\n * platform resolution patterns.\n */\nasync function copyPublicFolderAsync(publicFolder: string, outputFolder: string) {\n if (fs.existsSync(publicFolder)) {\n await copyAsync(publicFolder, outputFolder);\n }\n}\n"],"names":["exportAppAsync","Log","projectRoot","platforms","outputDir","clear","dev","dumpAssetmap","dumpSourcemap","minify","exp","setNodeEnv","require","load","getPublicExpoManifestAsync","useServerRendering","includes","web","output","basePath","experiments","replace","trim","log","chalk","gray","startsWith","yellow","publicPath","path","resolve","env","EXPO_PUBLIC_FOLDER","outputPath","staticFolder","assetsPath","join","bundlesPath","Promise","all","map","ensureDirectoryAsync","copyPublicFolderAsync","bundles","createBundlesAsync","resetCache","bundleEntries","Object","entries","length","printBundleSizes","fromEntries","key","value","undefined","hashes","fileNames","writeBundlesAsync","unstable_exportStaticAsync","includeMaps","exportServer","cssLinks","exportCssAssetsAsync","html","createTemplateHtmlFromExpoConfigAsync","scripts","modifyHtml","getVirtualFaviconAssetsAsync","fs","promises","writeFile","persistMetroAssetsAsync","assets","platform","outputDirectory","keys","exportAssetsAsync","writeAssetMapAsync","writeSourceMapsAsync","writeDebugHtmlAsync","writeMetadataJsonAsync","publicFolder","outputFolder","existsSync","copyAsync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/exportApp.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { exportAssetsAsync, exportCssAssetsAsync } from './exportAssets';\nimport { unstable_exportStaticAsync } from './exportStaticAsync';\nimport { getVirtualFaviconAssetsAsync } from './favicon';\nimport { createBundlesAsync } from './fork-bundleAsync';\nimport { getPublicExpoManifestAsync } from './getPublicExpoManifest';\nimport { persistMetroAssetsAsync } from './persistMetroAssets';\nimport { printBundleSizes } from './printBundleSizes';\nimport { Options } from './resolveOptions';\nimport {\n writeAssetMapAsync,\n writeBundlesAsync,\n writeDebugHtmlAsync,\n writeMetadataJsonAsync,\n writeSourceMapsAsync,\n} from './writeContents';\nimport * as Log from '../log';\nimport { createTemplateHtmlFromExpoConfigAsync } from '../start/server/webTemplate';\nimport { copyAsync, ensureDirectoryAsync } from '../utils/dir';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\n\n/**\n * The structure of the outputDir will be:\n *\n * ```\n * ├── assets\n * │ └── *\n * ├── bundles\n * │ ├── android-01ee6e3ab3e8c16a4d926c91808d5320.js\n * │ └── ios-ee8206cc754d3f7aa9123b7f909d94ea.js\n * └── metadata.json\n * ```\n */\nexport async function exportAppAsync(\n projectRoot: string,\n {\n platforms,\n outputDir,\n clear,\n dev,\n dumpAssetmap,\n dumpSourcemap,\n minify,\n }: Pick<\n Options,\n 'dumpAssetmap' | 'dumpSourcemap' | 'dev' | 'clear' | 'outputDir' | 'platforms' | 'minify'\n >\n): Promise<void> {\n setNodeEnv(dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const projectConfig = getConfig(projectRoot);\n const exp = await getPublicExpoManifestAsync(projectRoot, {\n // Web doesn't require validation.\n skipValidation: platforms.length === 1 && platforms[0] === 'web',\n });\n\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const basePath = (exp.experiments?.basePath?.replace(/\\/+$/, '') ?? '').trim();\n\n // Print out logs\n if (basePath) {\n Log.log();\n Log.log(chalk.gray`Using (experimental) base path: ${basePath}`);\n // Warn if not using an absolute path.\n if (!basePath.startsWith('/')) {\n Log.log(\n chalk.yellow` Base path does not start with a slash. Requests will not be absolute.`\n );\n }\n }\n\n const publicPath = path.resolve(projectRoot, env.EXPO_PUBLIC_FOLDER);\n\n const outputPath = path.resolve(projectRoot, outputDir);\n const staticFolder = outputPath;\n const assetsPath = path.join(staticFolder, 'assets');\n const bundlesPath = path.join(staticFolder, 'bundles');\n\n await Promise.all([assetsPath, bundlesPath].map(ensureDirectoryAsync));\n\n await copyPublicFolderAsync(publicPath, staticFolder);\n\n // Run metro bundler and create the JS bundles/source maps.\n const bundles = await createBundlesAsync(projectRoot, projectConfig, {\n clear: !!clear,\n platforms,\n minify,\n sourcemaps: dumpSourcemap,\n // TODO: Breaks asset exports\n // platforms: useServerRendering\n // ? platforms.filter((platform) => platform !== 'web')\n // : platforms,\n dev,\n });\n\n const bundleEntries = Object.entries(bundles);\n if (bundleEntries.length) {\n // Log bundle size info to the user\n printBundleSizes(\n Object.fromEntries(\n bundleEntries.map(([key, value]) => {\n if (!dumpSourcemap) {\n return [\n key,\n {\n ...value,\n // Remove source maps from the bundles if they aren't going to be written.\n map: undefined,\n },\n ];\n }\n\n return [key, value];\n })\n )\n );\n }\n\n // Write the JS bundles to disk, and get the bundle file names (this could change with async chunk loading support).\n const { hashes, fileNames } = await writeBundlesAsync({\n bundles,\n useServerRendering,\n outputDir: bundlesPath,\n });\n\n Log.log('Finished saving JS Bundles');\n\n if (platforms.includes('web')) {\n if (useServerRendering) {\n await unstable_exportStaticAsync(projectRoot, {\n outputDir: outputPath,\n minify,\n basePath,\n includeMaps: dumpSourcemap,\n // @ts-expect-error: server not on type yet\n exportServer: exp.web?.output === 'server',\n });\n Log.log('Finished saving static files');\n } else {\n const cssLinks = await exportCssAssetsAsync({\n outputDir,\n bundles,\n basePath,\n });\n let html = await createTemplateHtmlFromExpoConfigAsync(projectRoot, {\n scripts: [`${basePath}/bundles/${fileNames.web}`],\n cssLinks,\n });\n // Add the favicon assets to the HTML.\n const modifyHtml = await getVirtualFaviconAssetsAsync(projectRoot, {\n outputDir,\n basePath,\n });\n if (modifyHtml) {\n html = modifyHtml(html);\n }\n // Generate SPA-styled HTML file.\n // If web exists, then write the template HTML file.\n await fs.promises.writeFile(path.join(staticFolder, 'index.html'), html);\n }\n\n // TODO: Use a different mechanism for static web.\n if (bundles.web) {\n // Save assets like a typical bundler, preserving the file paths on web.\n // TODO: Update React Native Web to support loading files from asset hashes.\n await persistMetroAssetsAsync(bundles.web.assets, {\n platform: 'web',\n outputDirectory: staticFolder,\n basePath,\n });\n }\n }\n\n // Can be empty during web-only SSG.\n // TODO: Use same asset system across platforms again.\n if (Object.keys(fileNames).length) {\n const { assets } = await exportAssetsAsync(projectRoot, {\n exp,\n outputDir: staticFolder,\n bundles,\n });\n\n if (dumpAssetmap) {\n Log.log('Dumping asset map');\n await writeAssetMapAsync({ outputDir: staticFolder, assets });\n }\n // build source maps\n if (dumpSourcemap) {\n Log.log('Dumping source maps');\n await writeSourceMapsAsync({\n bundles,\n hashes,\n outputDir: bundlesPath,\n fileNames,\n });\n\n Log.log('Preparing additional debugging files');\n // If we output source maps, then add a debug HTML file which the user can open in\n // the web browser to inspect the output like web.\n await writeDebugHtmlAsync({\n outputDir: staticFolder,\n fileNames,\n });\n }\n\n // Generate a `metadata.json` and the export is complete.\n await writeMetadataJsonAsync({ outputDir: staticFolder, bundles, fileNames });\n }\n}\n\n/**\n * Copy the contents of the public folder into the output folder.\n * This enables users to add static files like `favicon.ico` or `serve.json`.\n *\n * The contents of this folder are completely universal since they refer to\n * static network requests which fall outside the scope of React Native's magic\n * platform resolution patterns.\n */\nasync function copyPublicFolderAsync(publicFolder: string, outputFolder: string) {\n if (fs.existsSync(publicFolder)) {\n await copyAsync(publicFolder, outputFolder);\n }\n}\n"],"names":["exportAppAsync","Log","projectRoot","platforms","outputDir","clear","dev","dumpAssetmap","dumpSourcemap","minify","exp","setNodeEnv","require","load","projectConfig","getConfig","getPublicExpoManifestAsync","skipValidation","length","useServerRendering","includes","web","output","basePath","experiments","replace","trim","log","chalk","gray","startsWith","yellow","publicPath","path","resolve","env","EXPO_PUBLIC_FOLDER","outputPath","staticFolder","assetsPath","join","bundlesPath","Promise","all","map","ensureDirectoryAsync","copyPublicFolderAsync","bundles","createBundlesAsync","sourcemaps","bundleEntries","Object","entries","printBundleSizes","fromEntries","key","value","undefined","hashes","fileNames","writeBundlesAsync","unstable_exportStaticAsync","includeMaps","exportServer","cssLinks","exportCssAssetsAsync","html","createTemplateHtmlFromExpoConfigAsync","scripts","modifyHtml","getVirtualFaviconAssetsAsync","fs","promises","writeFile","persistMetroAssetsAsync","assets","platform","outputDirectory","keys","exportAssetsAsync","writeAssetMapAsync","writeSourceMapsAsync","writeDebugHtmlAsync","writeMetadataJsonAsync","publicFolder","outputFolder","existsSync","copyAsync"],"mappings":"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"}