shipthis 0.1.32 → 0.1.34

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 (86) hide show
  1. package/README.md +8 -7
  2. package/assets/markdown/apikey-create.md +11 -0
  3. package/dist/{AppleBundleIdDetails-6H3cNWxw.js → AppleBundleIdDetails-By-sSGNl.js} +4 -4
  4. package/dist/{Command-WPpmLPkL.js → Command-VWMnGslo.js} +2 -2
  5. package/dist/{CommandGame-cxzWG4nT.js → CommandGame-BSVPZzNl.js} +2 -2
  6. package/dist/{Create-3Ob8sjik.js → Create-SR1Mq7BY.js} +4 -4
  7. package/dist/{GameStatus-BQEtVKvv.js → GameStatus-1ntFyxEx.js} +3 -3
  8. package/dist/{Import-CFuPDI0K.js → Import-cedOWPDz.js} +6 -6
  9. package/dist/{JobLogTail-0CBLoG8N.js → JobLogTail-C_W8UAMg.js} +5 -5
  10. package/dist/{JobProgress-lKqVT88m.js → JobProgress-CI385G53.js} +11 -8
  11. package/dist/{JobStatusTable-C_ZsZJCm.js → JobStatusTable-CdbKtwJE.js} +4 -4
  12. package/dist/{ProgressSpinner-DGcakQSK.js → ProgressSpinner-Um6ARKlk.js} +1 -1
  13. package/dist/{ProjectCredentialsTable-B5pHOnGu.js → ProjectCredentialsTable-ZnuIfcDB.js} +2 -2
  14. package/dist/{RunWithSpinner-gMVA07bZ.js → RunWithSpinner-DucRnFp6.js} +2 -1
  15. package/dist/{UserCredentialsTable-3W3qesh7.js → UserCredentialsTable-DRkAYgEA.js} +3 -3
  16. package/dist/{baseAppleCommand-BGV088--.js → baseAppleCommand-CsO-_Yzn.js} +1 -1
  17. package/dist/{baseGameAndroidCommand-CsemgVjp.js → baseGameAndroidCommand-CdjaAbNX.js} +2 -2
  18. package/dist/commands/apiKey/create.js +97 -0
  19. package/dist/commands/apiKey/list.js +91 -0
  20. package/dist/commands/apiKey/revoke.js +82 -0
  21. package/dist/commands/apple/apiKey/create.js +10 -10
  22. package/dist/commands/apple/apiKey/export.js +9 -9
  23. package/dist/commands/apple/apiKey/import.js +9 -9
  24. package/dist/commands/apple/apiKey/status.js +7 -7
  25. package/dist/commands/apple/certificate/create.js +10 -10
  26. package/dist/commands/apple/certificate/export.js +9 -9
  27. package/dist/commands/apple/certificate/import.js +9 -9
  28. package/dist/commands/apple/certificate/status.js +8 -8
  29. package/dist/commands/apple/login.js +3 -2
  30. package/dist/commands/apple/status.js +5 -5
  31. package/dist/commands/dashboard.js +2 -1
  32. package/dist/commands/game/android/apiKey/connect.js +9 -9
  33. package/dist/commands/game/android/apiKey/create.js +13 -13
  34. package/dist/commands/game/android/apiKey/export.js +10 -10
  35. package/dist/commands/game/android/apiKey/import.js +10 -10
  36. package/dist/commands/game/android/apiKey/invite.js +5 -4
  37. package/dist/commands/game/android/apiKey/status.js +9 -9
  38. package/dist/commands/game/android/keyStore/create.js +11 -11
  39. package/dist/commands/game/android/keyStore/export.js +9 -9
  40. package/dist/commands/game/android/keyStore/import.js +11 -11
  41. package/dist/commands/game/android/keyStore/status.js +7 -7
  42. package/dist/commands/game/android/status.js +2 -1
  43. package/dist/commands/game/build/download.js +6 -6
  44. package/dist/commands/game/build/list.js +6 -6
  45. package/dist/commands/game/create.js +3 -2
  46. package/dist/commands/game/details.js +5 -5
  47. package/dist/commands/game/export.js +2 -1
  48. package/dist/commands/game/ios/app/addTester.js +20 -15
  49. package/dist/commands/game/ios/app/create.js +6 -6
  50. package/dist/commands/game/ios/app/status.js +8 -8
  51. package/dist/commands/game/ios/app/sync.js +7 -7
  52. package/dist/commands/game/ios/profile/create.js +11 -11
  53. package/dist/commands/game/ios/profile/export.js +9 -9
  54. package/dist/commands/game/ios/profile/import.js +9 -9
  55. package/dist/commands/game/ios/profile/status.js +7 -7
  56. package/dist/commands/game/ios/status.js +10 -10
  57. package/dist/commands/game/ios/wizard.js +13 -8
  58. package/dist/commands/game/job/list.js +5 -5
  59. package/dist/commands/game/job/status.js +9 -9
  60. package/dist/commands/game/list.js +6 -6
  61. package/dist/commands/game/ship.js +19 -17
  62. package/dist/commands/game/status.js +7 -7
  63. package/dist/commands/game/wizard.js +22 -22
  64. package/dist/commands/internal/fastlane.js +2 -1
  65. package/dist/commands/internal/readme.js +2 -1
  66. package/dist/commands/login.js +3 -2
  67. package/dist/commands/status.js +5 -5
  68. package/dist/{export-CXsVPXA1.js → export-B5Yfd9vw.js} +1 -1
  69. package/dist/{import-DGvG5REx.js → import-A2WcStHl.js} +1 -1
  70. package/dist/{index-CS9Gwcb0.js → index-BBLtvl1Y.js} +7 -7
  71. package/dist/{index-C03TV1_J.js → index-Bz1qt_8T.js} +17 -9
  72. package/dist/{index-C66Dd8Xc.js → index-CA6-uLMn.js} +23 -12
  73. package/dist/{index-BhhiXbey.js → index-CO_ssVFA.js} +28 -4
  74. package/dist/{index-CGBdOm1q.js → index-CYjZ26If.js} +2 -1
  75. package/dist/{index-CtTI85m-.js → index-CgzANgJt.js} +1 -1
  76. package/dist/{upload-8y5MQEm9.js → upload-BIsFZzBO.js} +1 -1
  77. package/dist/{useAndroidServiceAccountTestResult-DZk5SMxI.js → useAndroidServiceAccountTestResult-DueKynFy.js} +1 -1
  78. package/dist/{useAppleApp-DWYGURwU.js → useAppleApp-BZR94exU.js} +1 -1
  79. package/dist/{useAppleBundleId-PsTJ2g1B.js → useAppleBundleId-Dg5DsItN.js} +1 -1
  80. package/dist/{useProjectCredentials-BEphqa18.js → useProjectCredentials-jQYGcDhT.js} +3 -3
  81. package/dist/{useWebSocket-5PYa2QER.js → useWebSocket-CIxkPaYi.js} +1 -1
  82. package/docs/apiKey/create.md +27 -0
  83. package/docs/apiKey/list.md +30 -0
  84. package/docs/apiKey/revoke.md +26 -0
  85. package/docs/apiKey.md +93 -0
  86. package/package.json +10 -4
