eas-cli 16.19.0 → 16.19.2

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.
@@ -1,2 +1,4 @@
1
1
  import { BuildFragment } from '../../graphql/generated';
2
+ import { FormatFieldsItem } from '../../utils/formatFields';
3
+ export declare function formatGraphQLBuildArtifacts(build: BuildFragment): FormatFieldsItem[];
2
4
  export declare function formatGraphQLBuild(build: BuildFragment): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatGraphQLBuild = void 0;
3
+ exports.formatGraphQLBuild = exports.formatGraphQLBuildArtifacts = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
6
  const url_1 = require("./url");
@@ -8,6 +8,38 @@ const generated_1 = require("../../graphql/generated");
8
8
  const log_1 = require("../../log");
9
9
  const platform_1 = require("../../platform");
10
10
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
11
+ function formatGraphQLBuildArtifacts(build) {
12
+ const fields = [
13
+ {
14
+ label: 'Application Archive URL',
15
+ get value() {
16
+ switch (build.status) {
17
+ case generated_1.BuildStatus.InProgress:
18
+ return '<in progress>';
19
+ default: {
20
+ const url = build.artifacts?.buildUrl;
21
+ return url ? (0, log_1.link)(url) : 'null';
22
+ }
23
+ }
24
+ },
25
+ },
26
+ {
27
+ label: 'Build Artifacts URL',
28
+ get value() {
29
+ switch (build.status) {
30
+ case generated_1.BuildStatus.InProgress:
31
+ return '<in progress>';
32
+ default: {
33
+ const url = build.artifacts?.buildArtifactsUrl;
34
+ return url ? (0, log_1.link)(url) : 'null';
35
+ }
36
+ }
37
+ },
38
+ },
39
+ ];
40
+ return fields.filter(({ value }) => value !== undefined && value !== null);
41
+ }
42
+ exports.formatGraphQLBuildArtifacts = formatGraphQLBuildArtifacts;
11
43
  function formatGraphQLBuild(build) {
12
44
  const actor = getActorName(build);
13
45
  const fields = [
@@ -82,27 +114,7 @@ function formatGraphQLBuild(build) {
82
114
  label: 'Logs',
83
115
  value: (0, log_1.link)((0, url_1.getBuildLogsUrl)(build)),
84
116
  },
85
- {
86
- label: 'Artifact',
87
- get value() {
88
- switch (build.status) {
89
- case generated_1.BuildStatus.New:
90
- case generated_1.BuildStatus.InQueue:
91
- case generated_1.BuildStatus.InProgress:
92
- return '<in progress>';
93
- case generated_1.BuildStatus.PendingCancel:
94
- case generated_1.BuildStatus.Canceled:
95
- case generated_1.BuildStatus.Errored:
96
- return null;
97
- case generated_1.BuildStatus.Finished: {
98
- const url = build.artifacts?.buildUrl;
99
- return url ? (0, log_1.link)(url) : chalk_1.default.red('not found');
100
- }
101
- default:
102
- return null;
103
- }
104
- },
105
- },
117
+ ...formatGraphQLBuildArtifacts(build),
106
118
  {
107
119
  label: 'Fingerprint',
108
120
  get value() {
@@ -66,61 +66,23 @@ export declare function parseInputs(inputFlags: string[]): Record<string, string
66
66
  export declare function maybeReadStdinAsync(): Promise<string | null>;
67
67
  export declare function parseJsonInputs(jsonString: string): Record<string, string>;
68
68
  export declare const WorkflowDispatchInputZ: z.ZodIntersection<z.ZodObject<{
69
- description: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodString]>, z.ZodString>>;
70
- required: z.ZodDefault<z.ZodUnion<[z.ZodBoolean, z.ZodPipeline<z.ZodNumber, z.ZodBoolean>, z.ZodEffects<z.ZodBoolean, boolean, unknown>]>>;
71
- }, "strip", z.ZodTypeAny, {
72
- required: boolean;
73
- description?: string | undefined;
74
- }, {
75
- description?: string | number | undefined;
76
- required?: unknown;
77
- }>, z.ZodUnion<[z.ZodObject<{
69
+ description: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodString>>;
70
+ required: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCodec<z.ZodNumber, z.ZodBoolean>, z.ZodCodec<z.ZodString, z.ZodBoolean>]>>;
71
+ }, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{
78
72
  type: z.ZodDefault<z.ZodLiteral<"string">>;
79
- default: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodString]>, z.ZodString>>;
80
- }, "strip", z.ZodTypeAny, {
81
- type: "string";
82
- default?: string | undefined;
83
- }, {
84
- default?: string | number | undefined;
85
- type?: "string" | undefined;
86
- }>, z.ZodObject<{
73
+ default: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodString>>;
74
+ }, z.core.$strip>, z.ZodObject<{
87
75
  type: z.ZodLiteral<"boolean">;
88
- default: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodPipeline<z.ZodNumber, z.ZodBoolean>, z.ZodEffects<z.ZodBoolean, boolean, unknown>]>>;
89
- }, "strip", z.ZodTypeAny, {
90
- type: "boolean";
91
- default?: boolean | undefined;
92
- }, {
93
- type: "boolean";
94
- default?: unknown;
95
- }>, z.ZodObject<{
76
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCodec<z.ZodNumber, z.ZodBoolean>, z.ZodCodec<z.ZodString, z.ZodBoolean>]>>;
77
+ }, z.core.$strip>, z.ZodObject<{
96
78
  type: z.ZodLiteral<"number">;
97
79
  default: z.ZodOptional<z.ZodNumber>;
98
- }, "strip", z.ZodTypeAny, {
99
- type: "number";
100
- default?: number | undefined;
101
- }, {
102
- type: "number";
103
- default?: number | undefined;
104
- }>, z.ZodObject<{
80
+ }, z.core.$strip>, z.ZodObject<{
105
81
  type: z.ZodLiteral<"choice">;
106
- default: z.ZodOptional<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodString]>, z.ZodString>>;
107
- options: z.ZodArray<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodString]>, z.ZodString>, "many">;
108
- }, "strip", z.ZodTypeAny, {
109
- type: "choice";
110
- options: string[];
111
- default?: string | undefined;
112
- }, {
113
- type: "choice";
114
- options: (string | number)[];
115
- default?: string | number | undefined;
116
- }>, z.ZodObject<{
82
+ default: z.ZodOptional<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodString>>;
83
+ options: z.ZodArray<z.ZodCodec<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodString>>;
84
+ }, z.core.$strip>, z.ZodObject<{
117
85
  type: z.ZodLiteral<"environment">;
118
86
  default: z.ZodOptional<z.ZodString>;
119
- }, "strip", z.ZodTypeAny, {
120
- type: "environment";
121
- default?: string | undefined;
122
- }, {
123
- type: "environment";
124
- default?: string | undefined;
125
- }>]>>;
87
+ }, z.core.$strip>]>>;
126
88
  export declare function parseWorkflowInputsFromYaml(yamlConfig: string): Record<string, z.infer<typeof WorkflowDispatchInputZ>>;
