shipthis 0.1.36 → 0.1.37

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 (98) hide show
  1. package/README.md +17 -9
  2. package/assets/markdown/confirm-delete-android-keystore.md.ejs +22 -0
  3. package/assets/markdown/confirm-delete-android-serviceaccountkey.md.ejs +24 -0
  4. package/assets/markdown/confirm-delete-apple-credential.md.ejs +29 -0
  5. package/dist/{AppleBundleIdDetails-pEVOUXTQ.js → AppleBundleIdDetails-KMzyex1H.js} +3 -3
  6. package/dist/{Command-DhAVAdiI.js → Command-CHh8RDXK.js} +1 -1
  7. package/dist/{CommandGame-C-oV-hb4.js → CommandGame-Rvmsa7b0.js} +2 -2
  8. package/dist/{Create-Dg9ZlwEd.js → Create-DInZ_pw-.js} +1 -1
  9. package/dist/{GameStatus-Dm9TqFfW.js → GameStatus-D7ID10tS.js} +1 -1
  10. package/dist/{Import-BFNNkN-I.js → Import-BmO8EYKj.js} +2 -2
  11. package/dist/{JobLogTail-RTNIiAUk.js → JobLogTail-CYdceTKL.js} +2 -2
  12. package/dist/{JobProgress-dFWcT0CQ.js → JobProgress-DBCYbWrO.js} +2 -2
  13. package/dist/{JobStatusTable-BlvMuWF7.js → JobStatusTable-DhnhY1_i.js} +2 -2
  14. package/dist/{ProjectCredentialsTable-CMBnYLou.js → ProjectCredentialsTable-BDYVYqAq.js} +5 -3
  15. package/dist/{UserCredentialsTable-oxE3mDmE.js → UserCredentialsTable-cDPvjF-F.js} +4 -2
  16. package/dist/{baseAppleCommand-cnLvBz95.js → baseAppleCommand-CQ5dOna7.js} +1 -1
  17. package/dist/{baseGameAndroidCommand-DUDYisYm.js → baseGameAndroidCommand-D4ryZS6A.js} +1 -1
  18. package/dist/commands/apiKey/create.js +3 -2
  19. package/dist/commands/apiKey/list.js +3 -2
  20. package/dist/commands/apiKey/revoke.js +3 -2
  21. package/dist/commands/apple/apiKey/create.js +7 -6
  22. package/dist/commands/apple/apiKey/delete.js +118 -0
  23. package/dist/commands/apple/apiKey/export.js +6 -5
  24. package/dist/commands/apple/apiKey/import.js +6 -5
  25. package/dist/commands/apple/apiKey/status.js +4 -3
  26. package/dist/commands/apple/certificate/create.js +7 -6
  27. package/dist/commands/apple/certificate/delete.js +127 -0
  28. package/dist/commands/apple/certificate/export.js +6 -5
  29. package/dist/commands/apple/certificate/import.js +6 -5
  30. package/dist/commands/apple/certificate/status.js +4 -3
  31. package/dist/commands/apple/login.js +12 -3
  32. package/dist/commands/apple/status.js +3 -2
  33. package/dist/commands/dashboard.js +2 -1
  34. package/dist/commands/game/android/apiKey/connect.js +8 -7
  35. package/dist/commands/game/android/apiKey/create.js +10 -9
  36. package/dist/commands/game/android/apiKey/delete.js +100 -0
  37. package/dist/commands/game/android/apiKey/export.js +6 -5
  38. package/dist/commands/game/android/apiKey/import.js +6 -5
  39. package/dist/commands/game/android/apiKey/invite.js +3 -2
  40. package/dist/commands/game/android/apiKey/policy.js +3 -2
  41. package/dist/commands/game/android/apiKey/status.js +6 -5
  42. package/dist/commands/game/android/keyStore/create.js +7 -6
  43. package/dist/commands/game/android/keyStore/delete.js +100 -0
  44. package/dist/commands/game/android/keyStore/export.js +5 -4
  45. package/dist/commands/game/android/keyStore/import.js +8 -7
  46. package/dist/commands/game/android/keyStore/status.js +5 -4
  47. package/dist/commands/game/android/status.js +2 -1
  48. package/dist/commands/game/build/download.js +3 -2
  49. package/dist/commands/game/build/list.js +4 -3
  50. package/dist/commands/game/create.js +2 -1
  51. package/dist/commands/game/details.js +3 -2
  52. package/dist/commands/game/export.js +2 -1
  53. package/dist/commands/game/ios/app/addTester.js +4 -3
  54. package/dist/commands/game/ios/app/create.js +3 -2
  55. package/dist/commands/game/ios/app/status.js +6 -5
  56. package/dist/commands/game/ios/app/sync.js +4 -3
  57. package/dist/commands/game/ios/profile/create.js +6 -5
  58. package/dist/commands/game/ios/profile/delete.js +123 -0
  59. package/dist/commands/game/ios/profile/export.js +5 -4
  60. package/dist/commands/game/ios/profile/import.js +5 -4
  61. package/dist/commands/game/ios/profile/status.js +8 -47
  62. package/dist/commands/game/ios/status.js +8 -7
  63. package/dist/commands/game/ios/wizard.js +2 -2
  64. package/dist/commands/game/job/list.js +3 -2
  65. package/dist/commands/game/job/status.js +6 -5
  66. package/dist/commands/game/list.js +3 -2
  67. package/dist/commands/game/ship.js +8 -7
  68. package/dist/commands/game/status.js +5 -4
  69. package/dist/commands/game/wizard.js +14 -13
  70. package/dist/commands/internal/fastlane.js +2 -1
  71. package/dist/commands/internal/readme.js +2 -1
  72. package/dist/commands/login.js +2 -1
  73. package/dist/commands/status.js +2 -2
  74. package/dist/{export-Bd552LBe.js → export-DujIwhJw.js} +1 -1
  75. package/dist/{import-D-EL9sQJ.js → import-DGCqCAcC.js} +1 -1
  76. package/dist/{index-DCN43FhY.js → index-9LxGafAo.js} +3 -3
  77. package/dist/{index-DwATmUTQ.js → index-BPh_qt7t.js} +4 -4
  78. package/dist/index-CNsmEDXi.js +48 -0
  79. package/dist/{index-BtPf4vzY.js → index-CmuXyPed.js} +4 -2
  80. package/dist/{upload-Dm38PqhN.js → upload-D4x4yCia.js} +1 -1
  81. package/dist/{useAppleApp-BKPntZPm.js → useAppleApp-taaewPSf.js} +1 -1
  82. package/dist/{useAppleBundleId-DvQKEEy4.js → useAppleBundleId-BeGViMe7.js} +1 -1
  83. package/dist/useAppleProfiles-1TtO0aO6.js +63 -0
  84. package/dist/{useGoogleStatus-D9jjGa--.js → useGoogleStatus-CSsxEvX7.js} +1 -1
  85. package/dist/{useProjectCredentials-BjsS28hP.js → useProjectCredentials-Cm50WMZU.js} +1 -1
  86. package/dist/{useWebSocket-CIeyHqxG.js → useWebSocket-BVfn36be.js} +1 -1
  87. package/docs/apple/apiKey/delete.md +25 -0
  88. package/docs/apple/apiKey.md +26 -0
  89. package/docs/apple/certificate/delete.md +25 -0
  90. package/docs/apple/certificate.md +26 -0
  91. package/docs/game/android/apiKey/delete.md +25 -0
  92. package/docs/game/android/apiKey.md +26 -0
  93. package/docs/game/android/keyStore/delete.md +25 -0
  94. package/docs/game/android/keyStore.md +26 -0
  95. package/docs/game/ios/profile/delete.md +26 -0
  96. package/docs/game/ios/profile.md +27 -0
  97. package/package.json +6 -1
  98. package/dist/index-1H48f5j2.js +0 -24
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { a6 as fetchKeyTestResult, C as CredentialsType, P as Platform, a7 as niceError, a8 as KeyTestStatus } from '../../../../index-BtPf4vzY.js';
4
+ import { a6 as fetchKeyTestResult, C as CredentialsType, P as Platform, a7 as niceError, a8 as KeyTestStatus } from '../../../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -24,20 +24,21 @@ import { T as Table } from '../../../../Table-FaNgpyeq.js';
24
24
  import { T as Title } from '../../../../Title-BCQtayg6.js';
