@expo/cli 0.2.6 → 0.2.9
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 +2 -2
- 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 +1 -1
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +12 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.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 +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 +24 -38
- 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/src/utils/git.js
CHANGED
|
@@ -8,6 +8,7 @@ var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
|
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
9
|
var Log = _interopRequireWildcard(require("../log"));
|
|
10
10
|
var _env = require("./env");
|
|
11
|
+
var _interactive = require("./interactive");
|
|
11
12
|
var _prompts = require("./prompts");
|
|
12
13
|
function _interopRequireDefault(obj) {
|
|
13
14
|
return obj && obj.__esModule ? obj : {
|
|
@@ -43,7 +44,7 @@ async function maybeBailOnGitStatusAsync() {
|
|
|
43
44
|
const isGitStatusClean = await validateGitStatusAsync();
|
|
44
45
|
// Give people a chance to bail out if git working tree is dirty
|
|
45
46
|
if (!isGitStatusClean) {
|
|
46
|
-
if (
|
|
47
|
+
if (!(0, _interactive).isInteractive()) {
|
|
47
48
|
Log.warn(`Git status is dirty but the command will continue because the terminal is not interactive.`);
|
|
48
49
|
return false;
|
|
49
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/git.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { env } from './env';\nimport { confirmAsync } from './prompts';\n\nexport async function maybeBailOnGitStatusAsync(): Promise<boolean> {\n if (env.EXPO_NO_GIT_STATUS) {\n Log.warn(\n 'Git status is dirty but the command will continue because EXPO_NO_GIT_STATUS is enabled...'\n );\n return false;\n }\n const isGitStatusClean = await validateGitStatusAsync();\n\n // Give people a chance to bail out if git working tree is dirty\n if (!isGitStatusClean) {\n if (
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/git.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { env } from './env';\nimport { isInteractive } from './interactive';\nimport { confirmAsync } from './prompts';\n\nexport async function maybeBailOnGitStatusAsync(): Promise<boolean> {\n if (env.EXPO_NO_GIT_STATUS) {\n Log.warn(\n 'Git status is dirty but the command will continue because EXPO_NO_GIT_STATUS is enabled...'\n );\n return false;\n }\n const isGitStatusClean = await validateGitStatusAsync();\n\n // Give people a chance to bail out if git working tree is dirty\n if (!isGitStatusClean) {\n if (!isInteractive()) {\n Log.warn(\n `Git status is dirty but the command will continue because the terminal is not interactive.`\n );\n return false;\n }\n\n Log.log();\n const answer = await confirmAsync({\n message: `Would you like to proceed?`,\n });\n\n if (!answer) {\n return true;\n }\n\n Log.log();\n }\n return false;\n}\n\nexport async function validateGitStatusAsync(): Promise<boolean> {\n let workingTreeStatus = 'unknown';\n try {\n const result = await spawnAsync('git', ['status', '--porcelain']);\n workingTreeStatus = result.stdout === '' ? 'clean' : 'dirty';\n } catch {\n // Maybe git is not installed?\n // Maybe this project is not using git?\n }\n\n if (workingTreeStatus === 'clean') {\n Log.log(`Your git working tree is ${chalk.green('clean')}`);\n Log.log('To revert the changes after this command completes, you can run the following:');\n Log.log(' git clean --force && git reset --hard');\n return true;\n } else if (workingTreeStatus === 'dirty') {\n Log.log(`${chalk.bold('Warning!')} Your git working tree is ${chalk.red('dirty')}.`);\n Log.log(\n `It's recommended to ${chalk.bold(\n 'commit all your changes before proceeding'\n )}, so you can revert the changes made by this command if necessary.`\n );\n } else {\n Log.log(\"We couldn't find a git repository in your project directory.\");\n Log.log(\"It's recommended to back up your project before proceeding.\");\n }\n\n return false;\n}\n"],"names":["maybeBailOnGitStatusAsync","validateGitStatusAsync","Log","env","EXPO_NO_GIT_STATUS","warn","isGitStatusClean","isInteractive","log","answer","confirmAsync","message","workingTreeStatus","result","spawnAsync","stdout","chalk","green","bold","red"],"mappings":"AAAA;;;;QAQsBA,yBAAyB,GAAzBA,yBAAyB;QAgCzBC,sBAAsB,GAAtBA,sBAAsB;AAxCrB,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AACxB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACK,IAAA,IAAO,WAAP,OAAO,CAAA;AACG,IAAA,YAAe,WAAf,eAAe,CAAA;AAChB,IAAA,QAAW,WAAX,WAAW,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjC,eAAeF,yBAAyB,GAAqB;IAClE,IAAIG,IAAG,IAAA,CAACC,kBAAkB,EAAE;QAC1BF,GAAG,CAACG,IAAI,CACN,4FAA4F,CAC7F,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IACD,MAAMC,gBAAgB,GAAG,MAAML,sBAAsB,EAAE,AAAC;IAExD,gEAAgE;IAChE,IAAI,CAACK,gBAAgB,EAAE;QACrB,IAAI,CAACC,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;YACpBL,GAAG,CAACG,IAAI,CACN,CAAC,0FAA0F,CAAC,CAC7F,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QAEDH,GAAG,CAACM,GAAG,EAAE,CAAC;QACV,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,QAAY,AAE/B,CAAA,aAF+B,CAAC;YAChCC,OAAO,EAAE,CAAC,0BAA0B,CAAC;SACtC,CAAC,AAAC;QAEH,IAAI,CAACF,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAEDP,GAAG,CAACM,GAAG,EAAE,CAAC;KACX;IACD,OAAO,KAAK,CAAC;CACd;AAEM,eAAeP,sBAAsB,GAAqB;IAC/D,IAAIW,iBAAiB,GAAG,SAAS,AAAC;IAClC,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,WAAU,AAAkC,CAAA,QAAlC,CAAC,KAAK,EAAE;YAAC,QAAQ;YAAE,aAAa;SAAC,CAAC,AAAC;QAClEF,iBAAiB,GAAGC,MAAM,CAACE,MAAM,KAAK,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC;KAC9D,CAAC,OAAM;IACN,8BAA8B;IAC9B,uCAAuC;KACxC;IAED,IAAIH,iBAAiB,KAAK,OAAO,EAAE;QACjCV,GAAG,CAACM,GAAG,CAAC,CAAC,yBAAyB,EAAEQ,MAAK,QAAA,CAACC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5Df,GAAG,CAACM,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC1FN,GAAG,CAACM,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;KACb,MAAM,IAAII,iBAAiB,KAAK,OAAO,EAAE;QACxCV,GAAG,CAACM,GAAG,CAAC,CAAC,EAAEQ,MAAK,QAAA,CAACE,IAAI,CAAC,UAAU,CAAC,CAAC,0BAA0B,EAAEF,MAAK,QAAA,CAACG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrFjB,GAAG,CAACM,GAAG,CACL,CAAC,oBAAoB,EAAEQ,MAAK,QAAA,CAACE,IAAI,CAC/B,2CAA2C,CAC5C,CAAC,kEAAkE,CAAC,CACtE,CAAC;KACH,MAAM;QACLhB,GAAG,CAACM,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACxEN,GAAG,CAACM,GAAG,CAAC,6DAA6D,CAAC,CAAC;KACxE;IAED,OAAO,KAAK,CAAC;CACd"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.isInteractive = isInteractive;
|
|
6
|
+
var _env = require("./env");
|
|
7
|
+
function isInteractive() {
|
|
8
|
+
return !_env.env.CI && process.stdout.isTTY;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/interactive.ts"],"sourcesContent":["import { env } from './env';\n\n/** @returns `true` if the process is interactive. */\nexport function isInteractive(): boolean {\n return !env.CI && process.stdout.isTTY;\n}\n"],"names":["isInteractive","env","CI","process","stdout","isTTY"],"mappings":"AAAA;;;;QAGgBA,aAAa,GAAbA,aAAa;AAHT,IAAA,IAAO,WAAP,OAAO,CAAA;AAGpB,SAASA,aAAa,GAAY;IACvC,OAAO,CAACC,IAAG,IAAA,CAACC,EAAE,IAAIC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;CACxC"}
|
package/build/src/utils/ora.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.logNewSection = logNewSection;
|
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
9
|
var _ora = _interopRequireDefault(require("ora"));
|
|
10
10
|
var _env = require("./env");
|
|
11
|
+
var _interactive = require("./interactive");
|
|
11
12
|
function _interopRequireDefault(obj) {
|
|
12
13
|
return obj && obj.__esModule ? obj : {
|
|
13
14
|
default: obj
|
|
@@ -25,7 +26,7 @@ function ora(options1) {
|
|
|
25
26
|
const inputOptions = typeof options1 === "string" ? {
|
|
26
27
|
text: options1
|
|
27
28
|
} : options1 || {};
|
|
28
|
-
const disabled =
|
|
29
|
+
const disabled = !(0, _interactive).isInteractive() || _env.env.EXPO_DEBUG;
|
|
29
30
|
const spinner = (0, _ora).default({
|
|
30
31
|
// Ensure our non-interactive mode emulates CI mode.
|
|
31
32
|
isEnabled: !disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/ora.ts"],"sourcesContent":["import chalk from 'chalk';\nimport oraReal, { Ora } from 'ora';\n\n// import * as Log from '../log';\nimport { env } from './env';\n\nconst logReal = console.log;\nconst infoReal = console.info;\nconst warnReal = console.warn;\nconst errorReal = console.error;\n\nconst runningSpinners: oraReal.Ora[] = [];\n\nexport function getAllSpinners() {\n return runningSpinners;\n}\n\n/**\n * A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).\n *\n * @param options\n * @returns\n */\nexport function ora(options?: oraReal.Options | string): oraReal.Ora {\n const inputOptions = typeof options === 'string' ? { text: options } : options || {};\n const disabled =
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/ora.ts"],"sourcesContent":["import chalk from 'chalk';\nimport oraReal, { Ora } from 'ora';\n\n// import * as Log from '../log';\nimport { env } from './env';\nimport { isInteractive } from './interactive';\n\nconst logReal = console.log;\nconst infoReal = console.info;\nconst warnReal = console.warn;\nconst errorReal = console.error;\n\nconst runningSpinners: oraReal.Ora[] = [];\n\nexport function getAllSpinners() {\n return runningSpinners;\n}\n\n/**\n * A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).\n *\n * @param options\n * @returns\n */\nexport function ora(options?: oraReal.Options | string): oraReal.Ora {\n const inputOptions = typeof options === 'string' ? { text: options } : options || {};\n const disabled = !isInteractive() || env.EXPO_DEBUG;\n const spinner = oraReal({\n // Ensure our non-interactive mode emulates CI mode.\n isEnabled: !disabled,\n // In non-interactive mode, send the stream to stdout so it prevents looking like an error.\n stream: disabled ? process.stdout : process.stderr,\n ...inputOptions,\n });\n\n const oraStart = spinner.start.bind(spinner);\n const oraStop = spinner.stop.bind(spinner);\n const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);\n\n const logWrap = (method: any, args: any[]): void => {\n oraStop();\n method(...args);\n spinner.start();\n };\n\n const wrapNativeLogs = (): void => {\n console.log = (...args: any) => logWrap(logReal, args);\n console.info = (...args: any) => logWrap(infoReal, args);\n console.warn = (...args: any) => logWrap(warnReal, args);\n console.error = (...args: any) => logWrap(errorReal, args);\n\n runningSpinners.push(spinner);\n };\n\n const resetNativeLogs = (): void => {\n console.log = logReal;\n console.info = infoReal;\n console.warn = warnReal;\n console.error = errorReal;\n\n const index = runningSpinners.indexOf(spinner);\n if (index >= 0) {\n runningSpinners.splice(index, 1);\n }\n };\n\n spinner.start = (text): Ora => {\n wrapNativeLogs();\n return oraStart(text);\n };\n\n spinner.stopAndPersist = (options): Ora => {\n const result = oraStopAndPersist(options);\n resetNativeLogs();\n return result;\n };\n\n spinner.stop = (): Ora => {\n const result = oraStop();\n resetNativeLogs();\n return result;\n };\n\n // Always make the central logging module aware of the current spinner\n // Log.setSpinner(spinner);\n\n return spinner;\n}\n\n/**\n * Create a unified section spinner.\n *\n * @param title\n * @returns\n */\nexport function logNewSection(title: string) {\n const spinner = ora(chalk.bold(title));\n // Prevent the spinner from clashing with debug logs\n spinner.start();\n return spinner;\n}\n"],"names":["getAllSpinners","ora","logNewSection","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","runningSpinners","options","inputOptions","text","disabled","isInteractive","env","EXPO_DEBUG","spinner","oraReal","isEnabled","stream","process","stdout","stderr","oraStart","start","bind","oraStop","stop","oraStopAndPersist","stopAndPersist","logWrap","method","args","wrapNativeLogs","push","resetNativeLogs","index","indexOf","splice","result","title","chalk","bold"],"mappings":"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"}
|
|
@@ -19,13 +19,13 @@ exports.createSelectionFilter = createSelectionFilter;
|
|
|
19
19
|
exports.promptAsync = void 0;
|
|
20
20
|
var _assert = _interopRequireDefault(require("assert"));
|
|
21
21
|
var _prompts = _interopRequireWildcard(require("prompts"));
|
|
22
|
-
var _env = require("./env");
|
|
23
22
|
var _errors = require("./errors");
|
|
23
|
+
var _interactive = require("./interactive");
|
|
24
24
|
async function prompt(questions, { nonInteractiveHelp , ...options } = {}) {
|
|
25
25
|
questions = Array.isArray(questions) ? questions : [
|
|
26
26
|
questions
|
|
27
27
|
];
|
|
28
|
-
if (
|
|
28
|
+
if (!(0, _interactive).isInteractive() && questions.length !== 0) {
|
|
29
29
|
let message = `Input is required, but 'npx expo' is in non-interactive mode.\n`;
|
|
30
30
|
if (nonInteractiveHelp) {
|
|
31
31
|
message += nonInteractiveHelp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/prompts.ts"],"sourcesContent":["import assert from 'assert';\nimport prompts, { Choice, Options, PromptObject, PromptType } from 'prompts';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/prompts.ts"],"sourcesContent":["import assert from 'assert';\nimport prompts, { Choice, Options, PromptObject, PromptType } from 'prompts';\n\nimport { AbortCommandError, CommandError } from './errors';\nimport { isInteractive } from './interactive';\n\nconst debug = require('debug')('expo:utils:prompts') as typeof console.log;\n\nexport type Question<V extends string = string> = PromptObject<V> & {\n optionsPerPage?: number;\n};\n\nexport interface ExpoChoice<T> extends Choice {\n value: T;\n}\n\nexport { PromptType };\n\ntype PromptOptions = { nonInteractiveHelp?: string } & Options;\n\nexport type NamelessQuestion = Omit<Question<'value'>, 'name' | 'type'>;\n\ntype InteractionOptions = { pause: boolean; canEscape?: boolean };\n\ntype InteractionCallback = (options: InteractionOptions) => void;\n\n/** Interaction observers for detecting when keystroke tracking should pause/resume. */\nconst listeners: InteractionCallback[] = [];\n\nexport default async function prompt(\n questions: Question | Question[],\n { nonInteractiveHelp, ...options }: PromptOptions = {}\n) {\n questions = Array.isArray(questions) ? questions : [questions];\n if (!isInteractive() && questions.length !== 0) {\n let message = `Input is required, but 'npx expo' is in non-interactive mode.\\n`;\n if (nonInteractiveHelp) {\n message += nonInteractiveHelp;\n } else {\n const question = questions[0];\n const questionMessage =\n typeof question.message === 'function'\n ? question.message(undefined, {}, question)\n : question.message;\n\n message += `Required input:\\n${(questionMessage || '').trim().replace(/^/gm, '> ')}`;\n }\n throw new CommandError('NON_INTERACTIVE', message);\n }\n\n pauseInteractions();\n try {\n const results = await prompts(questions, {\n onCancel() {\n throw new AbortCommandError();\n },\n ...options,\n });\n\n return results;\n } finally {\n resumeInteractions();\n }\n}\n\n/**\n * Create a standard yes/no confirmation that can be cancelled.\n *\n * @param questions\n * @param options\n */\nexport async function confirmAsync(\n questions: NamelessQuestion,\n options?: PromptOptions\n): Promise<boolean> {\n const { value } = await prompt(\n {\n initial: true,\n ...questions,\n name: 'value',\n type: 'confirm',\n },\n options\n );\n return value ?? null;\n}\n\n/** Select an option from a list of options. */\nexport async function selectAsync<T>(\n message: string,\n choices: ExpoChoice<T>[],\n options?: PromptOptions\n): Promise<T> {\n const { value } = await prompt(\n {\n message,\n choices,\n name: 'value',\n type: 'select',\n },\n options\n );\n return value ?? null;\n}\n\nexport const promptAsync = prompt;\n\n/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */\nexport function addInteractionListener(callback: InteractionCallback) {\n listeners.push(callback);\n}\n\nexport function removeInteractionListener(callback: InteractionCallback) {\n const listenerIndex = listeners.findIndex((_callback) => _callback === callback);\n assert(\n listenerIndex >= 0,\n 'removeInteractionListener(): cannot remove an unregistered event listener.'\n );\n listeners.splice(listenerIndex, 1);\n}\n\n/** Notify all listeners that keypress observations must pause. */\nexport function pauseInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers paused');\n for (const listener of listeners) {\n listener({ pause: true, ...options });\n }\n}\n\n/** Notify all listeners that keypress observations can start.. */\nexport function resumeInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers resumed');\n for (const listener of listeners) {\n listener({ pause: false, ...options });\n }\n}\n\nexport function createSelectionFilter(): (input: any, choices: Choice[]) => Promise<any> {\n function escapeRegex(string: string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n return async (input: any, choices: Choice[]) => {\n try {\n const regex = new RegExp(escapeRegex(input), 'i');\n return choices.filter((choice: any) => regex.test(choice.title));\n } catch (error: any) {\n debug('Error filtering choices', error);\n return [];\n }\n };\n}\n"],"names":["PromptType","prompt","confirmAsync","selectAsync","addInteractionListener","removeInteractionListener","pauseInteractions","resumeInteractions","createSelectionFilter","questions","nonInteractiveHelp","options","Array","isArray","isInteractive","length","message","question","questionMessage","undefined","trim","replace","CommandError","results","prompts","onCancel","AbortCommandError","debug","require","listeners","value","initial","name","type","choices","promptAsync","callback","push","listenerIndex","findIndex","_callback","assert","splice","listener","pause","escapeRegex","string","input","regex","RegExp","filter","choice","test","title","error"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "build/bin/cli",
|
|
6
6
|
"bin": {
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@babel/runtime": "^7.14.0",
|
|
40
40
|
"@expo/code-signing-certificates": "^0.0.2",
|
|
41
|
-
"@expo/config": "~7.0.
|
|
42
|
-
"@expo/config-plugins": "~5.0.
|
|
41
|
+
"@expo/config": "~7.0.1",
|
|
42
|
+
"@expo/config-plugins": "~5.0.1",
|
|
43
43
|
"@expo/dev-server": "~0.1.110",
|
|
44
44
|
"@expo/devcert": "^1.0.0",
|
|
45
45
|
"@expo/json-file": "^8.2.35",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@expo/osascript": "^2.0.31",
|
|
48
48
|
"@expo/package-manager": "~0.0.53",
|
|
49
49
|
"@expo/plist": "^0.0.18",
|
|
50
|
-
"@expo/prebuild-config": "~5.0.
|
|
50
|
+
"@expo/prebuild-config": "~5.0.3",
|
|
51
51
|
"@expo/rudder-sdk-node": "1.1.1",
|
|
52
52
|
"@expo/spawn-async": "1.5.0",
|
|
53
53
|
"@expo/xcpretty": "^4.2.1",
|
|
@@ -137,5 +137,5 @@
|
|
|
137
137
|
"structured-headers": "^0.4.1",
|
|
138
138
|
"taskr": "1.1.0"
|
|
139
139
|
},
|
|
140
|
-
"gitHead": "
|
|
140
|
+
"gitHead": "f0f9fbc21b313d6c9ea79e56c74f58a21f48c66f"
|
|
141
141
|
}
|