shipthis 0.1.36 → 0.1.38

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 (101) hide show
  1. package/README.md +46 -33
  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/assets/markdown/ship-success.md.ejs +4 -0
  6. package/dist/{AppleBundleIdDetails-pEVOUXTQ.js → AppleBundleIdDetails-CgleH2pl.js} +3 -3
  7. package/dist/{Command-DhAVAdiI.js → Command-7dCv1F9p.js} +1 -1
  8. package/dist/{CommandGame-C-oV-hb4.js → CommandGame-er5Ql6hq.js} +2 -2
  9. package/dist/{Create-Dg9ZlwEd.js → Create-pLXESvEq.js} +1 -1
  10. package/dist/{GameStatus-Dm9TqFfW.js → GameStatus-B_Iw9tYr.js} +1 -1
  11. package/dist/{Import-BFNNkN-I.js → Import-fIsrfsmr.js} +2 -2
  12. package/dist/{JobLogTail-RTNIiAUk.js → JobLogTail-BPcQ8ghI.js} +2 -2
  13. package/dist/{JobProgress-dFWcT0CQ.js → JobProgress-CpEatVPs.js} +10 -6
  14. package/dist/{JobStatusTable-BlvMuWF7.js → JobStatusTable-BmJLzsUN.js} +2 -2
  15. package/dist/{ProjectCredentialsTable-CMBnYLou.js → ProjectCredentialsTable-DvPDhi7C.js} +5 -3
  16. package/dist/{UserCredentialsTable-oxE3mDmE.js → UserCredentialsTable-MBm1vAP3.js} +4 -2
  17. package/dist/{baseAppleCommand-cnLvBz95.js → baseAppleCommand-uL0Gnav4.js} +1 -1
  18. package/dist/{baseGameAndroidCommand-DUDYisYm.js → baseGameAndroidCommand-CKTSQyZV.js} +1 -1
  19. package/dist/commands/apiKey/create.js +3 -2
  20. package/dist/commands/apiKey/list.js +3 -2
  21. package/dist/commands/apiKey/revoke.js +3 -2
  22. package/dist/commands/apple/apiKey/create.js +7 -6
  23. package/dist/commands/apple/apiKey/delete.js +118 -0
  24. package/dist/commands/apple/apiKey/export.js +6 -5
  25. package/dist/commands/apple/apiKey/import.js +6 -5
  26. package/dist/commands/apple/apiKey/status.js +4 -3
  27. package/dist/commands/apple/certificate/create.js +7 -6
  28. package/dist/commands/apple/certificate/delete.js +127 -0
  29. package/dist/commands/apple/certificate/export.js +6 -5
  30. package/dist/commands/apple/certificate/import.js +6 -5
  31. package/dist/commands/apple/certificate/status.js +4 -3
  32. package/dist/commands/apple/login.js +12 -3
  33. package/dist/commands/apple/status.js +3 -2
  34. package/dist/commands/dashboard.js +2 -1
  35. package/dist/commands/game/android/apiKey/connect.js +8 -7
  36. package/dist/commands/game/android/apiKey/create.js +10 -9
  37. package/dist/commands/game/android/apiKey/delete.js +100 -0
  38. package/dist/commands/game/android/apiKey/export.js +6 -5
  39. package/dist/commands/game/android/apiKey/import.js +6 -5
  40. package/dist/commands/game/android/apiKey/invite.js +3 -2
  41. package/dist/commands/game/android/apiKey/policy.js +3 -2
  42. package/dist/commands/game/android/apiKey/status.js +6 -5
  43. package/dist/commands/game/android/keyStore/create.js +7 -6
  44. package/dist/commands/game/android/keyStore/delete.js +100 -0
  45. package/dist/commands/game/android/keyStore/export.js +5 -4
  46. package/dist/commands/game/android/keyStore/import.js +8 -7
  47. package/dist/commands/game/android/keyStore/status.js +5 -4
  48. package/dist/commands/game/android/status.js +2 -1
  49. package/dist/commands/game/build/download.js +3 -2
  50. package/dist/commands/game/build/list.js +4 -3
  51. package/dist/commands/game/create.js +2 -1
  52. package/dist/commands/game/details.js +9 -5
  53. package/dist/commands/game/export.js +2 -1
  54. package/dist/commands/game/ios/app/addTester.js +4 -3
  55. package/dist/commands/game/ios/app/create.js +3 -2
  56. package/dist/commands/game/ios/app/status.js +6 -5
  57. package/dist/commands/game/ios/app/sync.js +4 -3
  58. package/dist/commands/game/ios/profile/create.js +6 -5
  59. package/dist/commands/game/ios/profile/delete.js +123 -0
  60. package/dist/commands/game/ios/profile/export.js +5 -4
  61. package/dist/commands/game/ios/profile/import.js +5 -4
  62. package/dist/commands/game/ios/profile/status.js +8 -47
  63. package/dist/commands/game/ios/status.js +8 -7
  64. package/dist/commands/game/ios/wizard.js +2 -2
  65. package/dist/commands/game/job/list.js +3 -2
  66. package/dist/commands/game/job/status.js +6 -5
  67. package/dist/commands/game/list.js +3 -2
  68. package/dist/commands/game/ship.js +18 -10
  69. package/dist/commands/game/status.js +5 -4
  70. package/dist/commands/game/wizard.js +14 -13
  71. package/dist/commands/internal/fastlane.js +2 -1
  72. package/dist/commands/internal/readme.js +2 -1
  73. package/dist/commands/login.js +2 -1
  74. package/dist/commands/status.js +2 -2
  75. package/dist/{export-Bd552LBe.js → export-BwwAjG_F.js} +1 -1
  76. package/dist/{import-D-EL9sQJ.js → import-OgFrUsqw.js} +1 -1
  77. package/dist/{index-DwATmUTQ.js → index-C1XpCT_9.js} +4 -4
  78. package/dist/index-C2omlhEs.js +48 -0
  79. package/dist/{index-BtPf4vzY.js → index-DHioYOIm.js} +6 -3
  80. package/dist/{index-DCN43FhY.js → index-DVEYxVsH.js} +3 -3
  81. package/dist/{upload-Dm38PqhN.js → upload-5s3sy2jF.js} +1 -1
  82. package/dist/{useAppleApp-BKPntZPm.js → useAppleApp-szQ_Kg5S.js} +1 -1
  83. package/dist/{useAppleBundleId-DvQKEEy4.js → useAppleBundleId-BarLcidd.js} +1 -1
  84. package/dist/useAppleProfiles-C2U4NzC3.js +63 -0
  85. package/dist/{useGoogleStatus-D9jjGa--.js → useGoogleStatus-zfnjhtNB.js} +1 -1
  86. package/dist/{useProjectCredentials-BjsS28hP.js → useProjectCredentials-DbynNY96.js} +1 -1
  87. package/dist/{useWebSocket-CIeyHqxG.js → useWebSocket-h7smqhZQ.js} +1 -1
  88. package/docs/apple/apiKey/delete.md +25 -0
  89. package/docs/apple/apiKey.md +26 -0
  90. package/docs/apple/certificate/delete.md +25 -0
  91. package/docs/apple/certificate.md +26 -0
  92. package/docs/game/android/apiKey/delete.md +25 -0
  93. package/docs/game/android/apiKey.md +26 -0
  94. package/docs/game/android/keyStore/delete.md +25 -0
  95. package/docs/game/android/keyStore.md +26 -0
  96. package/docs/game/details.md +13 -10
  97. package/docs/game/ios/profile/delete.md +26 -0
  98. package/docs/game/ios/profile.md +27 -0
  99. package/docs/game/ship.md +5 -4
  100. package/package.json +6 -1
  101. package/dist/index-1H48f5j2.js +0 -24
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { Args } from '@oclif/core';
3
3
  import { useScreenSize, withFullScreen } from 'fullscreen-ink';
