shipthis 0.1.28 → 0.1.29

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 (75) hide show
  1. package/dist/{AppleBundleIdDetails-CY13Z5I8.js → AppleBundleIdDetails-Fp5COwTa.js} +4 -4
  2. package/dist/{Command-CeGf4miL.js → Command-1p5alCz3.js} +2 -2
  3. package/dist/{CommandGame-IYChs1fH.js → CommandGame-Z4eUQBjn.js} +2 -2
  4. package/dist/{Create-C2rBb6bV.js → Create-1xAdntNl.js} +3 -3
  5. package/dist/{Import-BPZCr3jP.js → Import-CzC-M4ln.js} +4 -4
  6. package/dist/{JobStatusTable-lbvEKRYC.js → JobLogTail-CZxoMSd5.js} +84 -71
  7. package/dist/{JobProgress-DMrbHnBR.js → JobProgress-BjNgtIjm.js} +8 -20
  8. package/dist/JobStatusTable-BB-PWlwj.js +66 -0
  9. package/dist/{ProjectCredentialsTable-BfGWOTBf.js → ProjectCredentialsTable-DyZep993.js} +2 -2
  10. package/dist/{UserCredentialsTable-DtZ3eqnN.js → UserCredentialsTable-BraKyDWT.js} +3 -3
  11. package/dist/{baseAppleCommand-DOUAN8L8.js → baseAppleCommand-BHRIBtTj.js} +1 -1
  12. package/dist/{baseGameAndroidCommand-C_rLCJ2y.js → baseGameAndroidCommand-SrDRbhAG.js} +2 -2
  13. package/dist/commands/apple/apiKey/create.js +8 -8
  14. package/dist/commands/apple/apiKey/export.js +7 -7
  15. package/dist/commands/apple/apiKey/import.js +7 -7
  16. package/dist/commands/apple/apiKey/status.js +6 -6
  17. package/dist/commands/apple/certificate/create.js +8 -8
  18. package/dist/commands/apple/certificate/export.js +7 -7
  19. package/dist/commands/apple/certificate/import.js +7 -7
  20. package/dist/commands/apple/certificate/status.js +6 -6
  21. package/dist/commands/apple/login.js +2 -2
  22. package/dist/commands/apple/status.js +5 -5
  23. package/dist/commands/dashboard.js +1 -1
  24. package/dist/commands/game/android/apiKey/connect.js +9 -9
  25. package/dist/commands/game/android/apiKey/create.js +11 -11
  26. package/dist/commands/game/android/apiKey/export.js +8 -8
  27. package/dist/commands/game/android/apiKey/import.js +8 -8
  28. package/dist/commands/game/android/apiKey/invite.js +4 -4
  29. package/dist/commands/game/android/apiKey/status.js +8 -8
  30. package/dist/commands/game/android/keyStore/create.js +9 -9
  31. package/dist/commands/game/android/keyStore/export.js +7 -7
  32. package/dist/commands/game/android/keyStore/import.js +10 -10
  33. package/dist/commands/game/android/keyStore/status.js +7 -7
  34. package/dist/commands/game/android/status.js +5 -5
  35. package/dist/commands/game/build/download.js +5 -5
  36. package/dist/commands/game/build/list.js +6 -6
  37. package/dist/commands/game/create.js +2 -2
  38. package/dist/commands/game/details.js +5 -5
  39. package/dist/commands/game/export.js +1 -1
  40. package/dist/commands/game/ios/app/addTester.js +6 -6
  41. package/dist/commands/game/ios/app/create.js +5 -5
  42. package/dist/commands/game/ios/app/status.js +8 -8
  43. package/dist/commands/game/ios/app/sync.js +6 -6
  44. package/dist/commands/game/ios/profile/create.js +8 -8
  45. package/dist/commands/game/ios/profile/export.js +7 -7
  46. package/dist/commands/game/ios/profile/import.js +7 -7
  47. package/dist/commands/game/ios/profile/status.js +7 -7
  48. package/dist/commands/game/ios/status.js +8 -8
  49. package/dist/commands/game/ios/wizard.js +5 -5
  50. package/dist/commands/game/job/list.js +5 -5
  51. package/dist/commands/game/job/status.js +8 -8
  52. package/dist/commands/game/list.js +5 -5
  53. package/dist/commands/game/ship.js +40 -12
  54. package/dist/commands/game/status.js +5 -5
  55. package/dist/commands/game/wizard.js +34 -16
  56. package/dist/commands/internal/fastlane.js +1 -1
  57. package/dist/commands/internal/readme.js +1 -1
  58. package/dist/commands/login.js +2 -2
  59. package/dist/commands/status.js +5 -5
  60. package/dist/{export-5Q2q94Hl.js → export-BKn02-NH.js} +1 -1
  61. package/dist/{import-C7KDmp4k.js → import-CRMaNBVF.js} +1 -1
  62. package/dist/{index-B7aHFyRH.js → index--EbYyBAZ.js} +5 -5
  63. package/dist/{index-CXjz-cpD.js → index-35Eswf6F.js} +2 -2
  64. package/dist/{index-CSWTmILs.js → index-BTAL7EB_.js} +4 -4
  65. package/dist/{index-CvO4XDD6.js → index-DxzXU9Hd.js} +1 -1
  66. package/dist/{index-BvfjfOt0.js → index-OZi8bvu8.js} +4 -4
  67. package/dist/{index-DjoMdgss.js → index-u1aj1OQW.js} +1 -1
  68. package/dist/{upload-CKAdc33_.js → upload-Bw0zrS4M.js} +1 -1
  69. package/dist/{useAndroidServiceAccountTestResult-B6F8iB1C.js → useAndroidServiceAccountTestResult-CJLIEYmA.js} +1 -1
  70. package/dist/{useAppleApp-DcKBxjaR.js → useAppleApp-cnb8gX0x.js} +1 -1
  71. package/dist/{useAppleBundleId-DeRlEmrW.js → useAppleBundleId-B0Etav8g.js} +1 -1
  72. package/dist/{useProjectCredentials-CbhW7DPY.js → useProjectCredentials-DX3e_PPc.js} +3 -3
  73. package/dist/{useWebSocket-C0T22ckI.js → useWebSocket-BOCa8v6o.js} +1 -1
  74. package/package.json +1 -1
  75. package/dist/useJobWatching-CIPv7G9D.js +0 -45
