shipthis 0.1.33 → 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 (85) hide show
  1. package/README.md +8 -7
  2. package/assets/markdown/apikey-create.md +11 -0
  3. package/dist/{AppleBundleIdDetails-BhHPCvRm.js → AppleBundleIdDetails-By-sSGNl.js} +4 -4
  4. package/dist/{Command-BDIkuv2g.js → Command-VWMnGslo.js} +2 -2
  5. package/dist/{CommandGame-CvBIjPZp.js → CommandGame-BSVPZzNl.js} +2 -2
  6. package/dist/{Create-Lpe0B8nT.js → Create-SR1Mq7BY.js} +4 -4
  7. package/dist/{GameStatus-5XpufIY_.js → GameStatus-1ntFyxEx.js} +3 -3
  8. package/dist/{Import-DFzrAG04.js → Import-cedOWPDz.js} +4 -4
  9. package/dist/{JobLogTail-BYcJgPcL.js → JobLogTail-C_W8UAMg.js} +5 -5
  10. package/dist/{JobProgress-BcrE7CUK.js → JobProgress-CI385G53.js} +5 -5
  11. package/dist/{JobStatusTable-Bi-y8ZZT.js → JobStatusTable-CdbKtwJE.js} +4 -4
  12. package/dist/{ProjectCredentialsTable-B4vDJl4l.js → ProjectCredentialsTable-ZnuIfcDB.js} +2 -2
  13. package/dist/{RunWithSpinner-gMVA07bZ.js → RunWithSpinner-DucRnFp6.js} +2 -1
  14. package/dist/{UserCredentialsTable-CwkZTFBD.js → UserCredentialsTable-DRkAYgEA.js} +3 -3
  15. package/dist/{baseAppleCommand-BKXweb-U.js → baseAppleCommand-CsO-_Yzn.js} +1 -1
  16. package/dist/{baseGameAndroidCommand-CAi-BSsH.js → baseGameAndroidCommand-CdjaAbNX.js} +2 -2
  17. package/dist/commands/apiKey/create.js +97 -0
  18. package/dist/commands/apiKey/list.js +91 -0
  19. package/dist/commands/apiKey/revoke.js +82 -0
  20. package/dist/commands/apple/apiKey/create.js +9 -9
  21. package/dist/commands/apple/apiKey/export.js +8 -8
  22. package/dist/commands/apple/apiKey/import.js +8 -8
  23. package/dist/commands/apple/apiKey/status.js +6 -6
  24. package/dist/commands/apple/certificate/create.js +9 -9
  25. package/dist/commands/apple/certificate/export.js +8 -8
  26. package/dist/commands/apple/certificate/import.js +8 -8
  27. package/dist/commands/apple/certificate/status.js +6 -6
  28. package/dist/commands/apple/login.js +2 -2
  29. package/dist/commands/apple/status.js +5 -5
  30. package/dist/commands/dashboard.js +1 -1
  31. package/dist/commands/game/android/apiKey/connect.js +9 -9
  32. package/dist/commands/game/android/apiKey/create.js +11 -11
  33. package/dist/commands/game/android/apiKey/export.js +9 -9
  34. package/dist/commands/game/android/apiKey/import.js +9 -9
  35. package/dist/commands/game/android/apiKey/invite.js +4 -4
  36. package/dist/commands/game/android/apiKey/status.js +8 -8
  37. package/dist/commands/game/android/keyStore/create.js +10 -10
  38. package/dist/commands/game/android/keyStore/export.js +8 -8
  39. package/dist/commands/game/android/keyStore/import.js +10 -10
  40. package/dist/commands/game/android/keyStore/status.js +7 -7
  41. package/dist/commands/game/android/status.js +1 -1
  42. package/dist/commands/game/build/download.js +6 -6
  43. package/dist/commands/game/build/list.js +6 -6
  44. package/dist/commands/game/create.js +2 -2
  45. package/dist/commands/game/details.js +5 -5
  46. package/dist/commands/game/export.js +1 -1
  47. package/dist/commands/game/ios/app/addTester.js +7 -7
  48. package/dist/commands/game/ios/app/create.js +6 -6
  49. package/dist/commands/game/ios/app/status.js +8 -8
  50. package/dist/commands/game/ios/app/sync.js +7 -7
  51. package/dist/commands/game/ios/profile/create.js +9 -9
  52. package/dist/commands/game/ios/profile/export.js +8 -8
  53. package/dist/commands/game/ios/profile/import.js +8 -8
  54. package/dist/commands/game/ios/profile/status.js +7 -7
  55. package/dist/commands/game/ios/status.js +10 -10
  56. package/dist/commands/game/ios/wizard.js +5 -5
  57. package/dist/commands/game/job/list.js +5 -5
  58. package/dist/commands/game/job/status.js +8 -8
  59. package/dist/commands/game/list.js +5 -5
  60. package/dist/commands/game/ship.js +10 -10
  61. package/dist/commands/game/status.js +7 -7
  62. package/dist/commands/game/wizard.js +16 -16
  63. package/dist/commands/internal/fastlane.js +1 -1
  64. package/dist/commands/internal/readme.js +1 -1
  65. package/dist/commands/login.js +2 -2
  66. package/dist/commands/status.js +5 -5
  67. package/dist/{export-DLQrUEBK.js → export-B5Yfd9vw.js} +1 -1
  68. package/dist/{import-BoY5e0uJ.js → import-A2WcStHl.js} +1 -1
  69. package/dist/{index-CisLwc7e.js → index-BBLtvl1Y.js} +5 -5
  70. package/dist/{index-DC0GJtAy.js → index-Bz1qt_8T.js} +4 -4
  71. package/dist/{index-DfUg5j06.js → index-CA6-uLMn.js} +3 -3
  72. package/dist/{index-pj8JVg5X.js → index-CO_ssVFA.js} +24 -1
  73. package/dist/{index-B27WJDxn.js → index-CYjZ26If.js} +1 -1
  74. package/dist/{index-Crv7S0bl.js → index-CgzANgJt.js} +1 -1
  75. package/dist/{upload-C8S17EU_.js → upload-BIsFZzBO.js} +1 -1
  76. package/dist/{useAndroidServiceAccountTestResult-D4e5AKAZ.js → useAndroidServiceAccountTestResult-DueKynFy.js} +1 -1
  77. package/dist/{useAppleApp-Dr6URQvC.js → useAppleApp-BZR94exU.js} +1 -1
  78. package/dist/{useAppleBundleId-DELAwSQp.js → useAppleBundleId-Dg5DsItN.js} +1 -1
  79. package/dist/{useProjectCredentials-BjvdJdQg.js → useProjectCredentials-jQYGcDhT.js} +3 -3
  80. package/dist/{useWebSocket-CRV7V69Q.js → useWebSocket-CIxkPaYi.js} +1 -1
  81. package/docs/apiKey/create.md +27 -0
  82. package/docs/apiKey/list.md +30 -0
  83. package/docs/apiKey/revoke.md +26 -0
  84. package/docs/apiKey.md +93 -0
  85. package/package.json +9 -3
