eas-cli 7.1.3 → 7.3.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 (36) hide show
  1. package/README.md +60 -61
  2. package/build/build/local.js +1 -1
  3. package/build/commands/project/init.js +13 -1
  4. package/build/commands/update/index.d.ts +0 -1
  5. package/build/commands/update/index.js +9 -9
  6. package/build/commands/update/roll-back-to-embedded.js +6 -1
  7. package/build/credentials/android/actions/{AssignGoogleServiceAccountKey.d.ts → AssignGoogleServiceAccountKeyForFcmV1.d.ts} +1 -1
  8. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForFcmV1.js +19 -0
  9. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForSubmissions.d.ts +8 -0
  10. package/build/credentials/android/actions/{AssignGoogleServiceAccountKey.js → AssignGoogleServiceAccountKeyForSubmissions.js} +3 -3
  11. package/build/credentials/android/actions/CreateGoogleServiceAccountKey.js +1 -1
  12. package/build/credentials/android/actions/{SetUpGoogleServiceAccountKey.d.ts → SetUpGoogleServiceAccountKeyForFcmV1.d.ts} +1 -1
  13. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForFcmV1.js +59 -0
  14. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForSubmissions.d.ts +10 -0
  15. package/build/credentials/android/actions/{SetUpGoogleServiceAccountKey.js → SetUpGoogleServiceAccountKeyForSubmissions.js} +5 -5
  16. package/build/credentials/android/api/GraphqlClient.d.ts +2 -1
  17. package/build/credentials/android/api/GraphqlClient.js +5 -1
  18. package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.d.ts +1 -0
  19. package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.js +26 -0
  20. package/build/credentials/android/utils/googleServiceAccountKey.js +1 -1
  21. package/build/credentials/android/utils/printCredentials.js +24 -2
  22. package/build/credentials/manager/Actions.d.ts +22 -16
  23. package/build/credentials/manager/Actions.js +22 -16
  24. package/build/credentials/manager/AndroidActions.d.ts +3 -1
  25. package/build/credentials/manager/AndroidActions.js +46 -12
  26. package/build/credentials/manager/ManageAndroid.js +30 -12
  27. package/build/graphql/generated.d.ts +160 -0
  28. package/build/graphql/types/credentials/AndroidAppCredentials.js +4 -0
  29. package/build/project/customBuildConfig.js +1 -1
  30. package/build/project/publish.d.ts +7 -3
  31. package/build/project/publish.js +43 -24
  32. package/build/submit/android/ServiceAccountSource.js +2 -2
  33. package/build/utils/expoUpdatesCli.d.ts +1 -0
  34. package/build/utils/expoUpdatesCli.js +37 -0
  35. package/oclif.manifest.json +1 -7
  36. package/package.json +6 -6
@@ -5396,6 +5396,16 @@ export type CreateAndroidAppCredentialsMutation = {
5396
5396
  clientId?: string | null;
5397
5397
  };
5398
5398
  } | null;
5399
+ googleServiceAccountKeyForFcmV1?: {
5400
+ __typename?: 'GoogleServiceAccountKey';
5401
+ id: string;
5402
+ projectIdentifier: string;
5403
+ privateKeyIdentifier: string;
5404
+ clientEmail: string;
5405
+ clientIdentifier: string;
5406
+ createdAt: any;
5407
+ updatedAt: any;
5408
+ } | null;
5399
5409
  googleServiceAccountKeyForSubmissions?: {
5400
5410
  __typename?: 'GoogleServiceAccountKey';
5401
5411
  id: string;
@@ -5496,6 +5506,16 @@ export type SetFcmMutation = {
5496
5506
  clientId?: string | null;
5497
5507
  };
5498
5508
  } | null;
5509
+ googleServiceAccountKeyForFcmV1?: {
5510
+ __typename?: 'GoogleServiceAccountKey';
5511
+ id: string;
5512
+ projectIdentifier: string;
5513
+ privateKeyIdentifier: string;
5514
+ clientEmail: string;
5515
+ clientIdentifier: string;
5516
+ createdAt: any;
5517
+ updatedAt: any;
5518
+ } | null;
5499
5519
  googleServiceAccountKeyForSubmissions?: {
5500
5520
  __typename?: 'GoogleServiceAccountKey';
5501
5521
  id: string;
@@ -5596,6 +5616,126 @@ export type SetGoogleServiceAccountKeyForSubmissionsMutation = {
5596
5616
  clientId?: string | null;
5597
5617
  };
5598
5618
  } | null;