@@ -5,9 +5,9 @@ import { render } from 'ink';
5
5
  import 'node:fs';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
- import { c as BaseGameCommand, P as Platform, C as CredentialsType, k as Certificate, l as CertificateType, m as Profile, n as ProfileType } from '../../../../index-BhhiXbey.js';
8
+ import { c as BaseGameCommand, P as Platform, C as CredentialsType, k as Certificate, l as CertificateType, m as Profile, n as ProfileType } from '../../../../index-CO_ssVFA.js';
9
9
  import 'luxon';
10
- import { a as getProjectCredentials, g as getUserCredentials } from '../../../../index-CtTI85m-.js';
10
+ import { a as getProjectCredentials, g as getUserCredentials } from '../../../../index-CgzANgJt.js';
11
11
  import 'ink-spinner';
12
12
  import 'node:crypto';
13
13
  import 'node:path';
@@ -17,7 +17,7 @@ import 'readline-sync';
17
17
  import 'isomorphic-git';
18
18
  import '@tanstack/react-query';
19
19
  import 'react';
20
- import { f as fetchBundleId } from '../../../../useAppleBundleId-PsTJ2g1B.js';
20
+ import { f as fetchBundleId } from '../../../../useAppleBundleId-Dg5DsItN.js';
21
21
  import 'fast-glob';
22
22
  import 'yazl';
23
23
  import 'socket.io-client';