@@ -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-pj8JVg5X.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-B27WJDxn.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-DfUg5j06.js';
27
- import { C as Command } from '../../Command-BDIkuv2g.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-D4e5AKAZ.js';
37
+ import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
38
38
 
39
39
  class GameList extends BaseAuthenticatedCommand {
40
40
  static args = {};
@@ -1,7 +1,7 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
- import { M as LogLevel, W as WEB_URL, a2 as getShortAuthRequiredUrl, c as BaseGameCommand, z as getJob, H as downloadBuildById } from '../../index-pj8JVg5X.js';
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-B27WJDxn.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-BYcJgPcL.js';
28
- import { J as JobStatusTable } from '../../JobStatusTable-Bi-y8ZZT.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-BcrE7CUK.js';
31
- import { C as CommandContext, G as GameContext, e as useSafeInput, M as Markdown } from '../../index-DfUg5j06.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-CvBIjPZp.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-D4e5AKAZ.js';
40
- import '../../useWebSocket-CRV7V69Q.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
44
  import '../../ProgressSpinner-Um6ARKlk.js';
45
- import '../../Command-BDIkuv2g.js';
45
+ import '../../Command-VWMnGslo.js';
46
46
 
47
47
  function isNetworkError(exception) {
48
48
  if (!axios.isAxiosError(exception)) return false;
@@ -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-pj8JVg5X.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-5XpufIY_.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-DfUg5j06.js';
32
- import { C as CommandGame } from '../../CommandGame-CvBIjPZp.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-B27WJDxn.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-D4e5AKAZ.js';
41
- import '../../Command-BDIkuv2g.js';
40
+ import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
41
+ import '../../Command-VWMnGslo.js';
42
42
 
43
43
  class GameStatus extends BaseAuthenticatedCommand {
44
44
  static args = {};
@@ -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 { K as queryClient, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, a9 as updateProject, t as getGodotVersion, s as GameEngine, u as createProject, v as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, P as Platform, J as JobStatus, W as WEB_URL, E as getProject, C as CredentialsType, Q as getGoogleStatus, B as BaseAuthenticatedCommand, j as isCWDGodotGame } from '../../index-pj8JVg5X.js';
4
+ import { K as queryClient, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, ac as updateProject, t as getGodotVersion, s as GameEngine, u as createProject, v as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, P as Platform, J as JobStatus, W as WEB_URL, E as getProject, C as CredentialsType, Q as getGoogleStatus, B as BaseAuthenticatedCommand, j as isCWDGodotGame } from '../../index-CO_ssVFA.js';
5
5
  import { Box, Text } from 'ink';
6
6
  import Spinner from 'ink-spinner';
7
7
  import 'node:crypto';
@@ -23,31 +23,31 @@ 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-DC0GJtAy.js';
27
- import { C as CommandContext, G as GameContext, u as useBuilds, M as Markdown, e as useSafeInput, q as queryBuilds, c as GameProvider, h as CreateGooglePlayGame } from '../../index-DfUg5j06.js';
26
+ import { C as ConnectGoogle } from '../../index-Bz1qt_8T.js';
27
+ import { C as CommandContext, G as GameContext, u as useBuilds, M as Markdown, e as useSafeInput, q as queryBuilds, c as GameProvider, h as CreateGooglePlayGame } from '../../index-CA6-uLMn.js';
28
28
  import { TextInput, Alert } from '@inkjs/ui';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
- import { g as getShortUUID } from '../../index-B27WJDxn.js';
33
- import { J as JobLogTail } from '../../JobLogTail-BYcJgPcL.js';
34
- import { c as cacheKeys, f as fetchKeyTestResult, K as KeyTestStatus, a as KeyTestError } from '../../useAndroidServiceAccountTestResult-D4e5AKAZ.js';
35
- import { u as useShip, J as JobProgress } from '../../JobProgress-BcrE7CUK.js';
36
- import { C as CreateServiceAccountKey } from '../../index-CisLwc7e.js';
37
- import { C as CreateKeystore } from '../../Create-Lpe0B8nT.js';
38
- import { I as ImportKeystore } from '../../Import-DFzrAG04.js';
39
- import { a as getProjectCredentials } from '../../index-Crv7S0bl.js';
32
+ import { g as getShortUUID } from '../../index-CYjZ26If.js';
33
+ import { J as JobLogTail } from '../../JobLogTail-C_W8UAMg.js';
34
+ import { c as cacheKeys, f as fetchKeyTestResult, K as KeyTestStatus, a as KeyTestError } from '../../useAndroidServiceAccountTestResult-DueKynFy.js';
35
+ import { u as useShip, J as JobProgress } from '../../JobProgress-CI385G53.js';
36
+ import { C as CreateServiceAccountKey } from '../../index-BBLtvl1Y.js';
37
+ import { C as CreateKeystore } from '../../Create-SR1Mq7BY.js';
38
+ import { I as ImportKeystore } from '../../Import-cedOWPDz.js';
39
+ import { a as getProjectCredentials } from '../../index-CgzANgJt.js';
40
40
  import { T as Title } from '../../Title-BCQtayg6.js';
41
- import { C as Command } from '../../Command-BDIkuv2g.js';
41
+ import { C as Command } from '../../Command-VWMnGslo.js';
42
42
  import '@expo/apple-utils/build/index.js';
43
43
  import 'deepmerge';
44
44
  import 'ini';
45
- import '../../useWebSocket-CRV7V69Q.js';
45
+ import '../../useWebSocket-CIxkPaYi.js';
46
46
  import '../../git-BpsfNFZ_.js';
47
47
  import '../../ProgressSpinner-Um6ARKlk.js';
48
- import '../../useProjectCredentials-BjvdJdQg.js';
49
- import '../../RunWithSpinner-gMVA07bZ.js';
50
- import '../../import-BoY5e0uJ.js';
48
+ import '../../useProjectCredentials-jQYGcDhT.js';
49
+ import '../../RunWithSpinner-DucRnFp6.js';
50
+ import '../../import-A2WcStHl.js';
51
51
 
52
52
  const useInviteServiceAccount = () => useMutation({
53
53
  async mutationFn({ developerId, projectId }) {
@@ -1,7 +1,7 @@
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 { V as BaseCommand } from '../../index-pj8JVg5X.js';
4
+ import { V as BaseCommand } from '../../index-CO_ssVFA.js';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import require$$0 from 'fs';
5
5
  import require$$1 from 'path';
6
- import { V as BaseCommand } from '../../index-pj8JVg5X.js';
6
+ import { V as BaseCommand } from '../../index-CO_ssVFA.js';
7
7
  import CustomHelp from '../../utils/help.js';
8
8
  import 'axios';
9
9
  import 'crypto-js';
@@ -1,7 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import axios from 'axios';
3
- import { W as WEB_URL, V as BaseCommand, o as API_URL, Y as setAuthToken, Z as acceptTerms } from '../index-pj8JVg5X.js';
4
- import { a as getInput } from '../index-B27WJDxn.js';
3
+ import { W as WEB_URL, V as BaseCommand, o as API_URL, $ as setAuthToken, a0 as acceptTerms } from '../index-CO_ssVFA.js';
4
+ import { a as getInput } from '../index-CYjZ26If.js';
5
5
  import 'node:fs';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { V as BaseCommand, j as isCWDGodotGame } from '../index-pj8JVg5X.js';
3
+ import { V as BaseCommand, j as isCWDGodotGame } from '../index-CO_ssVFA.js';
4
4
  import 'ink-spinner';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
@@ -29,15 +29,15 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import { N as NextSteps } from '../NextSteps-DbJHmscQ.js';
31
31
  import 'qrcode';
32
- import '../index-DfUg5j06.js';
33
- import { C as Command } from '../Command-BDIkuv2g.js';
32
+ import '../index-CA6-uLMn.js';
33
+ import { C as Command } from '../Command-VWMnGslo.js';
34
34
  import '@expo/apple-utils/build/index.js';
35
35
  import 'isomorphic-git';
36
36
  import 'deepmerge';
37
37
  import 'ini';
38
38
  import '../Title-BCQtayg6.js';
39
- import '../index-B27WJDxn.js';
40
- import '../useAndroidServiceAccountTestResult-D4e5AKAZ.js';
39
+ import '../index-CYjZ26If.js';
40
+ import '../useAndroidServiceAccountTestResult-DueKynFy.js';
41
41
 
42
42
  class Status extends BaseCommand {
43
43
  static args = {};
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import axios from 'axios';
3
- import { o as API_URL, p as getAuthedHeaders } from './index-pj8JVg5X.js';
3
+ import { o as API_URL, p as getAuthedHeaders } from './index-CO_ssVFA.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 { o as API_URL, p as getAuthedHeaders } from './index-pj8JVg5X.js';
3
+ import { o as API_URL, p as getAuthedHeaders } from './index-CO_ssVFA.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`;
@@ -11,17 +11,17 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import axios from 'axios';
13
13
  import 'isomorphic-git';
14
- import { p as getAuthedHeaders, o as API_URL, a1 as castObjectDates, P as Platform, C as CredentialsType, Q as getGoogleStatus } from './index-pj8JVg5X.js';
14
+ import { p as getAuthedHeaders, o as API_URL, a4 as castObjectDates, P as Platform, C as CredentialsType, Q as getGoogleStatus } from './index-CO_ssVFA.js';
15
15
  import '@oclif/core';
16
16
  import { useQuery, useQueryClient } from '@tanstack/react-query';
17
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-D4e5AKAZ.js';
17
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
18
18
  import 'fast-glob';
19
19
  import 'uuid';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
- import { u as useWebSocket } from './useWebSocket-CRV7V69Q.js';
24
- import { u as useProjectCredentials } from './useProjectCredentials-BjvdJdQg.js';
23
+ import { u as useWebSocket } from './useWebSocket-CIxkPaYi.js';
24
+ import { u as useProjectCredentials } from './useProjectCredentials-jQYGcDhT.js';
25
25
  import 'crypto-js';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
@@ -31,7 +31,7 @@ import 'marked';
31
31
  import 'marked-terminal';
32
32
  import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
33
33
  import 'qrcode';
34
- import { G as GameContext } from './index-DfUg5j06.js';
34
+ import { G as GameContext } from './index-CA6-uLMn.js';
35
35
 
36
36
  async function fetchStatus({ projectId }) {
37
37
  try {
@@ -12,7 +12,7 @@ import 'readline-sync';
12
12
  import 'luxon';
13
13
  import 'axios';
14
14
  import 'isomorphic-git';
15
- import { Q as getGoogleStatus, a2 as getShortAuthRequiredUrl, a3 as getGoogleAuthUrl, W as WEB_URL } from './index-pj8JVg5X.js';
15
+ import { Q as getGoogleStatus, a5 as getShortAuthRequiredUrl, a6 as getGoogleAuthUrl, W as WEB_URL } from './index-CO_ssVFA.js';
16
16
  import '@oclif/core';
17
17
  import { useQuery } from '@tanstack/react-query';
18
18
  import 'crypto-js';
@@ -20,10 +20,10 @@ import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
23
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-D4e5AKAZ.js';
24
- import { u as useWebSocket } from './useWebSocket-CRV7V69Q.js';
23
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
24
+ import { u as useWebSocket } from './useWebSocket-CIxkPaYi.js';
25
25
  import 'fullscreen-ink';
26
- import { G as GameContext, e as useSafeInput, M as Markdown } from './index-DfUg5j06.js';
26
+ import { G as GameContext, e as useSafeInput, M as Markdown } from './index-CA6-uLMn.js';
27
27
  import 'string-length';
28
28
  import 'strip-ansi';
29
29
  import '@inkjs/ui';
@@ -3,11 +3,11 @@ import { useStdin, useInput, Text, Box } from 'ink';
3
3
  import Spinner from 'ink-spinner';
4
4
  import open from 'open';
5
5
  import React, { useState, useEffect, useContext, useRef } from 'react';
6
- import { p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, P as Platform, a6 as getShortDateTime, J as JobStatus, a7 as getShortTimeDelta, z as getJob, E as getProject, a2 as getShortAuthRequiredUrl, K as queryClient, a8 as BuildType, W as WEB_URL } from './index-pj8JVg5X.js';
7
- import { h as getPlatformName, g as getShortUUID, s as scriptDir } from './index-B27WJDxn.js';
6
+ import { P as Platform, a9 as getShortDateTime, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, J as JobStatus, aa as getShortTimeDelta, z as getJob, E as getProject, a5 as getShortAuthRequiredUrl, K as queryClient, ab as BuildType, W as WEB_URL } from './index-CO_ssVFA.js';
7
+ import { h as getPlatformName, g as getShortUUID, s as scriptDir } from './index-CYjZ26If.js';
8
8
  import { useQuery } from '@tanstack/react-query';
9
9
  import axios from 'axios';
10
- import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-D4e5AKAZ.js';
10
+ import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-DueKynFy.js';
11
11
  import 'luxon';
12
12
  import fs__default from 'node:fs';
13
13
  import 'fast-glob';
@@ -61,6 +61,7 @@ const DEFAULT_LOCALE = "en-US";
61
61
  function castObjectDates(apiObject, keys = ["createdAt", "updatedAt"]) {
62
62
  if (!apiObject) return apiObject;
63
63
  const datesOnly = Object.keys(apiObject).filter((k) => keys.includes(k)).reduce((a, c) => {
64
+ if (!apiObject[c]) return a;
64
65
  a[c] = DateTime.fromISO(apiObject[c]);
65
66
  return a;
66
67
  }, {});
@@ -283,6 +284,28 @@ async function downloadBuildById(projectId, buildId, fileName) {
283
284
  writer.on("error", reject);
284
285
  });
285
286
  }
287
+ const APIKEYS_DATE_FIELDS = ["createdAt", "updatedAt", "expiresAt", "lastUsedAt", "revokedAt"];
288
+ async function getAPIKeys(params) {
289
+ const headers = getAuthedHeaders();
290
+ const opt = { headers, params };
291
+ const { data: rawData } = await axios.get(`${API_URL}/me/keys`, opt);
292
+ const data = castArrayObjectDates(rawData.data, APIKEYS_DATE_FIELDS);
293
+ return {
294
+ data,
295
+ pageCount: rawData.pageCount
296
+ };
297
+ }
298
+ async function createAPIKey(createProps) {
299
+ const headers = getAuthedHeaders();
300
+ const opt = { headers };
301
+ const { data } = await axios.post(`${API_URL}/me/keys`, createProps, opt);
302
+ return castObjectDates(data, APIKEYS_DATE_FIELDS);
303
+ }
304
+ async function revokeAPIKey(apiKeyId) {
305
+ const headers = getAuthedHeaders();
306
+ const opt = { headers };
307
+ await axios.delete(`${API_URL}/me/keys/${apiKeyId}`, opt);
308
+ }
286
309
 
287
310
  const defaultExport = expo.default;
288
311
  const {
@@ -746,4 +769,4 @@ const DetailsFlags = {
746
769
  semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" })
747
770
  };
748
771
 
749
- export { getNewUploadTicket as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, getProject as E, getProjectPlatformProgress as F, GODOT_CAPABILITIES as G, downloadBuildById as H, castArrayObjectDates as I, JobStatus as J, queryClient as K, JobStage as L, LogLevel as M, WS_URL as N, getAuthToken as O, Platform as P, getGoogleStatus as Q, getGodotAndroidPackageName as R, inviteServiceAccount as S, disconnectGoogle as T, UserRole as U, BaseCommand as V, WEB_URL as W, getSingleUseUrl as X, setAuthToken as Y, acceptTerms as Z, Auth as _, ApiKeyType as a, startJobsFromUpload as a0, castObjectDates as a1, getShortAuthRequiredUrl as a2, getGoogleAuthUrl as a3, castJobDates as a4, getShortTime as a5, getShortDateTime as a6, getShortTimeDelta as a7, BuildType as a8, updateProject as a9, getShortDate as b, BaseGameCommand as c, getGodotAppleBundleIdentifier as d, BundleId as e, App as f, getProjects as g, CapabilityTypeOption as h, BetaGroup as i, isCWDGodotGame as j, Certificate as k, CertificateType as l, Profile as m, ProfileType as n, API_URL as o, getAuthedHeaders as p, getGodotProjectCapabilities as q, CapabilityType as r, GameEngine as s, getGodotVersion as t, createProject as u, DEFAULT_SHIPPED_FILES_GLOBS as v, DEFAULT_IGNORED_FILES_GLOBS as w, getGodotProjectName as x, getProjectJobs as y, getJob as z };
772
+ export { setAuthToken as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, getProject as E, getProjectPlatformProgress as F, GODOT_CAPABILITIES as G, downloadBuildById as H, castArrayObjectDates as I, JobStatus as J, queryClient as K, JobStage as L, LogLevel as M, WS_URL as N, getAuthToken as O, Platform as P, getGoogleStatus as Q, getGodotAndroidPackageName as R, inviteServiceAccount as S, disconnectGoogle as T, UserRole as U, BaseCommand as V, WEB_URL as W, getAPIKeys as X, createAPIKey as Y, revokeAPIKey as Z, getSingleUseUrl as _, ApiKeyType as a, acceptTerms as a0, Auth as a1, getNewUploadTicket as a2, startJobsFromUpload as a3, castObjectDates as a4, getShortAuthRequiredUrl as a5, getGoogleAuthUrl as a6, castJobDates as a7, getShortTime as a8, getShortDateTime as a9, getShortTimeDelta as aa, BuildType as ab, updateProject as ac, getShortDate as b, BaseGameCommand as c, getGodotAppleBundleIdentifier as d, BundleId as e, App as f, getProjects as g, CapabilityTypeOption as h, BetaGroup as i, isCWDGodotGame as j, Certificate as k, CertificateType as l, Profile as m, ProfileType as n, API_URL as o, getAuthedHeaders as p, getGodotProjectCapabilities as q, CapabilityType as r, GameEngine as s, getGodotVersion as t, createProject as u, DEFAULT_SHIPPED_FILES_GLOBS as v, DEFAULT_IGNORED_FILES_GLOBS as w, getGodotProjectName as x, getProjectJobs as y, getJob as z };
@@ -4,7 +4,7 @@ import path from 'node:path';
4
4
  import { promises } from 'node:readline';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import readlineSync from 'readline-sync';
7
- import { L as JobStage, P as Platform, M as LogLevel, J as JobStatus } from './index-pj8JVg5X.js';
7
+ import { L as JobStage, P as Platform, M as LogLevel, J as JobStatus } from './index-CO_ssVFA.js';
8
8
  import 'luxon';
9
9
  import 'axios';
10
10
  import 'isomorphic-git';
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { o as API_URL, p as getAuthedHeaders, I as castArrayObjectDates } from './index-pj8JVg5X.js';
2
+ import { o as API_URL, p as getAuthedHeaders, I as castArrayObjectDates } from './index-CO_ssVFA.js';
3
3
  import 'node:fs';
4
4
 
5
5
  async function getUserCredentials(pageSize = 100) {
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { o as API_URL, p as getAuthedHeaders } from './index-pj8JVg5X.js';
2
+ import { o as API_URL, p as getAuthedHeaders } from './index-CO_ssVFA.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,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import axios from 'axios';
3
- import { o as API_URL, p as getAuthedHeaders } from './index-pj8JVg5X.js';
3
+ import { o as API_URL, p as getAuthedHeaders } from './index-CO_ssVFA.js';
4
4
 
5
5
  const cacheKeys = {
6
6
  androidKeyTestResult: (props) => ["androidKeyTestResult", ...Object.values(props)],
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { f as App } from './index-pj8JVg5X.js';
2
+ import { f as App } from './index-CO_ssVFA.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 { e as BundleId, q as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, r as CapabilityType } from './index-pj8JVg5X.js';
2
+ import { e as BundleId, q as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, r as CapabilityType } from './index-CO_ssVFA.js';
3
3
 
4
4
  async function getBundleIdCapabilities(bundleId) {
5
5
  const current = await bundleId.getBundleIdCapabilitiesAsync();
@@ -1,8 +1,8 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import axios from 'axios';
3
- import { b as getShortDate, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates } from './index-pj8JVg5X.js';
4
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-D4e5AKAZ.js';
5
- import { g as getShortUUID } from './index-B27WJDxn.js';
3
+ import { b as getShortDate, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates } from './index-CO_ssVFA.js';
4
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
5
+ import { g as getShortUUID } from './index-CYjZ26If.js';
6
6
 
7
7
  async function queryProjectCredentials({
8
8
  projectId,
@@ -1,6 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { io } from 'socket.io-client';
3
- import { N as WS_URL, O as getAuthToken } from './index-pj8JVg5X.js';
3
+ import { N as WS_URL, O as getAuthToken } from './index-CO_ssVFA.js';
4
4
 
5
5
  function useWebSocket(listeners = []) {
6
6
  const log = () => {
@@ -0,0 +1,27 @@
1
+ # Command: `apiKey create`
2
+
3
+ ## Description
4
+
5
+ Create a new API key for your ShipThis account.
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis apiKey create [-n <value>] [-d <value>] [-q]
12
+
13
+ FLAGS
14
+ -d, --durationDays=<value> [default: 365] duration of the API key in days
15
+ -n, --name=<value> name to apply to the API key (if not provided, a random name will be generated)
16
+ -q, --quiet Outputs just the secret value
17
+
18
+ DESCRIPTION
19
+ Create a new API key for your ShipThis account.
20
+
21
+ EXAMPLES
22
+ $ shipthis apiKey create --durationDays 30
23
+
24
+ $ shipthis apiKey create --name ci-key --durationDays 90
25
+
26
+ $ shipthis apiKey create --name ci-key-headless --durationDays 365 --quiet
27
+ ```
@@ -0,0 +1,30 @@
1
+ # Command: `apiKey list`
2
+
3
+ ## Description
4
+
5
+ Displays a list of your ShipThis API keys.
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis apiKey list [-r asc|desc] [-o createdAt|updatedAt|name] [-p <value>] [-s <value>]
12
+
13
+ FLAGS
14
+ -o, --orderBy=<option> [default: createdAt] The field to order by
15
+ <options: createdAt|updatedAt|name>
16
+ -p, --pageNumber=<value> The page number to show (starts at 0)
17
+ -r, --order=<option> [default: desc] The order to sort by
18
+ <options: asc|desc>
19
+ -s, --pageSize=<value> [default: 10] The number of items to show per page
20
+
21
+ DESCRIPTION
22
+ Displays a list of your ShipThis API keys.
23
+
24
+ EXAMPLES
25
+ $ shipthis apiKey list
26
+
27
+ $ shipthis apiKey list --pageNumber 1
28
+
29
+ $ shipthis apiKey list --orderBy createdAt --order asc
30
+ ```
@@ -0,0 +1,26 @@
1
+ # Command: `apiKey revoke`
2
+
3
+ ## Description
4
+
5
+ Revokes a specific ShipThis API key.
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis apiKey revoke APIKEYID [-q]
12
+
13
+ ARGUMENTS
14
+ APIKEYID The ID of the API key to revoke
15
+
16
+ FLAGS
17
+ -q, --quiet Suppress output except for errors
18
+
19
+ DESCRIPTION
20
+ Revokes a specific ShipThis API key.
21
+
22
+ EXAMPLES
23
+ $ shipthis apiKey revoke abcd1234
24
+
25
+ $ shipthis apiKey revoke abcd1234 --quiet
26
+ ```
package/docs/apiKey.md ADDED
@@ -0,0 +1,93 @@
1
+ # Topic: `apiKey`
2
+
3
+ Commands related to ShipThis API Keys
4
+
5
+
6
+ ## Commands
7
+
8
+
9
+ ### `apiKey create`
10
+
11
+ #### Description
12
+
13
+ Create a new API key for your ShipThis account.
14
+
15
+ #### Help Output
16
+
17
+ ```help
18
+ USAGE
19
+ $ shipthis apiKey create [-n <value>] [-d <value>] [-q]
20
+
21
+ FLAGS
22
+ -d, --durationDays=<value> [default: 365] duration of the API key in days
23
+ -n, --name=<value> name to apply to the API key (if not provided, a random name will be generated)
24
+ -q, --quiet Outputs just the secret value
25
+
26
+ DESCRIPTION
27
+ Create a new API key for your ShipThis account.
28
+
29
+ EXAMPLES
30
+ $ shipthis apiKey create --durationDays 30
31
+
32
+ $ shipthis apiKey create --name ci-key --durationDays 90
33
+
34
+ $ shipthis apiKey create --name ci-key-headless --durationDays 365 --quiet
35
+ ```
36
+
37
+ ### `apiKey list`
38
+
39
+ #### Description
40
+
41
+ Displays a list of your ShipThis API keys.
42
+
43
+ #### Help Output
44
+
45
+ ```help
46
+ USAGE
47
+ $ shipthis apiKey list [-r asc|desc] [-o createdAt|updatedAt|name] [-p <value>] [-s <value>]
48
+
49
+ FLAGS
50
+ -o, --orderBy=<option> [default: createdAt] The field to order by
51
+ <options: createdAt|updatedAt|name>
52
+ -p, --pageNumber=<value> The page number to show (starts at 0)
53
+ -r, --order=<option> [default: desc] The order to sort by
54
+ <options: asc|desc>
55
+ -s, --pageSize=<value> [default: 10] The number of items to show per page
56
+
57
+ DESCRIPTION
58
+ Displays a list of your ShipThis API keys.
59
+
60
+ EXAMPLES
61
+ $ shipthis apiKey list
62
+
63
+ $ shipthis apiKey list --pageNumber 1
64
+
65
+ $ shipthis apiKey list --orderBy createdAt --order asc
66
+ ```
67
+
68
+ ### `apiKey revoke`
69
+
70
+ #### Description
71
+
72
+ Revokes a specific ShipThis API key.
73
+
74
+ #### Help Output
75
+
76
+ ```help
77
+ USAGE
78
+ $ shipthis apiKey revoke APIKEYID [-q]
79
+
80
+ ARGUMENTS
81
+ APIKEYID The ID of the API key to revoke
82
+
83
+ FLAGS
84
+ -q, --quiet Suppress output except for errors
85
+
86
+ DESCRIPTION
87
+ Revokes a specific ShipThis API key.
88
+
89
+ EXAMPLES
90
+ $ shipthis apiKey revoke abcd1234
91
+
92
+ $ shipthis apiKey revoke abcd1234 --quiet
93
+ ```