@@ -2,8 +2,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import 'react';
5
- import '../../index-CSWTmILs.js';
6
- import { B as BaseAuthenticatedCommand, I as getProject, P as Platform, k as getProjectPlatformProgress, b as getShortDate } from '../../index-CvO4XDD6.js';
5
+ import '../../index-BTAL7EB_.js';
6
+ import { B as BaseAuthenticatedCommand, F as getProject, P as Platform, k as getProjectPlatformProgress, b as getShortDate } from '../../index-DxzXU9Hd.js';
7
7
  import 'ink-spinner';
8
8
  import '@inkjs/ui';
9
9
  import 'axios';
@@ -11,7 +11,7 @@ import '@tanstack/react-query';
11
11
  import 'fs';
12
12
  import 'uuid';
13
13
  import 'yazl';
14
- import { g as getShortUUID, m as makeHumanReadable } from '../../index-CXjz-cpD.js';
14
+ import { g as getShortUUID, m as makeHumanReadable } from '../../index-35Eswf6F.js';
15
15
  import 'open';
16
16
  import 'marked';
17
17
  import 'marked-terminal';
@@ -23,9 +23,9 @@ import 'string-length';
23
23
  import 'strip-ansi';
24
24
  import 'luxon';
25
25
  import 'fast-glob';
26
- import { C as Command } from '../../Command-CeGf4miL.js';
26
+ import { C as Command } from '../../Command-1p5alCz3.js';
27
27
  import 'socket.io-client';
28
- import '../../useAndroidServiceAccountTestResult-B6F8iB1C.js';
28
+ import '../../useAndroidServiceAccountTestResult-CJLIEYmA.js';
29
29
  import '@expo/apple-utils/build/index.js';