@@ -365,21 +365,13 @@ exports.parseJsonInputs = parseJsonInputs;
365
365
  // https://github.com/colinhacks/zod/issues/2985#issuecomment-2230692578
366
366
  const booleanLike = zod_1.z.union([
367
367
  zod_1.z.boolean(),
368
- zod_1.z.number().pipe(zod_1.z.coerce.boolean()),
369
- zod_1.z.preprocess(val => {
370
- if (typeof val === 'string') {
371
- if (val.toLowerCase() === 'true') {
372
- return true;
373
- }
374
- if (val.toLowerCase() === 'false') {
375
- return false;
376
- }
377
- }
378
- return val;
379
- }, zod_1.z.boolean()),
368
+ zod_1.z.codec(zod_1.z.number(), zod_1.z.boolean(), {
369
+ decode: n => !!n,
370
+ encode: b => (b ? 1 : 0),
371
+ }),
372
+ zod_1.z.stringbool({ truthy: ['true', 'True'], falsy: ['false', 'False'] }),
380
373
  ]);
381
- const stringLike = zod_1.z
382
- .union([
374
+ const stringLike = zod_1.z.codec(zod_1.z.union([
383
375
  // We're going to coerce numbers and strings into strings.
384
376
  zod_1.z.number(),
385
377
  zod_1.z.string(),
@@ -389,12 +381,22 @@ const stringLike = zod_1.z
389
381
  // and parses both as JS `true` -- if we stringified that,
390
382
  // we would lose the capital "T" which may not be what the user expects,
391
383
  // - nulls - user should do `"null"` or not pass the property at all.
392
- ])
393
- .pipe(zod_1.z.coerce.string());
384
+ ]), zod_1.z.string(), {
385
+ decode: value => {
386
+ if (typeof value === 'string') {
387
+ return value;
388
+ }
389
+ if (typeof value === 'number') {
390
+ return String(value);
391
+ }
392
+ throw new Error(`Cannot convert ${typeof value} to string: ${value}`);
393
+ },
394
+ encode: value => value,
395
+ });
394
396
  exports.WorkflowDispatchInputZ = zod_1.z