4
- import { Y as queryClient, a1 as cacheKeys, t as getAuthedHeaders, s as API_URL, X as castArrayObjectDates, S as CommandContext, R as GameContext, aC as updateProject, x as getGodotVersion, w as GameEngine, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, am as useBuilds, P as Platform, L as JobStatus, au as Markdown, W as WEB_URL, b as getShortUUID, at as useSafeInput, O as getProject, C as CredentialsType, a2 as getGoogleStatus, aD as queryBuilds, a6 as fetchKeyTestResult, a8 as KeyTestStatus, a9 as KeyTestError, _ as GameProvider, aE as CreateGooglePlayGame, B as BaseAuthenticatedCommand, m as isCWDGodotGame } from '../../index-BtPf4vzY.js';
4
+ import { X as queryClient, a0 as cacheKeys, t as getAuthedHeaders, s as API_URL, V as castArrayObjectDates, S as CommandContext, R as GameContext, aC as updateProject, x as getGodotVersion, w as GameEngine, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, aq as useBuilds, P as Platform, L as JobStatus, au as Markdown, W as WEB_URL, g as getShortUUID, at as useSafeInput, O as getProject, C as CredentialsType, a2 as getGoogleStatus, aD as queryBuilds, a6 as fetchKeyTestResult, a8 as KeyTestStatus, a9 as KeyTestError, Z as GameProvider, aE as CreateGooglePlayGame, B as BaseAuthenticatedCommand, o as isCWDGodotGame } from '../../index-DHioYOIm.js';
5
5
  import { Box, Text } from 'ink';
6
6
  import Spinner from 'ink-spinner';
7
7
  import 'node:crypto';
@@ -23,31 +23,32 @@ import 'socket.io-client';
23
23
  import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
- import { C as ConnectGoogle } from '../../index-DCN43FhY.js';
26
+ import { C as ConnectGoogle } from '../../index-DVEYxVsH.js';
27
27
  import { TextInput, Alert } from '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { J as JobLogTail } from '../../JobLogTail-RTNIiAUk.js';