30
30
  import 'crypto-js';
31
31
  import 'crypto';
@@ -1,9 +1,9 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { Args } from '@oclif/core';
3
3
  import { Text, Box, useInput, useFocus, measureElement, render } from 'ink';
4
- import { p as getAuthedHeaders, q as API_URL, L as castArrayObjectDates, M as queryClient, a8 as updateProject, u as getGodotVersion, t as GameEngine, v as createProject, w as DEFAULT_IGNORED_FILES_GLOBS, x as DEFAULT_SHIPPED_FILES_GLOBS, P as Platform, J as JobStatus, W as WEB_URL, I as getProject, C as CredentialsType, T as getGoogleStatus, B as BaseAuthenticatedCommand, j as isCWDGodotGame } from '../../index-CvO4XDD6.js';
4
+ import { p as getAuthedHeaders, q as API_URL, I as castArrayObjectDates, K as queryClient, a8 as updateProject, u as getGodotVersion, t as GameEngine, v as createProject, w as DEFAULT_IGNORED_FILES_GLOBS, x as DEFAULT_SHIPPED_FILES_GLOBS, P as Platform, J as JobStatus, W as WEB_URL, F as getProject, C as CredentialsType, R as getGoogleStatus, B as BaseAuthenticatedCommand, j as isCWDGodotGame } from '../../index-DxzXU9Hd.js';
5
5
  import React, { useState, useContext, useEffect, useRef, useReducer } from 'react';
6
- import { e as CommandContext, b as GameContext, M as Markdown, c as useBuilds, q as queryBuilds, G as GameProvider, f as CreateGooglePlayGame } from '../../index-CSWTmILs.js';
6
+ import { d as CommandContext, b as GameContext, M as Markdown, u as useBuilds, q as queryBuilds, G as GameProvider, f as CreateGooglePlayGame } from '../../index-BTAL7EB_.js';
7
7
  import Spinner from 'ink-spinner';
8
8
  import { Alert, TextInput } from '@inkjs/ui';
9
9
  import axios from 'axios';
@@ -28,26 +28,26 @@ import 'path';
28
28
  import 'qrcode';
29
29
  import 'string-length';
30
30
  import 'strip-ansi';
31
- import { C as CreateKeystore } from '../../Create-C2rBb6bV.js';
32
- import { I as ImportKeystore } from '../../Import-BPZCr3jP.js';
33
- import { C as ConnectGoogle } from '../../index-BvfjfOt0.js';
34
- import { C as CreateServiceAccountKey } from '../../index-B7aHFyRH.js';
35
- import { c as cacheKeys, f as fetchKeyTestResult, K as KeyTestStatus, a as KeyTestError } from '../../useAndroidServiceAccountTestResult-B6F8iB1C.js';
36
- import { u as useShip, J as JobProgress } from '../../JobProgress-DMrbHnBR.js';
37
- import { a as getProjectCredentials } from '../../index-DjoMdgss.js';
31
+ import { C as CreateKeystore } from '../../Create-1xAdntNl.js';
32
+ import { I as ImportKeystore } from '../../Import-CzC-M4ln.js';
33
+ import { C as ConnectGoogle } from '../../index-OZi8bvu8.js';
34
+ import { C as CreateServiceAccountKey } from '../../index--EbYyBAZ.js';
35
+ import { g as getShortUUID } from '../../index-35Eswf6F.js';
36
+ import { u as useShip, J as JobProgress } from '../../JobProgress-BjNgtIjm.js';
37
+ import { c as cacheKeys, f as fetchKeyTestResult, K as KeyTestStatus, a as KeyTestError } from '../../useAndroidServiceAccountTestResult-CJLIEYmA.js';
38
+ import { J as JobLogTail } from '../../JobLogTail-CZxoMSd5.js';
39
+ import { a as getProjectCredentials } from '../../index-u1aj1OQW.js';
38
40
  import { T as Title } from '../../Title-BCQtayg6.js';