@@ -29,15 +29,15 @@ import '@inkjs/ui';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
- import { R as RunWithSpinner } from '../../../../RunWithSpinner-gMVA07bZ.js';
33
- import '../../../../index-C66Dd8Xc.js';
34
- import { C as Command } from '../../../../Command-WPpmLPkL.js';
35
- import { a as uploadProjectCredentials } from '../../../../upload-8y5MQEm9.js';
32
+ import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
33
+ import '../../../../index-CA6-uLMn.js';
34
+ import { C as Command } from '../../../../Command-VWMnGslo.js';
35
+ import { a as uploadProjectCredentials } from '../../../../upload-BIsFZzBO.js';
36
36
  import '@expo/apple-utils/build/index.js';
37
37
  import 'deepmerge';
38
38
  import 'ini';
39
- import '../../../../index-CGBdOm1q.js';
40
- import '../../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
39
+ import '../../../../index-CYjZ26If.js';
40
+ import '../../../../useAndroidServiceAccountTestResult-DueKynFy.js';
41
41
 
42
42
  class GameIosProfileCreate extends BaseGameCommand {
43
43
  static args = {};
@@ -56,7 +56,7 @@ class GameIosProfileCreate extends BaseGameCommand {
56
56
  const { force } = flags;
57
57
  const projectCredentials = await getProjectCredentials(game.id);
58
58
  const projectAppleProfileCredentials = projectCredentials.filter(
59
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
59
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
60
60
  );
61
61
  if (projectAppleProfileCredentials.length > 0 && !force) {
62
62
  this.error("A Mobile Provisioning Profile already exists. Use --force to overwrite it.");
@@ -75,7 +75,7 @@ class GameIosProfileCreate extends BaseGameCommand {
75
75
  });
76
76
  const userCerts = await getUserCredentials();
77
77
  const validCert = userCerts.find(
78
- (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive == true
78
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive === true
79
79
  );
80
80
  const validAppleCert = appleCerts.find(
81
81
  (cert) => validCert && cert.attributes.serialNumber === validCert.serialNumber
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-CtTI85m-.js';
6
- import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BhhiXbey.js';
5
+ import { a as getProjectCredentials } from '../../../../index-CgzANgJt.js';
6
+ import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CO_ssVFA.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -28,15 +28,15 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { R as RunWithSpinner } from '../../../../RunWithSpinner-gMVA07bZ.js';
32
- import '../../../../index-C66Dd8Xc.js';
33
- import { C as Command } from '../../../../Command-WPpmLPkL.js';
34
- import { e as exportCredential } from '../../../../export-CXsVPXA1.js';
31
+ import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
+ import '../../../../index-CA6-uLMn.js';
33
+ import { C as Command } from '../../../../Command-VWMnGslo.js';
34
+ import { e as exportCredential } from '../../../../export-B5Yfd9vw.js';
35
35
  import '@expo/apple-utils/build/index.js';
36
36
  import 'deepmerge';
37
37
  import 'ini';
38
- import '../../../../index-CGBdOm1q.js';
39
- import '../../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
38
+ import '../../../../index-CYjZ26If.js';
39
+ import '../../../../useAndroidServiceAccountTestResult-DueKynFy.js';
40
40
 
41
41
  class GameIosProfileExport extends BaseGameCommand {
42
42
  static args = {
@@ -59,7 +59,7 @@ class GameIosProfileExport extends BaseGameCommand {
59
59
  }
60
60
  const projectCredentials = await getProjectCredentials(game.id);
61
61
  const userAppleProfileCredentials = projectCredentials.filter(
62
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
62
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
63
63
  );
64
64
  if (userAppleProfileCredentials.length === 0) {
65
65
  this.error("No Mobile Provisioning Profile found which can be exported.");
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-CtTI85m-.js';
6
- import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BhhiXbey.js';
5
+ import { a as getProjectCredentials } from '../../../../index-CgzANgJt.js';
6
+ import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CO_ssVFA.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -28,15 +28,15 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { R as RunWithSpinner } from '../../../../RunWithSpinner-gMVA07bZ.js';
32
- import '../../../../index-C66Dd8Xc.js';
33
- import { C as Command } from '../../../../Command-WPpmLPkL.js';
34
- import { i as importCredential } from '../../../../import-DGvG5REx.js';
31
+ import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
+ import '../../../../index-CA6-uLMn.js';
33
+ import { C as Command } from '../../../../Command-VWMnGslo.js';
34
+ import { i as importCredential } from '../../../../import-A2WcStHl.js';
35
35
  import '@expo/apple-utils/build/index.js';
36
36
  import 'deepmerge';
37
37
  import 'ini';
38
- import '../../../../index-CGBdOm1q.js';
39
- import '../../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
38
+ import '../../../../index-CYjZ26If.js';
39
+ import '../../../../useAndroidServiceAccountTestResult-DueKynFy.js';
40
40
 
41
41
  class GameIosProfileImport extends BaseGameCommand {
42
42
  static args = {
@@ -62,7 +62,7 @@ class GameIosProfileImport extends BaseGameCommand {
62
62
  }
63
63
  const projectCredentials = await getProjectCredentials(game.id);
64
64
  const projectAppleProfileCredentials = projectCredentials.filter(
65
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
65
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
66
66
  );
67
67
  if (projectAppleProfileCredentials.length > 0 && !force) {
68
68
  this.error("A Mobile Provisioning Profile already exists. Use --force to overwrite it.");
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
- import { b as getShortDate, m as Profile, n as ProfileType, C as CredentialsType, P as Platform, c as BaseGameCommand } from '../../../../index-BhhiXbey.js';
4
+ import { b as getShortDate, m as Profile, n as ProfileType, C as CredentialsType, P as Platform, c as BaseGameCommand } from '../../../../index-CO_ssVFA.js';
5
5
  import Spinner from 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -22,23 +22,23 @@ import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
23
  import 'string-length';
24
24
  import 'strip-ansi';
25
- import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-B5pHOnGu.js';
25
+ import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-ZnuIfcDB.js';
26
26
  import 'open';
27
27
  import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import '../../../../index-C66Dd8Xc.js';
32
- import { u as useProjectCredentials } from '../../../../useProjectCredentials-BEphqa18.js';
31
+ import '../../../../index-CA6-uLMn.js';
32
+ import { u as useProjectCredentials } from '../../../../useProjectCredentials-jQYGcDhT.js';
33
33
  import { T as Table } from '../../../../Table-FaNgpyeq.js';
34
34
  import { T as Title } from '../../../../Title-BCQtayg6.js';
35
35
  import { N as NextSteps } from '../../../../NextSteps-DbJHmscQ.js';
36
- import { C as Command } from '../../../../Command-WPpmLPkL.js';
36
+ import { C as Command } from '../../../../Command-VWMnGslo.js';
37
37
  import '@expo/apple-utils/build/index.js';
38
38
  import 'deepmerge';
39
39
  import 'ini';
40
- import '../../../../index-CGBdOm1q.js';
41
- import '../../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
40
+ import '../../../../index-CYjZ26If.js';
41
+ import '../../../../useAndroidServiceAccountTestResult-DueKynFy.js';
42
42
 
43
43
  async function queryAppleProfiles({ ctx }) {
44
44
  const appleProfiles = await Profile.getAsync(ctx, {
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box } from 'ink';
4
- import { c as BaseGameCommand, P as Platform } from '../../../index-BhhiXbey.js';
4
+ import { c as BaseGameCommand, P as Platform } from '../../../index-CO_ssVFA.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -20,7 +20,7 @@ import 'fast-glob';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
- import { G as GameStatusDetails } from '../../../GameStatus-BQEtVKvv.js';
23
+ import { G as GameStatusDetails } from '../../../GameStatus-1ntFyxEx.js';
24
24
  import 'string-length';
25
25
  import 'strip-ansi';
26
26
  import 'open';
@@ -28,21 +28,21 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import '../../../index-C66Dd8Xc.js';
32
- import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../AppleBundleIdDetails-6H3cNWxw.js';
33
- import { C as CommandGame } from '../../../CommandGame-cxzWG4nT.js';
31
+ import '../../../index-CA6-uLMn.js';
32
+ import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../AppleBundleIdDetails-By-sSGNl.js';
33
+ import { C as CommandGame } from '../../../CommandGame-BSVPZzNl.js';
34
34
  import '@expo/apple-utils/build/index.js';
35
35
  import 'deepmerge';
36
36
  import 'ini';
37
- import '../../../index-CGBdOm1q.js';
37
+ import '../../../index-CYjZ26If.js';
38
38
  import '../../../StatusTable-DzRWcMr4.js';
39
39
  import '../../../Title-BCQtayg6.js';
40
40
  import '../../../NextSteps-DbJHmscQ.js';
41
- import '../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
42
- import '../../../useAppleApp-DWYGURwU.js';
41
+ import '../../../useAndroidServiceAccountTestResult-DueKynFy.js';
42
+ import '../../../useAppleApp-BZR94exU.js';
43
43
  import '../../../Table-FaNgpyeq.js';
44
- import '../../../useAppleBundleId-PsTJ2g1B.js';
45
- import '../../../Command-WPpmLPkL.js';
44
+ import '../../../useAppleBundleId-Dg5DsItN.js';
45
+ import '../../../Command-VWMnGslo.js';
46
46
 
47
47
  class GameIosStatus extends BaseGameCommand {
48
48
  static args = {};
@@ -4,9 +4,9 @@ import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
- import { B as BaseAuthenticatedCommand, j as isCWDGodotGame, W as WEB_URL, P as Platform, C as CredentialsType } from '../../../index-BhhiXbey.js';
7
+ import { B as BaseAuthenticatedCommand, j as isCWDGodotGame, W as WEB_URL, P as Platform, C as CredentialsType } from '../../../index-CO_ssVFA.js';
8
8
  import 'luxon';
9
- import { g as getUserCredentials, a as getProjectCredentials } from '../../../index-CtTI85m-.js';
9
+ import { g as getUserCredentials, a as getProjectCredentials } from '../../../index-CgzANgJt.js';
10
10
  import 'react/jsx-runtime';
11
11
  import 'ink';
12
12
  import 'ink-spinner';
@@ -26,13 +26,13 @@ import 'string-length';
26
26
  import 'strip-ansi';
27
27
  import 'open';
28
28
  import '@inkjs/ui';
29
- import { g as getRenderedMarkdown } from '../../../index-C66Dd8Xc.js';
29
+ import { g as getRenderedMarkdown } from '../../../index-CA6-uLMn.js';
30
30
  import 'qrcode';
31
31
  import '@expo/apple-utils/build/index.js';
32
32
  import 'deepmerge';
33
33
  import 'ini';
34
- import '../../../index-CGBdOm1q.js';
35
- import '../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
34
+ import '../../../index-CYjZ26If.js';
35
+ import '../../../useAndroidServiceAccountTestResult-DueKynFy.js';
36
36
  import 'marked';
37
37
  import 'marked-terminal';
38
38
 
@@ -79,7 +79,7 @@ class GameIosWizard extends BaseAuthenticatedCommand {
79
79
  async shouldRun() {
80
80
  const userCredentials = await getUserCredentials();
81
81
  const userAppleApiKeyCredentials = userCredentials.filter(
82
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.KEY
82
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.KEY
83
83
  );
84
84
  const hasKey = userAppleApiKeyCredentials.length > 0;
85
85
  return !hasKey;
@@ -91,7 +91,7 @@ class GameIosWizard extends BaseAuthenticatedCommand {
91
91
  async shouldRun() {
92
92
  const userCredentials = await getUserCredentials();
93
93
  const userAppleDistCredentials = userCredentials.filter(
94
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
94
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
95
95
  );
96
96
  const hasDistCert = userAppleDistCredentials.length > 0;
97
97
  return !hasDistCert;
@@ -112,6 +112,11 @@ class GameIosWizard extends BaseAuthenticatedCommand {
112
112
  // Can always run this
113
113
  shouldRun: async () => true
114
114
  },
115
+ {
116
+ args: ["--quiet", "--self"],
117
+ command: "game:ios:app:addTester",
118
+ shouldRun: async () => true
119
+ },
115
120
  {
116
121
  args: ["--quiet"],
117
122
  command: "game:ios:profile:create",
@@ -119,7 +124,7 @@ class GameIosWizard extends BaseAuthenticatedCommand {
119
124
  if (!game) return true;
120
125
  const projectCredentials = await getProjectCredentials(game.id);
121
126
  const projectAppleProfileCredentials = projectCredentials.filter(
122
- (cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
127
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
123
128
  );
124
129
  const hasProfile = projectAppleProfileCredentials.length > 0;
125
130
  return !hasProfile;
@@ -2,15 +2,15 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
4
  import { DateTime } from 'luxon';
5
- import { c as BaseGameCommand, y as getProjectJobs } from '../../../index-BhhiXbey.js';
5
+ import { c as BaseGameCommand, y as getProjectJobs } from '../../../index-CO_ssVFA.js';
6
6
  import 'ink-spinner';
7
- import { c as getJobStatusColor } from '../../../index-CGBdOm1q.js';
7
+ import { c as getJobStatusColor } from '../../../index-CYjZ26If.js';
8
8
  import { T as Table } from '../../../Table-FaNgpyeq.js';
9
9
  import { T as Title } from '../../../Title-BCQtayg6.js';
10
10
  import 'react';
11
11
  import '@tanstack/react-query';
12
12
  import 'axios';
13
- import { a as getJobSummary } from '../../../index-C66Dd8Xc.js';
13
+ import { a as getJobSummary } from '../../../index-CA6-uLMn.js';
14
14
  import 'node:fs';
15
15
  import 'fast-glob';
16
16
  import 'uuid';
@@ -25,7 +25,7 @@ import 'node:path';
25
25
  import 'marked';
26
26
  import 'marked-terminal';
27
27
  import 'qrcode';
28
- import { C as Command } from '../../../Command-WPpmLPkL.js';
28
+ import { C as Command } from '../../../Command-VWMnGslo.js';
29
29
  import 'crypto-js';
30
30
  import '@expo/apple-utils/build/index.js';
31
31
  import 'node:crypto';
@@ -35,7 +35,7 @@ import 'readline-sync';
35
35
  import 'isomorphic-git';
36
36
  import 'deepmerge';
37
37
  import 'ini';
38
- import '../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
38
+ import '../../../useAndroidServiceAccountTestResult-DueKynFy.js';
39
39
 
40
40
  class GameJobList extends BaseGameCommand {
41
41
  static args = {};
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { c as BaseGameCommand, z as getJob, J as JobStatus } from '../../../index-BhhiXbey.js';
4
+ import { c as BaseGameCommand, z as getJob, J as JobStatus } from '../../../index-CO_ssVFA.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -19,8 +19,8 @@ import 'uuid';
19
19
  import 'yazl';
20
20
  import 'socket.io-client';
21
21
  import 'fullscreen-ink';
22
- import { J as JobLogTail } from '../../../JobLogTail-0CBLoG8N.js';
23
- import { J as JobStatusTable } from '../../../JobStatusTable-C_ZsZJCm.js';
22
+ import { J as JobLogTail } from '../../../JobLogTail-C_W8UAMg.js';
23
+ import { J as JobStatusTable } from '../../../JobStatusTable-CdbKtwJE.js';
24
24
  import 'open';
25
25
  import '@inkjs/ui';
26
26
  import 'marked';
@@ -29,15 +29,15 @@ import { N as NextSteps } from '../../../NextSteps-DbJHmscQ.js';
29
29
  import 'qrcode';
30
30
  import 'string-length';
31
31
  import 'strip-ansi';
32
- import '../../../index-C66Dd8Xc.js';
33
- import { C as Command } from '../../../Command-WPpmLPkL.js';
32
+ import '../../../index-CA6-uLMn.js';
33
+ import { C as Command } from '../../../Command-VWMnGslo.js';
34
34
  import 'crypto-js';
35
35
  import '@expo/apple-utils/build/index.js';
36
36
  import 'deepmerge';
37
37
  import 'ini';
38
- import '../../../index-CGBdOm1q.js';
39
- import '../../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
40
- import '../../../useWebSocket-5PYa2QER.js';
38
+ import '../../../index-CYjZ26If.js';
39
+ import '../../../useAndroidServiceAccountTestResult-DueKynFy.js';
40
+ import '../../../useWebSocket-CIxkPaYi.js';
41
41
  import '../../../Title-BCQtayg6.js';
42
42
  import '../../../StatusTable-DzRWcMr4.js';
43
43
 
@@ -74,7 +74,7 @@ class GameJobStatus extends BaseGameCommand {
74
74
  const handleJobUpdate = (job2) => {
75
75
  if (!follow) return;
76
76
  if ([JobStatus.COMPLETED, JobStatus.FAILED].includes(job2.status)) {
77
- const exitCode = job2.status == JobStatus.FAILED ? 1 : 0;
77
+ const exitCode = job2.status === JobStatus.FAILED ? 1 : 0;
78
78
  setTimeout(() => process.exit(exitCode), 5e3);
79
79
  }
80
80
  };
@@ -1,9 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
- import { B as BaseAuthenticatedCommand, g as getProjects, b as getShortDate } from '../../index-BhhiXbey.js';
4
+ import { B as BaseAuthenticatedCommand, g as getProjects, b as getShortDate } from '../../index-CO_ssVFA.js';
5
5
  import 'ink-spinner';
6
- import { g as getShortUUID } from '../../index-CGBdOm1q.js';
6
+ import { g as getShortUUID } from '../../index-CYjZ26If.js';
7
7
  import { T as Table } from '../../Table-FaNgpyeq.js';
8
8
  import 'react';
9
9
  import '@tanstack/react-query';
@@ -23,8 +23,8 @@ import 'node:path';
23
23
  import 'marked';
24
24
  import 'marked-terminal';
25
25
  import 'qrcode';
26
- import '../../index-C66Dd8Xc.js';
27
- import { C as Command } from '../../Command-WPpmLPkL.js';
26
+ import '../../index-CA6-uLMn.js';
27
+ import { C as Command } from '../../Command-VWMnGslo.js';
28
28
  import 'crypto-js';
29
29
  import '@expo/apple-utils/build/index.js';
30
30
  import 'node:crypto';
@@ -34,7 +34,7 @@ import 'readline-sync';
34
34
  import 'isomorphic-git';
35
35
  import 'deepmerge';
36
36
  import 'ini';
37
- import '../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
37
+ import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
38
38
 
39
39
  class GameList extends BaseAuthenticatedCommand {
40
40
  static args = {};
@@ -67,7 +67,7 @@ class GameList extends BaseAuthenticatedCommand {
67
67
  }));
68
68
  render(
69
69
  /* @__PURE__ */ jsxs(Command, { command: this, children: [
70
- data.length === 0 && params.pageNumber == 0 && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
70
+ data.length === 0 && params.pageNumber === 0 && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
71
71
  /* @__PURE__ */ jsx(Text, { children: "No games found. Create one now with:" }),
72
72
  /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginLeft: 2, marginTop: 1, children: [
73
73
  /* @__PURE__ */ jsx(Text, { children: "shipthis game wizard android" }),
@@ -1,7 +1,7 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
- import { useInput, Box, Text, render } from 'ink';
4
- import { M as LogLevel, a2 as getShortAuthRequiredUrl, W as WEB_URL, c as BaseGameCommand, z as getJob, H as downloadBuildById } from '../../index-BhhiXbey.js';
3
+ import { Box, Text, render } from 'ink';
4
+ import { M as LogLevel, W as WEB_URL, a5 as getShortAuthRequiredUrl, c as BaseGameCommand, z as getJob, H as downloadBuildById } from '../../index-CO_ssVFA.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -22,27 +22,27 @@ import 'fullscreen-ink';
22
22
  import 'string-length';
23
23
  import 'strip-ansi';
24
24
  import open from 'open';
25
- import { g as getShortUUID } from '../../index-CGBdOm1q.js';
25
+ import { g as getShortUUID } from '../../index-CYjZ26If.js';
26
26
  import 'crypto-js';
27
- import { u as useJobWatching, J as JobLogTail } from '../../JobLogTail-0CBLoG8N.js';
28
- import { J as JobStatusTable } from '../../JobStatusTable-C_ZsZJCm.js';
27
+ import { u as useJobWatching, J as JobLogTail } from '../../JobLogTail-C_W8UAMg.js';
28
+ import { J as JobStatusTable } from '../../JobStatusTable-CdbKtwJE.js';
29
29
  import '@inkjs/ui';
30
- import { u as useShip, J as JobProgress } from '../../JobProgress-lKqVT88m.js';
31
- import { C as CommandContext, G as GameContext, M as Markdown } from '../../index-C66Dd8Xc.js';
30
+ import { u as useShip, J as JobProgress } from '../../JobProgress-CI385G53.js';
31
+ import { C as CommandContext, G as GameContext, e as useSafeInput, M as Markdown } from '../../index-CA6-uLMn.js';
32
32
  import 'qrcode';
33
33
  import 'marked';
34
34
  import 'marked-terminal';
35
- import { C as CommandGame } from '../../CommandGame-cxzWG4nT.js';
35
+ import { C as CommandGame } from '../../CommandGame-BSVPZzNl.js';
36
36
  import '@expo/apple-utils/build/index.js';
37
37
  import 'deepmerge';
38
38
  import 'ini';
39
- import '../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
40
- import '../../useWebSocket-5PYa2QER.js';
39
+ import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
40
+ import '../../useWebSocket-CIxkPaYi.js';
41
41
  import '../../Title-BCQtayg6.js';
42
42
  import '../../StatusTable-DzRWcMr4.js';
43
43
  import '../../git-BpsfNFZ_.js';
44
- import '../../ProgressSpinner-DGcakQSK.js';
45
- import '../../Command-WPpmLPkL.js';
44
+ import '../../ProgressSpinner-Um6ARKlk.js';
45
+ import '../../Command-VWMnGslo.js';
46
46
 
47
47
  function isNetworkError(exception) {
48
48
  if (!axios.isAxiosError(exception)) return false;
@@ -73,7 +73,7 @@ const JobFollow = ({ jobId, onComplete, onFailure, projectId }) => {
73
73
  onComplete,
74
74
  onFailure,
75
75
  onNewLogEntry(logEntry) {
76
- if (logEntry.level == LogLevel.ERROR) console.error(logEntry.message);
76
+ if (logEntry.level === LogLevel.ERROR) console.error(logEntry.message);
77
77
  else console.log(logEntry.message);
78
78
  },
79
79
  projectId
@@ -94,15 +94,17 @@ const Ship = ({ onComplete, onError }) => {
94
94
  const [isComplete, setIsComplete] = useState(false);
95
95
  const handleStartOnMount = async () => {
96
96
  if (!command) throw new Error("No command in context");
97
- const startedJobs = await shipMutation.mutateAsync({ command, log: setShipLog });
97
+ const logFn = flags?.follow ? console.log : setShipLog;
98
+ const startedJobs = await shipMutation.mutateAsync({ command, log: logFn });
98
99
  setJobs(startedJobs);
99
100
  };
100
101
  useEffect(() => {
101
102
  handleStartOnMount().catch(onError);
102
103
  }, []);
103
- useInput(async (input) => {
104
+ useSafeInput(async (input) => {
104
105
  if (!gameId) return;
105
- switch (input) {
106
+ const i = input.toLowerCase();
107
+ switch (i) {
106
108
  case "l": {
107
109
  setShowLog((prev) => !prev);
108
110
  break;
@@ -141,7 +143,7 @@ const Ship = ({ onComplete, onError }) => {
141
143
  return /* @__PURE__ */ jsx(Fragment, {});
142
144
  }
143
145
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
144
- jobs == null && /* @__PURE__ */ jsx(Text, { children: shipLog }),
146
+ jobs === null && /* @__PURE__ */ jsx(Text, { children: shipLog }),
145
147
  jobs && jobs.map((job) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
146
148
  /* @__PURE__ */ jsx(JobStatusTable, { isWatching: true, jobId: job.id, projectId: job.project.id }),
147
149
  /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(JobProgress, { job, onComplete: handleJobComplete, onFailure: handleJobFailure }) }),
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { B as BaseAuthenticatedCommand } from '../../index-BhhiXbey.js';
4
+ import { B as BaseAuthenticatedCommand } from '../../index-CO_ssVFA.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -20,7 +20,7 @@ import 'fast-glob';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
- import { a as GameStatus$1 } from '../../GameStatus-BQEtVKvv.js';
23
+ import { a as GameStatus$1 } from '../../GameStatus-1ntFyxEx.js';
24
24
  import 'string-length';
25
25
  import 'strip-ansi';
26
26
  import 'open';
@@ -28,17 +28,17 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import '../../index-C66Dd8Xc.js';
32
- import { C as CommandGame } from '../../CommandGame-cxzWG4nT.js';
31
+ import '../../index-CA6-uLMn.js';
32
+ import { C as CommandGame } from '../../CommandGame-BSVPZzNl.js';
33
33
  import '@expo/apple-utils/build/index.js';
34
34
  import 'deepmerge';
35
35
  import 'ini';
36
- import '../../index-CGBdOm1q.js';
36
+ import '../../index-CYjZ26If.js';
37
37
  import '../../StatusTable-DzRWcMr4.js';
38
38
  import '../../Title-BCQtayg6.js';
39
39
  import '../../NextSteps-DbJHmscQ.js';
40
- import '../../useAndroidServiceAccountTestResult-DZk5SMxI.js';
41
- import '../../Command-WPpmLPkL.js';
40
+ import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
41
+ import '../../Command-VWMnGslo.js';
42
42
 
43
43
  class GameStatus extends BaseAuthenticatedCommand {
44
44
  static args = {};