32
- import { u as useShip, J as JobProgress } from '../../JobProgress-dFWcT0CQ.js';
33
- import { C as CreateServiceAccountKey } from '../../index-DwATmUTQ.js';
34
- import { C as CreateKeystore } from '../../Create-Dg9ZlwEd.js';
35
- import { I as ImportKeystore } from '../../Import-BFNNkN-I.js';
36
- import { a as getProjectCredentials } from '../../index-1H48f5j2.js';
31
+ import { J as JobLogTail } from '../../JobLogTail-BPcQ8ghI.js';
32
+ import { u as useShip, J as JobProgress } from '../../JobProgress-CpEatVPs.js';
33
+ import { C as CreateServiceAccountKey } from '../../index-C1XpCT_9.js';
34
+ import { C as CreateKeystore } from '../../Create-pLXESvEq.js';
35
+ import { I as ImportKeystore } from '../../Import-fIsrfsmr.js';
36
+ import { a as getProjectCredentials } from '../../index-C2omlhEs.js';
37
37
  import { T as Title } from '../../Title-BCQtayg6.js';
38
- import { C as Command } from '../../Command-DhAVAdiI.js';
38
+ import { C as Command } from '../../Command-7dCv1F9p.js';
39
+ import 'chalk';
39
40
  import '@expo/apple-utils/build/index.js';
40
41
  import 'deepmerge';
41
42
  import 'ini';
42
43
  import 'fs';
43
44
  import 'path';
44
- import '../../useGoogleStatus-D9jjGa--.js';
45
- import '../../useWebSocket-CIeyHqxG.js';
45
+ import '../../useGoogleStatus-zfnjhtNB.js';
46
+ import '../../useWebSocket-h7smqhZQ.js';
46
47
  import '../../git-BpsfNFZ_.js';
47
48
  import '../../ProgressSpinner-Um6ARKlk.js';
48
- import '../../useProjectCredentials-BjsS28hP.js';
49
+ import '../../useProjectCredentials-DbynNY96.js';
49
50
  import '../../RunWithSpinner-DucRnFp6.js';
50
- import '../../import-D-EL9sQJ.js';
51
+ import '../../import-OgFrUsqw.js';
51
52
 