39
- import { C as Command } from '../../Command-CeGf4miL.js';
41
+ import { C as Command } from '../../Command-1p5alCz3.js';
40
42
  import '@expo/apple-utils/build/index.js';
41
43
  import 'ini';
42
44
  import 'deepmerge';
43
- import '../../index-CXjz-cpD.js';
44
45
  import '../../RunWithSpinner-BVXNWGD3.js';
45
- import '../../import-C7KDmp4k.js';
46
- import '../../useWebSocket-C0T22ckI.js';
47
- import '../../useProjectCredentials-CbhW7DPY.js';
46
+ import '../../import-CRMaNBVF.js';
47
+ import '../../useWebSocket-BOCa8v6o.js';
48
+ import '../../useProjectCredentials-DX3e_PPc.js';
48
49
  import '../../ProgressSpinner-6pw1T8Iw.js';
49
50
  import '../../git-DREGq-jc.js';
50
- import '../../useJobWatching-CIPv7G9D.js';
51
51
 
52
52
  async function queryJobs({ projectId, ...pageAndSortParams }) {
53
53
  try {
@@ -344,6 +344,7 @@ const CreateForGame = ({ onComplete, onError, gameId, ...boxProps }) => {
344
344
  const prevHasBuild = useRef(false);
345
345
  const shipMutation = useShip();
346
346
  const [shipLog, setShipLog] = useState("");
347
+ const [failedJob, setFailedJob] = useState(null);
347
348
  useEffect(() => {
348
349
  if (isLoadingBuilds || isLoadingJobs) return;
349
350
  if (!buildData) return;
@@ -371,7 +372,24 @@ const CreateForGame = ({ onComplete, onError, gameId, ...boxProps }) => {
371
372
  (isLoadingBuilds || isLoadingJobs || shipMutation.isPending) && /* @__PURE__ */ jsx(Spinner, { type: "dots" })
372
373
  ] }),
373
374
  androidJob == null && /* @__PURE__ */ jsx(Text, { children: shipLog }),
374
- androidJob && /* @__PURE__ */ jsx(JobProgress, { job: androidJob, onComplete })
375
+ androidJob && /* @__PURE__ */ jsx(JobProgress, { job: androidJob, onComplete, onFailure: (j) => {
376
+ setFailedJob(j);
377
+ setTimeout(() => {
378
+ onError(new Error(`Job ${j.id} failed`));
379
+ }, 1e3);
380
+ } }),
381
+ failedJob && /* @__PURE__ */ jsxs(Fragment, { children: [
382
+ /* @__PURE__ */ jsx(
383
+ Markdown,
384
+ {
385
+ filename: "ship-failure.md",
386
+ templateVars: {
387
+ jobDashboardUrl: `${WEB_URL}games/${getShortUUID(gameId)}/job/${getShortUUID(failedJob.id)}`
388
+ }
389
+ }
390
+ ),
391
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(JobLogTail, { jobId: failedJob.id, projectId: gameId, isWatching: false, length: 10 }) })
392
+ ] })
375
393
  ] }) });
376
394
  };
377
395
 
@@ -1,7 +1,7 @@
1
1
  import fs__default, { promises } from 'fs';
2
2
  import path from 'path';
3
3
  import { Args, Flags } from '@oclif/core';
4
- import { Y as BaseCommand } from '../../index-CvO4XDD6.js';
4
+ import { V as BaseCommand } from '../../index-DxzXU9Hd.js';
5
5
  import '@expo/apple-utils/build/index.js';
6
6
  import 'axios';
7
7
  import 'crypto-js';
@@ -1,7 +1,7 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import fs__default from 'fs';
3
3
  import path from 'path';
4
- import { Y as BaseCommand } from '../../index-CvO4XDD6.js';
4
+ import { V as BaseCommand } from '../../index-DxzXU9Hd.js';
5
5
  import CustomHelp from '../../utils/help.js';
6
6
  import '@expo/apple-utils/build/index.js';