5619
+ googleServiceAccountKeyForFcmV1?: {
5620
+ __typename?: 'GoogleServiceAccountKey';
5621
+ id: string;
5622
+ projectIdentifier: string;
5623
+ privateKeyIdentifier: string;
5624
+ clientEmail: string;
5625
+ clientIdentifier: string;
5626
+ createdAt: any;
5627
+ updatedAt: any;
5628
+ } | null;
5629
+ googleServiceAccountKeyForSubmissions?: {
5630
+ __typename?: 'GoogleServiceAccountKey';
5631
+ id: string;
5632
+ projectIdentifier: string;
5633
+ privateKeyIdentifier: string;
5634
+ clientEmail: string;
5635
+ clientIdentifier: string;
5636
+ createdAt: any;
5637
+ updatedAt: any;
5638
+ } | null;
5639
+ androidAppBuildCredentialsList: Array<{
5640
+ __typename?: 'AndroidAppBuildCredentials';
5641
+ id: string;
5642
+ isDefault: boolean;
5643
+ isLegacy: boolean;
5644
+ name: string;
5645
+ androidKeystore?: {
5646
+ __typename?: 'AndroidKeystore';
5647
+ id: string;
5648
+ type: AndroidKeystoreType;
5649
+ keystore: string;
5650
+ keystorePassword: string;
5651
+ keyAlias: string;
5652
+ keyPassword?: string | null;
5653
+ md5CertificateFingerprint?: string | null;
5654
+ sha1CertificateFingerprint?: string | null;
5655
+ sha256CertificateFingerprint?: string | null;
5656
+ createdAt: any;
5657
+ updatedAt: any;
5658
+ } | null;
5659
+ }>;
5660
+ };
5661
+ };
5662
+ };
5663
+ export type SetGoogleServiceAccountKeyForFcmV1MutationVariables = Exact<{
5664
+ androidAppCredentialsId: Scalars['ID']['input'];
5665
+ googleServiceAccountKeyId: Scalars['ID']['input'];
5666
+ }>;
5667
+ export type SetGoogleServiceAccountKeyForFcmV1Mutation = {
5668
+ __typename?: 'RootMutation';
5669
+ androidAppCredentials: {
5670
+ __typename?: 'AndroidAppCredentialsMutation';
5671
+ setGoogleServiceAccountKeyForFcmV1: {
5672
+ __typename?: 'AndroidAppCredentials';
5673
+ id: string;
5674
+ applicationIdentifier?: string | null;
5675
+ isLegacy: boolean;
5676
+ app: {
5677
+ __typename?: 'App';
5678
+ id: string;
5679
+ fullName: string;
5680
+ slug: string;
5681
+ ownerAccount: {
5682
+ __typename?: 'Account';
5683
+ id: string;
5684
+ name: string;
5685
+ ownerUserActor?: {
5686
+ __typename?: 'SSOUser';
5687
+ id: string;
5688
+ username: string;
5689
+ } | {
5690
+ __typename?: 'User';
5691
+ id: string;
5692
+ username: string;
5693
+ } | null;
5694
+ users: Array<{
5695
+ __typename?: 'UserPermission';
5696
+ role: Role;
5697
+ actor: {
5698
+ __typename?: 'Robot';
5699
+ id: string;
5700
+ } | {
5701
+ __typename?: 'SSOUser';
5702
+ id: string;
5703
+ } | {
5704
+ __typename?: 'User';
5705
+ id: string;
5706
+ };
5707
+ }>;
5708
+ };
5709
+ };
5710
+ androidFcm?: {
5711
+ __typename?: 'AndroidFcm';
5712
+ id: string;
5713
+ credential: any;
5714
+ version: AndroidFcmVersion;
5715
+ createdAt: any;
5716
+ updatedAt: any;
5717
+ snippet: {
5718
+ __typename?: 'FcmSnippetLegacy';
5719
+ firstFourCharacters: string;
5720
+ lastFourCharacters: string;
5721
+ } | {
5722
+ __typename?: 'FcmSnippetV1';
5723
+ projectId: string;
5724
+ keyId: string;
5725
+ serviceAccountEmail: string;
5726
+ clientId?: string | null;
5727
+ };
5728
+ } | null;
5729
+ googleServiceAccountKeyForFcmV1?: {
5730
+ __typename?: 'GoogleServiceAccountKey';
5731
+ id: string;
5732
+ projectIdentifier: string;
5733
+ privateKeyIdentifier: string;
5734
+ clientEmail: string;
5735
+ clientIdentifier: string;
5736
+ createdAt: any;
5737
+ updatedAt: any;
5738
+ } | null;
5599
5739
  googleServiceAccountKeyForSubmissions?: {
5600
5740
  __typename?: 'GoogleServiceAccountKey';
5601
5741
  id: string;
@@ -5812,6 +5952,16 @@ export type CommonAndroidAppCredentialsWithBuildCredentialsByApplicationIdentifi
5812
5952
  clientId?: string | null;
5813
5953
  };
5814
5954
  } | null;
5955
+ googleServiceAccountKeyForFcmV1?: {
5956
+ __typename?: 'GoogleServiceAccountKey';
5957
+ id: string;
5958
+ projectIdentifier: string;
5959
+ privateKeyIdentifier: string;
5960
+ clientEmail: string;
5961
+ clientIdentifier: string;
5962
+ createdAt: any;
5963
+ updatedAt: any;
5964
+ } | null;
5815
5965
  googleServiceAccountKeyForSubmissions?: {
5816
5966
  __typename?: 'GoogleServiceAccountKey';
5817
5967
  id: string;
@@ -10793,6 +10943,16 @@ export type CommonAndroidAppCredentialsFragment = {
10793
10943
  clientId?: string | null;
10794
10944
  };
10795
10945
  } | null;
10946
+ googleServiceAccountKeyForFcmV1?: {
10947
+ __typename?: 'GoogleServiceAccountKey';
10948
+ id: string;
10949
+ projectIdentifier: string;
10950
+ privateKeyIdentifier: string;
10951
+ clientEmail: string;
10952
+ clientIdentifier: string;
10953
+ createdAt: any;
10954
+ updatedAt: any;
10955
+ } | null;
10796
10956
  googleServiceAccountKeyForSubmissions?: {
10797
10957
  __typename?: 'GoogleServiceAccountKey';
10798
10958
  id: string;
@@ -20,6 +20,10 @@ exports.CommonAndroidAppCredentialsFragmentNode = (0, graphql_tag_1.default) `
20
20
  id
21
21
  ...AndroidFcmFragment
22
22
  }
23
+ googleServiceAccountKeyForFcmV1 {
24
+ id
25
+ ...GoogleServiceAccountKeyFragment
26
+ }
23
27
  googleServiceAccountKeyForSubmissions {
24
28
  id
25
29
  ...GoogleServiceAccountKeyFragment
@@ -20,7 +20,7 @@ async function validateCustomBuildConfigAsync({ profile, projectDir, vcsClient,
20
20
  }
21
21
  try {
22
22
  const config = await (0, steps_1.readAndValidateBuildConfigAsync)(configPath, {
23
- skipNamespacedFunctionsCheck: true,
23
+ skipNamespacedFunctionsOrFunctionGroupsCheck: true,
24
24
  });
25
25
  return {
26
26
  workflowName: config.build.name,
@@ -68,13 +68,12 @@ export declare function convertAssetToUpdateInfoGroupFormatAsync(asset: RawAsset
68
68
  * This will be sorted later based on the platform's runtime versions.
69
69
  */
70
70
  export declare function buildUnsortedUpdateInfoGroupAsync(assets: CollectedAssets, exp: ExpoConfig): Promise<UpdateInfoGroup>;
71
- export declare function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, dev, }: {
71
+ export declare function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, }: {
72
72
  projectDir: string;
73
73
  inputDir: string;
74
74
  exp: Pick<ExpoConfig, 'sdkVersion' | 'web'>;
75
75
  platformFlag: ExpoCLIExportPlatformFlag;
76
76
  clearCache?: boolean;
77
- dev?: boolean;
78
77
  }): Promise<void>;
79
78
  export declare function resolveInputDirectoryAsync(inputDir: string, { skipBundler }: {
80
79
  skipBundler?: boolean;
@@ -137,7 +136,12 @@ export declare function getUpdateMessageForCommandAsync(vcsClient: Client, { upd
137
136
  export declare const defaultPublishPlatforms: Platform[];
138
137
  export declare function getRequestedPlatform(platform: ExpoCLIExportPlatformFlag): RequestedPlatform | null;
139
138
  /** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
140
- export declare function getRuntimeVersionObjectAsync(exp: ExpoConfig, platforms: Platform[], projectDir: string, vcsClient: Client): Promise<{
139
+ export declare function getRuntimeVersionObjectAsync({ exp, platforms, projectDir, vcsClient, }: {
140
+ exp: ExpoConfig;
141
+ platforms: Platform[];
142
+ projectDir: string;
143
+ vcsClient: Client;
144
+ }): Promise<{
141
145
  platform: string;
142
146
  runtimeVersion: string;
143
147
  }[]>;
@@ -27,6 +27,7 @@ const getBranchNameFromChannelNameAsync_1 = require("../update/getBranchNameFrom
27
27
  const utils_2 = require("../update/utils");
28
28
  const uploads_1 = require("../uploads");
29
29
  const expoCli_1 = require("../utils/expoCli");
30
+ const expoUpdatesCli_1 = require("../utils/expoUpdatesCli");
30
31
  const chunk_1 = tslib_1.__importDefault(require("../utils/expodash/chunk"));
31
32
  const filter_1 = require("../utils/expodash/filter");
32
33
  const uniqBy_1 = tslib_1.__importDefault(require("../utils/expodash/uniqBy"));
@@ -117,7 +118,7 @@ async function buildUnsortedUpdateInfoGroupAsync(assets, exp) {
117
118
  return updateInfoGroup;
118
119
  }
119
120
  exports.buildUnsortedUpdateInfoGroupAsync = buildUnsortedUpdateInfoGroupAsync;
120
- async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, dev = false, }) {
121
+ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, }) {
121
122
  var _a;
122
123
  const packageJSON = json_file_1.default.read(path_1.default.resolve(projectDir, 'package.json'));
123
124
  if (!packageJSON) {
@@ -134,7 +135,6 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
134
135
  '--dump-sourcemap',
135
136
  '--dump-assetmap',
136
137
  `--platform=${platformFlag}`,
137
- ...(dev ? ['--dev'] : []),
138
138
  ...(clearCache ? ['--clear'] : []),
139
139
  ]);
140
140
  }
@@ -151,7 +151,6 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
151
151
  '--dump-sourcemap',
152
152
  '--dump-assetmap',
153
153
  ...platformArgs,
154
- ...(dev ? ['--dev'] : []),
155
154
  ...(clearCache ? ['--clear'] : []),
156
155
  ]);
157
156
  }
@@ -169,7 +168,6 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
169
168
  '--dump-sourcemap',
170
169
  '--dump-assetmap',
171
170
  `--platform=${platformFlag}`,
172
- ...(dev ? ['--dev'] : []),
173
171
  ...(clearCache ? ['--clear'] : []),
174
172
  ]);
175
173
  }
@@ -466,32 +464,53 @@ function getRequestedPlatform(platform) {
466
464
  }
467
465
  exports.getRequestedPlatform = getRequestedPlatform;
468
466
  /** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
469
- async function getRuntimeVersionObjectAsync(exp, platforms, projectDir, vcsClient) {
470
- var _a, _b;
471
- for (const platform of platforms) {
472
- if (platform === 'web') {
473
- continue;
474
- }
475
- const isPolicy = typeof ((_b = (_a = exp[platform]) === null || _a === void 0 ? void 0 : _a.runtimeVersion) !== null && _b !== void 0 ? _b : exp.runtimeVersion) === 'object';
476
- if (isPolicy) {
477
- const isManaged = (await (0, workflow_1.resolveWorkflowAsync)(projectDir, platform, vcsClient)) ===
478
- eas_build_job_1.Workflow.MANAGED;
479
- if (!isManaged) {
480
- throw new Error(`You're currently using the bare workflow, where runtime version policies are not supported. You must set your runtime version manually. For example, define your runtime version as "1.0.0", not {"policy": "appVersion"} in your app config. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions')}`);
481
- }
482
- }
483
- }
484
- return await Promise.all([...new Set(platforms)].map(async (platform) => {
485
- if (platform === 'web') {
486
- return { platform: 'web', runtimeVersion: 'UNVERSIONED' };
487
- }
467
+ async function getRuntimeVersionObjectAsync({ exp, platforms, projectDir, vcsClient, }) {
468
+ return await Promise.all(platforms.map(async (platform) => {
488
469
  return {
489
470
  platform,
490
- runtimeVersion: (0, nullthrows_1.default)(await config_plugins_1.Updates.getRuntimeVersionAsync(projectDir, exp, platform), `Unable to determine runtime version for ${platform_1.requestedPlatformDisplayNames[platform]}. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions/')}`),
471
+ runtimeVersion: await getRuntimeVersionForPlatformAsync({
472
+ exp,
473
+ platform,
474
+ projectDir,
475
+ vcsClient,
476
+ }),
491
477
  };