25
25
  import 'string-length';
26
26
  import 'strip-ansi';
27
- import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-CMBnYLou.js';
27
+ import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-BDYVYqAq.js';
28
28
  import 'open';
29
29
  import '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
34
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
33
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
34
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
35
+ import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'deepmerge';
37
38
  import 'ini';
38
39
  import 'fs';
39
40
  import 'path';
40
- import '../../../../useProjectCredentials-BjsS28hP.js';
41
+ import '../../../../useProjectCredentials-Cm50WMZU.js';
41
42
 
42
43
  class GameAndroidApiKeyStatus extends BaseGameAndroidCommand {
43
44
  static args = {};
@@ -5,9 +5,9 @@ import 'node:fs';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
- import { P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
8
+ import { P as Platform, C as CredentialsType } from '../../../../index-CmuXyPed.js';
9
9
  import 'luxon';
10
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
10
+ import { a as getProjectCredentials } from '../../../../index-CNsmEDXi.js';
11
11
  import 'ink-spinner';
12
12
  import 'node:crypto';
13
13
  import 'node:path';
@@ -28,16 +28,17 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { C as CreateKeystore } from '../../../../Create-Dg9ZlwEd.js';
32
- import { C as CommandGame } from '../../../../CommandGame-C-oV-hb4.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
31
+ import { C as CreateKeystore } from '../../../../Create-DInZ_pw-.js';
32
+ import { C as CommandGame } from '../../../../CommandGame-Rvmsa7b0.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
37
38
  import 'fs';
38
39
  import 'path';
39
40
  import '../../../../RunWithSpinner-DucRnFp6.js';
40
- import '../../../../Command-DhAVAdiI.js';
41
+ import '../../../../Command-CHh8RDXK.js';
41
42
 
42
43
  class GameAndroidKeyStoreCreate extends BaseGameAndroidCommand {
43
44
  static args = {};
@@ -0,0 +1,100 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { P as Platform, C as CredentialsType, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../../index-CmuXyPed.js';
3
+ import 'node:fs';
4
+ import 'axios';
5
+ import 'crypto-js';
6
+ import 'uuid';
7
+ import 'luxon';
8
+ import { a as getProjectCredentials, b as deleteProjectCredential } from '../../../../index-CNsmEDXi.js';
9
+ import 'react/jsx-runtime';
10
+ import 'ink';
11
+ import 'ink-spinner';
12
+ import 'react';
13
+ import '@tanstack/react-query';
14
+ import 'fast-glob';
15
+ import 'yazl';
16
+ import 'socket.io-client';
17
+ import 'fullscreen-ink';
18
+ import 'string-length';
19
+ import 'strip-ansi';
20
+ import 'open';
21
+ import '@inkjs/ui';
22
+ import 'qrcode';
23
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
24
+ import 'node:path';
25
+ import 'chalk';
26
+ import '@expo/apple-utils/build/index.js';
27
+ import 'node:crypto';
28
+ import 'node:readline';
29
+ import 'node:url';
30
+ import 'readline-sync';
31
+ import 'isomorphic-git';
32
+ import 'deepmerge';
33
+ import 'ini';
34
+ import 'fs';
35
+ import 'path';
36
+ import 'marked';
37
+ import 'marked-terminal';
38
+
39
+ class GameAndroidKeyStoreDelete extends BaseGameAndroidCommand {
40
+ static args = {};
41
+ static description = "Delete the active Android KeyStore from ShipThis";
42
+ static examples = [
43
+ "<%= config.bin %> <%= command.id %>",
44
+ "<%= config.bin %> <%= command.id %> --immediate --iAmSure"
45
+ ];
46
+ static flags = {
47
+ ...BaseGameAndroidCommand.flags,
48
+ immediate: Flags.boolean({
49
+ char: "i",
50
+ description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
51
+ required: false
52
+ }),
53
+ iAmSure: Flags.boolean({
54
+ char: "y",
55
+ description: "I am sure I want to do this - do not prompt me",
56
+ required: false
57
+ })
58
+ };
59
+ async run() {
60
+ const { flags } = await this.parse(GameAndroidKeyStoreDelete);
61
+ const { immediate, iAmSure } = flags;
62
+ const game = await this.getGame();
63
+ const projectCredentials = await getProjectCredentials(game.id);
64
+ const userAndroidKeystoreCredentials = projectCredentials.filter(
65
+ (cred) => cred.platform === Platform.ANDROID && cred.type === CredentialsType.CERTIFICATE && cred.isActive
66
+ );
67
+ if (userAndroidKeystoreCredentials.length === 0) {
68
+ this.log("No active Android keystore credentials found.");
69
+ return;
70
+ }
71
+ const [keyStore] = userAndroidKeystoreCredentials;
72
+ const getAreYouSure = async () => {
73
+ if (iAmSure) return true;
74
+ const confirmString = getShortUUID(keyStore.id);
75
+ const prompt = getRenderedMarkdown({
76
+ filename: "confirm-delete-android-keystore.md.ejs",
77
+ templateVars: {
78
+ confirmString,
79
+ exportCommand: `shipthis game android keyStore export keyStore.zip`,
80
+ immediate
81
+ }
82
+ });
83
+ this.log(prompt);
84
+ const input = await getInput("");
85
+ return input.trim().toLowerCase() === confirmString.toLowerCase();
86
+ };
87
+ const areYouSure = await getAreYouSure();
88
+ if (!areYouSure) {
89
+ this.log("Aborting - Android KeyStore not deleted");
90
+ this.exit(0);
91
+ }
92
+ await deleteProjectCredential(game.id, {
93
+ credentialId: keyStore.id,
94
+ isImmediate: immediate
95
+ });
96
+ this.log("The Android KeyStore has been deleted from ShipThis.");
97
+ }
98
+ }
99
+
100
+ export { GameAndroidKeyStoreDelete as default };
@@ -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-1H48f5j2.js';
6
- import { d as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-CNsmEDXi.js';
6
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CmuXyPed.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -29,8 +29,9 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
33
- import { e as exportCredential } from '../../../../export-Bd552LBe.js';
32
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
33
+ import { e as exportCredential } from '../../../../export-DujIwhJw.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
@@ -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-1H48f5j2.js';
6
- import { d as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-CNsmEDXi.js';
6
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CmuXyPed.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -28,16 +28,17 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { I as ImportKeystore } from '../../../../Import-BFNNkN-I.js';
32
- import { C as CommandGame } from '../../../../CommandGame-C-oV-hb4.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
31
+ import { I as ImportKeystore } from '../../../../Import-BmO8EYKj.js';
32
+ import { C as CommandGame } from '../../../../CommandGame-Rvmsa7b0.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
37
38
  import 'fs';
38
39
  import 'path';
39
- import '../../../../import-D-EL9sQJ.js';
40
- import '../../../../Command-DhAVAdiI.js';
40
+ import '../../../../import-DGCqCAcC.js';
41
+ import '../../../../Command-CHh8RDXK.js';
41
42
 
42
43
  class GameAndroidKeyStoreImport extends BaseGameCommand {
43
44
  static args = {
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { d as BaseGameCommand, C as CredentialsType, P as Platform } from '../../../../index-BtPf4vzY.js';
3
+ import { h as BaseGameCommand, C as CredentialsType, P as Platform } from '../../../../index-CmuXyPed.js';
4
4
  import 'ink-spinner';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
@@ -22,19 +22,20 @@ 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-CMBnYLou.js';
25
+ import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-BDYVYqAq.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 { C as Command } from '../../../../Command-DhAVAdiI.js';
31
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
32
+ import 'chalk';
32
33
  import '@expo/apple-utils/build/index.js';
33
34
  import 'deepmerge';
34
35
  import 'ini';
35
36
  import 'fs';
36
37
  import 'path';
37
- import '../../../../useProjectCredentials-BjsS28hP.js';
38
+ import '../../../../useProjectCredentials-Cm50WMZU.js';
38
39
  import '../../../../Table-FaNgpyeq.js';
39
40
  import '../../../../Title-BCQtayg6.js';
40
41
 
@@ -1,11 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { d as BaseGameCommand } from '../../../index-BtPf4vzY.js';
2
+ import { h as BaseGameCommand } from '../../../index-CmuXyPed.js';
3
3
  import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
7
  import 'luxon';
8
8
  import 'node:path';
9
+ import 'chalk';
9
10
  import '@expo/apple-utils/build/index.js';
10
11
  import 'node:crypto';
11
12
  import 'node:readline';
@@ -2,7 +2,7 @@ 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 { d as BaseGameCommand, V as downloadBuildById } from '../../../index-BtPf4vzY.js';
5
+ import { h as BaseGameCommand, a1 as downloadBuildById } from '../../../index-CmuXyPed.js';
6
6
  import 'ink-spinner';
7
7
  import 'node:crypto';
8
8
  import 'node:path';
@@ -27,8 +27,9 @@ import 'marked';
27
27
  import 'marked-terminal';
28
28
  import 'qrcode';
29
29
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
30
- import { C as Command } from '../../../Command-DhAVAdiI.js';
30
+ import { C as Command } from '../../../Command-CHh8RDXK.js';
31
31
  import 'crypto-js';
32
+ import 'chalk';
32
33
  import '@expo/apple-utils/build/index.js';
33
34
  import 'deepmerge';
34
35
  import 'ini';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
- import { am as useBuilds, an as getBuildSummary, d as BaseGameCommand } from '../../../index-BtPf4vzY.js';
4
+ import { aq as useBuilds, ar as getBuildSummary, h as BaseGameCommand } from '../../../index-CmuXyPed.js';
5
5
  import Spinner from 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -29,13 +29,14 @@ import '@inkjs/ui';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
- import { C as CommandGame } from '../../../CommandGame-C-oV-hb4.js';
32
+ import { C as CommandGame } from '../../../CommandGame-Rvmsa7b0.js';
33
+ import 'chalk';
33
34
  import '@expo/apple-utils/build/index.js';
34
35
  import 'deepmerge';
35
36
  import 'ini';
36
37
  import 'fs';
37
38
  import 'path';
38
- import '../../../Command-DhAVAdiI.js';
39
+ import '../../../Command-CHh8RDXK.js';
39
40
 
40
41
  const BuildsTable = ({ queryProps, ...boxProps }) => {
41
42
  const { data, isLoading } = useBuilds(queryProps);
@@ -1,11 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { B as BaseAuthenticatedCommand, D as DetailsFlags, m as isCWDGodotGame, w as GameEngine, x as getGodotVersion, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, F as getGodotProjectName, e as getInput } from '../../index-BtPf4vzY.js';
2
+ import { B as BaseAuthenticatedCommand, D as DetailsFlags, o as isCWDGodotGame, w as GameEngine, x as getGodotVersion, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, F as getGodotProjectName, c as getInput } from '../../index-CmuXyPed.js';
3
3
  import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
7
  import 'luxon';
8
8
  import 'node:path';
9
+ import 'chalk';
9
10
  import '@expo/apple-utils/build/index.js';
10
11
  import 'node:crypto';
11
12
  import 'node:readline';
@@ -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 { d as BaseGameCommand, D as DetailsFlags, T as isValidSemVer, w as GameEngine } from '../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, D as DetailsFlags, T as isValidSemVer, w as GameEngine } from '../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -23,7 +23,8 @@ import 'node:path';
23
23
  import 'marked';
24
24
  import 'marked-terminal';
25
25
  import 'qrcode';
26
- import { C as Command } from '../../Command-DhAVAdiI.js';
26
+ import { C as Command } from '../../Command-CHh8RDXK.js';
27
+ import 'chalk';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
29
30
  import 'node:readline';
@@ -1,5 +1,5 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { B as BaseAuthenticatedCommand, m as isCWDGodotGame, O as getProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS } from '../../index-BtPf4vzY.js';
2
+ import { B as BaseAuthenticatedCommand, o as isCWDGodotGame, O as getProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS } from '../../index-CmuXyPed.js';
3
3
  import 'node:crypto';
4
4
  import 'node:fs';
5
5
  import 'node:path';
@@ -18,6 +18,7 @@ import 'socket.io-client';
18
18
  import 'fullscreen-ink';
19
19
  import 'ink';
20
20
  import 'crypto-js';
21
+ import 'chalk';
21
22
  import '@expo/apple-utils/build/index.js';
22
23
  import 'deepmerge';
23
24
  import 'ini';
@@ -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 { d as BaseGameCommand, e as getInput, l as BetaGroup } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, c as getInput, n as BetaGroup } from '../../../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -10,7 +10,7 @@ import 'crypto-js';
10
10
  import 'uuid';
11
11
  import 'luxon';
12
12
  import '@tanstack/react-query';
13
- import { q as queryAppleApp } from '../../../../useAppleApp-BKPntZPm.js';
13
+ import { q as queryAppleApp } from '../../../../useAppleApp-taaewPSf.js';
14
14
  import 'fast-glob';
15
15
  import 'yazl';
16
16
  import 'socket.io-client';
@@ -24,7 +24,8 @@ import 'marked';
24
24
  import 'marked-terminal';
25
25
  import 'qrcode';
26
26
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
27
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
27
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
28
+ import 'chalk';
28
29
  import '@expo/apple-utils/build/index.js';
29
30
  import 'node:crypto';
30
31
  import 'node:readline';
@@ -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 { d as BaseGameCommand, e as getInput, f as generatePackageName, h as getGodotAppleBundleIdentifier, i as BundleId, j as App } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, c as getInput, i as generatePackageName, j as getGodotAppleBundleIdentifier, k as BundleId, l as App } from '../../../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -23,7 +23,8 @@ import 'marked';
23
23
  import 'marked-terminal';
24
24
  import 'qrcode';
25
25
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
26
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
26
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
27
+ import 'chalk';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
29
30
  import 'node:readline';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { d as BaseGameCommand } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand } from '../../../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -28,17 +28,18 @@ import 'marked';
28
28
  import 'marked-terminal';
29
29
  import { N as NextSteps } from '../../../../NextSteps-DbJHmscQ.js';
30
30
  import 'qrcode';
31
- import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../../AppleBundleIdDetails-pEVOUXTQ.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
31
+ import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../../AppleBundleIdDetails-KMzyex1H.js';
32
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
33
+ import 'chalk';
33
34
  import '@expo/apple-utils/build/index.js';
34
35
  import 'deepmerge';
35
36
  import 'ini';
36
37
  import 'fs';
37
38
  import 'path';
38
39
  import '../../../../Title-BCQtayg6.js';
39
- import '../../../../useAppleApp-BKPntZPm.js';
40
+ import '../../../../useAppleApp-taaewPSf.js';
40
41
  import '../../../../Table-FaNgpyeq.js';
41
- import '../../../../useAppleBundleId-DvQKEEy4.js';
42
+ import '../../../../useAppleBundleId-BeGViMe7.js';
42
43
 
43
44
  class GameIosAppStatus extends BaseGameCommand {
44
45
  static args = {};
@@ -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 { d as BaseGameCommand, k as CapabilityTypeOption } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, m as CapabilityTypeOption } from '../../../../index-CmuXyPed.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -16,7 +16,7 @@ import '@tanstack/react-query';
16
16
  import 'react';
17
17
  import 'crypto-js';
18
18
  import 'uuid';
19
- import { f as fetchBundleId } from '../../../../useAppleBundleId-DvQKEEy4.js';
19
+ import { f as fetchBundleId } from '../../../../useAppleBundleId-BeGViMe7.js';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
@@ -29,7 +29,8 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
32
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
33
+ import 'chalk';
33
34
  import '@expo/apple-utils/build/index.js';
34
35
  import 'deepmerge';
35
36
  import 'ini';
@@ -5,9 +5,9 @@ import { render } from 'ink';
5
5
  import 'node:fs';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
- import { d as BaseGameCommand, P as Platform, C as CredentialsType, o as Certificate, p as CertificateType, q as Profile, r as ProfileType } from '../../../../index-BtPf4vzY.js';
8
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType, d as Certificate, p as CertificateType, q as Profile, r as ProfileType } from '../../../../index-CmuXyPed.js';
9
9
  import 'luxon';
10
- import { a as getProjectCredentials, g as getUserCredentials } from '../../../../index-1H48f5j2.js';
10
+ import { a as getProjectCredentials, g as getUserCredentials } from '../../../../index-CNsmEDXi.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-DvQKEEy4.js';
20
+ import { f as fetchBundleId } from '../../../../useAppleBundleId-BeGViMe7.js';
21
21
  import 'fast-glob';
22
22
  import 'yazl';
23
23
  import 'socket.io-client';
@@ -30,8 +30,9 @@ import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
32
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
33
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
34
- import { a as uploadProjectCredentials } from '../../../../upload-Dm38PqhN.js';
33
+ import { C as Command } from '../../../../Command-CHh8RDXK.js';
34
+ import { a as uploadProjectCredentials } from '../../../../upload-D4x4yCia.js';
35
+ import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'deepmerge';
37
38
  import 'ini';
@@ -0,0 +1,123 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../../index-CmuXyPed.js';
3
+ import 'node:fs';
4
+ import 'axios';
5
+ import 'crypto-js';
6
+ import 'uuid';
7
+ import 'luxon';
8
+ import { a as getProjectCredentials, b as deleteProjectCredential } from '../../../../index-CNsmEDXi.js';
9
+ import 'react/jsx-runtime';
10
+ import 'ink';
11
+ import 'ink-spinner';
12
+ import 'react';
13
+ import '@tanstack/react-query';
14
+ import { q as queryAppleProfiles } from '../../../../useAppleProfiles-1TtO0aO6.js';
15
+ import 'fast-glob';
16
+ import 'yazl';
17
+ import 'socket.io-client';
18
+ import 'fullscreen-ink';
19
+ import 'string-length';
20
+ import 'strip-ansi';
21
+ import 'open';
22
+ import '@inkjs/ui';
23
+ import 'qrcode';
24
+ import 'node:path';
25
+ import 'chalk';
26
+ import '@expo/apple-utils/build/index.js';
27
+ import 'node:crypto';
28
+ import 'node:readline';
29
+ import 'node:url';
30
+ import 'readline-sync';
31
+ import 'isomorphic-git';
32
+ import 'deepmerge';
33
+ import 'ini';
34
+ import 'fs';
35
+ import 'path';
36
+ import 'marked';
37
+ import 'marked-terminal';
38
+
39
+ class GameIosProfileDelete extends BaseGameCommand {
40
+ static args = {};
41
+ static description = "Delete an iOS Mobile Provisioning Profile from ShipThis and optionally from Apple";
42
+ static examples = [
43
+ "<%= config.bin %> <%= command.id %>",
44
+ "<%= config.bin %> <%= command.id %> --revokeInApple --immediate --iAmSure"
45
+ ];
46
+ static flags = {
47
+ ...BaseGameCommand.flags,
48
+ immediate: Flags.boolean({
49
+ char: "i",
50
+ description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
51
+ required: false
52
+ }),
53
+ iAmSure: Flags.boolean({
54
+ char: "y",
55
+ description: "I am sure I want to do this - do not prompt me",
56
+ required: false
57
+ }),
58
+ revokeInApple: Flags.boolean({
59
+ char: "a",
60
+ description: "Also revoke the Profile in Apple (cannot be undone)",
61
+ required: false
62
+ })
63
+ };
64
+ async run() {
65
+ const { flags } = await this.parse(GameIosProfileDelete);
66
+ const { immediate, iAmSure, revokeInApple } = flags;
67
+ const game = await this.getGame();
68
+ const projectCredentials = await getProjectCredentials(game.id);
69
+ const userAppleProfileCredentials = projectCredentials.filter(
70
+ (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive
71
+ );
72
+ if (userAppleProfileCredentials.length === 0) {
73
+ this.error("No active Mobile Provisioning Profile found which can be deleted.");
74
+ }
75
+ const [profile] = userAppleProfileCredentials;
76
+ let appleProfile = null;
77
+ if (revokeInApple) {
78
+ const authState = await this.refreshAppleAuthState();
79
+ const ctx = authState.context;
80
+ const appleProfiles = await queryAppleProfiles({ ctx });
81
+ appleProfile = appleProfiles.find((p) => {
82
+ const profileSerialNumber = p.attributes.certificates?.[0]?.attributes.serialNumber;
83
+ return profileSerialNumber === profile.serialNumber;
84
+ });
85
+ if (!appleProfile?.id) {
86
+ this.error("The Mobile Provisioning Profile was not found in Apple, so cannot be revoked there.");
87
+ }
88
+ }
89
+ const getAreYouSure = async () => {
90
+ if (iAmSure) return true;
91
+ const confirmString = getShortUUID(profile.id);
92
+ const prompt = getRenderedMarkdown({
93
+ filename: "confirm-delete-apple-credential.md.ejs",
94
+ templateVars: {
95
+ confirmString,
96
+ credentialType: "Mobile Provisioning Profile",
97
+ exportCommand: `shipthis game ios profile export userProfile.zip`,
98
+ immediate,
99
+ revokeInApple
100
+ }
101
+ });
102
+ this.log(prompt);
103
+ const input = await getInput("");
104
+ return input.trim().toLowerCase() === confirmString.toLowerCase();
105
+ };
106
+ const areYouSure = await getAreYouSure();
107
+ if (!areYouSure) {
108
+ this.log("Aborting - Mobile Provisioning Profile not deleted");
109
+ this.exit(0);
110
+ }
111
+ await deleteProjectCredential(game.id, {
112
+ credentialId: profile.id,
113
+ isImmediate: immediate
114
+ });
115
+ this.log("The Mobile Provisioning Profile has been deleted from ShipThis.");
116
+ if (revokeInApple && appleProfile?.id) {
117
+ await appleProfile.deleteAsync();
118
+ this.log("The Mobile Provisioning Profile has been deleted in Apple.");
119
+ }
120
+ }
121
+ }
122
+
123
+ export { GameIosProfileDelete as default };