7
7
  import 'axios';
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import { Flags } from '@oclif/core';
3
- import { W as WEB_URL, Y as BaseCommand, q as API_URL, _ as setAuthToken, $ as acceptTerms } from '../index-CvO4XDD6.js';
4
- import { a as getInput } from '../index-CXjz-cpD.js';
3
+ import { W as WEB_URL, V as BaseCommand, q as API_URL, Y as setAuthToken, Z as acceptTerms } from '../index-DxzXU9Hd.js';
4
+ import { a as getInput } from '../index-35Eswf6F.js';
5
5
  import 'path';
6
6
  import 'fs';
7
7
  import '@expo/apple-utils/build/index.js';
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { Y as BaseCommand, j as isCWDGodotGame } from '../index-CvO4XDD6.js';
3
+ import { V as BaseCommand, j as isCWDGodotGame } from '../index-DxzXU9Hd.js';
4
4
  import 'react';
5
- import '../index-CSWTmILs.js';
5
+ import '../index-BTAL7EB_.js';
6
6
  import 'ink-spinner';
7
7
  import 'axios';
8
8
  import 'crypto-js';
@@ -30,13 +30,13 @@ import 'qrcode';
30
30
  import { S as StatusTable } from '../StatusTable-Dm5St4g-.js';
31
31
  import 'string-length';
32
32
  import 'strip-ansi';
33
- import { C as Command } from '../Command-CeGf4miL.js';
33
+ import { C as Command } from '../Command-1p5alCz3.js';
34
34
  import '@expo/apple-utils/build/index.js';
35
35
  import 'isomorphic-git';
36
36
  import 'ini';
37
37
  import 'deepmerge';
38
- import '../index-CXjz-cpD.js';
39
- import '../useAndroidServiceAccountTestResult-B6F8iB1C.js';
38
+ import '../index-35Eswf6F.js';
39
+ import '../useAndroidServiceAccountTestResult-CJLIEYmA.js';
40
40
  import '../Title-BCQtayg6.js';
41
41
 
