eas-cli 16.1.0 → 16.2.1
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/README.md +117 -81
- package/build/build/utils/url.d.ts +1 -0
- package/build/build/utils/url.js +5 -1
- package/build/commandUtils/EasCommand.js +6 -1
- package/build/commandUtils/builds.d.ts +1 -0
- package/build/commandUtils/builds.js +3 -0
- package/build/commandUtils/context/ServerSideEnvironmentVariablesContextField.d.ts +1 -2
- package/build/commands/deploy/index.js +20 -2
- package/build/commands/fingerprint/compare.d.ts +3 -0
- package/build/commands/fingerprint/compare.js +50 -13
- package/build/commands/fingerprint/generate.d.ts +5 -2
- package/build/commands/fingerprint/generate.js +44 -7
- package/build/commands/update/delete.js +13 -6
- package/build/commands/update/index.d.ts +1 -0
- package/build/commands/update/index.js +90 -59
- package/build/commands/upload.d.ts +18 -0
- package/build/commands/upload.js +253 -0
- package/build/credentials/ios/appstore/ensureTestFlightGroup.js +4 -3
- package/build/graphql/generated.d.ts +170 -5
- package/build/graphql/generated.js +6 -2
- package/build/graphql/mutations/LocalBuildMutation.d.ts +5 -0
- package/build/graphql/mutations/LocalBuildMutation.js +38 -0
- package/build/graphql/mutations/UploadSessionMutation.d.ts +1 -1
- package/build/graphql/mutations/UploadSessionMutation.js +4 -3
- package/build/graphql/queries/BackgroundJobReceiptQuery.d.ts +5 -0
- package/build/graphql/queries/BackgroundJobReceiptQuery.js +27 -0
- package/build/graphql/types/BackgroundJobReceipt.d.ts +1 -0
- package/build/graphql/types/BackgroundJobReceipt.js +20 -0
- package/build/metadata/download.js +1 -1
- package/build/metadata/upload.js +1 -1
- package/build/metadata/utils/telemetry.d.ts +3 -3
- package/build/metadata/utils/telemetry.js +9 -9
- package/build/project/publish.d.ts +17 -1
- package/build/project/publish.js +22 -1
- package/build/run/ios/xcode.d.ts +15 -0
- package/build/run/ios/xcode.js +24 -1
- package/build/uploads.js +2 -1
- package/build/utils/pollForBackgroundJobReceiptAsync.d.ts +29 -0
- package/build/utils/pollForBackgroundJobReceiptAsync.js +92 -0
- package/oclif.manifest.json +80 -5
- package/package.json +5 -3
package/build/run/ios/xcode.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.openAppStoreAsync = exports.getXcodeVersionAsync = exports.APP_STORE_ID = exports.MIN_XCODE_VERSION = void 0;
|
|
3
|
+
exports.openAppStoreAsync = exports.resolveXcodeProjectAsync = exports.getXcodeBuildSettingsAsync = exports.getXcodeVersionAsync = exports.APP_STORE_ID = exports.MIN_XCODE_VERSION = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const spawn_async_1 = tslib_1.__importDefault(require("@expo/spawn-async"));
|
|
6
6
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
|
+
const fast_glob_1 = tslib_1.__importDefault(require("fast-glob"));
|
|
7
8
|
const semver_1 = tslib_1.__importDefault(require("semver"));
|
|
8
9
|
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
9
10
|
// Based on the RN docs (Aug 2020).
|
|
@@ -26,6 +27,28 @@ async function getXcodeVersionAsync() {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
exports.getXcodeVersionAsync = getXcodeVersionAsync;
|
|
30
|
+
async function getXcodeBuildSettingsAsync(xcworkspacePath, scheme) {
|
|
31
|
+
const { stdout } = await (0, spawn_async_1.default)('xcodebuild', [
|
|
32
|
+
'-workspace',
|
|
33
|
+
xcworkspacePath,
|
|
34
|
+
'-scheme',
|
|
35
|
+
scheme,
|
|
36
|
+
'-showBuildSettings',
|
|
37
|
+
'-json',
|
|
38
|
+
]);
|
|
39
|
+
return JSON.parse(stdout);
|
|
40
|
+
}
|
|
41
|
+
exports.getXcodeBuildSettingsAsync = getXcodeBuildSettingsAsync;
|
|
42
|
+
async function resolveXcodeProjectAsync(projectRoot) {
|
|
43
|
+
const ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];
|
|
44
|
+
const paths = await (0, fast_glob_1.default)(`ios/*.xcworkspace`, {
|
|
45
|
+
cwd: projectRoot,
|
|
46
|
+
onlyDirectories: true,
|
|
47
|
+
ignore: ignoredPaths,
|
|
48
|
+
});
|
|
49
|
+
return paths[0];
|
|
50
|
+
}
|
|
51
|
+
exports.resolveXcodeProjectAsync = resolveXcodeProjectAsync;
|
|
29
52
|
async function openAppStoreAsync(appId) {
|
|
30
53
|
const link = getAppStoreLink(appId);
|
|
31
54
|
await (0, spawn_async_1.default)(`open`, [link]);
|
package/build/uploads.js
CHANGED
|
@@ -6,9 +6,10 @@ const form_data_1 = tslib_1.__importDefault(require("form-data"));
|
|
|
6
6
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
7
7
|
const promise_retry_1 = tslib_1.__importDefault(require("promise-retry"));
|
|
8
8
|
const fetch_1 = tslib_1.__importDefault(require("./fetch"));
|
|
9
|
+
const generated_1 = require("./graphql/generated");
|
|
9
10
|
const UploadSessionMutation_1 = require("./graphql/mutations/UploadSessionMutation");
|
|
10
11
|
async function uploadFileAtPathToGCSAsync(graphqlClient, type, path, handleProgressEvent = () => { }) {
|
|
11
|
-
const signedUrl = await UploadSessionMutation_1.UploadSessionMutation.createUploadSessionAsync(graphqlClient, type);
|
|
12
|
+
const signedUrl = await UploadSessionMutation_1.UploadSessionMutation.createUploadSessionAsync(graphqlClient, type, type === generated_1.UploadSessionType.EasShareGcsAppArchive ? path : undefined);
|
|
12
13
|
await uploadWithSignedUrlWithProgressAsync(path, signedUrl, handleProgressEvent);
|
|
13
14
|
return signedUrl.bucketKey;
|
|
14
15
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CombinedError } from '@urql/core';
|
|
2
|
+
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
3
|
+
import { BackgroundJobReceiptDataFragment } from '../graphql/generated';
|
|
4
|
+
export declare enum BackgroundJobReceiptPollErrorType {
|
|
5
|
+
NULL_RECEIPT = 0,
|
|
6
|
+
JOB_FAILED_NO_WILL_RETRY = 1,
|
|
7
|
+
TIMEOUT = 2
|
|
8
|
+
}
|
|
9
|
+
export type BackgroundJobReceiptPollErrorData = {
|
|
10
|
+
errorType: BackgroundJobReceiptPollErrorType.NULL_RECEIPT;
|
|
11
|
+
} | {
|
|
12
|
+
errorType: BackgroundJobReceiptPollErrorType.JOB_FAILED_NO_WILL_RETRY;
|
|
13
|
+
receiptErrorMessage: string | undefined | null;
|
|
14
|
+
} | {
|
|
15
|
+
errorType: BackgroundJobReceiptPollErrorType.TIMEOUT;
|
|
16
|
+
};
|
|
17
|
+
export declare class BackgroundJobReceiptPollError extends Error {
|
|
18
|
+
readonly errorData: BackgroundJobReceiptPollErrorData;
|
|
19
|
+
constructor(errorData: BackgroundJobReceiptPollErrorData);
|
|
20
|
+
static createErrorMessage(errorData: BackgroundJobReceiptPollErrorData): string;
|
|
21
|
+
}
|
|
22
|
+
export type BackgroundJobPollErrorCondition = (error: CombinedError) => {
|
|
23
|
+
errorIndicatesSuccess: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare function pollForBackgroundJobReceiptAsync(graphqlClient: ExpoGraphqlClient, backgroundJobReceipt: BackgroundJobReceiptDataFragment): Promise<BackgroundJobReceiptDataFragment>;
|
|
26
|
+
export declare function pollForBackgroundJobReceiptAsync(graphqlClient: ExpoGraphqlClient, backgroundJobReceipt: BackgroundJobReceiptDataFragment, options?: {
|
|
27
|
+
onBackgroundJobReceiptPollError?: BackgroundJobPollErrorCondition;
|
|
28
|
+
pollInterval?: number;
|
|
29
|
+
}): Promise<BackgroundJobReceiptDataFragment | null>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pollForBackgroundJobReceiptAsync = exports.BackgroundJobReceiptPollError = exports.BackgroundJobReceiptPollErrorType = void 0;
|
|
4
|
+
const core_1 = require("@urql/core");
|
|
5
|
+
const set_interval_async_1 = require("set-interval-async");
|
|
6
|
+
const generated_1 = require("../graphql/generated");
|
|
7
|
+
const BackgroundJobReceiptQuery_1 = require("../graphql/queries/BackgroundJobReceiptQuery");
|
|
8
|
+
var BackgroundJobReceiptPollErrorType;
|
|
9
|
+
(function (BackgroundJobReceiptPollErrorType) {
|
|
10
|
+
BackgroundJobReceiptPollErrorType[BackgroundJobReceiptPollErrorType["NULL_RECEIPT"] = 0] = "NULL_RECEIPT";
|
|
11
|
+
BackgroundJobReceiptPollErrorType[BackgroundJobReceiptPollErrorType["JOB_FAILED_NO_WILL_RETRY"] = 1] = "JOB_FAILED_NO_WILL_RETRY";
|
|
12
|
+
BackgroundJobReceiptPollErrorType[BackgroundJobReceiptPollErrorType["TIMEOUT"] = 2] = "TIMEOUT";
|
|
13
|
+
})(BackgroundJobReceiptPollErrorType || (exports.BackgroundJobReceiptPollErrorType = BackgroundJobReceiptPollErrorType = {}));
|
|
14
|
+
class BackgroundJobReceiptPollError extends Error {
|
|
15
|
+
errorData;
|
|
16
|
+
constructor(errorData) {
|
|
17
|
+
super(BackgroundJobReceiptPollError.createErrorMessage(errorData));
|
|
18
|
+
this.errorData = errorData;
|
|
19
|
+
}
|
|
20
|
+
static createErrorMessage(errorData) {
|
|
21
|
+
switch (errorData.errorType) {
|
|
22
|
+
case BackgroundJobReceiptPollErrorType.NULL_RECEIPT:
|
|
23
|
+
return 'Background job receipt was null.';
|
|
24
|
+
case BackgroundJobReceiptPollErrorType.JOB_FAILED_NO_WILL_RETRY:
|
|
25
|
+
return `Background job failed with error: ${errorData.receiptErrorMessage}`;
|
|
26
|
+
case BackgroundJobReceiptPollErrorType.TIMEOUT:
|
|
27
|
+
return 'Background job timed out.';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.BackgroundJobReceiptPollError = BackgroundJobReceiptPollError;
|
|
32
|
+
async function fetchBackgroundJobReceiptAsync(graphqlClient, receiptId) {
|
|
33
|
+
try {
|
|
34
|
+
return [await BackgroundJobReceiptQuery_1.BackgroundJobReceiptQuery.byIdAsync(graphqlClient, receiptId), null];
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error instanceof core_1.CombinedError) {
|
|
38
|
+
return [null, error];
|
|
39
|
+
}
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function pollForBackgroundJobReceiptAsync(graphqlClient, backgroundJobReceipt, options) {
|
|
44
|
+
return await new Promise((resolve, reject) => {
|
|
45
|
+
let numChecks = 0;
|
|
46
|
+
const intervalHandle = (0, set_interval_async_1.setIntervalAsync)(async function pollForDeletionFinishedAsync() {
|
|
47
|
+
function failBackgroundDeletion(error) {
|
|
48
|
+
void (0, set_interval_async_1.clearIntervalAsync)(intervalHandle);
|
|
49
|
+
reject(error);
|
|
50
|
+
}
|
|
51
|
+
const [receipt, error] = await fetchBackgroundJobReceiptAsync(graphqlClient, backgroundJobReceipt.id);
|
|
52
|
+
if (!receipt) {
|
|
53
|
+
if (error instanceof core_1.CombinedError) {
|
|
54
|
+
const errorResult = options?.onBackgroundJobReceiptPollError?.(error);
|
|
55
|
+
if (errorResult?.errorIndicatesSuccess) {
|
|
56
|
+
void (0, set_interval_async_1.clearIntervalAsync)(intervalHandle);
|
|
57
|
+
resolve(null);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
failBackgroundDeletion(new BackgroundJobReceiptPollError({
|
|
62
|
+
errorType: BackgroundJobReceiptPollErrorType.NULL_RECEIPT,
|
|
63
|
+
}));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// job failed and will not retry
|
|
67
|
+
if (receipt.state === generated_1.BackgroundJobState.Failure && !receipt.willRetry) {
|
|
68
|
+
failBackgroundDeletion(new BackgroundJobReceiptPollError({
|
|
69
|
+
errorType: BackgroundJobReceiptPollErrorType.JOB_FAILED_NO_WILL_RETRY,
|
|
70
|
+
receiptErrorMessage: receipt.errorMessage,
|
|
71
|
+
}));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// all else fails, stop polling after 90 checks. This should only happen if there's an
|
|
75
|
+
// issue with receipts not setting `willRetry` to false when they fail within a reasonable
|
|
76
|
+
// amount of time.
|
|
77
|
+
if (numChecks > 90) {
|
|
78
|
+
failBackgroundDeletion(new BackgroundJobReceiptPollError({
|
|
79
|
+
errorType: BackgroundJobReceiptPollErrorType.TIMEOUT,
|
|
80
|
+
}));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (receipt.state === generated_1.BackgroundJobState.Success) {
|
|
84
|
+
void (0, set_interval_async_1.clearIntervalAsync)(intervalHandle);
|
|
85
|
+
resolve(receipt);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
numChecks++;
|
|
89
|
+
}, options?.pollInterval ?? 1000);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.pollForBackgroundJobReceiptAsync = pollForBackgroundJobReceiptAsync;
|
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "16.1
|
|
2
|
+
"version": "16.2.1",
|
|
3
3
|
"commands": {
|
|
4
4
|
"analytics": {
|
|
5
5
|
"id": "analytics",
|
|
@@ -214,6 +214,52 @@
|
|
|
214
214
|
"vcsClient": {}
|
|
215
215
|
}
|
|
216
216
|
},
|
|
217
|
+
"upload": {
|
|
218
|
+
"id": "upload",
|
|
219
|
+
"description": "upload a local build and generate a sharable link",
|
|
220
|
+
"strict": true,
|
|
221
|
+
"pluginName": "eas-cli",
|
|
222
|
+
"pluginAlias": "eas-cli",
|
|
223
|
+
"pluginType": "core",
|
|
224
|
+
"hidden": true,
|
|
225
|
+
"aliases": [],
|
|
226
|
+
"flags": {
|
|
227
|
+
"platform": {
|
|
228
|
+
"name": "platform",
|
|
229
|
+
"type": "option",
|
|
230
|
+
"char": "p",
|
|
231
|
+
"helpValue": "(ios|android)",
|
|
232
|
+
"multiple": false,
|
|
233
|
+
"options": [
|
|
234
|
+
"ios",
|
|
235
|
+
"android"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
"build-path": {
|
|
239
|
+
"name": "build-path",
|
|
240
|
+
"type": "option",
|
|
241
|
+
"description": "Path for the local build",
|
|
242
|
+
"multiple": false
|
|
243
|
+
},
|
|
244
|
+
"fingerprint": {
|
|
245
|
+
"name": "fingerprint",
|
|
246
|
+
"type": "option",
|
|
247
|
+
"description": "Fingerprint hash of the local build",
|
|
248
|
+
"multiple": false
|
|
249
|
+
},
|
|
250
|
+
"non-interactive": {
|
|
251
|
+
"name": "non-interactive",
|
|
252
|
+
"type": "boolean",
|
|
253
|
+
"description": "Run the command in non-interactive mode.",
|
|
254
|
+
"allowNo": false
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"args": {},
|
|
258
|
+
"contextDefinition": {
|
|
259
|
+
"projectId": {},
|
|
260
|
+
"loggedIn": {}
|
|
261
|
+
}
|
|
262
|
+
},
|
|
217
263
|
"account:login": {
|
|
218
264
|
"id": "account:login",
|
|
219
265
|
"description": "log in with your Expo account",
|
|
@@ -2781,6 +2827,7 @@
|
|
|
2781
2827
|
"$ eas fingerprint:compare <FINGERPRINT-HASH> \t # Compare fingerprint against local directory",
|
|
2782
2828
|
"$ eas fingerprint:compare <FINGERPRINT-HASH-1> <FINGERPRINT-HASH-2> \t # Compare provided fingerprints",
|
|
2783
2829
|
"$ eas fingerprint:compare --build-id <BUILD-ID> \t # Compare fingerprint from build against local directory",
|
|
2830
|
+
"$ eas fingerprint:compare --build-id <BUILD-ID> --environment production \t # Compare fingerprint from build against local directory with the \"production\" environment",
|
|
2784
2831
|
"$ eas fingerprint:compare --build-id <BUILD-ID-1> --build-id <BUILD-ID-2>\t # Compare fingerprint from a build against another build",
|
|
2785
2832
|
"$ eas fingerprint:compare --build-id <BUILD-ID> --update-id <UPDATE-ID>\t # Compare fingerprint from build against fingerprint from update",
|
|
2786
2833
|
"$ eas fingerprint:compare <FINGERPRINT-HASH> --update-id <UPDATE-ID> \t # Compare fingerprint from update against provided fingerprint"
|
|
@@ -2810,6 +2857,18 @@
|
|
|
2810
2857
|
"description": "Open the fingerprint comparison in the browser",
|
|
2811
2858
|
"allowNo": false
|
|
2812
2859
|
},
|
|
2860
|
+
"environment": {
|
|
2861
|
+
"name": "environment",
|
|
2862
|
+
"type": "option",
|
|
2863
|
+
"description": "If generating a fingerprint from the local directory, use the specified environment.",
|
|
2864
|
+
"helpValue": "(development|preview|production)",
|
|
2865
|
+
"multiple": false,
|
|
2866
|
+
"options": [
|
|
2867
|
+
"development",
|
|
2868
|
+
"preview",
|
|
2869
|
+
"production"
|
|
2870
|
+
]
|
|
2871
|
+
},
|
|
2813
2872
|
"json": {
|
|
2814
2873
|
"name": "json",
|
|
2815
2874
|
"type": "boolean",
|
|
@@ -2842,7 +2901,8 @@
|
|
|
2842
2901
|
"projectId": {},
|
|
2843
2902
|
"loggedIn": {},
|
|
2844
2903
|
"privateProjectConfig": {},
|
|
2845
|
-
"vcsClient": {}
|
|
2904
|
+
"vcsClient": {},
|
|
2905
|
+
"getServerSideEnvironmentVariablesAsync": {}
|
|
2846
2906
|
}
|
|
2847
2907
|
},
|
|
2848
2908
|
"fingerprint:generate": {
|
|
@@ -2852,11 +2912,11 @@
|
|
|
2852
2912
|
"pluginName": "eas-cli",
|
|
2853
2913
|
"pluginAlias": "eas-cli",
|
|
2854
2914
|
"pluginType": "core",
|
|
2855
|
-
"hidden": true,
|
|
2856
2915
|
"aliases": [],
|
|
2857
2916
|
"examples": [
|
|
2858
2917
|
"$ eas fingerprint:generate \t # Generate fingerprint in interactive mode",
|
|
2859
|
-
"$ eas fingerprint:generate --profile preview \t # Generate a fingerprint using the \"preview\" build profile",
|
|
2918
|
+
"$ eas fingerprint:generate --build-profile preview \t # Generate a fingerprint using the \"preview\" build profile",
|
|
2919
|
+
"$ eas fingerprint:generate --environment preview \t # Generate a fingerprint using the \"preview\" environment",
|
|
2860
2920
|
"$ eas fingerprint:generate --json --non-interactive --platform android \t # Output fingerprint json to stdout"
|
|
2861
2921
|
],
|
|
2862
2922
|
"flags": {
|
|
@@ -2881,6 +2941,19 @@
|
|
|
2881
2941
|
"development",
|
|
2882
2942
|
"preview",
|
|
2883
2943
|
"production"
|
|
2944
|
+
],
|
|
2945
|
+
"exclusive": [
|
|
2946
|
+
"build-profile"
|
|
2947
|
+
]
|
|
2948
|
+
},
|
|
2949
|
+
"build-profile": {
|
|
2950
|
+
"name": "build-profile",
|
|
2951
|
+
"type": "option",
|
|
2952
|
+
"char": "e",
|
|
2953
|
+
"description": "Name of the build profile from eas.json.",
|
|
2954
|
+
"multiple": false,
|
|
2955
|
+
"exclusive": [
|
|
2956
|
+
"environment"
|
|
2884
2957
|
]
|
|
2885
2958
|
},
|
|
2886
2959
|
"json": {
|
|
@@ -2905,7 +2978,9 @@
|
|
|
2905
2978
|
"loggedIn": {},
|
|
2906
2979
|
"privateProjectConfig": {},
|
|
2907
2980
|
"vcsClient": {},
|
|
2908
|
-
"getServerSideEnvironmentVariablesAsync": {}
|
|
2981
|
+
"getServerSideEnvironmentVariablesAsync": {},
|
|
2982
|
+
"getDynamicPublicProjectConfigAsync": {},
|
|
2983
|
+
"getDynamicPrivateProjectConfigAsync": {}
|
|
2909
2984
|
}
|
|
2910
2985
|
},
|
|
2911
2986
|
"metadata:lint": {
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eas-cli",
|
|
3
3
|
"description": "EAS command line tool",
|
|
4
|
-
"version": "16.1
|
|
4
|
+
"version": "16.2.1",
|
|
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": "2.1.
|
|
11
|
+
"@expo/apple-utils": "2.1.12",
|
|
12
12
|
"@expo/code-signing-certificates": "0.0.5",
|
|
13
13
|
"@expo/config": "10.0.6",
|
|
14
14
|
"@expo/config-plugins": "9.0.12",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"nanoid": "3.3.8",
|
|
69
69
|
"node-fetch": "2.6.7",
|
|
70
70
|
"node-forge": "1.3.1",
|
|
71
|
+
"node-stream-zip": "1.15.0",
|
|
71
72
|
"nullthrows": "1.1.1",
|
|
72
73
|
"ora": "5.1.0",
|
|
73
74
|
"pkg-dir": "4.2.0",
|
|
@@ -78,6 +79,7 @@
|
|
|
78
79
|
"qrcode-terminal": "0.12.0",
|
|
79
80
|
"resolve-from": "5.0.0",
|
|
80
81
|
"semver": "7.5.4",
|
|
82
|
+
"set-interval-async": "3.0.3",
|
|
81
83
|
"slash": "3.0.0",
|
|
82
84
|
"tar": "6.2.1",
|
|
83
85
|
"tar-stream": "3.1.7",
|
|
@@ -237,5 +239,5 @@
|
|
|
237
239
|
"node": "20.11.0",
|
|
238
240
|
"yarn": "1.22.21"
|
|
239
241
|
},
|
|
240
|
-
"gitHead": "
|
|
242
|
+
"gitHead": "89d1572f9d84809c951ecbe359ea37b5c25fdaf3"
|
|
241
243
|
}
|