@expo/cli 0.2.5 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +17 -6
- package/build/bin/cli.map +1 -1
- package/build/src/install/checkPackages.js +2 -2
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +5 -2
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/register/registerAsync.js +2 -2
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/hints.js +2 -2
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +2 -2
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +2 -2
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/startBundler.js +2 -2
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +2 -2
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +2 -1
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +3 -3
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +1 -1
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +11 -6
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +7 -2
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +2 -2
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/startAsync.js +8 -8
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/analytics/rudderstackClient.js +28 -14
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -1
- package/build/src/utils/env.js +16 -0
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/git.js +2 -1
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/interactive.js +11 -0
- package/build/src/utils/interactive.js.map +1 -0
- package/build/src/utils/ora.js +2 -1
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/prompts.js +2 -2
- package/build/src/utils/prompts.js.map +1 -1
- package/package.json +5 -5
package/build/bin/cli
CHANGED
|
@@ -121,7 +121,7 @@ const args = (0, _arg).default({
|
|
|
121
121
|
});
|
|
122
122
|
if (args["--version"]) {
|
|
123
123
|
// Version is added in the build script.
|
|
124
|
-
console.log("0.2.
|
|
124
|
+
console.log("0.2.8");
|
|
125
125
|
process.exit(0);
|
|
126
126
|
}
|
|
127
127
|
if (args["--non-interactive"]) {
|
|
@@ -180,15 +180,15 @@ if (!isSubcommand) {
|
|
|
180
180
|
"build:android": "eas build -p android",
|
|
181
181
|
"client:install:ios": "npx expo start --ios",
|
|
182
182
|
"client:install:android": "npx expo start --android",
|
|
183
|
-
doctor: "expo doctor",
|
|
184
|
-
upgrade: "expo upgrade",
|
|
183
|
+
doctor: "expo-cli doctor",
|
|
184
|
+
upgrade: "expo-cli upgrade",
|
|
185
185
|
"customize:web": "npx expo customize",
|
|
186
186
|
publish: "eas update",
|
|
187
187
|
"publish:set": "eas update",
|
|
188
188
|
"publish:rollback": "eas update",
|
|
189
189
|
"publish:history": "eas update",
|
|
190
190
|
"publish:details": "eas update",
|
|
191
|
-
"build:web": "npx expo export",
|
|
191
|
+
"build:web": "npx expo export:web",
|
|
192
192
|
"credentials:manager": `eas credentials`,
|
|
193
193
|
"fetch:ios:certs": `eas credentials`,
|
|
194
194
|
"fetch:android:keystore": `eas credentials`,
|
|
@@ -208,6 +208,7 @@ if (!isSubcommand) {
|
|
|
208
208
|
"upload:android": `eas submit -p android`,
|
|
209
209
|
"upload:ios": `eas submit -p ios`
|
|
210
210
|
};
|
|
211
|
+
// TODO: Log telemetry about invalid command used.
|
|
211
212
|
const subcommand = args._[0];
|
|
212
213
|
if (subcommand in migrationMap) {
|
|
213
214
|
const replacement = migrationMap[subcommand];
|
|
@@ -238,7 +239,17 @@ process.on("SIGINT", ()=>process.exit(0)
|
|
|
238
239
|
);
|
|
239
240
|
process.on("SIGTERM", ()=>process.exit(0)
|
|
240
241
|
);
|
|
241
|
-
commands[command]().then((exec)=>
|
|
242
|
-
);
|
|
242
|
+
commands[command]().then((exec)=>{
|
|
243
|
+
exec(commandArgs);
|
|
244
|
+
// NOTE(EvanBacon): Track some basic telemetry events indicating the command
|
|
245
|
+
// that was run. This can be disabled with the $EXPO_NO_TELEMETRY environment variable.
|
|
246
|
+
// We do this to determine how well deprecations are going before removing a command.
|
|
247
|
+
const { logEventAsync } = require("../src/utils/analytics/rudderstackClient");
|
|
248
|
+
logEventAsync("action", {
|
|
249
|
+
action: `expo ${command}`,
|
|
250
|
+
source: "expo/cli",
|
|
251
|
+
source_version: "0.2.8"
|
|
252
|
+
});
|
|
253
|
+
});
|
|
243
254
|
|
|
244
255
|
//# 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 '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\n // Auxiliary commands\n install: () => 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 export: _export,\n config,\n customize,\n prebuild,\n 'run:ios': runIos,\n 'run:android': runAndroid,\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 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: 'expo doctor',\n upgrade: 'expo 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',\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 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) => exec(commandArgs));\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","install","expoInstall","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","others","Object","keys","join","migrationMap","init","eject","web","doctor","upgrade","publish","url","webhooks","subcommand","replacement","deprecated","includes","command","commandArgs","slice","push","on","exec"],"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 '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\n // Auxiliary commands\n install: () => 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 export: _export,\n config,\n customize,\n prebuild,\n 'run:ios': runIos,\n 'run:android': runAndroid,\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: 'expo-cli 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","install","expoInstall","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","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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"}
|
|
@@ -7,7 +7,7 @@ var _config = require("@expo/config");
|
|
|
7
7
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
8
|
var Log = _interopRequireWildcard(require("../log"));
|
|
9
9
|
var _validateDependenciesVersions = require("../start/doctor/dependencies/validateDependenciesVersions");
|
|
10
|
-
var
|
|
10
|
+
var _interactive = require("../utils/interactive");
|
|
11
11
|
var _prompts = require("../utils/prompts");
|
|
12
12
|
var _installAsync = require("./installAsync");
|
|
13
13
|
function _interopRequireDefault(obj) {
|
|
@@ -51,7 +51,7 @@ async function checkPackagesAsync(projectRoot, { packages , packageManager , opt
|
|
|
51
51
|
(0, _validateDependenciesVersions).logIncorrectDependencies(dependencies);
|
|
52
52
|
const value = // If `--fix` then always fix.
|
|
53
53
|
fix || // Otherwise prompt to fix when not running in CI.
|
|
54
|
-
(
|
|
54
|
+
((0, _interactive).isInteractive() && await (0, _prompts).confirmAsync({
|
|
55
55
|
message: "Fix dependencies?"
|
|
56
56
|
}).catch(()=>false
|
|
57
57
|
));
|
|
@@ -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 {
|
|
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 { isInteractive } from '../utils/interactive';\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 (isInteractive() && (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","isInteractive","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;AACpC,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AACvB,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,CAACc,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,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;IAEjG,IAAIJ,KAAK,EAAE;QACT,gFAAgF;QAChF,MAAMK,iBAAiB,GAAGZ,YAAY,CAACa,GAAG,CAAC,CAACC,UAAU,GAAKA,UAAU,CAACC,WAAW;QAAA,CAAC,AAAC;QACnF3B,KAAK,CAAC,gCAAgC,EAAEwB,iBAAiB,CAAC,CAAC;QAC3D,sCAAsC;QACtC,OAAOI,CAAAA,GAAAA,aAAoB,AAKzB,CAAA,qBALyB,CAAC1B,WAAW,EAAE;YACvCE,cAAc;YACdD,QAAQ,EAAEqB,iBAAiB;YAC3BjB,uBAAuB;YACvBsB,UAAU,EAAErB,GAAG,CAACqB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3E9B,GAAG,CAACgB,IAAI,CAACC,MAAK,QAAA,CAACc,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}
|
|
@@ -13,7 +13,7 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
13
13
|
var _path = _interopRequireDefault(require("path"));
|
|
14
14
|
var Log = _interopRequireWildcard(require("../log"));
|
|
15
15
|
var _dir = require("../utils/dir");
|
|
16
|
-
var
|
|
16
|
+
var _interactive = require("../utils/interactive");
|
|
17
17
|
var _ora = require("../utils/ora");
|
|
18
18
|
var _prompts = require("../utils/prompts");
|
|
19
19
|
function _interopRequireDefault(obj) {
|
|
@@ -122,11 +122,14 @@ async function promptToClearMalformedNativeProjectsAsync(projectRoot, checkPlatf
|
|
|
122
122
|
const message = platforms.length > 1 ? `The ${displayPlatforms[0]} and ${displayPlatforms[1]} projects are malformed` : `The ${displayPlatforms[0]} project is malformed`;
|
|
123
123
|
if (// If the process is non-interactive, default to clearing the malformed native project.
|
|
124
124
|
// This would only happen on re-running eject.
|
|
125
|
-
|
|
125
|
+
!(0, _interactive).isInteractive() || // Prompt to clear the native folders.
|
|
126
126
|
(await (0, _prompts).confirmAsync({
|
|
127
127
|
message: `${message}, would you like to clear the project files and reinitialize them?`,
|
|
128
128
|
initial: true
|
|
129
129
|
}))) {
|
|
130
|
+
if (!(0, _interactive).isInteractive()) {
|
|
131
|
+
Log.warn(`${message}, project files will be cleared and reinitialized.`);
|
|
132
|
+
}
|
|
130
133
|
await clearNativeFolder(projectRoot, platforms);
|
|
131
134
|
} else {
|
|
132
135
|
// Warn the user that the process may fail.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prebuild/clearNativeFolder.ts"],"sourcesContent":["import { AndroidConfig, IOSConfig, ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { directoryExistsAsync } from '../utils/dir';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/prebuild/clearNativeFolder.ts"],"sourcesContent":["import { AndroidConfig, IOSConfig, ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { directoryExistsAsync } from '../utils/dir';\nimport { isInteractive } from '../utils/interactive';\nimport { logNewSection } from '../utils/ora';\nimport { confirmAsync } from '../utils/prompts';\n\n/** Delete the input native folders and print a loading step. */\nexport async function clearNativeFolder(projectRoot: string, folders: string[]) {\n const step = logNewSection(`Clearing ${folders.join(', ')}`);\n try {\n await Promise.all(\n folders.map((folderName) =>\n fs.promises.rm(path.join(projectRoot, folderName), {\n recursive: true,\n force: true,\n })\n )\n );\n step.succeed(`Cleared ${folders.join(', ')} code`);\n } catch (error: any) {\n step.fail(`Failed to delete ${folders.join(', ')} code: ${error.message}`);\n throw error;\n }\n}\n\n/**\n * Returns `true` if a certain subset of required Android project files are intact.\n *\n * This isn't perfect but it serves the purpose of indicating that the user should\n * be warned to nuke the project files, most commonly when git is cleared and the root folder\n * remains in memory.\n */\nexport async function hasRequiredAndroidFilesAsync(projectRoot: string): Promise<boolean> {\n try {\n await Promise.all([\n AndroidConfig.Paths.getAppBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getProjectBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getAndroidManifestAsync(projectRoot),\n AndroidConfig.Paths.getMainApplicationAsync(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Returns `true` if a certain subset of required iOS project files are intact. */\nexport async function hasRequiredIOSFilesAsync(projectRoot: string) {\n try {\n // If any of the following required files are missing, then the project is malformed.\n await Promise.all([\n IOSConfig.Paths.getAppDelegate(projectRoot),\n IOSConfig.Paths.getAllXcodeProjectPaths(projectRoot),\n IOSConfig.Paths.getAllInfoPlistPaths(projectRoot),\n IOSConfig.Paths.getAllPBXProjectPaths(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter out platforms that do not have an existing platform folder.\n * If the user wants to validate that neither of ['ios', 'android'] are malformed then we should\n * first check that both `ios` and `android` folders exist.\n *\n * This optimization prevents us from prompting to clear a \"malformed\" project that doesn't exist yet.\n */\nasync function filterPlatformsThatDoNotExistAsync(\n projectRoot: string,\n platforms: ModPlatform[]\n): Promise<ModPlatform[]> {\n const valid = await Promise.all(\n platforms.map(async (platform) => {\n if (await directoryExistsAsync(path.join(projectRoot, platform))) {\n return platform;\n }\n return null;\n })\n );\n return valid.filter(Boolean) as ModPlatform[];\n}\n\n/** Get a list of native platforms that have existing directories which contain malformed projects. */\nexport async function getMalformedNativeProjectsAsync(\n projectRoot: string,\n platforms: ModPlatform[]\n): Promise<ModPlatform[]> {\n const VERIFIERS: Record<ModPlatform, (root: string) => Promise<boolean>> = {\n android: hasRequiredAndroidFilesAsync,\n ios: hasRequiredIOSFilesAsync,\n };\n\n const checkPlatforms = await filterPlatformsThatDoNotExistAsync(projectRoot, platforms);\n return (\n await Promise.all(\n checkPlatforms.map(async (platform) => {\n if (await VERIFIERS[platform](projectRoot)) {\n return false;\n }\n return platform;\n })\n )\n ).filter(Boolean) as ModPlatform[];\n}\n\nexport async function promptToClearMalformedNativeProjectsAsync(\n projectRoot: string,\n checkPlatforms: ModPlatform[]\n) {\n const platforms = await getMalformedNativeProjectsAsync(projectRoot, checkPlatforms);\n\n if (!platforms.length) {\n return;\n }\n\n const displayPlatforms = platforms.map((platform) => chalk.cyan(platform));\n // Prompt which platforms to reset.\n const message =\n platforms.length > 1\n ? `The ${displayPlatforms[0]} and ${displayPlatforms[1]} projects are malformed`\n : `The ${displayPlatforms[0]} project is malformed`;\n\n if (\n // If the process is non-interactive, default to clearing the malformed native project.\n // This would only happen on re-running eject.\n !isInteractive() ||\n // Prompt to clear the native folders.\n (await confirmAsync({\n message: `${message}, would you like to clear the project files and reinitialize them?`,\n initial: true,\n }))\n ) {\n if (!isInteractive()) {\n Log.warn(`${message}, project files will be cleared and reinitialized.`);\n }\n await clearNativeFolder(projectRoot, platforms);\n } else {\n // Warn the user that the process may fail.\n Log.warn('Continuing with malformed native projects');\n }\n}\n"],"names":["clearNativeFolder","hasRequiredAndroidFilesAsync","hasRequiredIOSFilesAsync","getMalformedNativeProjectsAsync","promptToClearMalformedNativeProjectsAsync","Log","projectRoot","folders","step","logNewSection","join","Promise","all","map","folderName","fs","promises","rm","path","recursive","force","succeed","error","fail","message","AndroidConfig","Paths","getAppBuildGradleAsync","getProjectBuildGradleAsync","getAndroidManifestAsync","getMainApplicationAsync","IOSConfig","getAppDelegate","getAllXcodeProjectPaths","getAllInfoPlistPaths","getAllPBXProjectPaths","filterPlatformsThatDoNotExistAsync","platforms","valid","platform","directoryExistsAsync","filter","Boolean","VERIFIERS","android","ios","checkPlatforms","length","displayPlatforms","chalk","cyan","isInteractive","confirmAsync","initial","warn"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.registerAsync = registerAsync;
|
|
6
6
|
var _betterOpn = _interopRequireDefault(require("better-opn"));
|
|
7
|
-
var _env = require("../utils/env");
|
|
8
7
|
var _errors = require("../utils/errors");
|
|
8
|
+
var _interactive = require("../utils/interactive");
|
|
9
9
|
var _link = require("../utils/link");
|
|
10
10
|
var _ora = require("../utils/ora");
|
|
11
11
|
function _interopRequireDefault(obj) {
|
|
@@ -14,7 +14,7 @@ function _interopRequireDefault(obj) {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
async function registerAsync() {
|
|
17
|
-
if (
|
|
17
|
+
if (!(0, _interactive).isInteractive()) {
|
|
18
18
|
throw new _errors.CommandError("NON_INTERACTIVE", `Cannot register an account in CI. Use the EXPO_TOKEN environment variable to authenticate in CI (${(0, _link).learnMore("https://docs.expo.dev/accounts/programmatic-access/")})`);
|
|
19
19
|
}
|
|
20
20
|
const registrationUrl = `https://expo.dev/signup`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/register/registerAsync.ts"],"sourcesContent":["import openBrowserAsync from 'better-opn';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/register/registerAsync.ts"],"sourcesContent":["import openBrowserAsync from 'better-opn';\n\nimport { CommandError } from '../utils/errors';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { ora } from '../utils/ora';\n\nexport async function registerAsync() {\n if (!isInteractive()) {\n throw new CommandError(\n 'NON_INTERACTIVE',\n `Cannot register an account in CI. Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n )})`\n );\n }\n\n const registrationUrl = `https://expo.dev/signup`;\n const failedMessage = `Unable to open a web browser. Register an account at: ${registrationUrl}`;\n const spinner = ora(`Opening ${registrationUrl}`).start();\n try {\n const opened = await openBrowserAsync(registrationUrl);\n\n if (opened) {\n spinner.succeed(`Opened ${registrationUrl}`);\n } else {\n spinner.fail(failedMessage);\n }\n return;\n } catch (error) {\n spinner.fail(failedMessage);\n throw error;\n }\n}\n"],"names":["registerAsync","isInteractive","CommandError","learnMore","registrationUrl","failedMessage","spinner","ora","start","opened","openBrowserAsync","succeed","fail","error"],"mappings":"AAAA;;;;QAOsBA,aAAa,GAAbA,aAAa;AAPN,IAAA,UAAY,kCAAZ,YAAY,EAAA;AAEZ,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAChB,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AAC1B,IAAA,KAAe,WAAf,eAAe,CAAA;AACrB,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;AAE3B,eAAeA,aAAa,GAAG;IACpC,IAAI,CAACC,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;QACpB,MAAM,IAAIC,OAAY,aAAA,CACpB,iBAAiB,EACjB,CAAC,iGAAiG,EAAEC,CAAAA,GAAAA,KAAS,AAE5G,CAAA,UAF4G,CAC3G,qDAAqD,CACtD,CAAC,CAAC,CAAC,CACL,CAAC;KACH;IAED,MAAMC,eAAe,GAAG,CAAC,uBAAuB,CAAC,AAAC;IAClD,MAAMC,aAAa,GAAG,CAAC,sDAAsD,EAAED,eAAe,CAAC,CAAC,AAAC;IACjG,MAAME,OAAO,GAAGC,CAAAA,GAAAA,IAAG,AAA8B,CAAA,IAA9B,CAAC,CAAC,QAAQ,EAAEH,eAAe,CAAC,CAAC,CAAC,CAACI,KAAK,EAAE,AAAC;IAC1D,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,UAAgB,AAAiB,CAAA,QAAjB,CAACN,eAAe,CAAC,AAAC;QAEvD,IAAIK,MAAM,EAAE;YACVH,OAAO,CAACK,OAAO,CAAC,CAAC,OAAO,EAAEP,eAAe,CAAC,CAAC,CAAC,CAAC;SAC9C,MAAM;YACLE,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;SAC7B;QACD,OAAO;KACR,CAAC,OAAOQ,KAAK,EAAE;QACdP,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;QAC5B,MAAMQ,KAAK,CAAC;KACb;CACF"}
|
package/build/src/run/hints.js
CHANGED
|
@@ -6,7 +6,7 @@ exports.logDeviceArgument = logDeviceArgument;
|
|
|
6
6
|
exports.logProjectLogsLocation = logProjectLogsLocation;
|
|
7
7
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
8
|
var _log = require("../log");
|
|
9
|
-
var
|
|
9
|
+
var _interactive = require("../utils/interactive");
|
|
10
10
|
function _interopRequireDefault(obj) {
|
|
11
11
|
return obj && obj.__esModule ? obj : {
|
|
12
12
|
default: obj
|
|
@@ -16,7 +16,7 @@ function logDeviceArgument(id) {
|
|
|
16
16
|
_log.Log.log(_chalk.default.dim`› Using --device ${id}`);
|
|
17
17
|
}
|
|
18
18
|
function logProjectLogsLocation() {
|
|
19
|
-
_log.Log.log(_chalk.default`\n› Logs for your project will appear below.${
|
|
19
|
+
_log.Log.log(_chalk.default`\n› Logs for your project will appear below.${(0, _interactive).isInteractive() ? _chalk.default.dim(` Press Ctrl+C to exit.`) : ""}`);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
//# sourceMappingURL=hints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/run/hints.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { Log } from '../log';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/run/hints.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { Log } from '../log';\nimport { isInteractive } from '../utils/interactive';\n\n/** Log the device argument to use for the next run: `Using --device foobar` */\nexport function logDeviceArgument(id: string) {\n Log.log(chalk.dim`› Using --device ${id}`);\n}\n\nexport function logProjectLogsLocation() {\n Log.log(\n chalk`\\n› Logs for your project will appear below.${\n isInteractive() ? chalk.dim(` Press Ctrl+C to exit.`) : ''\n }`\n );\n}\n"],"names":["logDeviceArgument","logProjectLogsLocation","id","Log","log","chalk","dim","isInteractive"],"mappings":"AAAA;;;;QAMgBA,iBAAiB,GAAjBA,iBAAiB;QAIjBC,sBAAsB,GAAtBA,sBAAsB;AAVpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAQ,WAAR,QAAQ,CAAA;AACE,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;;;;;;AAG7C,SAASD,iBAAiB,CAACE,EAAU,EAAE;IAC5CC,IAAG,IAAA,CAACC,GAAG,CAACC,MAAK,QAAA,CAACC,GAAG,CAAC,mBAAmB,EAAEJ,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C;AAEM,SAASD,sBAAsB,GAAG;IACvCE,IAAG,IAAA,CAACC,GAAG,CACLC,MAAK,QAAA,CAAC,8CAA4C,EAChDE,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,GAAGF,MAAK,QAAA,CAACC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAC3D,CAAC,CACH,CAAC;CACH"}
|
|
@@ -8,8 +8,8 @@ var _chalk = _interopRequireDefault(require("chalk"));
|
|
|
8
8
|
var _os = _interopRequireDefault(require("os"));
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _dir = require("../../../utils/dir");
|
|
11
|
-
var _env = require("../../../utils/env");
|
|
12
11
|
var _errors = require("../../../utils/errors");
|
|
12
|
+
var _interactive = require("../../../utils/interactive");
|
|
13
13
|
var _ora = require("../../../utils/ora");
|
|
14
14
|
var _prompts = require("../../../utils/prompts");
|
|
15
15
|
var AppleDevice = _interopRequireWildcard(require("./AppleDevice"));
|
|
@@ -75,7 +75,7 @@ async function installOnDeviceAsync(props) {
|
|
|
75
75
|
var ref;
|
|
76
76
|
// Get the app name from the binary path.
|
|
77
77
|
const appName = (ref = _path.default.basename(bundle).split(".")[0]) != null ? ref : "app";
|
|
78
|
-
if (
|
|
78
|
+
if ((0, _interactive).isInteractive() && await (0, _prompts).confirmAsync({
|
|
79
79
|
message: `Cannot launch ${appName} because the device is locked. Unlock ${deviceName} to continue...`,
|
|
80
80
|
initial: true
|
|
81
81
|
})) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/appleDevice/installOnDeviceAsync.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Ora } from 'ora';\nimport os from 'os';\nimport path from 'path';\n\nimport { ensureDirectory } from '../../../utils/dir';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/appleDevice/installOnDeviceAsync.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Ora } from 'ora';\nimport os from 'os';\nimport path from 'path';\n\nimport { ensureDirectory } from '../../../utils/dir';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { ora } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\nimport * as AppleDevice from './AppleDevice';\n\n/** Get the app_delta folder for faster subsequent rebuilds on devices. */\nexport function getAppDeltaDirectory(bundleId: string): string {\n // TODO: Maybe use .expo folder instead for debugging\n // TODO: Reuse existing folder from xcode?\n const deltaFolder = path.join(os.tmpdir(), 'ios', 'app-delta', bundleId);\n ensureDirectory(deltaFolder);\n return deltaFolder;\n}\n\n/**\n * Wraps the apple device method for installing and running an app,\n * adds indicator and retry loop for when the device is locked.\n */\nexport async function installOnDeviceAsync(props: {\n bundle: string;\n bundleIdentifier: string;\n appDeltaDirectory: string;\n udid: string;\n deviceName: string;\n}): Promise<void> {\n const { bundle, bundleIdentifier, appDeltaDirectory, udid, deviceName } = props;\n let indicator: Ora | undefined;\n\n try {\n // TODO: Connect for logs\n await AppleDevice.runOnDevice({\n udid,\n appPath: bundle,\n bundleId: bundleIdentifier,\n waitForApp: false,\n deltaPath: appDeltaDirectory,\n onProgress({\n status,\n isComplete,\n progress,\n }: {\n status: string;\n isComplete: boolean;\n progress: number;\n }) {\n if (!indicator) {\n indicator = ora(status).start();\n }\n indicator.text = `${chalk.bold(status)} ${progress}%`;\n if (isComplete) {\n indicator.succeed();\n }\n },\n });\n } catch (error: any) {\n if (indicator) {\n indicator.fail();\n }\n if (error.code === 'APPLE_DEVICE_LOCKED') {\n // Get the app name from the binary path.\n const appName = path.basename(bundle).split('.')[0] ?? 'app';\n if (\n isInteractive() &&\n (await confirmAsync({\n message: `Cannot launch ${appName} because the device is locked. Unlock ${deviceName} to continue...`,\n initial: true,\n }))\n ) {\n return installOnDeviceAsync(props);\n }\n throw new CommandError(\n `Cannot launch ${appName} on ${deviceName} because the device is locked.`\n );\n }\n throw error;\n }\n}\n"],"names":["getAppDeltaDirectory","installOnDeviceAsync","AppleDevice","bundleId","deltaFolder","path","join","os","tmpdir","ensureDirectory","props","bundle","bundleIdentifier","appDeltaDirectory","udid","deviceName","indicator","runOnDevice","appPath","waitForApp","deltaPath","onProgress","status","isComplete","progress","ora","start","text","chalk","bold","succeed","error","fail","code","appName","basename","split","isInteractive","confirmAsync","message","initial","CommandError"],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ exports.resolveCertificateSigningIdentityAsync = resolveCertificateSigningIdenti
|
|
|
7
7
|
exports.selectDevelopmentTeamAsync = selectDevelopmentTeamAsync;
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
9
|
var Log = _interopRequireWildcard(require("../../../log"));
|
|
10
|
-
var _env = require("../../../utils/env");
|
|
11
10
|
var _errors = require("../../../utils/errors");
|
|
11
|
+
var _interactive = require("../../../utils/interactive");
|
|
12
12
|
var _link = require("../../../utils/link");
|
|
13
13
|
var _prompts = require("../../../utils/prompts");
|
|
14
14
|
var Security = _interopRequireWildcard(require("./Security"));
|
|
@@ -69,7 +69,7 @@ async function resolveCertificateSigningIdentityAsync(ids) {
|
|
|
69
69
|
// One ID available 🤝 Program is not interactive
|
|
70
70
|
//
|
|
71
71
|
// using the the first available option
|
|
72
|
-
if (ids.length === 1 ||
|
|
72
|
+
if (ids.length === 1 || !(0, _interactive).isInteractive()) {
|
|
73
73
|
// This method is cheaper than `resolveIdentitiesAsync` and checking the
|
|
74
74
|
// cached user preference so we should use this as early as possible.
|
|
75
75
|
return Security.resolveCertificateSigningInfoAsync(ids[0]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/resolveCertificateSigningIdentity.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Log from '../../../log';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/run/ios/codeSigning/resolveCertificateSigningIdentity.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { learnMore } from '../../../utils/link';\nimport { selectAsync } from '../../../utils/prompts';\nimport * as Security from './Security';\nimport { getLastDeveloperCodeSigningIdAsync, setLastDeveloperCodeSigningIdAsync } from './settings';\n\n/**\n * Sort the code signing items so the last selected item (user's default) is the first suggested.\n */\nexport async function sortDefaultIdToBeginningAsync(\n identities: Security.CertificateSigningInfo[]\n): Promise<[Security.CertificateSigningInfo[], string | null]> {\n const lastSelected = await getLastDeveloperCodeSigningIdAsync();\n\n if (lastSelected) {\n let iterations = 0;\n while (identities[0].signingCertificateId !== lastSelected && iterations < identities.length) {\n identities.push(identities.shift()!);\n iterations++;\n }\n }\n return [identities, lastSelected];\n}\n\n/**\n * Assert that the computer needs code signing setup.\n * This links to an FYI page that was user tested internally.\n */\nfunction assertCodeSigningSetup(): never {\n // TODO: We can probably do this too automatically.\n Log.log(\n `\\u203A Your computer requires some additional setup before you can build onto physical iOS devices.\\n ${chalk.bold(\n learnMore('https://expo.fyi/setup-xcode-signing')\n )}`\n );\n\n throw new CommandError('No code signing certificates are available to use.');\n}\n\n/**\n * Resolve the best certificate signing identity from a given list of IDs.\n * - If no IDs: Assert that the user has to setup code signing.\n * - If one ID: Return the first ID.\n * - If multiple IDs: Ask the user to select one, then store the value to be suggested first next time (since users generally use the same ID).\n */\nexport async function resolveCertificateSigningIdentityAsync(\n ids: string[]\n): Promise<Security.CertificateSigningInfo> {\n // The user has no valid code signing identities.\n if (!ids.length) {\n assertCodeSigningSetup();\n }\n\n // One ID available 🤝 Program is not interactive\n //\n // using the the first available option\n if (ids.length === 1 || !isInteractive()) {\n // This method is cheaper than `resolveIdentitiesAsync` and checking the\n // cached user preference so we should use this as early as possible.\n return Security.resolveCertificateSigningInfoAsync(ids[0]);\n }\n\n // Get identities and sort by the one that the user is most likely to choose.\n const [identities, preferred] = await sortDefaultIdToBeginningAsync(\n await Security.resolveIdentitiesAsync(ids)\n );\n\n const selected = await selectDevelopmentTeamAsync(identities, preferred);\n\n // Store the last used value and suggest it as the first value\n // next time the user has to select a code signing identity.\n await setLastDeveloperCodeSigningIdAsync(selected.signingCertificateId);\n\n return selected;\n}\n\n/** Prompt the user to select a development team, highlighting the preferred value based on the user history. */\nexport async function selectDevelopmentTeamAsync(\n identities: Security.CertificateSigningInfo[],\n preferredId: string | null\n): Promise<Security.CertificateSigningInfo> {\n const index = await selectAsync(\n 'Development team for signing the app',\n identities.map((value, i) => {\n const format =\n value.signingCertificateId === preferredId ? chalk.bold : (message: string) => message;\n return {\n // Formatted like: `650 Industries, Inc. (A1BCDEF234) - Apple Development: Evan Bacon (AA00AABB0A)`\n title: format(\n [value.appleTeamName, `(${value.appleTeamId}) -`, value.codeSigningInfo].join(' ')\n ),\n value: i,\n };\n })\n );\n\n return identities[index];\n}\n"],"names":["sortDefaultIdToBeginningAsync","resolveCertificateSigningIdentityAsync","selectDevelopmentTeamAsync","Log","Security","identities","lastSelected","getLastDeveloperCodeSigningIdAsync","iterations","signingCertificateId","length","push","shift","assertCodeSigningSetup","log","chalk","bold","learnMore","CommandError","ids","isInteractive","resolveCertificateSigningInfoAsync","preferred","resolveIdentitiesAsync","selected","setLastDeveloperCodeSigningIdAsync","preferredId","index","selectAsync","map","value","i","format","message","title","appleTeamName","appleTeamId","codeSigningInfo","join"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ var _chalk = _interopRequireDefault(require("chalk"));
|
|
|
8
8
|
var Log = _interopRequireWildcard(require("../log"));
|
|
9
9
|
var _startInterface = require("../start/interface/startInterface");
|
|
10
10
|
var _devServerManager = require("../start/server/DevServerManager");
|
|
11
|
-
var
|
|
11
|
+
var _interactive = require("../utils/interactive");
|
|
12
12
|
function _interopRequireDefault(obj) {
|
|
13
13
|
return obj && obj.__esModule ? obj : {
|
|
14
14
|
default: obj
|
|
@@ -53,7 +53,7 @@ async function startBundlerAsync(projectRoot, { port , headless , scheme }) {
|
|
|
53
53
|
},
|
|
54
54
|
]);
|
|
55
55
|
// Present the Terminal UI.
|
|
56
|
-
if (!headless &&
|
|
56
|
+
if (!headless && (0, _interactive).isInteractive()) {
|
|
57
57
|
// Only read the config if we are going to use the results.
|
|
58
58
|
const { exp } = (0, _config).getConfig(projectRoot, {
|
|
59
59
|
// We don't need very many fields here, just use the lightest possible read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/run/startBundler.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { startInterfaceAsync } from '../start/interface/startInterface';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/run/startBundler.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { startInterfaceAsync } from '../start/interface/startInterface';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport { isInteractive } from '../utils/interactive';\n\nexport async function startBundlerAsync(\n projectRoot: string,\n {\n port,\n headless,\n scheme,\n }: {\n port: number;\n headless?: boolean;\n scheme?: string;\n }\n): Promise<DevServerManager> {\n const options = {\n port,\n headless,\n devClient: true,\n\n location: {\n scheme,\n },\n };\n\n const devServerManager = new DevServerManager(projectRoot, options);\n\n await devServerManager.startAsync([\n {\n // TODO: Allow swapping this value for another bundler.\n type: 'metro',\n options,\n },\n ]);\n\n // Present the Terminal UI.\n if (!headless && isInteractive()) {\n // Only read the config if we are going to use the results.\n const { exp } = getConfig(projectRoot, {\n // We don't need very many fields here, just use the lightest possible read.\n skipSDKVersionRequirement: true,\n skipPlugins: true,\n });\n await startInterfaceAsync(devServerManager, {\n platforms: exp.platforms ?? [],\n });\n } else {\n // Display the server location in CI...\n const url = devServerManager.getDefaultDevServer()?.getDevServerUrl();\n if (url) {\n Log.log(chalk`Waiting on {underline ${url}}`);\n }\n }\n return devServerManager;\n}\n"],"names":["startBundlerAsync","Log","projectRoot","port","headless","scheme","options","devClient","location","devServerManager","DevServerManager","startAsync","type","isInteractive","exp","getConfig","skipSDKVersionRequirement","skipPlugins","startInterfaceAsync","platforms","url","getDefaultDevServer","getDevServerUrl","log","chalk"],"mappings":"AAAA;;;;QAQsBA,iBAAiB,GAAjBA,iBAAiB;AARb,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACqB,IAAA,eAAmC,WAAnC,mCAAmC,CAAA;AACtC,IAAA,iBAAkC,WAAlC,kCAAkC,CAAA;AACrC,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE7C,eAAeD,iBAAiB,CACrCE,WAAmB,EACnB,EACEC,IAAI,CAAA,EACJC,QAAQ,CAAA,EACRC,MAAM,CAAA,EAKP,EAC0B;IAC3B,MAAMC,OAAO,GAAG;QACdH,IAAI;QACJC,QAAQ;QACRG,SAAS,EAAE,IAAI;QAEfC,QAAQ,EAAE;YACRH,MAAM;SACP;KACF,AAAC;IAEF,MAAMI,gBAAgB,GAAG,IAAIC,iBAAgB,iBAAA,CAACR,WAAW,EAAEI,OAAO,CAAC,AAAC;IAEpE,MAAMG,gBAAgB,CAACE,UAAU,CAAC;QAChC;YACE,uDAAuD;YACvDC,IAAI,EAAE,OAAO;YACbN,OAAO;SACR;KACF,CAAC,CAAC;IAEH,2BAA2B;IAC3B,IAAI,CAACF,QAAQ,IAAIS,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;QAChC,2DAA2D;QAC3D,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAIvB,CAAA,UAJuB,CAACb,WAAW,EAAE;YACrC,4EAA4E;YAC5Ec,yBAAyB,EAAE,IAAI;YAC/BC,WAAW,EAAE,IAAI;SAClB,CAAC,AAAC;YAEUH,UAAa;QAD1B,MAAMI,CAAAA,GAAAA,eAAmB,AAEvB,CAAA,oBAFuB,CAACT,gBAAgB,EAAE;YAC1CU,SAAS,EAAEL,CAAAA,UAAa,GAAbA,GAAG,CAACK,SAAS,YAAbL,UAAa,GAAI,EAAE;SAC/B,CAAC,CAAC;KACJ,MAAM;YAEOL,GAAsC;QADlD,uCAAuC;QACvC,MAAMW,GAAG,GAAGX,CAAAA,GAAsC,GAAtCA,gBAAgB,CAACY,mBAAmB,EAAE,SAAiB,GAAvDZ,KAAAA,CAAuD,GAAvDA,GAAsC,CAAEa,eAAe,EAAE,AAAC;QACtE,IAAIF,GAAG,EAAE;YACPnB,GAAG,CAACsB,GAAG,CAACC,MAAK,QAAA,CAAC,sBAAsB,EAAEJ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C;KACF;IACD,OAAOX,gBAAgB,CAAC;CACzB"}
|
|
@@ -9,8 +9,8 @@ var _chalk = _interopRequireDefault(require("chalk"));
|
|
|
9
9
|
var _wrapAnsi = _interopRequireDefault(require("wrap-ansi"));
|
|
10
10
|
var _installAsync = require("../../../install/installAsync");
|
|
11
11
|
var Log = _interopRequireWildcard(require("../../../log"));
|
|
12
|
-
var _env = require("../../../utils/env");
|
|
13
12
|
var _errors = require("../../../utils/errors");
|
|
13
|
+
var _interactive = require("../../../utils/interactive");
|
|
14
14
|
var _ora = require("../../../utils/ora");
|
|
15
15
|
var _prompts = require("../../../utils/prompts");
|
|
16
16
|
var _getMissingPackages = require("./getMissingPackages");
|
|
@@ -41,7 +41,7 @@ function _interopRequireWildcard(obj) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
async function ensureDependenciesAsync(projectRoot, { exp =(0, _config).getConfig(projectRoot).exp , requiredPackages , warningMessage , installMessage , // Don't prompt in CI
|
|
44
|
-
skipPrompt
|
|
44
|
+
skipPrompt =!(0, _interactive).isInteractive() }) {
|
|
45
45
|
const { missing } = await (0, _getMissingPackages).getMissingPackagesAsync(projectRoot, {
|
|
46
46
|
sdkVersion: exp.sdkVersion,
|
|
47
47
|
requiredPackages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/ensureDependenciesAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport wrapAnsi from 'wrap-ansi';\n\nimport { installAsync } from '../../../install/installAsync';\nimport * as Log from '../../../log';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/ensureDependenciesAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport wrapAnsi from 'wrap-ansi';\n\nimport { installAsync } from '../../../install/installAsync';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { isInteractive } from '../../../utils/interactive';\nimport { logNewSection } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\nimport { getMissingPackagesAsync, ResolvedPackage } from './getMissingPackages';\n\nexport async function ensureDependenciesAsync(\n projectRoot: string,\n {\n exp = getConfig(projectRoot).exp,\n requiredPackages,\n warningMessage,\n installMessage,\n // Don't prompt in CI\n skipPrompt = !isInteractive(),\n }: {\n exp?: ExpoConfig;\n installMessage: string;\n warningMessage: string;\n requiredPackages: ResolvedPackage[];\n skipPrompt?: boolean;\n }\n): Promise<boolean> {\n const { missing } = await getMissingPackagesAsync(projectRoot, {\n sdkVersion: exp.sdkVersion,\n requiredPackages,\n });\n if (!missing.length) {\n return true;\n }\n\n // Prompt to install or bail out...\n const readableMissingPackages = missing\n .map(({ pkg, version }) => (version ? [pkg, version].join('@') : pkg))\n .join(', ');\n\n let title = installMessage;\n\n if (skipPrompt) {\n title += '\\n\\n';\n } else {\n const confirm = await confirmAsync({\n message: wrapForTerminal(\n title + ` Would you like to install ${chalk.cyan(readableMissingPackages)}?`\n ),\n initial: true,\n });\n\n if (confirm) {\n // Format with version if available.\n const packages = missing.map(({ pkg, version }) =>\n version ? [pkg, version].join('@') : pkg\n );\n // Install packages with versions\n await installPackagesAsync(projectRoot, {\n packages,\n });\n // Try again but skip prompting twice, simply fail if the packages didn't install correctly.\n return await ensureDependenciesAsync(projectRoot, {\n skipPrompt: true,\n installMessage,\n warningMessage,\n requiredPackages,\n });\n }\n\n // Reset the title so it doesn't print twice in interactive mode.\n title = '';\n }\n\n const installCommand = createInstallCommand({\n packages: missing,\n });\n\n const disableMessage = warningMessage;\n\n const solution = `Please install ${chalk.bold(\n readableMissingPackages\n )} by running:\\n\\n ${chalk.reset.bold(installCommand)}\\n\\n`;\n\n // This prevents users from starting a misconfigured JS or TS project by default.\n throw new CommandError(wrapForTerminal(title + solution + disableMessage + '\\n'));\n}\n\n/** Wrap long messages to fit smaller terminals. */\nfunction wrapForTerminal(message: string): string {\n return wrapAnsi(message, process.stdout.columns || 80);\n}\n\n/** Create the bash install command from a given set of packages and settings. */\nexport function createInstallCommand({\n packages,\n}: {\n packages: {\n file: string;\n pkg: string;\n version?: string | undefined;\n }[];\n}) {\n return (\n 'npx expo install ' +\n packages\n .map(({ pkg, version }) => {\n if (version) {\n return [pkg, version].join('@');\n }\n return pkg;\n })\n .join(' ')\n );\n}\n\n/** Install packages in the project. */\nasync function installPackagesAsync(projectRoot: string, { packages }: { packages: string[] }) {\n const packagesStr = chalk.bold(packages.join(', '));\n Log.log();\n const installingPackageStep = logNewSection(`Installing ${packagesStr}`);\n try {\n await installAsync(packages, { projectRoot });\n } catch (e: any) {\n installingPackageStep.fail(`Failed to install ${packagesStr} with error: ${e.message}`);\n throw e;\n }\n installingPackageStep.succeed(`Installed ${packagesStr}`);\n}\n"],"names":["ensureDependenciesAsync","createInstallCommand","Log","projectRoot","exp","getConfig","requiredPackages","warningMessage","installMessage","skipPrompt","isInteractive","missing","getMissingPackagesAsync","sdkVersion","length","readableMissingPackages","map","pkg","version","join","title","confirm","confirmAsync","message","wrapForTerminal","chalk","cyan","initial","packages","installPackagesAsync","installCommand","disableMessage","solution","bold","reset","CommandError","wrapAnsi","process","stdout","columns","packagesStr","log","installingPackageStep","logNewSection","installAsync","e","fail","succeed"],"mappings":"AAAA;;;;QAYsBA,uBAAuB,GAAvBA,uBAAuB;QAoF7BC,oBAAoB,GAApBA,oBAAoB;AAhGE,IAAA,OAAc,WAAd,cAAc,CAAA;AAClC,IAAA,MAAO,kCAAP,OAAO,EAAA;AACJ,IAAA,SAAW,kCAAX,WAAW,EAAA;AAEH,IAAA,aAA+B,WAA/B,+BAA+B,CAAA;AAChDC,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACc,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;AACtB,IAAA,YAA4B,WAA5B,4BAA4B,CAAA;AAC5B,IAAA,IAAoB,WAApB,oBAAoB,CAAA;AACrB,IAAA,QAAwB,WAAxB,wBAAwB,CAAA;AACI,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExE,eAAeF,uBAAuB,CAC3CG,WAAmB,EACnB,EACEC,GAAG,EAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACF,WAAW,CAAC,CAACC,GAAG,CAAA,EAChCE,gBAAgB,CAAA,EAChBC,cAAc,CAAA,EACdC,cAAc,CAAA,EACd,qBAAqB;AACrBC,UAAU,EAAG,CAACC,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,CAAA,EAO9B,EACiB;IAClB,MAAM,EAAEC,OAAO,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,mBAAuB,AAG/C,CAAA,wBAH+C,CAACT,WAAW,EAAE;QAC7DU,UAAU,EAAET,GAAG,CAACS,UAAU;QAC1BP,gBAAgB;KACjB,CAAC,AAAC;IACH,IAAI,CAACK,OAAO,CAACG,MAAM,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,mCAAmC;IACnC,MAAMC,uBAAuB,GAAGJ,OAAO,CACpCK,GAAG,CAAC,CAAC,EAAEC,GAAG,CAAA,EAAEC,OAAO,CAAA,EAAE,GAAMA,OAAO,GAAG;YAACD,GAAG;YAAEC,OAAO;SAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGF,GAAG;IAAC,CAAC,CACrEE,IAAI,CAAC,IAAI,CAAC,AAAC;IAEd,IAAIC,KAAK,GAAGZ,cAAc,AAAC;IAE3B,IAAIC,UAAU,EAAE;QACdW,KAAK,IAAI,MAAM,CAAC;KACjB,MAAM;QACL,MAAMC,OAAO,GAAG,MAAMC,CAAAA,GAAAA,QAAY,AAKhC,CAAA,aALgC,CAAC;YACjCC,OAAO,EAAEC,eAAe,CACtBJ,KAAK,GAAG,CAAC,2BAA2B,EAAEK,MAAK,QAAA,CAACC,IAAI,CAACX,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAC7E;YACDY,OAAO,EAAE,IAAI;SACd,CAAC,AAAC;QAEH,IAAIN,OAAO,EAAE;YACX,oCAAoC;YACpC,MAAMO,QAAQ,GAAGjB,OAAO,CAACK,GAAG,CAAC,CAAC,EAAEC,GAAG,CAAA,EAAEC,OAAO,CAAA,EAAE,GAC5CA,OAAO,GAAG;oBAACD,GAAG;oBAAEC,OAAO;iBAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGF,GAAG;YAAA,CACzC,AAAC;YACF,iCAAiC;YACjC,MAAMY,oBAAoB,CAAC1B,WAAW,EAAE;gBACtCyB,QAAQ;aACT,CAAC,CAAC;YACH,4FAA4F;YAC5F,OAAO,MAAM5B,uBAAuB,CAACG,WAAW,EAAE;gBAChDM,UAAU,EAAE,IAAI;gBAChBD,cAAc;gBACdD,cAAc;gBACdD,gBAAgB;aACjB,CAAC,CAAC;SACJ;QAED,iEAAiE;QACjEc,KAAK,GAAG,EAAE,CAAC;KACZ;IAED,MAAMU,cAAc,GAAG7B,oBAAoB,CAAC;QAC1C2B,QAAQ,EAAEjB,OAAO;KAClB,CAAC,AAAC;IAEH,MAAMoB,cAAc,GAAGxB,cAAc,AAAC;IAEtC,MAAMyB,QAAQ,GAAG,CAAC,eAAe,EAAEP,MAAK,QAAA,CAACQ,IAAI,CAC3ClB,uBAAuB,CACxB,CAAC,kBAAkB,EAAEU,MAAK,QAAA,CAACS,KAAK,CAACD,IAAI,CAACH,cAAc,CAAC,CAAC,IAAI,CAAC,AAAC;IAE7D,iFAAiF;IACjF,MAAM,IAAIK,OAAY,aAAA,CAACX,eAAe,CAACJ,KAAK,GAAGY,QAAQ,GAAGD,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;CACnF;AAED,oDAAoD,CACpD,SAASP,eAAe,CAACD,OAAe,EAAU;IAChD,OAAOa,CAAAA,GAAAA,SAAQ,AAAuC,CAAA,QAAvC,CAACb,OAAO,EAAEc,OAAO,CAACC,MAAM,CAACC,OAAO,IAAI,EAAE,CAAC,CAAC;CACxD;AAGM,SAAStC,oBAAoB,CAAC,EACnC2B,QAAQ,CAAA,EAOT,EAAE;IACD,OACE,mBAAmB,GACnBA,QAAQ,CACLZ,GAAG,CAAC,CAAC,EAAEC,GAAG,CAAA,EAAEC,OAAO,CAAA,EAAE,GAAK;QACzB,IAAIA,OAAO,EAAE;YACX,OAAO;gBAACD,GAAG;gBAAEC,OAAO;aAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjC;QACD,OAAOF,GAAG,CAAC;KACZ,CAAC,CACDE,IAAI,CAAC,GAAG,CAAC,CACZ;CACH;AAED,uCAAuC,CACvC,eAAeU,oBAAoB,CAAC1B,WAAmB,EAAE,EAAEyB,QAAQ,CAAA,EAA0B,EAAE;IAC7F,MAAMY,WAAW,GAAGf,MAAK,QAAA,CAACQ,IAAI,CAACL,QAAQ,CAACT,IAAI,CAAC,IAAI,CAAC,CAAC,AAAC;IACpDjB,GAAG,CAACuC,GAAG,EAAE,CAAC;IACV,MAAMC,qBAAqB,GAAGC,CAAAA,GAAAA,IAAa,AAA6B,CAAA,cAA7B,CAAC,CAAC,WAAW,EAAEH,WAAW,CAAC,CAAC,CAAC,AAAC;IACzE,IAAI;QACF,MAAMI,CAAAA,GAAAA,aAAY,AAA2B,CAAA,aAA3B,CAAChB,QAAQ,EAAE;YAAEzB,WAAW;SAAE,CAAC,CAAC;KAC/C,CAAC,OAAO0C,CAAC,EAAO;QACfH,qBAAqB,CAACI,IAAI,CAAC,CAAC,kBAAkB,EAAEN,WAAW,CAAC,aAAa,EAAEK,CAAC,CAACtB,OAAO,CAAC,CAAC,CAAC,CAAC;QACxF,MAAMsB,CAAC,CAAC;KACT;IACDH,qBAAqB,CAACK,OAAO,CAAC,CAAC,UAAU,EAAEP,WAAW,CAAC,CAAC,CAAC,CAAC;CAC3D"}
|
|
@@ -65,11 +65,12 @@ class ExpoGoInstaller {
|
|
|
65
65
|
/** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */ async uninstallExpoGoIfOutdatedAsync(deviceManager) {
|
|
66
66
|
const cacheId = `${this.platform}-${deviceManager.identifier}`;
|
|
67
67
|
if (ExpoGoInstaller.cache[cacheId]) {
|
|
68
|
+
debug("skipping subsequent upgrade check");
|
|
68
69
|
return false;
|
|
69
70
|
}
|
|
71
|
+
ExpoGoInstaller.cache[cacheId] = true;
|
|
70
72
|
if (await this.isClientOutdatedAsync(deviceManager)) {
|
|
71
73
|
// Only prompt once per device, per run.
|
|
72
|
-
ExpoGoInstaller.cache[cacheId] = true;
|
|
73
74
|
const confirm = await (0, _prompts).confirmAsync({
|
|
74
75
|
initial: true,
|
|
75
76
|
message: `Expo Go on ${deviceManager.name} is outdated, would you like to upgrade?`
|