52
53
  const useInviteServiceAccount = () => useMutation({
53
54
  async mutationFn({ developerId, projectId }) {
@@ -1,11 +1,12 @@
1
1
  import fs__default, { promises } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
- import { ac as BaseCommand } from '../../index-BtPf4vzY.js';
4
+ import { ac as BaseCommand } from '../../index-DHioYOIm.js';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
8
  import 'luxon';
9
+ import 'chalk';
9
10
  import '@expo/apple-utils/build/index.js';
10
11
  import 'node:crypto';
11
12
  import 'node:readline';
@@ -1,12 +1,13 @@
1
1
  import fs__default from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
- import { ac as BaseCommand, ad as ejs } from '../../index-BtPf4vzY.js';
4
+ import { ac as BaseCommand, ad as ejs } from '../../index-DHioYOIm.js';
5
5
  import CustomHelp from '../../utils/help.js';
6
6
  import 'axios';
7
7
  import 'crypto-js';
8
8
  import 'uuid';
9
9
  import 'luxon';
10
+ import 'chalk';
10
11
  import '@expo/apple-utils/build/index.js';
11
12
  import 'node:crypto';
12
13
  import 'node:readline';
@@ -1,11 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import axios from 'axios';
3
- import { W as WEB_URL, ac as BaseCommand, ai as acceptTerms, s as API_URL, aj as setAuthToken, e as getInput } from '../index-BtPf4vzY.js';
3
+ import { W as WEB_URL, ac as BaseCommand, ai as acceptTerms, s as API_URL, aj as setAuthToken, c as getInput } from '../index-DHioYOIm.js';
4
4
  import 'node:fs';
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,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { ac as BaseCommand, m as isCWDGodotGame } from '../index-BtPf4vzY.js';
3
+ import { ac as BaseCommand, o as isCWDGodotGame } from '../index-DHioYOIm.js';
4
4
  import 'ink-spinner';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
@@ -29,7 +29,7 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import { N as NextSteps } from '../NextSteps-DbJHmscQ.js';
31
31
  import 'qrcode';
32
- import { C as Command } from '../Command-DhAVAdiI.js';
32
+ import { C as Command } from '../Command-7dCv1F9p.js';
33
33
  import chalk from 'chalk';
34
34
  import '@expo/apple-utils/build/index.js';
35
35
  import 'isomorphic-git';
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import axios from 'axios';
3
- import { s as API_URL, t as getAuthedHeaders } from './index-BtPf4vzY.js';
3
+ import { s as API_URL, t as getAuthedHeaders } from './index-DHioYOIm.js';
4
4
 
5
5
  async function exportCredential({ credentialId, projectId, zipPath }) {
6
6
  const headers = getAuthedHeaders();
@@ -1,6 +1,6 @@
1
1
  import { promises } from 'node:fs';
2
2
  import axios from 'axios';
3
- import { s as API_URL, t as getAuthedHeaders } from './index-BtPf4vzY.js';
3
+ import { s as API_URL, t as getAuthedHeaders } from './index-DHioYOIm.js';
4
4
 
5
5
  async function getNewImportTicket(projectId) {
6
6
  const url = projectId ? `${API_URL}/projects/${projectId}/credentials/import/url` : `${API_URL}/credentials/import/url`;
@@ -8,7 +8,7 @@ import 'node:path';
8
8
  import 'node:readline';
9
9
  import 'node:url';
10
10
  import 'readline-sync';
11
- import { a1 as cacheKeys, t as getAuthedHeaders, s as API_URL, aw as castObjectDates, Y as queryClient, a5 as revokePolicy, a4 as enforcePolicy, P as Platform, C as CredentialsType, a2 as getGoogleStatus, R as GameContext, at as useSafeInput, au as Markdown, c as getShortDate } from './index-BtPf4vzY.js';
11
+ import { a0 as cacheKeys, t as getAuthedHeaders, s as API_URL, aw as castObjectDates, X as queryClient, a5 as revokePolicy, a4 as enforcePolicy, P as Platform, C as CredentialsType, a2 as getGoogleStatus, R as GameContext, at as useSafeInput, au as Markdown, f as getShortDate } from './index-DHioYOIm.js';
12
12
  import axios from 'axios';
13
13
  import 'isomorphic-git';
14
14
  import '@oclif/core';
@@ -19,9 +19,9 @@ import 'uuid';
19
19
  import 'yazl';
20
20
  import 'socket.io-client';
21
21
  import 'fullscreen-ink';
22
- import { u as useWebSocket } from './useWebSocket-CIeyHqxG.js';
23
- import { u as useProjectCredentials } from './useProjectCredentials-BjsS28hP.js';
24
- import { u as useGoogleStatus } from './useGoogleStatus-D9jjGa--.js';
22
+ import { u as useWebSocket } from './useWebSocket-h7smqhZQ.js';
23
+ import { u as useProjectCredentials } from './useProjectCredentials-DbynNY96.js';
24
+ import { u as useGoogleStatus } from './useGoogleStatus-zfnjhtNB.js';
25
25
  import 'crypto-js';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
@@ -0,0 +1,48 @@
1
+ import axios from 'axios';
2
+ import { s as API_URL, t as getAuthedHeaders, V as castArrayObjectDates } from './index-DHioYOIm.js';
3
+ import 'node:fs';
4
+
5
+ async function getUserCredentials(pageSize = 100) {
6
+ const headers = getAuthedHeaders();
7
+ const { data } = await axios({
8
+ headers,
9
+ method: "get",
10
+ url: `${API_URL}/credentials?pageSize=${pageSize}`
11
+ });
12
+ return castArrayObjectDates(data.data);
13
+ }
14
+ async function deleteUserCredential(options) {
15
+ const headers = getAuthedHeaders();
16
+ const { data } = await axios({
17
+ headers,
18
+ method: "delete",
19
+ url: `${API_URL}/credentials/${options.credentialId}`,
20
+ params: {
21
+ isImmediate: options.isImmediate
22
+ }
23
+ });
24
+ return data;
25
+ }
26
+ async function getProjectCredentials(projectId, pageSize = 100) {
27
+ const headers = getAuthedHeaders();
28
+ const { data } = await axios({
29
+ headers,
30
+ method: "get",
31
+ url: `${API_URL}/projects/${projectId}/credentials?pageSize=${pageSize}`
32
+ });
33
+ return castArrayObjectDates(data.data);
34
+ }
35
+ async function deleteProjectCredential(projectId, options) {
36
+ const headers = getAuthedHeaders();
37
+ const { data } = await axios({
38
+ headers,
39
+ method: "delete",
40
+ url: `${API_URL}/projects/${projectId}/credentials/${options.credentialId}`,
41
+ params: {
42
+ isImmediate: options.isImmediate
43
+ }
44
+ });
45
+ return data;
46
+ }
47
+
48
+ export { getProjectCredentials as a, deleteProjectCredential as b, deleteUserCredential as d, getUserCredentials as g };
@@ -5,6 +5,7 @@ import CryptoJS from 'crypto-js';
5
5
  import { v4 } from 'uuid';
6
6
  import { DateTime } from 'luxon';
7
7
  import path from 'node:path';
8
+ import chalk from 'chalk';
8
9
  import { Command, Flags } from '@oclif/core';
9
10
  import * as expo from '@expo/apple-utils/build/index.js';
10
11
  import crypto from 'node:crypto';
@@ -961,7 +962,7 @@ class BaseCommand extends Command {
961
962
  }
962
963
  async refreshAppleAuthState() {
963
964
  const cookies = await this.getAppleCookies();
964
- const rerunMessage = "Please run shipthis apple login to authenticate with Apple.";
965
+ const rerunMessage = `Please run ${chalk.bold("shipthis apple login")} to authenticate with Apple.`;
965
966
  if (!cookies) throw new Error(`No Apple cookies found. ${rerunMessage}`);
966
967
  const authState = await Auth.loginWithCookiesAsync(
967
968
  {
@@ -972,6 +973,7 @@ class BaseCommand extends Command {
972
973
  if (!authState) throw new Error(`Failed to refresh Apple auth state. ${rerunMessage}`);
973
974
  return authState;
974
975
  }
976
+ // Pass undefined to logout
975
977
  async setAppleCookies(cookies) {
976
978
  const authConfig = await this.getAuthConfig();
977
979
  await this.setAuthConfig({ ...authConfig, appleCookies: cookies });
@@ -1897,7 +1899,8 @@ const DetailsFlags = {
1897
1899
  gcpServiceAccountId: Flags.string({ char: "c", description: "Set the GCP service account ID" }),
1898
1900
  iosBundleId: Flags.string({ char: "i", description: "Set the iOS bundle ID" }),
1899
1901
  name: Flags.string({ char: "n", description: "The name of the game" }),
1900
- semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" })
1902
+ semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" }),
1903
+ useDemoCredentials: Flags.string({ char: "d", description: "Use demo credentials for this project" })
1901
1904
  };
1902
1905
 
1903
- export { WS_URL as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, DEFAULT_IGNORED_FILES_GLOBS as E, getGodotProjectName as F, GODOT_CAPABILITIES as G, getProjectJobs as H, getJobSummary as I, getJobStatusColor as J, getJob as K, JobStatus as L, getStageColor as M, makeHumanReadable as N, getProject as O, Platform as P, getProjectPlatformProgress as Q, GameContext as R, CommandContext as S, isValidSemVer as T, UserRole as U, downloadBuildById as V, WEB_URL as W, castArrayObjectDates as X, queryClient as Y, CommandProvider as Z, GameProvider as _, ApiKeyType as a, getAuthToken as a0, cacheKeys as a1, getGoogleStatus as a2, getGodotAndroidPackageName as a3, enforcePolicy as a4, revokePolicy as a5, fetchKeyTestResult as a6, niceError as a7, KeyTestStatus as a8, KeyTestError as a9, getMessageColor as aA, getShortTime as aB, updateProject as aC, queryBuilds as aD, CreateGooglePlayGame as aE, inviteServiceAccount as aa, disconnectGoogle as ab, BaseCommand as ac, ejs as ad, getAPIKeys as ae, createAPIKey as af, revokeAPIKey as ag, getSingleUseUrl as ah, acceptTerms as ai, setAuthToken as aj, Auth as ak, getMaskedInput as al, useBuilds as am, getBuildSummary as an, getNewUploadTicket as ao, getFileHash as ap, startJobsFromUpload as aq, getPlatformName as ar, LogLevel as as, useSafeInput as at, Markdown as au, getShortAuthRequiredUrl as av, castObjectDates as aw, getGoogleAuthUrl as ax, useJob as ay, castJobDates as az, getShortUUID as b, getShortDate as c, BaseGameCommand as d, getInput as e, generatePackageName as f, getProjects as g, getGodotAppleBundleIdentifier as h, BundleId as i, App as j, CapabilityTypeOption as k, BetaGroup as l, isCWDGodotGame as m, getRenderedMarkdown as n, Certificate as o, CertificateType as p, Profile as q, ProfileType as r, API_URL as s, getAuthedHeaders as t, getGodotProjectCapabilities as u, CapabilityType as v, GameEngine as w, getGodotVersion as x, createProject as y, DEFAULT_SHIPPED_FILES_GLOBS as z };
1906
+ export { getAuthToken as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, DEFAULT_IGNORED_FILES_GLOBS as E, getGodotProjectName as F, GODOT_CAPABILITIES as G, getProjectJobs as H, getJobSummary as I, getJobStatusColor as J, getJob as K, JobStatus as L, getStageColor as M, makeHumanReadable as N, getProject as O, Platform as P, getProjectPlatformProgress as Q, GameContext as R, CommandContext as S, isValidSemVer as T, UserRole as U, castArrayObjectDates as V, WEB_URL as W, queryClient as X, CommandProvider as Y, GameProvider as Z, WS_URL as _, ApiKeyType as a, cacheKeys as a0, downloadBuildById as a1, getGoogleStatus as a2, getGodotAndroidPackageName as a3, enforcePolicy as a4, revokePolicy as a5, fetchKeyTestResult as a6, niceError as a7, KeyTestStatus as a8, KeyTestError as a9, getMessageColor as aA, getShortTime as aB, updateProject as aC, queryBuilds as aD, CreateGooglePlayGame as aE, inviteServiceAccount as aa, disconnectGoogle as ab, BaseCommand as ac, ejs as ad, getAPIKeys as ae, createAPIKey as af, revokeAPIKey as ag, getSingleUseUrl as ah, acceptTerms as ai, setAuthToken as aj, Auth as ak, getMaskedInput as al, getNewUploadTicket as am, getFileHash as an, startJobsFromUpload as ao, getPlatformName as ap, useBuilds as aq, getBuildSummary as ar, LogLevel as as, useSafeInput as at, Markdown as au, getShortAuthRequiredUrl as av, castObjectDates as aw, getGoogleAuthUrl as ax, useJob as ay, castJobDates as az, getRenderedMarkdown as b, getInput as c, Certificate as d, getProjects as e, getShortDate as f, getShortUUID as g, BaseGameCommand as h, generatePackageName as i, getGodotAppleBundleIdentifier as j, BundleId as k, App as l, CapabilityTypeOption as m, BetaGroup as n, isCWDGodotGame as o, CertificateType as p, Profile as q, ProfileType as r, API_URL as s, getAuthedHeaders as t, getGodotProjectCapabilities as u, CapabilityType as v, GameEngine as w, getGodotVersion as x, createProject as y, DEFAULT_SHIPPED_FILES_GLOBS as z };
@@ -12,7 +12,7 @@ import 'readline-sync';
12
12
  import 'luxon';
13
13
  import 'axios';
14
14
  import 'isomorphic-git';
15
- import { av as getShortAuthRequiredUrl, ax as getGoogleAuthUrl, R as GameContext, at as useSafeInput, W as WEB_URL, au as Markdown } from './index-BtPf4vzY.js';
15
+ import { av as getShortAuthRequiredUrl, ax as getGoogleAuthUrl, R as GameContext, at as useSafeInput, W as WEB_URL, au as Markdown } from './index-DHioYOIm.js';
16
16
  import '@oclif/core';
17
17
  import '@tanstack/react-query';
18
18
  import 'crypto-js';
@@ -20,8 +20,8 @@ import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
23
- import { u as useGoogleStatus } from './useGoogleStatus-D9jjGa--.js';
24
- import { u as useWebSocket } from './useWebSocket-CIeyHqxG.js';
23
+ import { u as useGoogleStatus } from './useGoogleStatus-zfnjhtNB.js';
24
+ import { u as useWebSocket } from './useWebSocket-h7smqhZQ.js';
25
25
  import 'fullscreen-ink';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { s as API_URL, t as getAuthedHeaders } from './index-BtPf4vzY.js';
2
+ import { s as API_URL, t as getAuthedHeaders } from './index-DHioYOIm.js';
3
3
 
4
4
  async function getNewUploadTicket(projectId = null) {
5
5
  const url = projectId ? `${API_URL}/projects/${projectId}/credentials/url` : `${API_URL}/credentials/url`;
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { j as App } from './index-BtPf4vzY.js';
2
+ import { l as App } from './index-DHioYOIm.js';
3
3
 
4
4
  const queryAppleApp = async ({ ctx, iosBundleId }) => {
5
5
  if (!iosBundleId) {
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { i as BundleId, u as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, v as CapabilityType } from './index-BtPf4vzY.js';
2
+ import { k as BundleId, u as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, v as CapabilityType } from './index-DHioYOIm.js';
3
3
 
4
4
  async function getBundleIdCapabilities(bundleId) {
5
5
  const current = await bundleId.getBundleIdCapabilitiesAsync();
@@ -0,0 +1,63 @@
1
+ import { useQuery } from '@tanstack/react-query';
2
+ import { DateTime } from 'luxon';
3
+ import { f as getShortDate, q as Profile, r as ProfileType } from './index-DHioYOIm.js';
4
+ import 'node:crypto';
5
+ import 'node:fs';
6
+ import 'node:path';
7
+ import 'node:readline';
8
+ import 'node:url';
9
+ import 'readline-sync';
10
+ import 'axios';
11
+ import 'isomorphic-git';
12
+ import '@oclif/core';
13
+ import 'react';
14
+ import 'crypto-js';
15
+ import 'uuid';
16
+ import 'fast-glob';
17
+ import 'yazl';
18
+ import 'socket.io-client';
19
+ import 'fullscreen-ink';
20
+ import 'ink';
21
+
22
+ async function queryAppleProfiles({ ctx }) {
23
+ const appleProfiles = await Profile.getAsync(ctx, {
24
+ query: {
25
+ filter: {
26
+ profileType: [ProfileType.IOS_APP_STORE]
27
+ }
28
+ }
29
+ });
30
+ return appleProfiles;
31
+ }
32
+ const canAppleProfileBeUsed = (appleProfile, project, projectCredentials) => {
33
+ try {
34
+ if (!appleProfile.isValid) return false;
35
+ const profileBundleId = appleProfile.attributes.bundleId?.attributes.identifier;
36
+ const profileCertificateSerialNumber = appleProfile.attributes.certificates?.[0]?.attributes.serialNumber;
37
+ if (profileBundleId !== project.details?.iosBundleId) return false;
38
+ return projectCredentials.some(
39
+ (credential) => credential.isActive && credential.serialNumber === profileCertificateSerialNumber
40
+ );
41
+ } catch (error) {
42
+ console.log(error);
43
+ return false;
44
+ }
45
+ };
46
+ function getAppleProfileSummary(appleProfile, project, projectCredentials) {
47
+ return {
48
+ canBeUsed: canAppleProfileBeUsed(appleProfile, project, projectCredentials),
49
+ expires: getShortDate(DateTime.fromISO(appleProfile.attributes.expirationDate)),
50
+ id: appleProfile.id,
51
+ name: appleProfile.attributes.name,
52
+ platform: appleProfile.attributes.platform
53
+ };
54
+ }
55
+ const useAppleProfiles = (props) => {
56
+ const queryResult = useQuery({
57
+ queryFn: () => queryAppleProfiles(props),
58
+ queryKey: ["appleProfiles"]
59
+ });
60
+ return queryResult;
61
+ };
62
+
63
+ export { canAppleProfileBeUsed as c, getAppleProfileSummary as g, queryAppleProfiles as q, useAppleProfiles as u };
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { a1 as cacheKeys, a2 as getGoogleStatus } from './index-BtPf4vzY.js';
2
+ import { a0 as cacheKeys, a2 as getGoogleStatus } from './index-DHioYOIm.js';
3
3
 
4
4
  const useGoogleStatus = () => useQuery({
5
5
  queryFn: getGoogleStatus,
@@ -1,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import axios from 'axios';
3
- import { a1 as cacheKeys, b as getShortUUID, c as getShortDate, t as getAuthedHeaders, s as API_URL, X as castArrayObjectDates } from './index-BtPf4vzY.js';
3
+ import { a0 as cacheKeys, g as getShortUUID, f as getShortDate, t as getAuthedHeaders, s as API_URL, V as castArrayObjectDates } from './index-DHioYOIm.js';
4
4
 
5
5
  async function queryProjectCredentials({
6
6
  projectId,
@@ -1,6 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { io } from 'socket.io-client';
3
- import { $ as WS_URL, a0 as getAuthToken } from './index-BtPf4vzY.js';
3
+ import { _ as WS_URL, $ as getAuthToken } from './index-DHioYOIm.js';
4
4
 
5
5
  function useWebSocket(listeners = []) {
6
6
  const log = () => {
@@ -0,0 +1,25 @@
1
+ # Command: `apple apiKey delete`
2
+
3
+ ## Description
4
+
5
+ Delete an Apple API Key from ShipThis and optionally from Apple
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis apple apiKey delete [-i] [-y] [-a]
12
+
13
+ FLAGS
14
+ -a, --revokeInApple Also revoke the API Key in Apple (cannot be undone)
15
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
16
+ -y, --iAmSure I am sure I want to do this - do not prompt me
17
+
18
+ DESCRIPTION
19
+ Delete an Apple API Key from ShipThis and optionally from Apple
20
+
21
+ EXAMPLES
22
+ $ shipthis apple apiKey delete
23
+
24
+ $ shipthis apple apiKey delete --immediate --revokeInApple --iAmSure
25
+ ```
@@ -55,6 +55,32 @@ EXAMPLES
55
55
  $ shipthis apple apiKey create --force
56
56
  ```
57
57
 
58
+ ### `apple apiKey delete`
59
+
60
+ #### Description
61
+
62
+ Delete an Apple API Key from ShipThis and optionally from Apple
63
+
64
+ #### Help Output
65
+
66
+ ```help
67
+ USAGE
68
+ $ shipthis apple apiKey delete [-i] [-y] [-a]
69
+
70
+ FLAGS
71
+ -a, --revokeInApple Also revoke the API Key in Apple (cannot be undone)
72
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
73
+ -y, --iAmSure I am sure I want to do this - do not prompt me
74
+
75
+ DESCRIPTION
76
+ Delete an Apple API Key from ShipThis and optionally from Apple
77
+
78
+ EXAMPLES
79
+ $ shipthis apple apiKey delete
80
+
81
+ $ shipthis apple apiKey delete --immediate --revokeInApple --iAmSure
82
+ ```
83
+
58
84
  ### `apple apiKey export`
59
85
 
60
86
  #### Description
@@ -0,0 +1,25 @@
1
+ # Command: `apple certificate delete`
2
+
3
+ ## Description
4
+
5
+ Delete an iOS Distribution Certificate from ShipThis and optionally from Apple
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis apple certificate delete [-i] [-y] [-a]
12
+
13
+ FLAGS
14
+ -a, --revokeInApple Also revoke the Certificate in Apple (cannot be undone)
15
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
16
+ -y, --iAmSure I am sure I want to do this - do not prompt me
17
+
18
+ DESCRIPTION
19
+ Delete an iOS Distribution Certificate from ShipThis and optionally from Apple
20
+
21
+ EXAMPLES
22
+ $ shipthis apple certificate delete
23
+
24
+ $ shipthis apple certificate delete --immediate --revokeInApple --iAmSure
25
+ ```
@@ -57,6 +57,32 @@ EXAMPLES
57
57
  $ shipthis apple certificate create --force
58
58
  ```
59
59
 
60
+ ### `apple certificate delete`
61
+
62
+ #### Description
63
+
64
+ Delete an iOS Distribution Certificate from ShipThis and optionally from Apple
65
+
66
+ #### Help Output
67
+
68
+ ```help
69
+ USAGE
70
+ $ shipthis apple certificate delete [-i] [-y] [-a]
71
+
72
+ FLAGS
73
+ -a, --revokeInApple Also revoke the Certificate in Apple (cannot be undone)
74
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
75
+ -y, --iAmSure I am sure I want to do this - do not prompt me
76
+
77
+ DESCRIPTION
78
+ Delete an iOS Distribution Certificate from ShipThis and optionally from Apple
79
+
80
+ EXAMPLES
81
+ $ shipthis apple certificate delete
82
+
83
+ $ shipthis apple certificate delete --immediate --revokeInApple --iAmSure
84
+ ```
85
+
60
86
  ### `apple certificate export`
61
87
 
62
88
  #### Description
@@ -0,0 +1,25 @@
1
+ # Command: `game android apiKey delete`
2
+
3
+ ## Description
4
+
5
+ Delete the active Android API Key from ShipThis
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis game android apiKey delete [-g <value>] [-i] [-y]
12
+
13
+ FLAGS
14
+ -g, --gameId=<value> The ID of the game
15
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
16
+ -y, --iAmSure I am sure I want to do this - do not prompt me
17
+
18
+ DESCRIPTION
19
+ Delete the active Android API Key from ShipThis
20
+
21
+ EXAMPLES
22
+ $ shipthis game android apiKey delete
23
+
24
+ $ shipthis game android apiKey delete --immediate --iAmSure
25
+ ```
@@ -60,6 +60,32 @@ EXAMPLES
60
60
  $ shipthis game android apiKey create --gameId 0c179fc4
61
61
  ```
62
62
 
63
+ ### `game android apiKey delete`
64
+
65
+ #### Description
66
+
67
+ Delete the active Android API Key from ShipThis
68
+
69
+ #### Help Output
70
+
71
+ ```help
72
+ USAGE
73
+ $ shipthis game android apiKey delete [-g <value>] [-i] [-y]
74
+
75
+ FLAGS
76
+ -g, --gameId=<value> The ID of the game
77
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
78
+ -y, --iAmSure I am sure I want to do this - do not prompt me
79
+
80
+ DESCRIPTION
81
+ Delete the active Android API Key from ShipThis
82
+
83
+ EXAMPLES
84
+ $ shipthis game android apiKey delete
85
+
86
+ $ shipthis game android apiKey delete --immediate --iAmSure
87
+ ```
88
+
63
89
  ### `game android apiKey export`
64
90
 
65
91
  #### Description
@@ -0,0 +1,25 @@
1
+ # Command: `game android keyStore delete`
2
+
3
+ ## Description
4
+
5
+ Delete the active Android KeyStore from ShipThis
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis game android keyStore delete [-g <value>] [-i] [-y]
12
+
13
+ FLAGS
14
+ -g, --gameId=<value> The ID of the game
15
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
16
+ -y, --iAmSure I am sure I want to do this - do not prompt me
17
+
18
+ DESCRIPTION
19
+ Delete the active Android KeyStore from ShipThis
20
+
21
+ EXAMPLES
22
+ $ shipthis game android keyStore delete
23
+
24
+ $ shipthis game android keyStore delete --immediate --iAmSure
25
+ ```
@@ -41,6 +41,32 @@ EXAMPLES
41
41
  $ shipthis game android keyStore create --gameId 0c179fc4
42
42
  ```
43
43
 
44
+ ### `game android keyStore delete`
45
+
46
+ #### Description
47
+
48
+ Delete the active Android KeyStore from ShipThis
49
+
50
+ #### Help Output
51
+
52
+ ```help
53
+ USAGE
54
+ $ shipthis game android keyStore delete [-g <value>] [-i] [-y]
55
+
56
+ FLAGS
57
+ -g, --gameId=<value> The ID of the game
58
+ -i, --immediate Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)
59
+ -y, --iAmSure I am sure I want to do this - do not prompt me
60
+
61
+ DESCRIPTION
62
+ Delete the active Android KeyStore from ShipThis
63
+
64
+ EXAMPLES
65
+ $ shipthis game android keyStore delete
66
+
67
+ $ shipthis game android keyStore delete --immediate --iAmSure
68
+ ```
69
+
44
70
  ### `game android keyStore export`
45
71
 
46
72
  #### Description