492
478
  }));
493
479
  }
494
480
  exports.getRuntimeVersionObjectAsync = getRuntimeVersionObjectAsync;
481
+ async function getRuntimeVersionForPlatformAsync({ exp, platform, projectDir, vcsClient, }) {
482
+ var _a, _b;
483
+ if (platform === 'web') {
484
+ return 'UNVERSIONED';
485
+ }
486
+ const runtimeVersion = (_b = (_a = exp[platform]) === null || _a === void 0 ? void 0 : _a.runtimeVersion) !== null && _b !== void 0 ? _b : exp.runtimeVersion;
487
+ if (typeof runtimeVersion === 'object') {
488
+ const policy = runtimeVersion.policy;
489
+ if (policy === 'fingerprintExperimental') {
490
+ // log to inform the user that the fingerprint has been calculated
491
+ log_1.default.warn(`Calculating native fingerprint for platform ${platform} using current state of the "${platform}" directory. ` +
492
+ `If the fingerprint differs from the build's fingerint, ensure the state of your project is consistent ` +
493
+ `(repository is clean, ios and android native directories are in the same state as the build if applicable).`);
494
+ const fingerprintRawString = await (0, expoUpdatesCli_1.expoUpdatesCommandAsync)(projectDir, [
495
+ 'fingerprint:generate',
496
+ '--platform',
497
+ platform,
498
+ ]);
499
+ const fingerprintObject = JSON.parse(fingerprintRawString);
500
+ const hash = (0, nullthrows_1.default)(fingerprintObject.hash, 'invalid response from expo-update CLI for fingerprint generation');
501
+ return hash;
502
+ }
503
+ const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, platform, vcsClient);
504
+ if (workflow !== eas_build_job_1.Workflow.MANAGED) {
505
+ throw new Error(`You're currently using the bare workflow, where runtime version policies are not supported. You must set your runtime version manually. For example, define your runtime version as "1.0.0", not {"policy": "appVersion"} in your app config. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions')}`);
506
+ }
507
+ }
508
+ const resolvedRuntimeVersion = await config_plugins_1.Updates.getRuntimeVersionAsync(projectDir, exp, platform);
509
+ if (!resolvedRuntimeVersion) {
510
+ throw new Error(`Unable to determine runtime version for ${platform_1.requestedPlatformDisplayNames[platform]}. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions/')}`);
511
+ }
512
+ return resolvedRuntimeVersion;
513
+ }
495
514
  function getRuntimeToPlatformMappingFromRuntimeVersions(runtimeVersions) {
496
515
  const runtimeToPlatformMapping = [];
497
516
  for (const runtime of runtimeVersions) {
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
6
  const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
7
7
  const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
8
- const SetUpGoogleServiceAccountKey_1 = require("../../credentials/android/actions/SetUpGoogleServiceAccountKey");
8
+ const SetUpGoogleServiceAccountKeyForSubmissions_1 = require("../../credentials/android/actions/SetUpGoogleServiceAccountKeyForSubmissions");
9
9
  const googleServiceAccountKey_1 = require("../../credentials/android/utils/googleServiceAccountKey");
10
10
  const log_1 = tslib_1.__importStar(require("../../log"));
11
11
  const applicationId_1 = require("../../project/android/applicationId");
@@ -67,7 +67,7 @@ async function getServiceAccountFromCredentialsServiceAsync(ctx, source) {
67
67
  androidApplicationIdentifier: (_a = source.androidApplicationIdentifier) !== null && _a !== void 0 ? _a : (await promptForApplicationIdAsync()),
68
68
  };
69
69
  log_1.default.log(`Looking up credentials configuration for ${appLookupParams.androidApplicationIdentifier}...`);
70
- const setupGoogleServiceAccountKeyAction = new SetUpGoogleServiceAccountKey_1.SetUpGoogleServiceAccountKey(appLookupParams);
70
+ const setupGoogleServiceAccountKeyAction = new SetUpGoogleServiceAccountKeyForSubmissions_1.SetUpGoogleServiceAccountKeyForSubmissions(appLookupParams);
71
71
  const androidAppCredentials = await setupGoogleServiceAccountKeyAction.runAsync(ctx.credentialsCtx);
72
72
  const googleServiceAccountKey = (0, nullthrows_1.default)(androidAppCredentials.googleServiceAccountKeyForSubmissions, 'Credentials Service must provide a valid GoogleServiceAccountKey');
73
73
  return {
@@ -0,0 +1 @@
1
+ export declare function expoUpdatesCommandAsync(projectDir: string, args: string[]): Promise<string>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expoUpdatesCommandAsync = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const spawn_async_1 = tslib_1.__importDefault(require("@expo/spawn-async"));
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const resolve_from_1 = tslib_1.__importStar(require("resolve-from"));
8
+ const log_1 = tslib_1.__importStar(require("../log"));
9
+ async function expoUpdatesCommandAsync(projectDir, args) {
10
+ var _a;
11
+ let expoUpdatesCli;
12
+ try {
13
+ expoUpdatesCli =
14
+ (_a = (0, resolve_from_1.silent)(projectDir, 'expo-updates/bin/cli')) !== null && _a !== void 0 ? _a : (0, resolve_from_1.default)(projectDir, 'expo-updates/bin/cli.js');
15
+ }
16
+ catch (e) {
17
+ if (e.code === 'MODULE_NOT_FOUND') {
18
+ throw new Error(`The \`expo-updates\` package was not found. Follow the installation directions at ${(0, log_1.link)('https://docs.expo.dev/bare/installing-expo-modules/')}`);
19
+ }
20
+ throw e;
21
+ }
22
+ const spawnPromise = (0, spawn_async_1.default)(expoUpdatesCli, args, {
23
+ stdio: ['inherit', 'pipe', 'pipe'], // inherit stdin so user can install a missing expo-cli from inside this command
24
+ });
25
+ const { child: { stderr }, } = spawnPromise;
26
+ if (!stderr) {
27
+ throw new Error('Failed to spawn expo-updates cli');
28
+ }
29
+ stderr.on('data', data => {
30
+ for (const line of data.toString().trim().split('\n')) {
31
+ log_1.default.warn(`${chalk_1.default.gray('[expo-cli]')} ${line}`);
32
+ }
33
+ });
34
+ const result = await spawnPromise;
35
+ return result.stdout;
36
+ }
37
+ exports.expoUpdatesCommandAsync = expoUpdatesCommandAsync;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.1.3",
2
+ "version": "7.3.0",
3
3
  "commands": {
4
4
  "analytics": {
5
5
  "id": "analytics",
@@ -2156,12 +2156,6 @@
2156
2156
  ],
2157
2157
  "default": "all"
2158
2158
  },
2159
- "dev": {
2160
- "name": "dev",
2161
- "type": "boolean",
2162
- "description": "Publish a development bundle",
2163
- "allowNo": false
2164
- },
2165
2159
  "auto": {
2166
2160
  "name": "auto",
2167
2161
  "type": "boolean",
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "eas-cli",
3
3
  "description": "EAS command line tool",
4
- "version": "7.1.3",
4
+ "version": "7.3.0",
5
5
  "author": "Expo <support@expo.dev>",
6
6
  "bin": {
7
7
  "eas": "./bin/run"
8
8
  },
9
9
  "bugs": "https://github.com/expo/eas-cli/issues",
10
10
  "dependencies": {
11
- "@expo/apple-utils": "1.3.2",
11
+ "@expo/apple-utils": "1.4.0",
12
12
  "@expo/code-signing-certificates": "0.0.5",
13
13
  "@expo/config": "8.5.4",
14
14
  "@expo/config-plugins": "7.8.4",
15
15
  "@expo/config-types": "50.0.0",
16
- "@expo/eas-build-job": "1.0.61",
17
- "@expo/eas-json": "7.1.3",
16
+ "@expo/eas-build-job": "1.0.71",
17
+ "@expo/eas-json": "7.3.0",
18
18
  "@expo/json-file": "8.2.37",
19
19
  "@expo/multipart-body-parser": "1.1.0",
20
20
  "@expo/osascript": "2.0.33",
@@ -27,7 +27,7 @@
27
27
  "@expo/results": "1.0.0",
28
28
  "@expo/rudder-sdk-node": "1.1.1",
29
29
  "@expo/spawn-async": "1.7.0",
30
- "@expo/steps": "1.0.66",
30
+ "@expo/steps": "1.0.70",
31
31
  "@expo/timeago.js": "1.0.0",
32
32
  "@oclif/core": "^1.26.2",
33
33
  "@oclif/plugin-autocomplete": "^2.3.10",
@@ -222,5 +222,5 @@
222
222
  "node": "20.11.0",
223
223
  "yarn": "1.22.21"
224
224
  },
225
- "gitHead": "caf2403dfdb341c752084c8f88b1f491cc2380c8"
225
+ "gitHead": "a074ce0cffabae81f5a313df393ba2d80086e4f9"
226
226
  }