42
42
  class Status extends BaseCommand {
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import * as fs from 'fs';
3
- import { p as getAuthedHeaders, q as API_URL } from './index-CvO4XDD6.js';
3
+ import { p as getAuthedHeaders, q as API_URL } from './index-DxzXU9Hd.js';
4
4
 
5
5
  async function exportCredential({ zipPath, credentialId, projectId }) {
6
6
  const headers = getAuthedHeaders();
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import { promises } from 'fs';
3
- import { p as getAuthedHeaders, q as API_URL } from './index-CvO4XDD6.js';
3
+ import { p as getAuthedHeaders, q as API_URL } from './index-DxzXU9Hd.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`;
@@ -2,8 +2,8 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { Box, Text } from 'ink';
3
3
  import { useState, useRef, useEffect, useContext } from 'react';
4
4
  import Spinner from 'ink-spinner';
5
- import { b as GameContext } from './index-CSWTmILs.js';
6
- import { p as getAuthedHeaders, q as API_URL, H as castObjectDates, P as Platform, C as CredentialsType, T as getGoogleStatus } from './index-CvO4XDD6.js';
5
+ import { b as GameContext } from './index-BTAL7EB_.js';
6
+ import { p as getAuthedHeaders, q as API_URL, a1 as castObjectDates, P as Platform, C as CredentialsType, R as getGoogleStatus } from './index-DxzXU9Hd.js';
7
7
  import axios from 'axios';
8
8
  import 'crypto-js';
9
9
  import 'uuid';
@@ -19,11 +19,11 @@ import 'node:path';
19
19
  import 'node:url';
20
20
  import 'isomorphic-git';
21
21
  import '@oclif/core';
22
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-B6F8iB1C.js';
22
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CJLIEYmA.js';
23
23
  import 'fast-glob';
24
24
  import 'socket.io-client';
25
- import { u as useWebSocket } from './useWebSocket-C0T22ckI.js';
26
- import { u as useProjectCredentials } from './useProjectCredentials-CbhW7DPY.js';
25
+ import { u as useWebSocket } from './useWebSocket-BOCa8v6o.js';
26
+ import { u as useProjectCredentials } from './useProjectCredentials-DX3e_PPc.js';
27
27
  import 'open';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
@@ -4,7 +4,7 @@ import readlineSync from 'readline-sync';
4
4
  import { promises } from 'node:readline';
5
5
  import path from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
- import { N as JobStage, P as Platform, O as LogLevel, J as JobStatus } from './index-CvO4XDD6.js';
7
+ import { L as JobStage, P as Platform, M as LogLevel, J as JobStatus } from './index-DxzXU9Hd.js';
8
8
  import 'luxon';
9
9
  import 'axios';
10
10
  import 'isomorphic-git';
@@ -133,4 +133,4 @@ function scriptDir(importMeta) {
133
133
  return dirname;
134
134
  }
135
135
 
136
- export { getInput as a, generatePackageName as b, getJobStatusColor as c, getMaskedInput as d, getFileHash as e, getPlatformName as f, getShortUUID as g, getStageColor as h, isValidSemVer as i, getMessageColor as j, makeHumanReadable as m, scriptDir as s };
136
+ export { getInput as a, generatePackageName as b, getJobStatusColor as c, getStageColor as d, getMaskedInput as e, getFileHash as f, getShortUUID as g, getPlatformName as h, isValidSemVer as i, getMessageColor as j, makeHumanReadable as m, scriptDir as s };
@@ -3,9 +3,9 @@ import { Text, useInput, Box } from 'ink';
3
3
  import React, { useState, useEffect, useContext, useRef } from 'react';
4
4
  import Spinner from 'ink-spinner';
5
5
  import open from 'open';
6
- import { g as getShortUUID, f as getPlatformName, s as scriptDir } from './index-CXjz-cpD.js';
7
- import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-B6F8iB1C.js';
8
- import { p as getAuthedHeaders, q as API_URL, L as castArrayObjectDates, P as Platform, a6 as getShortDateTime, J as JobStatus, a7 as getShortTimeDelta, E as getJob, I as getProject, a3 as getShortAuthRequiredUrl, M as queryClient, W as WEB_URL } from './index-CvO4XDD6.js';
6
+ import { g as getShortUUID, h as getPlatformName, s as scriptDir } from './index-35Eswf6F.js';
7
+ import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-CJLIEYmA.js';
8
+ import { p as getAuthedHeaders, q as API_URL, I as castArrayObjectDates, P as Platform, a6 as getShortDateTime, J as JobStatus, a7 as getShortTimeDelta, E as getJob, F as getProject, a2 as getShortAuthRequiredUrl, K as queryClient, W as WEB_URL } from './index-DxzXU9Hd.js';
9
9
  import '@inkjs/ui';
10
10
  import axios from 'axios';
11
11
  import { useQuery } from '@tanstack/react-query';
@@ -206,4 +206,4 @@ const Create = ({ onComplete, onError, gameId, ...boxProps }) => {
206
206
  ] }) });
207
207
  };
208
208
 
209
- export { CommandProvider as C, GameProvider as G, Markdown as M, getJobSummary as a, GameContext as b, useBuilds as c, getBuildSummary as d, CommandContext as e, CreateGooglePlayGame as f, getRenderedMarkdown as g, queryBuilds as q, useJob as u };
209
+ export { CommandProvider as C, GameProvider as G, Markdown as M, getJobSummary as a, GameContext as b, getBuildSummary as c, CommandContext as d, useJob as e, CreateGooglePlayGame as f, getRenderedMarkdown as g, queryBuilds as q, useBuilds as u };
@@ -722,4 +722,4 @@ const DetailsFlags = {
722
722
  gcpServiceAccountId: Flags.string({ char: "c", description: "Set the GCP service account ID" })
723
723
  };
724
724
 
