eas-cli 19.0.1 → 19.0.4
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 +100 -100
- package/build/commands/simulator/start.d.ts +1 -0
- package/build/commands/simulator/start.js +18 -3
- package/build/graphql/generated.d.ts +81 -1
- package/build/graphql/generated.js +2 -0
- package/build/graphql/queries/DeviceRunSessionQuery.js +4 -0
- package/build/project/ios/entitlements.js +19 -0
- package/build/simulator/utils.js +11 -0
- package/oclif.manifest.json +904 -897
- package/package.json +2 -2
|
@@ -3,6 +3,7 @@ export default class SimulatorStart extends EasCommand {
|
|
|
3
3
|
static hidden: boolean;
|
|
4
4
|
static description: string;
|
|
5
5
|
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
6
7
|
'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
8
|
platform: import("@oclif/core/lib/interfaces").OptionFlag<"android" | "ios", import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
9
|
type: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -11,6 +11,7 @@ const DeviceRunSessionQuery_1 = require("../../graphql/queries/DeviceRunSessionQ
|
|
|
11
11
|
const log_1 = tslib_1.__importStar(require("../../log"));
|
|
12
12
|
const ora_1 = require("../../ora");
|
|
13
13
|
const utils_1 = require("../../simulator/utils");
|
|
14
|
+
const json_1 = require("../../utils/json");
|
|
14
15
|
const promise_1 = require("../../utils/promise");
|
|
15
16
|
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
16
17
|
const POLL_INTERVAL_MS = 5_000; // 5 seconds
|
|
@@ -19,6 +20,7 @@ const POLL_TIMEOUT_MS = 15 * 60 * 1_000; // 15 minutes
|
|
|
19
20
|
// so adding a new enum value in codegen fails the build until it is wired up here.
|
|
20
21
|
const DEVICE_RUN_SESSION_TYPE_FLAG_VALUES = {
|
|
21
22
|
[generated_1.DeviceRunSessionType.AgentDevice]: 'agent-device',
|
|
23
|
+
[generated_1.DeviceRunSessionType.Argent]: 'argent',
|
|
22
24
|
[generated_1.DeviceRunSessionType.ServeSim]: 'serve-sim',
|
|
23
25
|
};
|
|
24
26
|
const DEVICE_RUN_SESSION_TYPE_BY_FLAG_VALUE = Object.fromEntries(Object.entries(DEVICE_RUN_SESSION_TYPE_FLAG_VALUES).map(([type, value]) => [value, type]));
|
|
@@ -39,7 +41,7 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
39
41
|
'package-version': core_1.Flags.string({
|
|
40
42
|
description: 'Version of the package backing the device run session (e.g. "0.1.3-alpha.3"). Defaults to "latest" when omitted.',
|
|
41
43
|
}),
|
|
42
|
-
...flags_1.
|
|
44
|
+
...flags_1.EasNonInteractiveAndJsonFlags,
|
|
43
45
|
};
|
|
44
46
|
static contextDefinition = {
|
|
45
47
|
...this.ContextOptions.ProjectId,
|
|
@@ -47,8 +49,12 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
47
49
|
};
|
|
48
50
|
async runAsync() {
|
|
49
51
|
const { flags } = await this.parse(SimulatorStart);
|
|
52
|
+
const { json: jsonFlag, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(flags);
|
|
53
|
+
if (jsonFlag) {
|
|
54
|
+
(0, json_1.enableJsonOutput)();
|
|
55
|
+
}
|
|
50
56
|
const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(SimulatorStart, {
|
|
51
|
-
nonInteractive
|
|
57
|
+
nonInteractive,
|
|
52
58
|
});
|
|
53
59
|
const platform = flags.platform === 'android' ? generated_1.AppPlatform.Android : generated_1.AppPlatform.Ios;
|
|
54
60
|
const createSpinner = (0, ora_1.ora)('🚀 Creating device run session').start();
|
|
@@ -104,10 +110,19 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
104
110
|
await ensureDeviceRunSessionStoppedSafelyAsync(graphqlClient, deviceRunSessionId);
|
|
105
111
|
throw new Error(`Timed out after ${Math.round(POLL_TIMEOUT_MS / 1000)}s waiting for ${flags.type} session to be ready. ${(0, log_1.link)(jobRunUrl)}`);
|
|
106
112
|
}
|
|
113
|
+
if (jsonFlag) {
|
|
114
|
+
(0, json_1.printJsonOnlyOutput)({
|
|
115
|
+
id: deviceRunSessionId,
|
|
116
|
+
type: flags.type,
|
|
117
|
+
jobRunUrl,
|
|
118
|
+
remoteConfig,
|
|
119
|
+
});
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
107
122
|
log_1.default.newLine();
|
|
108
123
|
log_1.default.log((0, utils_1.formatRemoteSessionInstructions)(remoteConfig));
|
|
109
124
|
log_1.default.newLine();
|
|
110
|
-
if (
|
|
125
|
+
if (nonInteractive) {
|
|
111
126
|
log_1.default.log(`When you are done, stop the session with: eas simulator:stop --id ${deviceRunSessionId}`);
|
|
112
127
|
return;
|
|
113
128
|
}
|
|
@@ -1854,6 +1854,15 @@ export type AppObserve = {
|
|
|
1854
1854
|
navigationRoutes: AppObserveNavigationRoutesConnection;
|
|
1855
1855
|
timeSeries: AppObserveTimeSeries;
|
|
1856
1856
|
totalEventCount: Scalars['Int']['output'];
|
|
1857
|
+
/**
|
|
1858
|
+
* Approximate count of unique users (`eas_client_id`) with at least one
|
|
1859
|
+
* supported-metric event in `[startTime, endTime)`. Uses ClickHouse's
|
|
1860
|
+
* HyperLogLog `uniq()`, so the value can drift by a small percent on apps
|
|
1861
|
+
* with very large user bases. `metricNames` on the input is currently
|
|
1862
|
+
* ignored: the count is always over all supported metrics, matching the
|
|
1863
|
+
* universe used by `appVersions` headline counts.
|
|
1864
|
+
*/
|
|
1865
|
+
uniqueActiveUserCount: Scalars['Int']['output'];
|
|
1857
1866
|
updates: AppObserveUpdatesConnection;
|
|
1858
1867
|
};
|
|
1859
1868
|
export type AppObserveAppVersionsArgs = {
|
|
@@ -1905,6 +1914,9 @@ export type AppObserveNavigationRoutesArgs = {
|
|
|
1905
1914
|
export type AppObserveTimeSeriesArgs = {
|
|
1906
1915
|
input: AppObserveTimeSeriesInput;
|
|
1907
1916
|
};
|
|
1917
|
+
export type AppObserveUniqueActiveUserCountArgs = {
|
|
1918
|
+
input: AppObserveReleasesInput;
|
|
1919
|
+
};
|
|
1908
1920
|
export type AppObserveUpdatesArgs = {
|
|
1909
1921
|
input: AppObserveUpdatesInput;
|
|
1910
1922
|
};
|
|
@@ -1950,6 +1962,17 @@ export type AppObserveAppVersion = {
|
|
|
1950
1962
|
buildNumbers: Array<AppObserveAppBuildNumber>;
|
|
1951
1963
|
eventCount: Scalars['Int']['output'];
|
|
1952
1964
|
firstSeenAt: Scalars['DateTime']['output'];
|
|
1965
|
+
/**
|
|
1966
|
+
* Unique users whose most recent supported-metric event in
|
|
1967
|
+
* `[startTime, endTime)` was on this version. Each active user
|
|
1968
|
+
* contributes to exactly one version, so summing this field across the
|
|
1969
|
+
* returned versions yields the total active users in the window (equal
|
|
1970
|
+
* to `AppObserve.uniqueActiveUserCount` up to HyperLogLog noise).
|
|
1971
|
+
* A version may be returned with `lastSeenUserCount = 0` when
|
|
1972
|
+
* every user who touched it later moved to a newer version. Users with
|
|
1973
|
+
* no events in the window are not counted on any version.
|
|
1974
|
+
*/
|
|
1975
|
+
lastSeenUserCount: Scalars['Int']['output'];
|
|
1953
1976
|
metrics: Array<AppObserveAppVersionMetric>;
|
|
1954
1977
|
uniqueUserCount: Scalars['Int']['output'];
|
|
1955
1978
|
updates: Array<AppObserveAppUpdate>;
|
|
@@ -2982,6 +3005,15 @@ export declare enum AppsFilter {
|
|
|
2982
3005
|
/** New Projects */
|
|
2983
3006
|
New = "NEW"
|
|
2984
3007
|
}
|
|
3008
|
+
export type ArgentRunSessionRemoteConfig = {
|
|
3009
|
+
__typename?: 'ArgentRunSessionRemoteConfig';
|
|
3010
|
+
toolsUrl: Scalars['String']['output'];
|
|
3011
|
+
/**
|
|
3012
|
+
* URL of the web preview surface for the session. Null when web previews are
|
|
3013
|
+
* not available for the platform (e.g. Android).
|
|
3014
|
+
*/
|
|
3015
|
+
webPreviewUrl?: Maybe<Scalars['String']['output']>;
|
|
3016
|
+
};
|
|
2985
3017
|
export type AscApiKeyInput = {
|
|
2986
3018
|
issuerIdentifier: Scalars['String']['input'];
|
|
2987
3019
|
keyIdentifier: Scalars['String']['input'];
|
|
@@ -3588,6 +3620,7 @@ export declare enum BuildPhase {
|
|
|
3588
3620
|
EasBuildInternal = "EAS_BUILD_INTERNAL",
|
|
3589
3621
|
FailBuild = "FAIL_BUILD",
|
|
3590
3622
|
FixGradlew = "FIX_GRADLEW",
|
|
3623
|
+
GradleBuildProfile = "GRADLE_BUILD_PROFILE",
|
|
3591
3624
|
InstallCustomTools = "INSTALL_CUSTOM_TOOLS",
|
|
3592
3625
|
InstallDependencies = "INSTALL_DEPENDENCIES",
|
|
3593
3626
|
InstallPods = "INSTALL_PODS",
|
|
@@ -4471,7 +4504,7 @@ export type DeviceRunSessionQuery = {
|
|
|
4471
4504
|
export type DeviceRunSessionQueryByIdArgs = {
|
|
4472
4505
|
deviceRunSessionId: Scalars['ID']['input'];
|
|
4473
4506
|
};
|
|
4474
|
-
export type DeviceRunSessionRemoteConfig = AgentDeviceRunSessionRemoteConfig | ServeSimRunSessionRemoteConfig;
|
|
4507
|
+
export type DeviceRunSessionRemoteConfig = AgentDeviceRunSessionRemoteConfig | ArgentRunSessionRemoteConfig | ServeSimRunSessionRemoteConfig;
|
|
4475
4508
|
export declare enum DeviceRunSessionStatus {
|
|
4476
4509
|
Errored = "ERRORED",
|
|
4477
4510
|
InProgress = "IN_PROGRESS",
|
|
@@ -4480,6 +4513,7 @@ export declare enum DeviceRunSessionStatus {
|
|
|
4480
4513
|
}
|
|
4481
4514
|
export declare enum DeviceRunSessionType {
|
|
4482
4515
|
AgentDevice = "AGENT_DEVICE",
|
|
4516
|
+
Argent = "ARGENT",
|
|
4483
4517
|
ServeSim = "SERVE_SIM"
|
|
4484
4518
|
}
|
|
4485
4519
|
export type DiscordUser = {
|
|
@@ -5107,6 +5141,25 @@ export type EditUpdateBranchInput = {
|
|
|
5107
5141
|
name?: InputMaybe<Scalars['String']['input']>;
|
|
5108
5142
|
newName: Scalars['String']['input'];
|
|
5109
5143
|
};
|
|
5144
|
+
export type EmbeddedUpdate = {
|
|
5145
|
+
__typename?: 'EmbeddedUpdate';
|
|
5146
|
+
channel: Scalars['String']['output'];
|
|
5147
|
+
createdAt: Scalars['DateTime']['output'];
|
|
5148
|
+
/** The manifest UUID baked into the binary by expo-updates at build time. */
|
|
5149
|
+
id: Scalars['ID']['output'];
|
|
5150
|
+
launchAsset: EmbeddedUpdateAsset;
|
|
5151
|
+
platform: AppPlatform;
|
|
5152
|
+
runtimeVersion: Scalars['String']['output'];
|
|
5153
|
+
};
|
|
5154
|
+
export type EmbeddedUpdateAsset = {
|
|
5155
|
+
__typename?: 'EmbeddedUpdateAsset';
|
|
5156
|
+
contentType: Scalars['String']['output'];
|
|
5157
|
+
fileSHA256: Scalars['String']['output'];
|
|
5158
|
+
fileSize: Scalars['Int']['output'];
|
|
5159
|
+
finalFileSize?: Maybe<Scalars['Int']['output']>;
|
|
5160
|
+
id: Scalars['ID']['output'];
|
|
5161
|
+
storageKey: Scalars['String']['output'];
|
|
5162
|
+
};
|
|
5110
5163
|
export type EmbeddedUpdateAssetMutation = {
|
|
5111
5164
|
__typename?: 'EmbeddedUpdateAssetMutation';
|
|
5112
5165
|
/**
|
|
@@ -5129,6 +5182,17 @@ export type EmbeddedUpdateAssetUploadSpec = {
|
|
|
5129
5182
|
/** Storage key (`{appId}/{embeddedUpdateId}`). Same key in both upload and destination buckets. */
|
|
5130
5183
|
storageKey: Scalars['String']['output'];
|
|
5131
5184
|
};
|
|
5185
|
+
export type EmbeddedUpdateMutation = {
|
|
5186
|
+
__typename?: 'EmbeddedUpdateMutation';
|
|
5187
|
+
/**
|
|
5188
|
+
* Register an embedded bundle as the launch asset for a given app/platform/channel.
|
|
5189
|
+
* Returns EMBEDDED_UPDATE_ASSET_NOT_AVAILABLE if the asset has not been finalized yet.
|
|
5190
|
+
*/
|
|
5191
|
+
uploadEmbeddedUpdate: EmbeddedUpdate;
|
|
5192
|
+
};
|
|
5193
|
+
export type EmbeddedUpdateMutationUploadEmbeddedUpdateArgs = {
|
|
5194
|
+
input: UploadEmbeddedUpdateInput;
|
|
5195
|
+
};
|
|
5132
5196
|
export declare enum EntityTypeName {
|
|
5133
5197
|
AccountEntity = "AccountEntity",
|
|
5134
5198
|
AccountSsoConfigurationEntity = "AccountSSOConfigurationEntity",
|
|
@@ -6177,6 +6241,7 @@ export type JobRun = {
|
|
|
6177
6241
|
createdAt: Scalars['DateTime']['output'];
|
|
6178
6242
|
displayName?: Maybe<Scalars['String']['output']>;
|
|
6179
6243
|
endedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
6244
|
+
enqueuedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
6180
6245
|
errors: Array<JobRunError>;
|
|
6181
6246
|
expiresAt: Scalars['DateTime']['output'];
|
|
6182
6247
|
gitCommitHash?: Maybe<Scalars['String']['output']>;
|
|
@@ -6926,6 +6991,8 @@ export type RootMutation = {
|
|
|
6926
6991
|
echoTurn: EchoTurnMutation;
|
|
6927
6992
|
/** Mutations for Echo versions */
|
|
6928
6993
|
echoVersion: EchoVersionMutation;
|
|
6994
|
+
/** Mutations that register embedded update bundles for bundle diffing. */
|
|
6995
|
+
embeddedUpdate: EmbeddedUpdateMutation;
|
|
6929
6996
|
embeddedUpdateAsset: EmbeddedUpdateAssetMutation;
|
|
6930
6997
|
/** Mutations that create and delete EnvironmentSecrets */
|
|
6931
6998
|
environmentSecret: EnvironmentSecretMutation;
|
|
@@ -8243,6 +8310,15 @@ export type UpdatesMetricsData = {
|
|
|
8243
8310
|
installsDataset: CumulativeUpdatesDataset;
|
|
8244
8311
|
labels: Array<Scalars['String']['output']>;
|
|
8245
8312
|
};
|
|
8313
|
+
export type UploadEmbeddedUpdateInput = {
|
|
8314
|
+
appId: Scalars['ID']['input'];
|
|
8315
|
+
channel: Scalars['String']['input'];
|
|
8316
|
+
/** UUID baked into the binary by expo-updates at build time (from app.manifest id field). */
|
|
8317
|
+
embeddedUpdateId: Scalars['ID']['input'];
|
|
8318
|
+
platform: AppPlatform;
|
|
8319
|
+
runtimeVersion: Scalars['String']['input'];
|
|
8320
|
+
turtleBuildId?: InputMaybe<Scalars['ID']['input']>;
|
|
8321
|
+
};
|
|
8246
8322
|
export type UploadSession = {
|
|
8247
8323
|
__typename?: 'UploadSession';
|
|
8248
8324
|
/** Create an Upload Session for a specific account */
|
|
@@ -16866,6 +16942,10 @@ export type DeviceRunSessionByIdQuery = {
|
|
|
16866
16942
|
agentDeviceRemoteSessionUrl: string;
|
|
16867
16943
|
agentDeviceRemoteSessionToken: string;
|
|
16868
16944
|
webPreviewUrl?: string | null;
|
|
16945
|
+
} | {
|
|
16946
|
+
__typename: 'ArgentRunSessionRemoteConfig';
|
|
16947
|
+
toolsUrl: string;
|
|
16948
|
+
webPreviewUrl?: string | null;
|
|
16869
16949
|
} | {
|
|
16870
16950
|
__typename: 'ServeSimRunSessionRemoteConfig';
|
|
16871
16951
|
previewUrl: string;
|
|
@@ -279,6 +279,7 @@ var BuildPhase;
|
|
|
279
279
|
BuildPhase["EasBuildInternal"] = "EAS_BUILD_INTERNAL";
|
|
280
280
|
BuildPhase["FailBuild"] = "FAIL_BUILD";
|
|
281
281
|
BuildPhase["FixGradlew"] = "FIX_GRADLEW";
|
|
282
|
+
BuildPhase["GradleBuildProfile"] = "GRADLE_BUILD_PROFILE";
|
|
282
283
|
BuildPhase["InstallCustomTools"] = "INSTALL_CUSTOM_TOOLS";
|
|
283
284
|
BuildPhase["InstallDependencies"] = "INSTALL_DEPENDENCIES";
|
|
284
285
|
BuildPhase["InstallPods"] = "INSTALL_PODS";
|
|
@@ -414,6 +415,7 @@ var DeviceRunSessionStatus;
|
|
|
414
415
|
var DeviceRunSessionType;
|
|
415
416
|
(function (DeviceRunSessionType) {
|
|
416
417
|
DeviceRunSessionType["AgentDevice"] = "AGENT_DEVICE";
|
|
418
|
+
DeviceRunSessionType["Argent"] = "ARGENT";
|
|
417
419
|
DeviceRunSessionType["ServeSim"] = "SERVE_SIM";
|
|
418
420
|
})(DeviceRunSessionType || (exports.DeviceRunSessionType = DeviceRunSessionType = {}));
|
|
419
421
|
var DistributionType;
|
|
@@ -6,6 +6,7 @@ const tslib_1 = require("tslib");
|
|
|
6
6
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
7
7
|
const prebuild_config_1 = require("@expo/prebuild-config");
|
|
8
8
|
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
9
|
+
const sentry_1 = tslib_1.__importDefault(require("../../sentry"));
|
|
9
10
|
const expoCli_1 = require("../../utils/expoCli");
|
|
10
11
|
const plist_1 = require("../../utils/plist");
|
|
11
12
|
const projectUtils_1 = require("../projectUtils");
|
|
@@ -24,6 +25,24 @@ async function getManagedApplicationTargetEntitlementsAsync(projectDir, env, vcs
|
|
|
24
25
|
return expWithMods.ios?.entitlements ?? {};
|
|
25
26
|
}
|
|
26
27
|
catch (error) {
|
|
28
|
+
try {
|
|
29
|
+
sentry_1.default.withScope(scope => {
|
|
30
|
+
if (process.env.EAS_BUILD_PROJECT_ID) {
|
|
31
|
+
scope.setTag('app_id', process.env.EAS_BUILD_PROJECT_ID);
|
|
32
|
+
}
|
|
33
|
+
if (process.env.EAS_BUILD_ID) {
|
|
34
|
+
scope.setTag('build_id', process.env.EAS_BUILD_ID);
|
|
35
|
+
}
|
|
36
|
+
scope.setTag('config_resolution', 'ios_entitlements_introspection');
|
|
37
|
+
scope.setExtra('message', 'iOS entitlements config fallback');
|
|
38
|
+
scope.setExtra('stdout', error.stdout);
|
|
39
|
+
scope.setExtra('stderr', error.stderr);
|
|
40
|
+
sentry_1.default.captureException(error);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// do nothing
|
|
45
|
+
}
|
|
27
46
|
expoConfigError = error;
|
|
28
47
|
log_1.default.warn(`Failed to read the app config from the project using the local Expo CLI: ${formatError(error)}`);
|
|
29
48
|
log_1.default.warn('Falling back to the version of "@expo/config" shipped with the EAS CLI.');
|
package/build/simulator/utils.js
CHANGED
|
@@ -15,6 +15,17 @@ function formatRemoteSessionInstructions(remoteConfig) {
|
|
|
15
15
|
}
|
|
16
16
|
return lines.join('\n');
|
|
17
17
|
}
|
|
18
|
+
case 'ArgentRunSessionRemoteConfig': {
|
|
19
|
+
const lines = [
|
|
20
|
+
'🔑 Open the following URL to access the Argent tools for this session:',
|
|
21
|
+
'',
|
|
22
|
+
remoteConfig.toolsUrl,
|
|
23
|
+
];
|
|
24
|
+
if (remoteConfig.webPreviewUrl) {
|
|
25
|
+
lines.push('', '🌐 Open the following URL in your browser to preview the simulator:', '', remoteConfig.webPreviewUrl);
|
|
26
|
+
}
|
|
27
|
+
return lines.join('\n');
|
|
28
|
+
}
|
|
18
29
|
case 'ServeSimRunSessionRemoteConfig':
|
|
19
30
|
return [
|
|
20
31
|
'🌐 Open the following URL in your browser to access the simulator:',
|