395
397
  .object({
396
398
  description: stringLike.optional().describe('Description of the input'),
397
- required: booleanLike.default(false).describe('Whether the input is required'),
399
+ required: booleanLike.default(false).describe('Whether the input is required.'),
398
400
  })
399
401
  .and(zod_1.z.union([
400
402
  zod_1.z.object({
@@ -1,15 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
5
+ const formatBuild_1 = require("../../build/utils/formatBuild");
4
6
  const url_1 = require("../../build/utils/url");
5
7
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
8
  const flags_1 = require("../../commandUtils/flags");
7
9
  const stateMachine_1 = require("../../commandUtils/workflow/stateMachine");
8
10
  const utils_1 = require("../../commandUtils/workflow/utils");
11
+ const generated_1 = require("../../graphql/generated");
9
12
  const WorkflowRunQuery_1 = require("../../graphql/queries/WorkflowRunQuery");
10
13
  const log_1 = tslib_1.__importStar(require("../../log"));
11
14
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
12
15
  const json_1 = require("../../utils/json");
16
+ const processedOutputs = job => {
17
+ const result = [];
18
+ const keys = job.outputs ? Object.keys(job.outputs) : [];
19
+ keys.forEach(key => {
20
+ result.push({
21
+ label: ` ${key}`,
22
+ get value() {
23
+ const value = job.outputs[key];
24
+ return typeof value === 'string' ? value : JSON.stringify(value, null, 2);
25
+ },
26
+ });
27
+ });
28
+ return result;
29
+ };
13
30
  class WorkflowView extends EasCommand_1.default {
14
31
  static description = 'view details for a workflow run, including jobs. If no run ID is provided, you will be prompted to select from recent workflow runs for the current project.';
15
32
  static flags = {
@@ -52,9 +69,18 @@ class WorkflowView extends EasCommand_1.default {
52
69
  const { triggerType, trigger } = (0, utils_1.computeTriggerInfoForWorkflowRun)(result);
53
70
  result.triggerType = triggerType;
54
71
  result.trigger = trigger;
55
- result.jobs.forEach(job => {
56
- delete job.turtleJobRun;
72
+ const processedJobs = result.jobs.map(job => {
73
+ const processedJob = job;
74
+ if (job.type === generated_1.WorkflowJobType.Build) {
75
+ processedJob.artifacts = job.turtleBuild?.artifacts ?? undefined;
76
+ }
77
+ else {
78
+ processedJob.artifacts = job.turtleJobRun?.artifacts;
79
+ }
80
+ delete processedJob.turtleJobRun;
81
+ return processedJob;
57
82
  });
83
+ result.jobs = processedJobs;
58
84
  result.logURL = (0, url_1.getWorkflowRunUrl)(result.workflow.app.ownerAccount.name, result.workflow.app.name, result.id);
59
85
  if (flags.json) {
60
86
  (0, json_1.printJsonOnlyOutput)(result);
@@ -67,7 +93,7 @@ class WorkflowView extends EasCommand_1.default {
67
93
  { label: 'Trigger', value: result.trigger ?? 'null' },
68
94
  {
69
95
  label: 'Git Commit Message',
70
- value: result.gitCommitMessage?.split('\n')[0] ?? null ?? 'null',
96
+ value: result.gitCommitMessage?.split('\n')[0] ?? 'null',
71
97
  },
72
98
  { label: 'Status', value: result.status },
73
99
  { label: 'Errors', value: result.errors.map(error => error.title).join('\n') },
@@ -76,7 +102,7 @@ class WorkflowView extends EasCommand_1.default {
76
102
  { label: 'Log URL', value: (0, log_1.link)(result.logURL) },
77
103
  ]));
78
104
  log_1.default.addNewLineIfNone();
79
- result.jobs.forEach(job => {
105
+ result.jobs.forEach((job) => {
80
106
  log_1.default.log((0, formatFields_1.default)([
81
107
  { label: 'Job ID', value: job.id },
82
108
  { label: ' Key', value: job.key },
@@ -85,9 +111,52 @@ class WorkflowView extends EasCommand_1.default {
85
111
  { label: ' Type', value: job.type },
86
112
  { label: ' Created At', value: job.createdAt },
87
113
  { label: ' Updated At', value: job.updatedAt },
88
- { label: ' Outputs', value: JSON.stringify(job.outputs, null, 2) },
89
- { label: ' Errors', value: job.errors.map(error => error.title).join('\n') },
90
114
  ]));
115
+ if (job.errors.length > 0) {
116
+ log_1.default.gray(chalk_1.default.dim(' Errors:'));
117
+ job.errors.forEach(error => {
118
+ log_1.default.log((0, formatFields_1.default)([{ label: ` ${error.title}`, value: `${error.message}` }]));
119
+ });
120
+ }
121
+ if (job.outputs) {
122
+ const outputs = processedOutputs(job);
123
+ if (outputs.length > 0) {
124
+ log_1.default.gray(chalk_1.default.dim(' Outputs:'));
125
+ log_1.default.log((0, formatFields_1.default)(outputs));
126
+ }
127
+ }
128
+ if (job.type === generated_1.WorkflowJobType.Build) {
129
+ if (job.turtleBuild?.artifacts) {
130
+ log_1.default.gray(chalk_1.default.dim(' Artifacts:'));
131
+ log_1.default.log((0, formatFields_1.default)((0, formatBuild_1.formatGraphQLBuildArtifacts)(job.turtleBuild).map(item => {
132
+ item.label = ` ${item.label}`;
133
+ return item;
134
+ })));
135
+ }
136
+ }
137
+ else {
138
+ const jobArtifacts = job.artifacts;
139
+ if (jobArtifacts?.length) {
140
+ log_1.default.gray(chalk_1.default.dim(' Artifacts:'));
141
+ jobArtifacts.forEach(artifact => {
142
+ log_1.default.log((0, formatFields_1.default)([
143
+ { label: ' ID', value: artifact.id },
144
+ { label: ' Name', value: artifact.name },
145
+ { label: ' Content Type', value: artifact?.contentType ?? 'null' },
146
+ {
147
+ label: ' File Size Bytes',
148
+ value: artifact?.fileSizeBytes ? `${artifact.fileSizeBytes}` : 'null',
149
+ },
150
+ { label: ' Filename', value: artifact.filename },
151
+ {
152
+ label: ' Download URL',
153
+ value: artifact?.downloadUrl ? (0, log_1.link)(artifact.downloadUrl) : 'null',
154
+ },
155
+ ]));
156
+ log_1.default.addNewLineIfNone();
157
+ });
158
+ }
159
+ }
91
160
  log_1.default.addNewLineIfNone();
92
161
  });
93
162
  }
@@ -7480,6 +7480,7 @@ export declare enum WorkflowJobType {
7480
7480
  Doc = "DOC",
7481
7481
  Fingerprint = "FINGERPRINT",
7482
7482
  GetBuild = "GET_BUILD",
7483
+ GithubComment = "GITHUB_COMMENT",
7483
7484
  MaestroCloud = "MAESTRO_CLOUD",
7484
7485
  MaestroTest = "MAESTRO_TEST",
7485
7486
  Repack = "REPACK",
@@ -14620,12 +14621,100 @@ export type WorkflowJobByIdQuery = {
14620
14621
  __typename?: 'JobRun';
14621
14622
  id: string;
14622
14623
  logFileUrls: Array<string>;
14624
+ artifacts: Array<{
14625
+ __typename?: 'WorkflowArtifact';
14626
+ id: string;
14627
+ name: string;
14628
+ contentType?: string | null;
14629
+ fileSizeBytes?: number | null;
14630
+ filename: string;
14631
+ downloadUrl?: string | null;
14632
+ }>;
14623
14633
  errors: Array<{
14624
14634
  __typename?: 'JobRunError';
14625
14635
  errorCode: string;
14626
14636
  message: string;
14627
14637
  }>;
14628
14638
  } | null;
14639
+ turtleBuild?: {
14640
+ __typename?: 'Build';
14641
+ id: string;
14642
+ status: BuildStatus;
14643
+ platform: AppPlatform;
14644
+ channel?: string | null;
14645
+ distribution?: DistributionType | null;
14646
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
14647
+ buildProfile?: string | null;
14648
+ sdkVersion?: string | null;
14649
+ appVersion?: string | null;
14650
+ appBuildVersion?: string | null;
14651
+ runtimeVersion?: string | null;
14652
+ gitCommitHash?: string | null;
14653
+ gitCommitMessage?: string | null;
14654
+ initialQueuePosition?: number | null;
14655
+ queuePosition?: number | null;
14656
+ estimatedWaitTimeLeftSeconds?: number | null;
14657
+ priority: BuildPriority;
14658
+ createdAt: any;
14659
+ updatedAt: any;
14660
+ message?: string | null;
14661
+ completedAt?: any | null;
14662
+ expirationDate?: any | null;
14663
+ isForIosSimulator: boolean;
14664
+ error?: {
14665
+ __typename?: 'BuildError';
14666
+ errorCode: string;
14667
+ message: string;
14668
+ docsUrl?: string | null;
14669
+ } | null;
14670
+ artifacts?: {
14671
+ __typename?: 'BuildArtifacts';
14672
+ buildUrl?: string | null;
14673
+ xcodeBuildLogsUrl?: string | null;
14674
+ applicationArchiveUrl?: string | null;
14675
+ buildArtifactsUrl?: string | null;
14676
+ } | null;
14677
+ fingerprint?: {
14678
+ __typename?: 'Fingerprint';
14679
+ id: string;
14680
+ hash: string;
14681
+ } | null;
14682
+ initiatingActor?: {
14683
+ __typename: 'Robot';
14684
+ id: string;
14685
+ displayName: string;
14686
+ } | {
14687
+ __typename: 'SSOUser';
14688
+ id: string;
14689
+ displayName: string;
14690
+ } | {
14691
+ __typename: 'User';
14692
+ id: string;
14693
+ displayName: string;
14694
+ } | null;
14695
+ project: {
14696
+ __typename: 'App';
14697
+ id: string;
14698
+ name: string;
14699
+ slug: string;
14700
+ ownerAccount: {
14701
+ __typename?: 'Account';
14702
+ id: string;
14703
+ name: string;
14704
+ };
14705
+ } | {
14706
+ __typename: 'Snack';
14707
+ id: string;
14708
+ name: string;
14709
+ slug: string;
14710
+ };
14711
+ metrics?: {
14712
+ __typename?: 'BuildMetrics';
14713
+ buildWaitTime?: number | null;
14714
+ buildQueueTime?: number | null;
14715
+ buildDuration?: number | null;
14716
+ } | null;
14717
+ } | null;
14629
14718
  errors: Array<{
14630
14719
  __typename?: 'WorkflowJobError';
14631
14720
  title: string;
@@ -14701,12 +14790,100 @@ export type WorkflowRunByIdWithJobsQuery = {
14701
14790
  __typename?: 'JobRun';
14702
14791
  id: string;
14703
14792
  logFileUrls: Array<string>;
14793
+ artifacts: Array<{
14794
+ __typename?: 'WorkflowArtifact';
14795
+ id: string;
14796
+ name: string;
14797
+ contentType?: string | null;
14798
+ fileSizeBytes?: number | null;
14799
+ filename: string;
14800
+ downloadUrl?: string | null;
14801
+ }>;
14704
14802
  errors: Array<{
14705
14803
  __typename?: 'JobRunError';
14706
14804
  errorCode: string;
14707
14805
  message: string;
14708
14806
  }>;
14709
14807
  } | null;
14808
+ turtleBuild?: {
14809
+ __typename?: 'Build';
14810
+ id: string;
14811
+ status: BuildStatus;
14812
+ platform: AppPlatform;
14813
+ channel?: string | null;
14814
+ distribution?: DistributionType | null;
14815
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
14816
+ buildProfile?: string | null;
14817
+ sdkVersion?: string | null;
14818
+ appVersion?: string | null;
14819
+ appBuildVersion?: string | null;
14820
+ runtimeVersion?: string | null;
14821
+ gitCommitHash?: string | null;
14822
+ gitCommitMessage?: string | null;
14823
+ initialQueuePosition?: number | null;
14824
+ queuePosition?: number | null;
14825
+ estimatedWaitTimeLeftSeconds?: number | null;
14826
+ priority: BuildPriority;
14827
+ createdAt: any;
14828
+ updatedAt: any;
14829
+ message?: string | null;
14830
+ completedAt?: any | null;
14831
+ expirationDate?: any | null;
14832
+ isForIosSimulator: boolean;
14833
+ error?: {
14834
+ __typename?: 'BuildError';
14835
+ errorCode: string;
14836
+ message: string;
14837
+ docsUrl?: string | null;
14838
+ } | null;
14839
+ artifacts?: {
14840
+ __typename?: 'BuildArtifacts';
14841
+ buildUrl?: string | null;
14842
+ xcodeBuildLogsUrl?: string | null;
14843
+ applicationArchiveUrl?: string | null;
14844
+ buildArtifactsUrl?: string | null;
14845
+ } | null;
14846
+ fingerprint?: {
14847
+ __typename?: 'Fingerprint';
14848
+ id: string;
14849
+ hash: string;
14850
+ } | null;
14851
+ initiatingActor?: {
14852
+ __typename: 'Robot';
14853
+ id: string;
14854
+ displayName: string;
14855
+ } | {
14856
+ __typename: 'SSOUser';
14857
+ id: string;
14858
+ displayName: string;
14859
+ } | {
14860
+ __typename: 'User';
14861
+ id: string;
14862
+ displayName: string;
14863
+ } | null;
14864
+ project: {
14865
+ __typename: 'App';
14866
+ id: string;
14867
+ name: string;
14868
+ slug: string;
14869
+ ownerAccount: {
14870
+ __typename?: 'Account';
14871
+ id: string;
14872
+ name: string;
14873
+ };
14874
+ } | {
14875
+ __typename: 'Snack';
14876
+ id: string;
14877
+ name: string;
14878
+ slug: string;
14879
+ };
14880
+ metrics?: {
14881
+ __typename?: 'BuildMetrics';
14882
+ buildWaitTime?: number | null;
14883
+ buildQueueTime?: number | null;
14884
+ buildDuration?: number | null;
14885
+ } | null;
14886
+ } | null;
14710
14887
  errors: Array<{
14711
14888
  __typename?: 'WorkflowJobError';
14712
14889
  title: string;
@@ -15455,12 +15632,100 @@ export type WorkflowJobFragment = {
15455
15632
  __typename?: 'JobRun';
15456
15633
  id: string;
15457
15634
  logFileUrls: Array<string>;
15635
+ artifacts: Array<{
15636
+ __typename?: 'WorkflowArtifact';
15637
+ id: string;
15638
+ name: string;
15639
+ contentType?: string | null;
15640
+ fileSizeBytes?: number | null;
15641
+ filename: string;
15642
+ downloadUrl?: string | null;
15643
+ }>;
15458
15644
  errors: Array<{
15459
15645
  __typename?: 'JobRunError';
15460
15646
  errorCode: string;
15461
15647
  message: string;
15462
15648
  }>;
15463
15649
  } | null;
15650
+ turtleBuild?: {
15651
+ __typename?: 'Build';
15652
+ id: string;
15653
+ status: BuildStatus;
15654
+ platform: AppPlatform;
15655
+ channel?: string | null;
15656
+ distribution?: DistributionType | null;
15657
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
15658
+ buildProfile?: string | null;
15659
+ sdkVersion?: string | null;
15660
+ appVersion?: string | null;
15661
+ appBuildVersion?: string | null;
15662
+ runtimeVersion?: string | null;
15663
+ gitCommitHash?: string | null;
15664
+ gitCommitMessage?: string | null;
15665
+ initialQueuePosition?: number | null;
15666
+ queuePosition?: number | null;
15667
+ estimatedWaitTimeLeftSeconds?: number | null;
15668
+ priority: BuildPriority;
15669
+ createdAt: any;
15670
+ updatedAt: any;
15671
+ message?: string | null;
15672
+ completedAt?: any | null;
15673
+ expirationDate?: any | null;
15674
+ isForIosSimulator: boolean;
15675
+ error?: {
15676
+ __typename?: 'BuildError';
15677
+ errorCode: string;
15678
+ message: string;
15679
+ docsUrl?: string | null;
15680
+ } | null;
15681
+ artifacts?: {
15682
+ __typename?: 'BuildArtifacts';
15683
+ buildUrl?: string | null;
15684
+ xcodeBuildLogsUrl?: string | null;
15685
+ applicationArchiveUrl?: string | null;
15686
+ buildArtifactsUrl?: string | null;
15687
+ } | null;
15688
+ fingerprint?: {
15689
+ __typename?: 'Fingerprint';
15690
+ id: string;
15691
+ hash: string;
15692
+ } | null;
15693
+ initiatingActor?: {
15694
+ __typename: 'Robot';
15695
+ id: string;
15696
+ displayName: string;
15697
+ } | {
15698
+ __typename: 'SSOUser';
15699
+ id: string;
15700
+ displayName: string;
15701
+ } | {
15702
+ __typename: 'User';
15703
+ id: string;
15704
+ displayName: string;
15705
+ } | null;
15706
+ project: {
15707
+ __typename: 'App';
15708
+ id: string;
15709
+ name: string;
15710
+ slug: string;
15711
+ ownerAccount: {
15712
+ __typename?: 'Account';
15713
+ id: string;
15714
+ name: string;
15715
+ };
15716
+ } | {
15717
+ __typename: 'Snack';
15718
+ id: string;
15719
+ name: string;
15720
+ slug: string;
15721
+ };
15722
+ metrics?: {
15723
+ __typename?: 'BuildMetrics';
15724
+ buildWaitTime?: number | null;
15725
+ buildQueueTime?: number | null;
15726
+ buildDuration?: number | null;
15727
+ } | null;
15728
+ } | null;
15464
15729
  errors: Array<{
15465
15730
  __typename?: 'WorkflowJobError';
15466
15731
  title: string;
@@ -898,6 +898,7 @@ var WorkflowJobType;
898
898
  WorkflowJobType["Doc"] = "DOC";
899
899
  WorkflowJobType["Fingerprint"] = "FINGERPRINT";
900
900
  WorkflowJobType["GetBuild"] = "GET_BUILD";
901
+ WorkflowJobType["GithubComment"] = "GITHUB_COMMENT";
901
902
  WorkflowJobType["MaestroCloud"] = "MAESTRO_CLOUD";
902
903
  WorkflowJobType["MaestroTest"] = "MAESTRO_TEST";
903
904
  WorkflowJobType["Repack"] = "REPACK";