725
- export { acceptTerms as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, getJob as E, castJobDates as F, GODOT_CAPABILITIES as G, castObjectDates as H, getProject as I, JobStatus as J, downloadBuildById as K, castArrayObjectDates as L, queryClient as M, JobStage as N, LogLevel as O, Platform as P, getAuthToken as Q, WS_URL as R, getGodotAndroidPackageName as S, getGoogleStatus as T, UserRole as U, inviteServiceAccount as V, WEB_URL as W, disconnectGoogle as X, BaseCommand as Y, getSingleUseUrl as Z, setAuthToken as _, ApiKeyType as a, Auth as a0, getNewUploadTicket as a1, startJobsFromUpload as a2, getShortAuthRequiredUrl as a3, getGoogleAuthUrl as a4, getShortTime as a5, getShortDateTime as a6, getShortTimeDelta as a7, updateProject as a8, 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, getProjectPlatformProgress as k, Certificate as l, CertificateType as m, Profile as n, ProfileType as o, getAuthedHeaders as p, API_URL as q, getGodotProjectCapabilities as r, CapabilityType as s, GameEngine as t, getGodotVersion as u, createProject as v, DEFAULT_IGNORED_FILES_GLOBS as w, DEFAULT_SHIPPED_FILES_GLOBS as x, getGodotProjectName as y, getProjectJobs as z };
725
+ export { getNewUploadTicket as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, getJob as E, getProject as F, GODOT_CAPABILITIES as G, downloadBuildById as H, castArrayObjectDates as I, JobStatus as J, queryClient as K, JobStage as L, LogLevel as M, getAuthToken as N, WS_URL as O, Platform as P, getGodotAndroidPackageName as Q, getGoogleStatus 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, updateProject as a8, 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, getProjectPlatformProgress as k, Certificate as l, CertificateType as m, Profile as n, ProfileType as o, getAuthedHeaders as p, API_URL as q, getGodotProjectCapabilities as r, CapabilityType as s, GameEngine as t, getGodotVersion as u, createProject as v, DEFAULT_IGNORED_FILES_GLOBS as w, DEFAULT_SHIPPED_FILES_GLOBS as x, getGodotProjectName as y, getProjectJobs as z };
@@ -2,7 +2,7 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { Text, useInput, Box } from 'ink';
3
3
  import open from 'open';
4
4
  import { useState, useEffect, useContext } from 'react';
5
- import { T as getGoogleStatus, a3 as getShortAuthRequiredUrl, a4 as getGoogleAuthUrl, W as WEB_URL } from './index-CvO4XDD6.js';
5
+ import { R as getGoogleStatus, a2 as getShortAuthRequiredUrl, a3 as getGoogleAuthUrl, W as WEB_URL } from './index-DxzXU9Hd.js';
6
6
  import 'crypto';
7
7
  import 'fs';
8
8
  import 'readline-sync';
@@ -19,9 +19,9 @@ import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
- import { u as useWebSocket } from './useWebSocket-C0T22ckI.js';
23
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-B6F8iB1C.js';
24
- import { b as GameContext, M as Markdown } from './index-CSWTmILs.js';
22
+ import { u as useWebSocket } from './useWebSocket-BOCa8v6o.js';
23
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CJLIEYmA.js';
24
+ import { b as GameContext, M as Markdown } from './index-BTAL7EB_.js';
25
25
  import 'ink-spinner';
26
26
  import '@inkjs/ui';
27
27
  import 'string-length';
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { p as getAuthedHeaders, q as API_URL, L as castArrayObjectDates } from './index-CvO4XDD6.js';
2
+ import { p as getAuthedHeaders, q as API_URL, I as castArrayObjectDates } from './index-DxzXU9Hd.js';
3
3
  import 'fs';
4
4
 
5
5
  async function getUserCredentials(pageSize = 100) {
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { p as getAuthedHeaders, q as API_URL } from './index-CvO4XDD6.js';
2
+ import { p as getAuthedHeaders, q as API_URL } from './index-DxzXU9Hd.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,4 +1,4 @@
1
- import { p as getAuthedHeaders, q as API_URL } from './index-CvO4XDD6.js';
1
+ import { p as getAuthedHeaders, q as API_URL } from './index-DxzXU9Hd.js';
2
2
  import axios from 'axios';
3
3
  import { useQuery } from '@tanstack/react-query';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { f as App } from './index-CvO4XDD6.js';
2
+ import { f as App } from './index-DxzXU9Hd.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, r as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, s as CapabilityType } from './index-CvO4XDD6.js';
2
+ import { e as BundleId, r as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, s as CapabilityType } from './index-DxzXU9Hd.js';
3
3
 
4
4
  async function getBundleIdCapabilities(bundleId) {
5
5
  const current = await bundleId.getBundleIdCapabilitiesAsync();
@@ -1,8 +1,8 @@
1
1
  import axios from 'axios';
2
2
  import { useQuery } from '@tanstack/react-query';
3
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-B6F8iB1C.js';
4
- import { b as getShortDate, p as getAuthedHeaders, q as API_URL, L as castArrayObjectDates } from './index-CvO4XDD6.js';
5
- import { g as getShortUUID } from './index-CXjz-cpD.js';
3
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CJLIEYmA.js';
4
+ import { b as getShortDate, p as getAuthedHeaders, q as API_URL, I as castArrayObjectDates } from './index-DxzXU9Hd.js';
5
+ import { g as getShortUUID } from './index-35Eswf6F.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 { Q as getAuthToken, R as WS_URL } from './index-CvO4XDD6.js';
3
+ import { N as getAuthToken, O as WS_URL } from './index-DxzXU9Hd.js';
4
4
 
5
5
  function useWebSocket(listeners = []) {
6
6
  const log = () => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shipthis",
3
3
  "description": "ShipThis manages building and uploading your Godot games to the App Store and Google Play.",
4
- "version": "0.1.28",
4
+ "version": "0.1.29",
5
5
  "author": "Hello Invent Ltd",
6
6
  "bin": {
7
7
  "shipthis": "./bin/run.js"
@@ -1,45 +0,0 @@
1
- import { u as useJob } from './index-CSWTmILs.js';
2
- import { useState, useEffect } from 'react';
3
- import { u as useWebSocket } from './useWebSocket-C0T22ckI.js';
4
- import { F as castJobDates, H as castObjectDates } from './index-CvO4XDD6.js';
5
-
6
- function useJobWatching({ projectId, jobId, isWatching, onJobUpdate }) {
7
- const [websocketJob, setWebsocketJob] = useState(null);
8
- const [mostRecentLog, setMostRecentLog] = useState(null);
9
- const jobStatusListener = {
10
- getPattern: () => [`project.${projectId}:job:created`, `project.${projectId}:job:updated`],
11
- eventHandler: async (pattern, rawJob) => {
12
- if (rawJob.id !== jobId) return;
13
- const job2 = castJobDates(rawJob);
14
- setWebsocketJob(job2);
15
- if (onJobUpdate) onJobUpdate(job2);
16
- }
17
- };
18
- const jobProgressListener = {
19
- getPattern: () => `project.${projectId}:job.${jobId}:log`,
20
- eventHandler: async (pattern, rawLogEntry) => {
21
- const logEntry = castObjectDates(rawLogEntry, ["sentAt", "createdAt"]);
22
- setMostRecentLog(logEntry);
23
- }
24
- };
25
- useWebSocket(isWatching ? [jobStatusListener, jobProgressListener] : []);
26
- const { isLoading, data: job } = useJob({
27
- projectId,
28
- jobId
29
- });
30
- useEffect(() => {
31
- setWebsocketJob(null);
32
- }, [jobId, projectId, isWatching, job]);
33
- const fetchedJob = job ? job : null;
34
- const data = websocketJob ? websocketJob : fetchedJob;
35
- const progress = mostRecentLog?.progress || null;
36
- const stage = mostRecentLog?.stage || null;
37
- return {
38
- isLoading,
39
- data,
40
- progress,
41
- stage
42
- };
43
- }
44
-
45
- export { useJobWatching as u };